@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.
- package/dist/metadata-display-reactor.d.ts +0 -20
- package/dist/metadata-display-reactor.d.ts.map +1 -1
- package/dist/metadata-display-reactor.js +0 -27
- package/dist/metadata-display-reactor.js.map +1 -1
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -6
- package/dist/utils.js.map +1 -1
- package/dist/visitor/constants.d.ts.map +1 -1
- package/dist/visitor/constants.js +15 -5
- package/dist/visitor/constants.js.map +1 -1
- package/package.json +2 -2
- package/src/metadata-display-reactor.ts +0 -31
- package/src/utils.ts +39 -7
- package/src/visitor/constants.ts +16 -11
|
@@ -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
|
|
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.
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
11
|
-
const
|
|
12
|
-
//
|
|
13
|
-
|
|
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:
|
|
16
|
-
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":"
|
|
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;
|
|
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
|
-
|
|
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
|
|
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 (
|
|
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 (
|
|
67
|
+
if (isTimestampKey(label))
|
|
58
68
|
return "timestamp";
|
|
59
|
-
if (
|
|
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":"AAEA,MAAM,cAAc,GAAG;IACrB,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;CACd,CAAA;AAED,MAAM,
|
|
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.
|
|
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.
|
|
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
|
|
15
|
-
const
|
|
16
|
-
|
|
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
|
-
//
|
|
19
|
-
const
|
|
50
|
+
// Execute the function with the exports object and IDL
|
|
51
|
+
const result = evalFunction(exports, IDL)
|
|
20
52
|
|
|
21
53
|
return {
|
|
22
|
-
idlFactory:
|
|
23
|
-
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}`)
|
package/src/visitor/constants.ts
CHANGED
|
@@ -18,17 +18,22 @@ const TAMESTAMP_KEYS = [
|
|
|
18
18
|
"valid_until",
|
|
19
19
|
]
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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 (
|
|
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 (
|
|
69
|
-
if (
|
|
73
|
+
if (isTimestampKey(label)) return "timestamp"
|
|
74
|
+
if (isCycleKey(label)) return "cycle"
|
|
70
75
|
return "normal"
|
|
71
76
|
}
|