{"version":3,"file":"index.cjs","sources":["../src/canonicalize.ts"],"sourcesContent":["let isValidNumber = (n: any) => {\n  return typeof n === 'number' && !isNaN(n) && n !== Infinity && n !== -Infinity;\n};\n\nlet getValue = (json: any) => {\n  return json === undefined || typeof json === 'symbol' ? null : json;\n};\n\n/**\n * Canonicalize some json according to https://www.rfc-editor.org/rfc/rfc8785\n */\nexport let canonicalize = (json: any): string => {\n  if (typeof json === 'number' && !isValidNumber(json)) {\n    throw new Error('canonicalize: cannot canonicalize non-number JSON');\n  }\n\n  if (json === undefined) return 'null';\n\n  if (json instanceof Date) return JSON.stringify(json.toISOString());\n  if (json instanceof RegExp) return JSON.stringify(json.toString());\n  if (typeof json == 'bigint') return JSON.stringify(json.toString());\n\n  if (json === null || typeof json !== 'object') {\n    return JSON.stringify(json);\n  }\n\n  if (json.toJSON instanceof Function) {\n    return canonicalize(json.toJSON());\n  }\n\n  if (Array.isArray(json)) {\n    let inner = json.map(item => canonicalize(getValue(item))).join(',');\n    return `[${inner}]`;\n  }\n\n  let inner = Object.keys(json)\n    .sort()\n    .map(key => `${canonicalize(key)}:${canonicalize(getValue(json[key]))}`)\n    .join(',');\n  return `{${inner}}`;\n};\n"],"names":["getValue","json","undefined","canonicalize","n","isNaN","Infinity","Error","Date","JSON","stringify","toISOString","RegExp","toString","toJSON","Function","Array","isArray","inner","map","item","join","Object","keys","sort","key"],"mappings":"AAAA,IAIIA,EAAW,SAACC,GACd,YAAgBC,IAATD,GAAsC,iBAATA,EAAoB,KAAOA,CACjE,EAKWE,EAAe,SAACF,GACzB,GAAoB,iBAATA,IAXS,iBADDG,EAY4BH,IAXdI,MAAMD,IAAYE,WAANF,IAAyBE,WAAPF,GAY7D,UAAUG,MAAM,qDAbA,IAACH,EAgBnB,YAAaF,IAATD,EAA2B,OAE3BA,aAAgBO,KAAaC,KAAKC,UAAUT,EAAKU,eACjDV,aAAgBW,QACD,iBAARX,EADwBQ,KAAKC,UAAUT,EAAKY,YAG1C,OAATZ,GAAiC,iBAATA,EACnBQ,KAAKC,UAAUT,GAGpBA,EAAKa,kBAAkBC,SAClBZ,EAAaF,EAAKa,UAGvBE,MAAMC,QAAQhB,GAELiB,IADCjB,EAAKkB,IAAI,SAAAC,GAAQ,OAAAjB,EAAaH,EAASoB,GAAM,GAAEC,KAAK,KAElE,IAMWH,IAJCI,OAAOC,KAAKtB,GACrBuB,OACAL,IAAI,SAAAM,GAAU,OAAAtB,EAAasB,GAAI,IAAItB,EAAaH,EAASC,EAAKwB,IAAM,GACpEJ,KAAK,QAEV"}