@ic-reactor/candid 3.0.14-beta.3 → 3.0.15-beta.0

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.
@@ -105,24 +105,4 @@ export declare class MetadataDisplayReactor<A = BaseActor> extends CandidDisplay
105
105
  meta: MethodMeta<A>;
106
106
  }>;
107
107
  }
108
- /**
109
- * Create and initialize a MetadataDisplayReactor.
110
- * This is a convenience function that creates the reactor and calls initialize().
111
- *
112
- * @param options Reactor configuration options
113
- * @returns Initialized MetadataDisplayReactor
114
- *
115
- * @example
116
- * ```typescript
117
- * const reactor = await createMetadataReactor({
118
- * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
119
- * clientManager,
120
- * name: "ICPLedger",
121
- * })
122
- *
123
- * // Reactor is ready to use
124
- * const methods = reactor.getMethodNames()
125
- * ```
126
- */
127
- export declare function createMetadataReactor<A = BaseActor>(options: CandidDisplayReactorParameters<A>): Promise<MetadataDisplayReactor<A>>;
128
108
  //# sourceMappingURL=metadata-display-reactor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-display-reactor.d.ts","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EAEL,aAAa,EACb,oBAAoB,EAErB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,qBAAqB,CAAC,CAAC;QAC/B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;KAC9C;IACD,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;QAChD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;KAC1B;CACF;AAED,qBAAa,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,oBAAoB,CAC7E,CAAC,EACD,UAAU,CACX;IACC,SAAyB,SAAS,EAAG,UAAU,CAAS;IAGxD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAGhD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;gBAE3C,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAQrD;;OAEG;IACmB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;OAMG;IACI,YAAY,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC3C,UAAU,EAAE,CAAC,GACZ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIlC;;;;;;OAMG;IACI,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,CAAC,GACZ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAI/B;;OAEG;IACI,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACI,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOhD;;;OAGG;IACmB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;cAUG,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC1D,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,YAAY,CAAC,CAAC,CAAC;IAclB;;;;;OAKG;IACU,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAY/C;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,GAAG,SAAS,EACvD,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAIpC"}
1
+ {"version":3,"file":"metadata-display-reactor.d.ts","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,YAAY,EACb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EACV,8BAA8B,EAC9B,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EAEL,aAAa,EACb,oBAAoB,EAErB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAM1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAU,qBAAqB,CAAC,CAAC;QAC/B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;KAC9C;IACD,UAAU,uBAAuB,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS;QAChD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;KAC1B;CACF;AAED,qBAAa,sBAAsB,CAAC,CAAC,GAAG,SAAS,CAAE,SAAQ,oBAAoB,CAC7E,CAAC,EACD,UAAU,CACX;IACC,SAAyB,SAAS,EAAG,UAAU,CAAS;IAGxD,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAA8B;IAGhD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqB;IAC9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAA2B;gBAE3C,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAQrD;;OAEG;IACmB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;OAMG;IACI,YAAY,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC3C,UAAU,EAAE,CAAC,GACZ,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAIlC;;;;;;OAMG;IACI,aAAa,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC5C,UAAU,EAAE,CAAC,GACZ,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAI/B;;OAEG;IACI,eAAe,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;IAIxD;;OAEG;IACI,gBAAgB,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI;IAOhD;;;OAGG;IACmB,cAAc,CAClC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;cAUG,eAAe,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC1D,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAClC,YAAY,CAAC,CAAC,CAAC;IAclB;;;;;OAKG;IACU,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAC1C,OAAO,EAAE,oBAAoB,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GACnD,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;CAY/C"}
@@ -134,31 +134,4 @@ Object.defineProperty(MetadataDisplayReactor, "resultVisitor", {
134
134
  writable: true,
135
135
  value: new ResultFieldVisitor()
136
136
  });
137
- // ════════════════════════════════════════════════════════════════════════════
138
- // Factory Function
139
- // ════════════════════════════════════════════════════════════════════════════
140
- /**
141
- * Create and initialize a MetadataDisplayReactor.
142
- * This is a convenience function that creates the reactor and calls initialize().
143
- *
144
- * @param options Reactor configuration options
145
- * @returns Initialized MetadataDisplayReactor
146
- *
147
- * @example
148
- * ```typescript
149
- * const reactor = await createMetadataReactor({
150
- * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
151
- * clientManager,
152
- * name: "ICPLedger",
153
- * })
154
- *
155
- * // Reactor is ready to use
156
- * const methods = reactor.getMethodNames()
157
- * ```
158
- */
159
- export async function createMetadataReactor(options) {
160
- const reactor = new MetadataDisplayReactor(options);
161
- await reactor.initialize();
162
- return reactor;
163
- }
164
137
  //# sourceMappingURL=metadata-display-reactor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-display-reactor.js","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-display-reactor.js","sourceRoot":"","sources":["../src/metadata-display-reactor.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -2,6 +2,10 @@ import type { CandidDefinition } from "./types";
