@algorandfoundation/algokit-client-generator 4.0.0-beta.1 → 4.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/cli.d.ts +6 -0
  2. package/cli.js +47 -16
  3. package/cli.js.map +1 -1
  4. package/cli.mjs +47 -17
  5. package/cli.mjs.map +1 -1
  6. package/client/app-client.js +115 -49
  7. package/client/app-client.js.map +1 -1
  8. package/client/app-client.mjs +115 -49
  9. package/client/app-client.mjs.map +1 -1
  10. package/client/app-factory.js +49 -35
  11. package/client/app-factory.js.map +1 -1
  12. package/client/app-factory.mjs +49 -35
  13. package/client/app-factory.mjs.map +1 -1
  14. package/client/app-types.js +98 -102
  15. package/client/app-types.js.map +1 -1
  16. package/client/app-types.mjs +100 -104
  17. package/client/app-types.mjs.map +1 -1
  18. package/client/call-composer-types.js +9 -9
  19. package/client/call-composer-types.js.map +1 -1
  20. package/client/call-composer-types.mjs +9 -9
  21. package/client/call-composer-types.mjs.map +1 -1
  22. package/client/call-composer.js +25 -23
  23. package/client/call-composer.js.map +1 -1
  24. package/client/call-composer.mjs +25 -23
  25. package/client/call-composer.mjs.map +1 -1
  26. package/client/deploy-types.js +9 -9
  27. package/client/deploy-types.js.map +1 -1
  28. package/client/deploy-types.mjs +9 -9
  29. package/client/deploy-types.mjs.map +1 -1
  30. package/client/generate.js +6 -7
  31. package/client/generate.js.map +1 -1
  32. package/client/generate.mjs +6 -7
  33. package/client/generate.mjs.map +1 -1
  34. package/client/helpers/get-equivalent-type.js +9 -3
  35. package/client/helpers/get-equivalent-type.js.map +1 -1
  36. package/client/helpers/get-equivalent-type.mjs +9 -3
  37. package/client/helpers/get-equivalent-type.mjs.map +1 -1
  38. package/client/imports.js +8 -5
  39. package/client/imports.js.map +1 -1
  40. package/client/imports.mjs +8 -5
  41. package/client/imports.mjs.map +1 -1
  42. package/client/params-factory.js +12 -12
  43. package/client/params-factory.js.map +1 -1
  44. package/client/params-factory.mjs +12 -12
  45. package/client/params-factory.mjs.map +1 -1
  46. package/output/writer.d.ts +5 -5
  47. package/output/writer.js +9 -3
  48. package/output/writer.js.map +1 -1
  49. package/output/writer.mjs +9 -3
  50. package/output/writer.mjs.map +1 -1
  51. package/package.json +9 -5
  52. package/schema/arc56.schema.json.js +465 -501
  53. package/schema/arc56.schema.json.js.map +1 -1
  54. package/schema/arc56.schema.json.mjs +462 -501
  55. package/schema/arc56.schema.json.mjs.map +1 -1
  56. package/schema/load.js +7 -1
  57. package/schema/load.js.map +1 -1
  58. package/schema/load.mjs +7 -1
  59. package/schema/load.mjs.map +1 -1
  60. package/util/sanitization.js +13 -8
  61. package/util/sanitization.js.map +1 -1
  62. package/util/sanitization.mjs +13 -8
  63. package/util/sanitization.mjs.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"arc56.schema.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"arc56.schema.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/schema/load.js CHANGED
