@edge-protocol/sdk 0.4.5 → 0.4.7
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/DOCS.md +777 -0
- package/dist/core/EdgePass.d.ts +1 -1
- package/dist/core/EdgePass.js +24 -20
- package/dist/core/EdgePass.js.map +1 -1
- package/dist/core/ExecutionEngine.js +14 -10
- package/dist/core/ExecutionEngine.js.map +1 -1
- package/dist/core/PolicyEngine.js +5 -1
- package/dist/core/PolicyEngine.js.map +1 -1
- package/dist/index.js +15 -4
- package/dist/index.js.map +1 -1
- package/dist/test.js +188 -71
- package/dist/test.js.map +1 -1
- package/dist/utils/constants.js +33 -30
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/types.js +2 -1
- package/package.json +2 -1
package/dist/core/EdgePass.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare class EdgePass {
|
|
|
20
20
|
digest: string;
|
|
21
21
|
}>;
|
|
22
22
|
}): Promise<TransactionOutcome>;
|
|
23
|
-
validate(pass: EdgePassObject, request: TransactionRequest): import("
|
|
23
|
+
validate(pass: EdgePassObject, request: TransactionRequest): import("../utils/types").PolicyValidation;
|
|
24
24
|
fetch(objectId: string): Promise<EdgePassObject | null>;
|
|
25
25
|
revoke(pass: EdgePassObject, signer: {
|
|
26
26
|
signAndExecute: (tx: Transaction) => Promise<{
|
package/dist/core/EdgePass.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EdgePass = void 0;
|
|
4
|
+
const client_1 = require("@mysten/sui/client");
|
|
5
|
+
const transactions_1 = require("@mysten/sui/transactions");
|
|
6
|
+
const utils_1 = require("@mysten/sui/utils");
|
|
7
|
+
const PolicyEngine_1 = require("./PolicyEngine");
|
|
8
|
+
const ExecutionEngine_1 = require("./ExecutionEngine");
|
|
9
|
+
const constants_1 = require("../utils/constants");
|
|
7
10
|
// Sui Clock object ID — shared object, always the same address
|
|
8
11
|
const SUI_CLOCK_OBJECT_ID = '0x0000000000000000000000000000000000000000000000000000000000000006';
|
|
9
|
-
|
|
12
|
+
class EdgePass {
|
|
10
13
|
constructor(config) {
|
|
11
14
|
this.config = config;
|
|
12
|
-
this.client = new SuiClient({ url: NETWORK_URLS[config.network] });
|
|
13
|
-
this.engine = new ExecutionEngine(config.network);
|
|
15
|
+
this.client = new client_1.SuiClient({ url: constants_1.NETWORK_URLS[config.network] });
|
|
16
|
+
this.engine = new ExecutionEngine_1.ExecutionEngine(config.network);
|
|
14
17
|
}
|
|
15
18
|
static fromTemplate(template, overrides) {
|
|
16
|
-
const base = EDGE_TEMPLATES[template];
|
|
19
|
+
const base = constants_1.EDGE_TEMPLATES[template];
|
|
17
20
|
return {
|
|
18
21
|
...base,
|
|
19
22
|
...overrides,
|
|
@@ -21,9 +24,9 @@ export class EdgePass {
|
|
|
21
24
|
};
|
|
22
25
|
}
|
|
23
26
|
async create(passConfig, signer) {
|
|
24
|
-
const tx = new Transaction();
|
|
25
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
26
|
-
const packageId = EDGE_PACKAGE_ID[this.config.network];
|
|
27
|
+
const tx = new transactions_1.Transaction();
|
|
28
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
29
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.config.network];
|
|
27
30
|
tx.moveCall({
|
|
28
31
|
target: `${packageId}::edge_pass::create_pass`,
|
|
29
32
|
arguments: [
|
|
@@ -40,7 +43,7 @@ export class EdgePass {
|
|
|
40
43
|
],
|
|
41
44
|
});
|
|
42
45
|
// All arguments statically known — no RPC needed, instant build
|
|
43
|
-
const kindBytes = toBase64(await tx.build({ onlyTransactionKind: true }));
|
|
46
|
+
const kindBytes = (0, utils_1.toBase64)(await tx.build({ onlyTransactionKind: true }));
|
|
44
47
|
const result = await signer.signAndExecute(tx, kindBytes);
|
|
45
48
|
const now = Date.now();
|
|
46
49
|
return {
|
|
@@ -56,15 +59,15 @@ export class EdgePass {
|
|
|
56
59
|
return this.engine.execute(pass, request, signer);
|
|
57
60
|
}
|
|
58
61
|
validate(pass, request) {
|
|
59
|
-
return PolicyEngine.validate(pass, request);
|
|
62
|
+
return PolicyEngine_1.PolicyEngine.validate(pass, request);
|
|
60
63
|
}
|
|
61
64
|
async fetch(objectId) {
|
|
62
65
|
return this.engine.fetchPass(objectId);
|
|
63
66
|
}
|
|
64
67
|
async revoke(pass, signer) {
|
|
65
|
-
const tx = new Transaction();
|
|
66
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
67
|
-
const packageId = EDGE_PACKAGE_ID[this.config.network];
|
|
68
|
+
const tx = new transactions_1.Transaction();
|
|
69
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
70
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.config.network];
|
|
68
71
|
tx.moveCall({
|
|
69
72
|
target: `${packageId}::edge_pass::revoke_pass`,
|
|
70
73
|
arguments: [tx.object(pass.id)],
|
|
@@ -72,10 +75,11 @@ export class EdgePass {
|
|
|
72
75
|
return signer.signAndExecute(tx);
|
|
73
76
|
}
|
|
74
77
|
remainingBudget(pass) {
|
|
75
|
-
return PolicyEngine.remainingBudget(pass);
|
|
78
|
+
return PolicyEngine_1.PolicyEngine.remainingBudget(pass);
|
|
76
79
|
}
|
|
77
80
|
isValid(pass) {
|
|
78
|
-
return PolicyEngine.isValid(pass);
|
|
81
|
+
return PolicyEngine_1.PolicyEngine.isValid(pass);
|
|
79
82
|
}
|
|
80
83
|
}
|
|
84
|
+
exports.EdgePass = EdgePass;
|
|
81
85
|
//# sourceMappingURL=EdgePass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"EdgePass.js","sourceRoot":"","sources":["../../src/core/EdgePass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExecutionEngine = void 0;
|
|
4
|
+
const client_1 = require("@mysten/sui/client");
|
|
5
|
+
const transactions_1 = require("@mysten/sui/transactions");
|
|
6
|
+
const PolicyEngine_1 = require("./PolicyEngine");
|
|
7
|
+
const constants_1 = require("../utils/constants");
|
|
8
|
+
class ExecutionEngine {
|
|
6
9
|
constructor(network) {
|
|
7
10
|
this.network = network;
|
|
8
|
-
this.client = new SuiClient({ url: NETWORK_URLS[network] });
|
|
11
|
+
this.client = new client_1.SuiClient({ url: constants_1.NETWORK_URLS[network] });
|
|
9
12
|
}
|
|
10
13
|
async execute(pass, request, signer) {
|
|
11
|
-
const validation = PolicyEngine.validate(pass, request);
|
|
14
|
+
const validation = PolicyEngine_1.PolicyEngine.validate(pass, request);
|
|
12
15
|
if (!validation.allowed) {
|
|
13
16
|
return { status: "blocked", reason: validation.reason, auto: false };
|
|
14
17
|
}
|
|
@@ -29,9 +32,9 @@ export class ExecutionEngine {
|
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
buildPTB(pass, request) {
|
|
32
|
-
const tx = new Transaction();
|
|
33
|
-
tx.setGasBudget(DEFAULT_GAS_BUDGET);
|
|
34
|
-
const packageId = EDGE_PACKAGE_ID[this.network];
|
|
35
|
+
const tx = new transactions_1.Transaction();
|
|
36
|
+
tx.setGasBudget(constants_1.DEFAULT_GAS_BUDGET);
|
|
37
|
+
const packageId = constants_1.EDGE_PACKAGE_ID[this.network];
|
|
35
38
|
tx.moveCall({
|
|
36
39
|
target: `${packageId}::edge_pass::execute_transaction`,
|
|
37
40
|
arguments: [
|
|
@@ -74,4 +77,5 @@ export class ExecutionEngine {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
}
|
|
80
|
+
exports.ExecutionEngine = ExecutionEngine;
|
|
77
81
|
//# sourceMappingURL=ExecutionEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionEngine.js","sourceRoot":"","sources":["../../src/core/ExecutionEngine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ExecutionEngine.js","sourceRoot":"","sources":["../../src/core/ExecutionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PolicyEngine = void 0;
|
|
4
|
+
class PolicyEngine {
|
|
2
5
|
/**
|
|
3
6
|
* Validates a transaction request against an EdgePass policy.
|
|
4
7
|
*
|
|
@@ -82,4 +85,5 @@ export class PolicyEngine {
|
|
|
82
85
|
return pass.config.budget - pass.spent;
|
|
83
86
|
}
|
|
84
87
|
}
|
|
88
|
+
exports.PolicyEngine = PolicyEngine;
|
|
85
89
|
//# sourceMappingURL=PolicyEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyEngine.js","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"PolicyEngine.js","sourceRoot":"","sources":["../../src/core/PolicyEngine.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IAEvB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CACb,IAAoB,EACpB,OAA2B;QAG3B,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,sBAAsB;aAC/B,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,sBAAsB;aAC/B,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,aAAa,OAAO,CAAC,QAAQ,mBAAmB;aACzD,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,mCAAmC,SAAS,OAAO;aAC5D,CAAC;QACJ,CAAC;QAED,0DAA0D;QAC1D,IACE,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAC9C,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,kBAAkB,EAAE,KAAK;gBACzB,MAAM,EAAE,2CAA2C,IAAI,CAAC,MAAM,CAAC,iBAAiB,OAAO;aACxF,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,IAAI;gBACxB,MAAM,EAAE,0CAA0C,IAAI,CAAC,MAAM,CAAC,iBAAiB,OAAO;aACvF,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,KAAK;YACzB,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,IAAoB;QACjC,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAoB;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IACzC,CAAC;CACF;AAlGD,oCAkGC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_GAS_BUDGET = exports.EDGE_TEMPLATES = exports.EDGE_PACKAGE_ID = exports.NETWORK_URLS = exports.MIST_PER_SUI = exports.ExecutionEngine = exports.PolicyEngine = exports.EdgePass = void 0;
|
|
4
|
+
var EdgePass_1 = require("./core/EdgePass");
|
|
5
|
+
Object.defineProperty(exports, "EdgePass", { enumerable: true, get: function () { return EdgePass_1.EdgePass; } });
|
|
6
|
+
var PolicyEngine_1 = require("./core/PolicyEngine");
|
|
7
|
+
Object.defineProperty(exports, "PolicyEngine", { enumerable: true, get: function () { return PolicyEngine_1.PolicyEngine; } });
|
|
8
|
+
var ExecutionEngine_1 = require("./core/ExecutionEngine");
|
|
9
|
+
Object.defineProperty(exports, "ExecutionEngine", { enumerable: true, get: function () { return ExecutionEngine_1.ExecutionEngine; } });
|
|
10
|
+
var constants_1 = require("./utils/constants");
|
|
11
|
+
Object.defineProperty(exports, "MIST_PER_SUI", { enumerable: true, get: function () { return constants_1.MIST_PER_SUI; } });
|
|
12
|
+
Object.defineProperty(exports, "NETWORK_URLS", { enumerable: true, get: function () { return constants_1.NETWORK_URLS; } });
|
|
13
|
+
Object.defineProperty(exports, "EDGE_PACKAGE_ID", { enumerable: true, get: function () { return constants_1.EDGE_PACKAGE_ID; } });
|
|
14
|
+
Object.defineProperty(exports, "EDGE_TEMPLATES", { enumerable: true, get: function () { return constants_1.EDGE_TEMPLATES; } });
|
|
15
|
+
Object.defineProperty(exports, "DEFAULT_GAS_BUDGET", { enumerable: true, get: function () { return constants_1.DEFAULT_GAS_BUDGET; } });
|
|
5
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AACjB,oDAAmD;AAA1C,4GAAA,YAAY,OAAA;AACrB,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AAUxB,+CAM2B;AALzB,yGAAA,YAAY,OAAA;AACZ,yGAAA,YAAY,OAAA;AACZ,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA"}
|
package/dist/test.js
CHANGED
|
@@ -1,86 +1,203 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
escalateThreshold: BigInt(100) * MIST_PER_SUI,
|
|
10
|
-
approvedMerchants: ["Shuttle Express", "Hydra Bar", "Stage Access VIP"],
|
|
11
|
-
expiryMs: 48 * 60 * 60 * 1000,
|
|
12
|
-
owner: "0xabc",
|
|
13
|
-
},
|
|
14
|
-
spent: BigInt(0),
|
|
15
|
-
active: true,
|
|
16
|
-
createdAt: Date.now(),
|
|
17
|
-
expiresAt: Date.now() + 48 * 60 * 60 * 1000,
|
|
18
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const PolicyEngine_1 = require("./core/PolicyEngine");
|
|
4
|
+
const EdgePass_1 = require("./core/EdgePass");
|
|
5
|
+
const constants_1 = require("./utils/constants");
|
|
6
|
+
// ── Test runner ───────────────────────────────────────────────────────────────
|
|
7
|
+
let passed = 0;
|
|
8
|
+
let failed = 0;
|
|
19
9
|
function test(name, fn) {
|
|
20
10
|
try {
|
|
21
11
|
fn();
|
|
22
|
-
console.log(
|
|
12
|
+
console.log(` ✓ ${name}`);
|
|
13
|
+
passed++;
|
|
23
14
|
}
|
|
24
15
|
catch (e) {
|
|
25
|
-
console.error(
|
|
16
|
+
console.error(` ✗ ${name}: ${e}`);
|
|
17
|
+
failed++;
|
|
26
18
|
}
|
|
27
19
|
}
|
|
28
20
|
function assert(condition, message) {
|
|
29
21
|
if (!condition)
|
|
30
22
|
throw new Error(message);
|
|
31
23
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
24
|
+
function assertEqual(actual, expected, message) {
|
|
25
|
+
if (actual !== expected)
|
|
26
|
+
throw new Error(`${message} — expected ${expected}, got ${actual}`);
|
|
27
|
+
}
|
|
28
|
+
// ── Fixtures ──────────────────────────────────────────────────────────────────
|
|
29
|
+
const mockPass = {
|
|
30
|
+
id: '0x123',
|
|
31
|
+
config: {
|
|
32
|
+
budget: BigInt(300) * constants_1.MIST_PER_SUI,
|
|
33
|
+
autoThreshold: BigInt(50) * constants_1.MIST_PER_SUI,
|
|
34
|
+
escalateThreshold: BigInt(100) * constants_1.MIST_PER_SUI,
|
|
35
|
+
maxPerTransaction: BigInt(200) * constants_1.MIST_PER_SUI,
|
|
36
|
+
approvedMerchants: ['Shuttle Express', 'Hydra Bar', 'Stage Access VIP'],
|
|
37
|
+
expiryMs: 48 * 60 * 60 * 1000,
|
|
38
|
+
owner: '0xabc',
|
|
39
|
+
},
|
|
40
|
+
spent: BigInt(0),
|
|
41
|
+
active: true,
|
|
42
|
+
createdAt: Date.now(),
|
|
43
|
+
expiresAt: Date.now() + 48 * 60 * 60 * 1000,
|
|
44
|
+
};
|
|
45
|
+
// ── PolicyEngine tests ────────────────────────────────────────────────────────
|
|
46
|
+
console.log('\n📋 PolicyEngine.validate()');
|
|
47
|
+
test('auto-approves under $50', () => {
|
|
48
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
49
|
+
assert(r.allowed, 'should be allowed');
|
|
50
|
+
assert(!r.requiresEscalation, 'should not escalate');
|
|
51
|
+
assertEqual(r.reason, 'Auto-approved', 'reason');
|
|
52
|
+
});
|
|
53
|
+
test('auto-approves at exactly $50', () => {
|
|
54
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(50) * constants_1.MIST_PER_SUI });
|
|
55
|
+
assert(r.allowed, 'should be allowed');
|
|
56
|
+
assert(!r.requiresEscalation, 'should not escalate');
|
|
57
|
+
});
|
|
58
|
+
test('escalates above $100', () => {
|
|
59
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(149) * constants_1.MIST_PER_SUI });
|
|
60
|
+
assert(r.allowed, 'should be allowed');
|
|
61
|
+
assert(r.requiresEscalation, 'should escalate');
|
|
62
|
+
});
|
|
63
|
+
test('escalates at exactly $101', () => {
|
|
64
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(101) * constants_1.MIST_PER_SUI });
|
|
65
|
+
assert(r.requiresEscalation, 'should escalate at boundary');
|
|
66
|
+
});
|
|
67
|
+
test('blocks unlisted merchant', () => {
|
|
68
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'ShadyTokens.xyz', amount: BigInt(1) * constants_1.MIST_PER_SUI });
|
|
69
|
+
assert(!r.allowed, 'should be blocked');
|
|
70
|
+
assert(r.reason.includes('not approved'), 'reason should mention approval');
|
|
71
|
+
});
|
|
72
|
+
test('blocks when budget exceeded', () => {
|
|
73
|
+
const pass = { ...mockPass, spent: BigInt(299) * constants_1.MIST_PER_SUI };
|
|
74
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(50) * constants_1.MIST_PER_SUI });
|
|
75
|
+
assert(!r.allowed, 'should be blocked');
|
|
76
|
+
assert(r.reason.includes('budget'), 'reason should mention budget');
|
|
77
|
+
});
|
|
78
|
+
test('blocks when expired', () => {
|
|
79
|
+
const pass = { ...mockPass, expiresAt: Date.now() - 1000 };
|
|
80
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
81
|
+
assert(!r.allowed, 'should be blocked');
|
|
82
|
+
assert(r.reason.includes('expired'), 'reason should mention expiry');
|
|
83
|
+
});
|
|
84
|
+
test('blocks when inactive', () => {
|
|
85
|
+
const pass = { ...mockPass, active: false };
|
|
86
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(18) * constants_1.MIST_PER_SUI });
|
|
87
|
+
assert(!r.allowed, 'should be blocked');
|
|
88
|
+
assert(r.reason.includes('inactive'), 'reason should mention inactive');
|
|
89
|
+
});
|
|
90
|
+
test('blocks when maxPerTransaction exceeded', () => {
|
|
91
|
+
const r = PolicyEngine_1.PolicyEngine.validate(mockPass, { merchant: 'Shuttle Express', amount: BigInt(250) * constants_1.MIST_PER_SUI });
|
|
92
|
+
assert(!r.allowed, 'should be blocked');
|
|
93
|
+
assert(r.reason.includes('per-transaction'), 'reason should mention per-transaction limit');
|
|
94
|
+
});
|
|
95
|
+
test('allows when maxPerTransaction is undefined', () => {
|
|
96
|
+
const pass = { ...mockPass, config: { ...mockPass.config, maxPerTransaction: undefined } };
|
|
97
|
+
const r = PolicyEngine_1.PolicyEngine.validate(pass, { merchant: 'Shuttle Express', amount: BigInt(150) * constants_1.MIST_PER_SUI });
|
|
98
|
+
assert(r.allowed, 'should be allowed without maxPerTransaction');
|
|
99
|
+
assert(r.requiresEscalation, 'should escalate above threshold');
|
|
100
|
+
});
|
|
101
|
+
// ── PolicyEngine helpers ───────────────────────────────────────────────────────
|
|
102
|
+
console.log('\n📋 PolicyEngine helpers');
|
|
103
|
+
test('isValid returns true for active pass', () => {
|
|
104
|
+
assert(PolicyEngine_1.PolicyEngine.isValid(mockPass), 'should be valid');
|
|
105
|
+
});
|
|
106
|
+
test('isValid returns false for expired pass', () => {
|
|
107
|
+
const pass = { ...mockPass, expiresAt: Date.now() - 1000 };
|
|
108
|
+
assert(!PolicyEngine_1.PolicyEngine.isValid(pass), 'should be invalid');
|
|
109
|
+
});
|
|
110
|
+
test('isValid returns false for inactive pass', () => {
|
|
111
|
+
const pass = { ...mockPass, active: false };
|
|
112
|
+
assert(!PolicyEngine_1.PolicyEngine.isValid(pass), 'should be invalid');
|
|
113
|
+
});
|
|
114
|
+
test('remainingBudget calculates correctly', () => {
|
|
115
|
+
const pass = { ...mockPass, spent: BigInt(100) * constants_1.MIST_PER_SUI };
|
|
116
|
+
const remaining = PolicyEngine_1.PolicyEngine.remainingBudget(pass);
|
|
117
|
+
assertEqual(remaining, BigInt(200) * constants_1.MIST_PER_SUI, 'remaining budget');
|
|
118
|
+
});
|
|
119
|
+
test('remainingBudget returns full budget when nothing spent', () => {
|
|
120
|
+
const remaining = PolicyEngine_1.PolicyEngine.remainingBudget(mockPass);
|
|
121
|
+
assertEqual(remaining, BigInt(300) * constants_1.MIST_PER_SUI, 'full budget');
|
|
122
|
+
});
|
|
123
|
+
// ── EdgePass.fromTemplate ──────────────────────────────────────────────────────
|
|
124
|
+
console.log('\n📋 EdgePass.fromTemplate()');
|
|
125
|
+
test('festival template has correct defaults', () => {
|
|
126
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', { owner: '0xabc' });
|
|
127
|
+
assertEqual(config.budget, constants_1.EDGE_TEMPLATES.festival.budget, 'budget');
|
|
128
|
+
assertEqual(config.autoThreshold, constants_1.EDGE_TEMPLATES.festival.autoThreshold, 'autoThreshold');
|
|
129
|
+
assertEqual(config.escalateThreshold, constants_1.EDGE_TEMPLATES.festival.escalateThreshold, 'escalateThreshold');
|
|
130
|
+
assertEqual(config.owner, '0xabc', 'owner');
|
|
131
|
+
});
|
|
132
|
+
test('gaming template has correct expiry', () => {
|
|
133
|
+
const config = EdgePass_1.EdgePass.fromTemplate('gaming', { owner: '0xabc' });
|
|
134
|
+
assertEqual(config.expiryMs, 4 * 60 * 60 * 1000, 'gaming expiry should be 4h');
|
|
135
|
+
});
|
|
136
|
+
test('defi template has correct budget', () => {
|
|
137
|
+
const config = EdgePass_1.EdgePass.fromTemplate('defi', { owner: '0xabc' });
|
|
138
|
+
assertEqual(config.budget, BigInt(10000) * constants_1.MIST_PER_SUI, 'defi budget should be 10k SUI');
|
|
139
|
+
});
|
|
140
|
+
test('enterprise template has correct budget', () => {
|
|
141
|
+
const config = EdgePass_1.EdgePass.fromTemplate('enterprise', { owner: '0xabc' });
|
|
142
|
+
assertEqual(config.budget, BigInt(50000) * constants_1.MIST_PER_SUI, 'enterprise budget should be 50k SUI');
|
|
143
|
+
});
|
|
144
|
+
test('fromTemplate allows budget override', () => {
|
|
145
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', {
|
|
146
|
+
budget: BigInt(500) * constants_1.MIST_PER_SUI,
|
|
147
|
+
owner: '0xabc',
|
|
73
148
|
});
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
amount: BigInt(18) * MIST_PER_SUI,
|
|
149
|
+
assertEqual(config.budget, BigInt(500) * constants_1.MIST_PER_SUI, 'overridden budget');
|
|
150
|
+
});
|
|
151
|
+
test('fromTemplate allows merchant override', () => {
|
|
152
|
+
const merchants = ['My Vendor 1', 'My Vendor 2'];
|
|
153
|
+
const config = EdgePass_1.EdgePass.fromTemplate('festival', {
|
|
154
|
+
approvedMerchants: merchants,
|
|
155
|
+
owner: '0xabc',
|
|
82
156
|
});
|
|
83
|
-
|
|
157
|
+
assertEqual(config.approvedMerchants.length, 2, 'merchant count');
|
|
158
|
+
assertEqual(config.approvedMerchants[0], 'My Vendor 1', 'first merchant');
|
|
159
|
+
});
|
|
160
|
+
test('fromTemplate preserves owner', () => {
|
|
161
|
+
const config = EdgePass_1.EdgePass.fromTemplate('defi', { owner: '0xdeadbeef' });
|
|
162
|
+
assertEqual(config.owner, '0xdeadbeef', 'owner preserved');
|
|
163
|
+
});
|
|
164
|
+
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
165
|
+
console.log('\n📋 Constants');
|
|
166
|
+
test('MIST_PER_SUI is 1_000_000_000', () => {
|
|
167
|
+
assertEqual(constants_1.MIST_PER_SUI, BigInt(1000000000), 'MIST_PER_SUI');
|
|
168
|
+
});
|
|
169
|
+
test('all 5 templates exist', () => {
|
|
170
|
+
const templates = ['festival', 'gaming', 'subscription', 'defi', 'enterprise'];
|
|
171
|
+
for (const t of templates) {
|
|
172
|
+
assert(t in constants_1.EDGE_TEMPLATES, `template ${t} should exist`);
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
test('all templates have required fields', () => {
|
|
176
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
177
|
+
assert('budget' in template, `${name} should have budget`);
|
|
178
|
+
assert('autoThreshold' in template, `${name} should have autoThreshold`);
|
|
179
|
+
assert('escalateThreshold' in template, `${name} should have escalateThreshold`);
|
|
180
|
+
assert('expiryMs' in template, `${name} should have expiryMs`);
|
|
181
|
+
}
|
|
84
182
|
});
|
|
85
|
-
|
|
183
|
+
test('all templates have autoThreshold < escalateThreshold', () => {
|
|
184
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
185
|
+
assert(template.autoThreshold < template.escalateThreshold, `${name}: autoThreshold must be less than escalateThreshold`);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
test('all templates have escalateThreshold < budget', () => {
|
|
189
|
+
for (const [name, template] of Object.entries(constants_1.EDGE_TEMPLATES)) {
|
|
190
|
+
assert(template.escalateThreshold < template.budget, `${name}: escalateThreshold must be less than budget`);
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
// ── Summary ───────────────────────────────────────────────────────────────────
|
|
194
|
+
console.log(`\n${'─'.repeat(40)}`);
|
|
195
|
+
console.log(` ${passed} passed · ${failed} failed`);
|
|
196
|
+
if (failed > 0) {
|
|
197
|
+
console.error(`\n ✗ ${failed} test(s) failed`);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
console.log(`\n ✅ All ${passed} tests passing`);
|
|
202
|
+
}
|
|
86
203
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|