2
2
  /**
3
3
  * Imports and evaluates a Candid definition from JavaScript code.
4
4
  *
5
+ * This function evaluates JavaScript code in a controlled manner to extract
6
+ * the idlFactory and init exports. The evaluation is done using Function constructor
7
+ * which is safer than dynamic imports with data URLs and more CSP-friendly.
8
+ *
5
9
  * @param candidJs - The JavaScript code containing the Candid definition.
6
10
  * @returns A promise that resolves to the CandidDefinition.
7
11
  * @throws Error if the import fails.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAgB3B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/C;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA2C3B"}
package/dist/utils.js CHANGED
@@ -1,19 +1,46 @@
1
+ import { IDL } from "@icp-sdk/core/candid";
1
2
  /**
2
3
  * Imports and evaluates a Candid definition from JavaScript code.
3
4
  *
5
+ * This function evaluates JavaScript code in a controlled manner to extract
6
+ * the idlFactory and init exports. The evaluation is done using Function constructor
7
+ * which is safer than dynamic imports with data URLs and more CSP-friendly.
8
+ *
4
9
  * @param candidJs - The JavaScript code containing the Candid definition.
5
10
  * @returns A promise that resolves to the CandidDefinition.
6
11
  * @throws Error if the import fails.
7
12
  */