@@ -11,7 +11,13 @@ async function loadApplicationJson(appJsonPath) {
11
11
  const fs = await import('fs');
12
12
  if (!fs.existsSync(appJsonPath))
13
13
  boom.boom(`Could not find application.json file at ${appJsonPath}`);
14
- const file = JSON.parse(fs.readFileSync(appJsonPath, 'utf-8'));
14
+ let jsonText = fs.readFileSync(appJsonPath, 'utf-8');
15
+ let file = JSON.parse(jsonText);
16
+ // Temporary to get backwards compatibility with TEALScript draft ARC-56
17
+ if (!('contract' in file) /* ARC-56 */) {
18
+ jsonText = jsonText.replace(/ype":\s*"bytes"/g, 'ype":"AVMBytes"').replace(/import\(.+?\)\./g, '');
19
+ file = JSON.parse(jsonText);
20
+ }
15
21
  return validateApplicationJson(file, appJsonPath);
16
22
  }
17
23
  function validateApplicationJson(json, appJsonPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sources":["../../src/schema/load.ts"],"sourcesContent":["import { Schema, Validator } from 'jsonschema'\nimport { boom } from '../util/boom'\nimport arc32Schema from './application.schema.json' with { type: 'json' }\nimport arc56Schema from './arc56.schema.json' with { type: 'json' }\nimport contractSchema from './contract.schema.json' with { type: 'json' }\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { AppSpec, arc32ToArc56 } from '@algorandfoundation/algokit-utils/types/app-spec'\n\nexport async function loadApplicationJson(appJsonPath: string): Promise<Arc56Contract> {\n const fs = await import('fs')\n if (!fs.existsSync(appJsonPath)) boom(`Could not find application.json file at ${appJsonPath}`)\n\n const file = JSON.parse(fs.readFileSync(appJsonPath, 'utf-8'))\n return validateApplicationJson(file, appJsonPath)\n}\n\nexport function validateApplicationJson(json: unknown, appJsonPath: string): Arc56Contract {\n if (typeof json !== 'object') boom(`Could not parse ${appJsonPath} as JSON object`)\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('contract' in (json as any)) {\n // ARC-32\n const arc32Validator = new Validator()\n arc32Validator.addSchema(contractSchema, '/contract.schema.json')\n const arc32Result = arc32Validator.validate(json, arc32Schema as unknown as Schema)\n if (!arc32Result.valid) boom(`Could not parse ${appJsonPath} as ARC-32.\\n${arc32Result}`)\n return arc32ToArc56(json as AppSpec)\n }\n // ARC-56\n const arc56Validator = new Validator()\n const arc56Result = arc56Validator.validate(json, arc56Schema as unknown as Schema)\n if (!arc56Result.valid) boom(`Could not parse ${appJsonPath} as ARC-56.\\n${arc56Result}`)\n return json as Arc56Contract\n}\n"],"names":["boom","Validator","contractSchema","arc32Schema","arc32ToArc56","arc56Schema"],"mappings":";;;;;;;;;AAQO,eAAe,mBAAmB,CAAC,WAAmB,EAAA;AAC3D,IAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;AAAE,QAAAA,SAAI,CAAC,CAAA,wCAAA,EAA2C,WAAW,CAAA,CAAE,CAAC,CAAA;AAE/F,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9D,IAAA,OAAO,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAa,EAAE,WAAmB,EAAA;IACxE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAAA,SAAI,CAAC,CAAA,gBAAA,EAAmB,WAAW,CAAA,eAAA,CAAiB,CAAC,CAAA;;AAGnF,IAAA,IAAI,UAAU,IAAK,IAAY,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAAG,IAAIC,oBAAS,EAAE,CAAA;AACtC,QAAA,cAAc,CAAC,SAAS,CAACC,uBAAc,EAAE,uBAAuB,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAEC,0BAAgC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,YAAAH,SAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,QAAA,OAAOI,oBAAY,CAAC,IAAe,CAAC,CAAA;KACrC;;AAED,IAAA,MAAM,cAAc,GAAG,IAAIH,oBAAS,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAEI,oBAAgC,CAAC,CAAA;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,QAAAL,SAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,IAAA,OAAO,IAAqB,CAAA;AAC9B;;;;;"}
1
+ {"version":3,"file":"load.js","sources":["../../src/schema/load.ts"],"sourcesContent":["import { Schema, Validator } from 'jsonschema'\nimport { boom } from '../util/boom'\nimport arc32Schema from './application.schema.json' with { type: 'json' }\nimport arc56Schema from './arc56.schema.json' with { type: 'json' }\nimport contractSchema from './contract.schema.json' with { type: 'json' }\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { AppSpec, arc32ToArc56 } from '@algorandfoundation/algokit-utils/types/app-spec'\n\nexport async function loadApplicationJson(appJsonPath: string): Promise<Arc56Contract> {\n const fs = await import('fs')\n if (!fs.existsSync(appJsonPath)) boom(`Could not find application.json file at ${appJsonPath}`)\n\n let jsonText = fs.readFileSync(appJsonPath, 'utf-8')\n let file = JSON.parse(jsonText)\n // Temporary to get backwards compatibility with TEALScript draft ARC-56\n if (!('contract' in file) /* ARC-56 */) {\n jsonText = jsonText.replace(/ype\":\\s*\"bytes\"/g, 'ype\":\"AVMBytes\"').replace(/import\\(.+?\\)\\./g, '')\n file = JSON.parse(jsonText)\n }\n\n return validateApplicationJson(file, appJsonPath)\n}\n\nexport function validateApplicationJson(json: unknown, appJsonPath: string): Arc56Contract {\n if (typeof json !== 'object') boom(`Could not parse ${appJsonPath} as JSON object`)\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('contract' in (json as any)) {\n // ARC-32\n const arc32Validator = new Validator()\n arc32Validator.addSchema(contractSchema, '/contract.schema.json')\n const arc32Result = arc32Validator.validate(json, arc32Schema as unknown as Schema)\n if (!arc32Result.valid) boom(`Could not parse ${appJsonPath} as ARC-32.\\n${arc32Result}`)\n return arc32ToArc56(json as AppSpec)\n }\n // ARC-56\n const arc56Validator = new Validator()\n const arc56Result = arc56Validator.validate(json, arc56Schema as unknown as Schema)\n if (!arc56Result.valid) boom(`Could not parse ${appJsonPath} as ARC-56.\\n${arc56Result}`)\n return json as Arc56Contract\n}\n"],"names":["boom","Validator","contractSchema","arc32Schema","arc32ToArc56","arc56Schema"],"mappings":";;;;;;;;;AAQO,eAAe,mBAAmB,CAAC,WAAmB,EAAA;AAC3D,IAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;AAAE,QAAAA,SAAI,CAAC,CAAA,wCAAA,EAA2C,WAAW,CAAA,CAAE,CAAC,CAAA;IAE/F,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACpD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;;IAE/B,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,eAAe;AACtC,QAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AAClG,QAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;KAC5B;AAED,IAAA,OAAO,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAa,EAAE,WAAmB,EAAA;IACxE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAAA,SAAI,CAAC,CAAA,gBAAA,EAAmB,WAAW,CAAA,eAAA,CAAiB,CAAC,CAAA;;AAGnF,IAAA,IAAI,UAAU,IAAK,IAAY,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAAG,IAAIC,oBAAS,EAAE,CAAA;AACtC,QAAA,cAAc,CAAC,SAAS,CAACC,uBAAc,EAAE,uBAAuB,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAEC,0BAAgC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,YAAAH,SAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,QAAA,OAAOI,oBAAY,CAAC,IAAe,CAAC,CAAA;KACrC;;AAED,IAAA,MAAM,cAAc,GAAG,IAAIH,oBAAS,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAEI,oBAAgC,CAAC,CAAA;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,QAAAL,SAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,IAAA,OAAO,IAAqB,CAAA;AAC9B;;;;;"}
package/schema/load.mjs CHANGED
@@ -9,7 +9,13 @@ async function loadApplicationJson(appJsonPath) {
9
9
  const fs = await import('fs');
10
10
  if (!fs.existsSync(appJsonPath))
11
11
  boom(`Could not find application.json file at ${appJsonPath}`);
12
- const file = JSON.parse(fs.readFileSync(appJsonPath, 'utf-8'));
12
+ let jsonText = fs.readFileSync(appJsonPath, 'utf-8');
13
+ let file = JSON.parse(jsonText);
14
+ // Temporary to get backwards compatibility with TEALScript draft ARC-56
15
+ if (!('contract' in file) /* ARC-56 */) {
16
+ jsonText = jsonText.replace(/ype":\s*"bytes"/g, 'ype":"AVMBytes"').replace(/import\(.+?\)\./g, '');
17
+ file = JSON.parse(jsonText);
18
+ }
13
19
  return validateApplicationJson(file, appJsonPath);
14
20
  }
15
21
  function validateApplicationJson(json, appJsonPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"load.mjs","sources":["../../src/schema/load.ts"],"sourcesContent":["import { Schema, Validator } from 'jsonschema'\nimport { boom } from '../util/boom'\nimport arc32Schema from './application.schema.json' with { type: 'json' }\nimport arc56Schema from './arc56.schema.json' with { type: 'json' }\nimport contractSchema from './contract.schema.json' with { type: 'json' }\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { AppSpec, arc32ToArc56 } from '@algorandfoundation/algokit-utils/types/app-spec'\n\nexport async function loadApplicationJson(appJsonPath: string): Promise<Arc56Contract> {\n const fs = await import('fs')\n if (!fs.existsSync(appJsonPath)) boom(`Could not find application.json file at ${appJsonPath}`)\n\n const file = JSON.parse(fs.readFileSync(appJsonPath, 'utf-8'))\n return validateApplicationJson(file, appJsonPath)\n}\n\nexport function validateApplicationJson(json: unknown, appJsonPath: string): Arc56Contract {\n if (typeof json !== 'object') boom(`Could not parse ${appJsonPath} as JSON object`)\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('contract' in (json as any)) {\n // ARC-32\n const arc32Validator = new Validator()\n arc32Validator.addSchema(contractSchema, '/contract.schema.json')\n const arc32Result = arc32Validator.validate(json, arc32Schema as unknown as Schema)\n if (!arc32Result.valid) boom(`Could not parse ${appJsonPath} as ARC-32.\\n${arc32Result}`)\n return arc32ToArc56(json as AppSpec)\n }\n // ARC-56\n const arc56Validator = new Validator()\n const arc56Result = arc56Validator.validate(json, arc56Schema as unknown as Schema)\n if (!arc56Result.valid) boom(`Could not parse ${appJsonPath} as ARC-56.\\n${arc56Result}`)\n return json as Arc56Contract\n}\n"],"names":[],"mappings":";;;;;;;AAQO,eAAe,mBAAmB,CAAC,WAAmB,EAAA;AAC3D,IAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;AAAE,QAAA,IAAI,CAAC,CAAA,wCAAA,EAA2C,WAAW,CAAA,CAAE,CAAC,CAAA;AAE/F,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC9D,IAAA,OAAO,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAa,EAAE,WAAmB,EAAA;IACxE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,IAAI,CAAC,CAAA,gBAAA,EAAmB,WAAW,CAAA,eAAA,CAAiB,CAAC,CAAA;;AAGnF,IAAA,IAAI,UAAU,IAAK,IAAY,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAA;AACtC,QAAA,cAAc,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAgC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,QAAA,OAAO,YAAY,CAAC,IAAe,CAAC,CAAA;KACrC;;AAED,IAAA,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAgC,CAAC,CAAA;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,QAAA,IAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,IAAA,OAAO,IAAqB,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"load.mjs","sources":["../../src/schema/load.ts"],"sourcesContent":["import { Schema, Validator } from 'jsonschema'\nimport { boom } from '../util/boom'\nimport arc32Schema from './application.schema.json' with { type: 'json' }\nimport arc56Schema from './arc56.schema.json' with { type: 'json' }\nimport contractSchema from './contract.schema.json' with { type: 'json' }\nimport { Arc56Contract } from '@algorandfoundation/algokit-utils/types/app-arc56'\nimport { AppSpec, arc32ToArc56 } from '@algorandfoundation/algokit-utils/types/app-spec'\n\nexport async function loadApplicationJson(appJsonPath: string): Promise<Arc56Contract> {\n const fs = await import('fs')\n if (!fs.existsSync(appJsonPath)) boom(`Could not find application.json file at ${appJsonPath}`)\n\n let jsonText = fs.readFileSync(appJsonPath, 'utf-8')\n let file = JSON.parse(jsonText)\n // Temporary to get backwards compatibility with TEALScript draft ARC-56\n if (!('contract' in file) /* ARC-56 */) {\n jsonText = jsonText.replace(/ype\":\\s*\"bytes\"/g, 'ype\":\"AVMBytes\"').replace(/import\\(.+?\\)\\./g, '')\n file = JSON.parse(jsonText)\n }\n\n return validateApplicationJson(file, appJsonPath)\n}\n\nexport function validateApplicationJson(json: unknown, appJsonPath: string): Arc56Contract {\n if (typeof json !== 'object') boom(`Could not parse ${appJsonPath} as JSON object`)\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if ('contract' in (json as any)) {\n // ARC-32\n const arc32Validator = new Validator()\n arc32Validator.addSchema(contractSchema, '/contract.schema.json')\n const arc32Result = arc32Validator.validate(json, arc32Schema as unknown as Schema)\n if (!arc32Result.valid) boom(`Could not parse ${appJsonPath} as ARC-32.\\n${arc32Result}`)\n return arc32ToArc56(json as AppSpec)\n }\n // ARC-56\n const arc56Validator = new Validator()\n const arc56Result = arc56Validator.validate(json, arc56Schema as unknown as Schema)\n if (!arc56Result.valid) boom(`Could not parse ${appJsonPath} as ARC-56.\\n${arc56Result}`)\n return json as Arc56Contract\n}\n"],"names":[],"mappings":";;;;;;;AAQO,eAAe,mBAAmB,CAAC,WAAmB,EAAA;AAC3D,IAAA,MAAM,EAAE,GAAG,MAAM,OAAO,IAAI,CAAC,CAAA;AAC7B,IAAA,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;AAAE,QAAA,IAAI,CAAC,CAAA,wCAAA,EAA2C,WAAW,CAAA,CAAE,CAAC,CAAA;IAE/F,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACpD,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;;IAE/B,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,eAAe;AACtC,QAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AAClG,QAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;KAC5B;AAED,IAAA,OAAO,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACnD,CAAC;AAEe,SAAA,uBAAuB,CAAC,IAAa,EAAE,WAAmB,EAAA;IACxE,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,IAAI,CAAC,CAAA,gBAAA,EAAmB,WAAW,CAAA,eAAA,CAAiB,CAAC,CAAA;;AAGnF,IAAA,IAAI,UAAU,IAAK,IAAY,EAAE;;AAE/B,QAAA,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAA;AACtC,QAAA,cAAc,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAA;QACjE,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAgC,CAAC,CAAA;QACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,QAAA,OAAO,YAAY,CAAC,IAAe,CAAC,CAAA;KACrC;;AAED,IAAA,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAA;IACtC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAgC,CAAC,CAAA;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK;AAAE,QAAA,IAAI,CAAC,CAAmB,gBAAA,EAAA,WAAW,gBAAgB,WAAW,CAAA,CAAE,CAAC,CAAA;AACzF,IAAA,OAAO,IAAqB,CAAA;AAC9B;;;;"}
@@ -4,27 +4,32 @@ var changeCase = require('change-case');
4
4
 
5
5
  const replaceInvalidWithUnderscore = (value) => value.replace(/[^a-z0-9_$]+/gi, '_');
6
6
  const escapeQuotes = (value) => value.replace(/['"]/g, (val) => `\\${val}`);
7
+ const removeEnclosingQuotes = (value) => value.replace(/^"|"$/g, '');
7
8
  const defaultSanitiser = {
8
9
  makeSafePropertyIdentifier(value) {
9
- return changeCase.camelCase(replaceInvalidWithUnderscore(value));
10
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
11
+ return changeCase.camelCase(replaceInvalidWithUnderscore(value), options);
10
12
  },
11
13
  makeSafeTypeIdentifier(value) {
12
- return changeCase.pascalCase(replaceInvalidWithUnderscore(value));
14
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
15
+ return changeCase.pascalCase(replaceInvalidWithUnderscore(value), options);
13
16
  },
14
17
  makeSafeMethodIdentifier(value) {
15
- return changeCase.camelCase(replaceInvalidWithUnderscore(value));
18
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
19
+ return changeCase.camelCase(replaceInvalidWithUnderscore(value), options);
16
20
  },
17
21
  isSafeVariableIdentifier(value) {
18
22
  return /^[a-z$_][a-z0-9_$]*$/i.test(value);
19
23
  },
20
24
  makeSafeVariableIdentifier(value) {
21
- return changeCase.camelCase(replaceInvalidWithUnderscore(value));
25
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
26
+ return changeCase.camelCase(replaceInvalidWithUnderscore(value), options);
22
27
  },
23
28
  makeSafeStringTypeLiteral(value) {
24
29
  return escapeQuotes(value);
25
30
  },
26
31
  getSafeMemberAccessor(value) {
27
- return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`;
32
+ return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${this.makeSafeStringTypeLiteral(value)}']`;
28
33
  },
29
34
  };
30
35
  const preservingSanitiser = {
@@ -32,10 +37,10 @@ const preservingSanitiser = {
32
37
  return /^[a-z$_][a-z0-9_$]*$/i.test(value);
33
38
  },
34
39
  makeSafeMethodIdentifier(value) {
35
- return this.isSafeVariableIdentifier(value) ? value : `"${escapeQuotes(value)}"`;
40
+ return this.isSafeVariableIdentifier(value) ? value : `"${this.makeSafeStringTypeLiteral(value)}"`;
36
41
  },
37
42
  makeSafePropertyIdentifier(value) {
38
- return this.isSafeVariableIdentifier(value) ? value : `"${escapeQuotes(value)}"`;
43
+ return this.isSafeVariableIdentifier(value) ? value : `"${this.makeSafeStringTypeLiteral(value)}"`;
39
44
  },
40
45
  makeSafeTypeIdentifier(value) {
41
46
  return replaceInvalidWithUnderscore(value);
@@ -47,7 +52,7 @@ const preservingSanitiser = {
47
52
  return escapeQuotes(value);
48
53
  },
49
54
  getSafeMemberAccessor(value) {
50
- return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`;
55
+ return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${removeEnclosingQuotes(value)}']`;
51
56
  },
52
57
  };
53
58
  const getSanitizer = ({ preserveNames }) => (preserveNames ? preservingSanitiser : defaultSanitiser);
@@ -1 +1 @@
1
- {"version":3,"file":"sanitization.js","sources":["../../src/util/sanitization.ts"],"sourcesContent":["import { camelCase, pascalCase } from 'change-case'\n\nconst replaceInvalidWithUnderscore = (value: string) => value.replace(/[^a-z0-9_$]+/gi, '_')\n\nconst escapeQuotes = (value: string) => value.replace(/['\"]/g, (val) => `\\\\${val}`)\n\nexport interface Sanitizer {\n makeSafeTypeIdentifier(value: string): string\n makeSafeMethodIdentifier(value: string): string\n makeSafeVariableIdentifier(value: string): string\n makeSafePropertyIdentifier(value: string): string\n makeSafeStringTypeLiteral(value: string): string\n getSafeMemberAccessor(value: string): string\n isSafeVariableIdentifier(value: string): boolean\n}\n\nconst defaultSanitiser: Sanitizer = {\n makeSafePropertyIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeTypeIdentifier(value: string) {\n return pascalCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeMethodIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n isSafeVariableIdentifier(value: string) {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeVariableIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`\n },\n}\n\nconst preservingSanitiser: Sanitizer = {\n isSafeVariableIdentifier(value: string): boolean {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeMethodIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${escapeQuotes(value)}\"`\n },\n makeSafePropertyIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${escapeQuotes(value)}\"`\n },\n makeSafeTypeIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeVariableIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`\n },\n}\n\nexport const getSanitizer = ({ preserveNames }: { preserveNames: boolean }) => (preserveNames ? preservingSanitiser : defaultSanitiser)\n"],"names":["camelCase","pascalCase"],"mappings":";;;;AAEA,MAAM,4BAA4B,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;AAE5F,MAAM,YAAY,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AAYnF,MAAM,gBAAgB,GAAc;AAClC,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAOA,oBAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAOC,qBAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACvD;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAOD,oBAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAOA,oBAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;KAC3B;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAI,CAAA,EAAA,KAAK,EAAE,GAAG,CAAI,CAAA,EAAA,KAAK,GAAG,CAAA;KACzE;CACF,CAAA;AAED,MAAM,mBAAmB,GAAc;AACrC,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAI,CAAA,EAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA;KACjF;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAI,CAAA,EAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA;KACjF;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;KAC3B;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAI,CAAA,EAAA,KAAK,EAAE,GAAG,CAAI,CAAA,EAAA,KAAK,GAAG,CAAA;KACzE;CACF,CAAA;MAEY,YAAY,GAAG,CAAC,EAAE,aAAa,EAA8B,MAAM,aAAa,GAAG,mBAAmB,GAAG,gBAAgB;;;;"}
1
+ {"version":3,"file":"sanitization.js","sources":["../../src/util/sanitization.ts"],"sourcesContent":["import { camelCase, pascalCase } from 'change-case'\n\nconst replaceInvalidWithUnderscore = (value: string) => value.replace(/[^a-z0-9_$]+/gi, '_')\n\nconst escapeQuotes = (value: string) => value.replace(/['\"]/g, (val) => `\\\\${val}`)\n\nconst removeEnclosingQuotes = (value: string) => value.replace(/^\"|\"$/g, '')\n\nexport interface Sanitizer {\n makeSafeTypeIdentifier(value: string): string\n makeSafeMethodIdentifier(value: string): string\n makeSafeVariableIdentifier(value: string): string\n makeSafePropertyIdentifier(value: string): string\n makeSafeStringTypeLiteral(value: string): string\n getSafeMemberAccessor(value: string): string\n isSafeVariableIdentifier(value: string): boolean\n}\n\nconst defaultSanitiser: Sanitizer = {\n makeSafePropertyIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeTypeIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return pascalCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeMethodIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n isSafeVariableIdentifier(value: string) {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeVariableIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${this.makeSafeStringTypeLiteral(value)}']`\n },\n}\n\nconst preservingSanitiser: Sanitizer = {\n isSafeVariableIdentifier(value: string): boolean {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeMethodIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n },\n makeSafePropertyIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n },\n makeSafeTypeIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeVariableIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${removeEnclosingQuotes(value)}']`\n },\n}\n\nexport const getSanitizer = ({ preserveNames }: { preserveNames: boolean }) => (preserveNames ? preservingSanitiser : defaultSanitiser)\n"],"names":["camelCase","pascalCase"],"mappings":"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"}
@@ -2,27 +2,32 @@ import { camelCase, pascalCase } from 'change-case';
2
2
 
3
3
  const replaceInvalidWithUnderscore = (value) => value.replace(/[^a-z0-9_$]+/gi, '_');
4
4
  const escapeQuotes = (value) => value.replace(/['"]/g, (val) => `\\${val}`);
5
+ const removeEnclosingQuotes = (value) => value.replace(/^"|"$/g, '');
5
6
  const defaultSanitiser = {
6
7
  makeSafePropertyIdentifier(value) {
7
- return camelCase(replaceInvalidWithUnderscore(value));
8
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
9
+ return camelCase(replaceInvalidWithUnderscore(value), options);
8
10
  },
9
11
  makeSafeTypeIdentifier(value) {
10
- return pascalCase(replaceInvalidWithUnderscore(value));
12
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
13
+ return pascalCase(replaceInvalidWithUnderscore(value), options);
11
14
  },
12
15
  makeSafeMethodIdentifier(value) {
13
- return camelCase(replaceInvalidWithUnderscore(value));
16
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
17
+ return camelCase(replaceInvalidWithUnderscore(value), options);
14
18
  },
15
19
  isSafeVariableIdentifier(value) {
16
20
  return /^[a-z$_][a-z0-9_$]*$/i.test(value);
17
21
  },
18
22
  makeSafeVariableIdentifier(value) {
19
- return camelCase(replaceInvalidWithUnderscore(value));
23
+ const options = value.startsWith('_') ? { prefixCharacters: '_' } : {};
24
+ return camelCase(replaceInvalidWithUnderscore(value), options);
20
25
  },
21
26
  makeSafeStringTypeLiteral(value) {
22
27
  return escapeQuotes(value);
23
28
  },
24
29
  getSafeMemberAccessor(value) {
25
- return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`;
30
+ return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${this.makeSafeStringTypeLiteral(value)}']`;
26
31
  },
27
32
  };
28
33
  const preservingSanitiser = {
@@ -30,10 +35,10 @@ const preservingSanitiser = {
30
35
  return /^[a-z$_][a-z0-9_$]*$/i.test(value);
31
36
  },
32
37
  makeSafeMethodIdentifier(value) {
33
- return this.isSafeVariableIdentifier(value) ? value : `"${escapeQuotes(value)}"`;
38
+ return this.isSafeVariableIdentifier(value) ? value : `"${this.makeSafeStringTypeLiteral(value)}"`;
34
39
  },
35
40
  makeSafePropertyIdentifier(value) {
36
- return this.isSafeVariableIdentifier(value) ? value : `"${escapeQuotes(value)}"`;
41
+ return this.isSafeVariableIdentifier(value) ? value : `"${this.makeSafeStringTypeLiteral(value)}"`;
37
42
  },
38
43
  makeSafeTypeIdentifier(value) {
39
44
  return replaceInvalidWithUnderscore(value);
@@ -45,7 +50,7 @@ const preservingSanitiser = {
45
50
  return escapeQuotes(value);
46
51
  },
47
52
  getSafeMemberAccessor(value) {
48
- return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`;
53
+ return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${removeEnclosingQuotes(value)}']`;
49
54
  },
50
55
  };
51
56
  const getSanitizer = ({ preserveNames }) => (preserveNames ? preservingSanitiser : defaultSanitiser);
@@ -1 +1 @@
1
- {"version":3,"file":"sanitization.mjs","sources":["../../src/util/sanitization.ts"],"sourcesContent":["import { camelCase, pascalCase } from 'change-case'\n\nconst replaceInvalidWithUnderscore = (value: string) => value.replace(/[^a-z0-9_$]+/gi, '_')\n\nconst escapeQuotes = (value: string) => value.replace(/['\"]/g, (val) => `\\\\${val}`)\n\nexport interface Sanitizer {\n makeSafeTypeIdentifier(value: string): string\n makeSafeMethodIdentifier(value: string): string\n makeSafeVariableIdentifier(value: string): string\n makeSafePropertyIdentifier(value: string): string\n makeSafeStringTypeLiteral(value: string): string\n getSafeMemberAccessor(value: string): string\n isSafeVariableIdentifier(value: string): boolean\n}\n\nconst defaultSanitiser: Sanitizer = {\n makeSafePropertyIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeTypeIdentifier(value: string) {\n return pascalCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeMethodIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n isSafeVariableIdentifier(value: string) {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeVariableIdentifier(value: string) {\n return camelCase(replaceInvalidWithUnderscore(value))\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`\n },\n}\n\nconst preservingSanitiser: Sanitizer = {\n isSafeVariableIdentifier(value: string): boolean {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeMethodIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${escapeQuotes(value)}\"`\n },\n makeSafePropertyIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${escapeQuotes(value)}\"`\n },\n makeSafeTypeIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeVariableIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `[${value}]`\n },\n}\n\nexport const getSanitizer = ({ preserveNames }: { preserveNames: boolean }) => (preserveNames ? preservingSanitiser : defaultSanitiser)\n"],"names":[],"mappings":";;AAEA,MAAM,4BAA4B,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;AAE5F,MAAM,YAAY,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAK,EAAA,EAAA,GAAG,CAAE,CAAA,CAAC,CAAA;AAYnF,MAAM,gBAAgB,GAAc;AAClC,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACvD;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAA;KACtD;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;KAC3B;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAI,CAAA,EAAA,KAAK,EAAE,GAAG,CAAI,CAAA,EAAA,KAAK,GAAG,CAAA;KACzE;CACF,CAAA;AAED,MAAM,mBAAmB,GAAc;AACrC,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAI,CAAA,EAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA;KACjF;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAI,CAAA,EAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA;KACjF;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAA;KAC3C;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC,CAAA;KAC3B;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAI,CAAA,EAAA,KAAK,EAAE,GAAG,CAAI,CAAA,EAAA,KAAK,GAAG,CAAA;KACzE;CACF,CAAA;MAEY,YAAY,GAAG,CAAC,EAAE,aAAa,EAA8B,MAAM,aAAa,GAAG,mBAAmB,GAAG,gBAAgB;;;;"}
1
+ {"version":3,"file":"sanitization.mjs","sources":["../../src/util/sanitization.ts"],"sourcesContent":["import { camelCase, pascalCase } from 'change-case'\n\nconst replaceInvalidWithUnderscore = (value: string) => value.replace(/[^a-z0-9_$]+/gi, '_')\n\nconst escapeQuotes = (value: string) => value.replace(/['\"]/g, (val) => `\\\\${val}`)\n\nconst removeEnclosingQuotes = (value: string) => value.replace(/^\"|\"$/g, '')\n\nexport interface Sanitizer {\n makeSafeTypeIdentifier(value: string): string\n makeSafeMethodIdentifier(value: string): string\n makeSafeVariableIdentifier(value: string): string\n makeSafePropertyIdentifier(value: string): string\n makeSafeStringTypeLiteral(value: string): string\n getSafeMemberAccessor(value: string): string\n isSafeVariableIdentifier(value: string): boolean\n}\n\nconst defaultSanitiser: Sanitizer = {\n makeSafePropertyIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeTypeIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return pascalCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeMethodIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n isSafeVariableIdentifier(value: string) {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeVariableIdentifier(value: string) {\n const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n return camelCase(replaceInvalidWithUnderscore(value), options)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${this.makeSafeStringTypeLiteral(value)}']`\n },\n}\n\nconst preservingSanitiser: Sanitizer = {\n isSafeVariableIdentifier(value: string): boolean {\n return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n },\n makeSafeMethodIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n },\n makeSafePropertyIdentifier(value: string): string {\n return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n },\n makeSafeTypeIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeVariableIdentifier(value: string): string {\n return replaceInvalidWithUnderscore(value)\n },\n makeSafeStringTypeLiteral(value: string): string {\n return escapeQuotes(value)\n },\n getSafeMemberAccessor(value: string): string {\n return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${removeEnclosingQuotes(value)}']`\n },\n}\n\nexport const getSanitizer = ({ preserveNames }: { preserveNames: boolean }) => (preserveNames ? preservingSanitiser : defaultSanitiser)\n"],"names":[],"mappings":"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"}