8
13
  export async function importCandidDefinition(candidJs) {
9
14
  try {
10
- // Create a data URL with the JavaScript code
11
- const dataUri = "data:text/javascript;charset=utf-8," + encodeURIComponent(candidJs);
12
- // Dynamically import the module
13
- const module = await import(/* webpackIgnore: true */ dataUri);
15
+ // Create a module exports object
16
+ const exports = {};
17
+ // Transform ES6 export statements to assignments
18
+ // This is safe because we're only transforming the syntax pattern,
19
+ // not evaluating arbitrary code
20
+ const transformedJs = candidJs
21
+ // Replace 'export const name = value' with 'const name = value; exports.name = name'
22
+ .replace(/export\s+const\s+(\w+)\s*=/g, "const $1 =")
23
+ // Replace 'export function name' with 'function name'
24
+ .replace(/export\s+function\s+(\w+)/g, "function $1");
25
+ // Create a safe evaluation context with necessary globals
26
+ // We provide IDL from the trusted @icp-sdk/core/candid package
27
+ const evalFunction = new Function("exports", "IDL", `
28
+ ${transformedJs}
29
+
30
+ // Capture exports
31
+ if (typeof idlFactory !== 'undefined') {
32
+ exports.idlFactory = idlFactory;
33
+ }
34
+ if (typeof init !== 'undefined') {
35
+ exports.init = init;
36
+ }
37
+ return exports;
38
+ `);
39
+ // Execute the function with the exports object and IDL
40
+ const result = evalFunction(exports, IDL);
14
41
  return {
15
- idlFactory: module.idlFactory,
16
- init: module.init,
42
+ idlFactory: result.idlFactory,
43
+ init: result.init,
17
44
  };
18
45
  }
19
46
  catch (error) {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,OAAO,GACX,qCAAqC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAEtE,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAE9D,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;IACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB;IAEhB,IAAI,CAAC;QACH,iCAAiC;QACjC,MAAM,OAAO,GAA4B,EAAE,CAAA;QAE3C,iDAAiD;QACjD,mEAAmE;QACnE,gCAAgC;QAChC,MAAM,aAAa,GAAG,QAAQ;YAC5B,qFAAqF;aACpF,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC;YACrD,sDAAsD;aACrD,OAAO,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAA;QAEvD,0DAA0D;QAC1D,+DAA+D;QAC/D,MAAM,YAAY,GAAG,IAAI,QAAQ,CAC/B,SAAS,EACT,KAAK,EACL;QACE,aAAa;;;;;;;;;;OAUd,CACF,CAAA;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAEzC,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAA4C;YAC/D,IAAI,EAAE,MAAM,CAAC,IAAgC;SAC9C,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAA;IACjE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AA4C/D,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,UAmBhD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,YAKlD,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAiD/D,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,UAmBhD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,YAKlD,CAAA"}
@@ -15,9 +15,19 @@ const TAMESTAMP_KEYS = [
15
15
  "deleted_at",
16
16
  "valid_until",
17
17
  ];
18
- const TAMESTAMP_KEYS_REGEX = new RegExp(TAMESTAMP_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"), "i");
18
+ // Fixed ReDoS vulnerability by eliminating nested quantifiers
19
+ // Original pattern ^[\w-]*key[\w-]*$ had catastrophic backtracking
20
+ // New approach: use simple substring matching (case-insensitive)
21
+ const createKeyMatcher = (keys) => {
22
+ const lowerKeys = keys.map((k) => k.toLowerCase());
23
+ return (str) => {
24
+ const lower = str.toLowerCase();
25
+ return lowerKeys.some((key) => lower.includes(key));
26
+ };
27
+ };
28
+ const isTimestampKey = createKeyMatcher(TAMESTAMP_KEYS);
19
29
  const CYCLE_KEYS = ["cycle", "cycles"];
20
- const CYCLE_KEYS_REGEX = new RegExp(CYCLE_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"), "i");
30
+ const isCycleKey = createKeyMatcher(CYCLE_KEYS);
21
31
  const ACCOUNT_ID_KEYS_REGEX = /account_identifier|ledger_account|block_hash|transaction_hash|tx_hash/i;
22
32
  const tokenize = (label) => {
23
33
  const parts = label
@@ -30,7 +40,7 @@ const tokenize = (label) => {
30
40
  export const checkTextFormat = (label) => {
31
41
  if (!label)
32
42
  return "plain";
33
- if (TAMESTAMP_KEYS_REGEX.test(label))
43
+ if (isTimestampKey(label))
34
44
  return "timestamp";
35
45
  if (ACCOUNT_ID_KEYS_REGEX.test(label))
36
46
  return "account-id";
@@ -54,9 +64,9 @@ export const checkTextFormat = (label) => {
54
64
  export const checkNumberFormat = (label) => {
55
65
  if (!label)
56
66
  return "normal";
57
- if (TAMESTAMP_KEYS_REGEX.test(label))
67
+ if (isTimestampKey(label))
58
68
  return "timestamp";
59
- if (CYCLE_KEYS_REGEX.test(label))
69
+ if (isCycleKey(label))
60
70
  return "cycle";
61
71
  return "normal";
62
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/visitor/constants.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/candid",
3
- "version": "3.0.14-beta.3",
3
+ "version": "3.0.15-beta.0",
4
4
  "description": "IC Reactor Candid Adapter - Fetch and parse Candid definitions from Internet Computer canisters",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -44,7 +44,7 @@
44
44
  "dependencies": {
45
45
  "@noble/hashes": "^2.0.1",
46
46
  "zod": "^4.3.5",
47
- "@ic-reactor/core": "^3.0.14-beta.3"
47
+ "@ic-reactor/core": "^3.0.15-beta.0"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "zod": "^4.3.5",
@@ -223,34 +223,3 @@ export class MetadataDisplayReactor<A = BaseActor> extends CandidDisplayReactor<
223
223
  return { result, meta }
224
224
  }
225
225
  }
226
-
227
- // ════════════════════════════════════════════════════════════════════════════
228
- // Factory Function
229
- // ════════════════════════════════════════════════════════════════════════════
230
-
231
- /**
232
- * Create and initialize a MetadataDisplayReactor.
233
- * This is a convenience function that creates the reactor and calls initialize().
234
- *
235
- * @param options Reactor configuration options
236
- * @returns Initialized MetadataDisplayReactor
237
- *
238
- * @example
239
- * ```typescript
240
- * const reactor = await createMetadataReactor({
241
- * canisterId: "ryjl3-tyaaa-aaaaa-aaaba-cai",
242
- * clientManager,
243
- * name: "ICPLedger",
244
- * })
245
- *
246
- * // Reactor is ready to use
247
- * const methods = reactor.getMethodNames()
248
- * ```
249
- */
250
- export async function createMetadataReactor<A = BaseActor>(
251
- options: CandidDisplayReactorParameters<A>
252
- ): Promise<MetadataDisplayReactor<A>> {
253
- const reactor = new MetadataDisplayReactor<A>(options)
254
- await reactor.initialize()
255
- return reactor
256
- }
package/src/utils.ts CHANGED
@@ -1,8 +1,13 @@
1
1
  import type { CandidDefinition } from "./types"
2
+ import { IDL } from "@icp-sdk/core/candid"
2
3
 
3
4
  /**
4
5
  * Imports and evaluates a Candid definition from JavaScript code.
5
6
  *
7
+ * This function evaluates JavaScript code in a controlled manner to extract
8
+ * the idlFactory and init exports. The evaluation is done using Function constructor
9
+ * which is safer than dynamic imports with data URLs and more CSP-friendly.
10
+ *
6
11
  * @param candidJs - The JavaScript code containing the Candid definition.
7
12
  * @returns A promise that resolves to the CandidDefinition.
8
13
  * @throws Error if the import fails.
@@ -11,16 +16,43 @@ export async function importCandidDefinition(
11
16
  candidJs: string
12
17
  ): Promise<CandidDefinition> {
13
18
  try {
14
- // Create a data URL with the JavaScript code
15
- const dataUri =
16
- "data:text/javascript;charset=utf-8," + encodeURIComponent(candidJs)
19
+ // Create a module exports object
20
+ const exports: Record<string, unknown> = {}
21
+
22
+ // Transform ES6 export statements to assignments
23
+ // This is safe because we're only transforming the syntax pattern,
24
+ // not evaluating arbitrary code
25
+ const transformedJs = candidJs
26
+ // Replace 'export const name = value' with 'const name = value; exports.name = name'
27
+ .replace(/export\s+const\s+(\w+)\s*=/g, "const $1 =")
28
+ // Replace 'export function name' with 'function name'
29
+ .replace(/export\s+function\s+(\w+)/g, "function $1")
30
+
31
+ // Create a safe evaluation context with necessary globals
32
+ // We provide IDL from the trusted @icp-sdk/core/candid package
33
+ const evalFunction = new Function(
34
+ "exports",
35
+ "IDL",
36
+ `
37
+ ${transformedJs}
38
+
39
+ // Capture exports
40
+ if (typeof idlFactory !== 'undefined') {
41
+ exports.idlFactory = idlFactory;
42
+ }
43
+ if (typeof init !== 'undefined') {
44
+ exports.init = init;
45
+ }
46
+ return exports;
47
+ `
48
+ )
17
49
 
18
- // Dynamically import the module
19
- const module = await import(/* webpackIgnore: true */ dataUri)
50
+ // Execute the function with the exports object and IDL
51
+ const result = evalFunction(exports, IDL)
20
52
 
21
53
  return {
22
- idlFactory: module.idlFactory,
23
- init: module.init,
54
+ idlFactory: result.idlFactory as CandidDefinition["idlFactory"],
55
+ init: result.init as CandidDefinition["init"],
24
56
  }
25
57
  } catch (error) {
26
58
  throw new Error(`Failed to import Candid definition: ${error}`)
@@ -18,17 +18,22 @@ const TAMESTAMP_KEYS = [
18
18
  "valid_until",
19
19
  ]
20
20
 
21
- const TAMESTAMP_KEYS_REGEX = new RegExp(
22
- TAMESTAMP_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"),
23
- "i"
24
- )
21
+ // Fixed ReDoS vulnerability by eliminating nested quantifiers
22
+ // Original pattern ^[\w-]*key[\w-]*$ had catastrophic backtracking
23
+ // New approach: use simple substring matching (case-insensitive)
24
+ const createKeyMatcher = (keys: string[]): ((str: string) => boolean) => {
25
+ const lowerKeys = keys.map((k) => k.toLowerCase())
26
+ return (str: string) => {
27
+ const lower = str.toLowerCase()
28
+ return lowerKeys.some((key) => lower.includes(key))
29
+ }
30
+ }
31
+
32
+ const isTimestampKey = createKeyMatcher(TAMESTAMP_KEYS)
25
33
 
26
34
  const CYCLE_KEYS = ["cycle", "cycles"]
27
35
 
28
- const CYCLE_KEYS_REGEX = new RegExp(
29
- CYCLE_KEYS.map((key) => `^[\\w-]*${key}[\\w-]*$`).join("|"),
30
- "i"
31
- )
36
+ const isCycleKey = createKeyMatcher(CYCLE_KEYS)
32
37
 
33
38
  const ACCOUNT_ID_KEYS_REGEX =
34
39
  /account_identifier|ledger_account|block_hash|transaction_hash|tx_hash/i
@@ -45,7 +50,7 @@ const tokenize = (label: string): Set<string> => {
45
50
  export const checkTextFormat = (label?: string): TextFormat => {
46
51
  if (!label) return "plain"
47
52
 
48
- if (TAMESTAMP_KEYS_REGEX.test(label)) return "timestamp"
53
+ if (isTimestampKey(label)) return "timestamp"
49
54
  if (ACCOUNT_ID_KEYS_REGEX.test(label)) return "account-id"
50
55
 
51
56
  const tokens = tokenize(label)
@@ -65,7 +70,7 @@ export const checkTextFormat = (label?: string): TextFormat => {
65
70
 
66
71
  export const checkNumberFormat = (label?: string): NumberFormat => {
67
72
  if (!label) return "normal"
68
- if (TAMESTAMP_KEYS_REGEX.test(label)) return "timestamp"
69
- if (CYCLE_KEYS_REGEX.test(label)) return "cycle"
73
+ if (isTimestampKey(label)) return "timestamp"
74
+ if (isCycleKey(label)) return "cycle"
70
75
  return "normal"
71
76
  }