@cedulon/core 0.2.0 → 0.3.1
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/decision-token.d.ts +5 -1
- package/dist/decision-token.d.ts.map +1 -1
- package/dist/decision-token.js +9 -2
- package/dist/decision-token.js.map +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +22 -2
- package/dist/policy.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +46 -46
package/dist/decision-token.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ export type SignedDecisionToken = {
|
|
|
23
23
|
export declare function decisionTokenToCbor(claims: DecisionTokenClaims): Uint8Array;
|
|
24
24
|
export declare function decisionTokenFromCbor(bytes: Uint8Array): DecisionTokenClaims;
|
|
25
25
|
export declare function signDecisionToken(claims: DecisionTokenClaims, privateKeyPem: string, publicKeyPem: string): SignedDecisionToken;
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* `expectedIssuerKeyPem` is the issuer key the caller holds out of band. Omitted,
|
|
28
|
+
* the token is checked against the key it carries, which any minted key satisfies.
|
|
29
|
+
*/
|
|
30
|
+
export declare function verifyDecisionToken(signed: SignedDecisionToken, nowMs?: number, expectedIssuerKeyPem?: string): boolean;
|
|
27
31
|
export declare function issueDecisionToken(req: SpendRequest, policy: Policy, singleUseId: string, expiryMs: number, privateKeyPem: string, publicKeyPem: string): SignedDecisionToken;
|
|
28
32
|
//# sourceMappingURL=decision-token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decision-token.d.ts","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,qDAAqD;AACrD,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,UAAU,CAU3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,mBAAmB,CAgB5E;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,mBAAmB,CAQrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAqBT;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,mBAAmB,CAYrB"}
|
package/dist/decision-token.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import { CTY_DECISION, asMap, cborMap, decodeCbor, decodeCoseSign1, encodeCbor, mapGet, signCoseSign1, verifyCoseSign1, } from "@cedulon/cose";
|
|
2
|
+
import { CTY_DECISION, asMap, cborMap, decodeCbor, decodeCoseSign1, encodeCbor, mapGet, sameSpkiKey, signCoseSign1, verifyCoseSign1, } from "@cedulon/cose";
|
|
3
3
|
import { canonical } from "./canonical.js";
|
|
4
4
|
import { policyDocument, requestHashOf } from "./policy.js";
|
|
5
5
|
/** CWT private-use labels for the Decision Token. */
|
|
@@ -47,7 +47,14 @@ export function signDecisionToken(claims, privateKeyPem, publicKeyPem) {
|
|
|
47
47
|
coseHex: Buffer.from(cose).toString("hex"),
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
* `expectedIssuerKeyPem` is the issuer key the caller holds out of band. Omitted,
|
|
52
|
+
* the token is checked against the key it carries, which any minted key satisfies.
|
|
53
|
+
*/
|
|
54
|
+
export function verifyDecisionToken(signed, nowMs, expectedIssuerKeyPem) {
|
|
55
|
+
if (expectedIssuerKeyPem !== undefined && !sameSpkiKey(signed.publicKeyPem, expectedIssuerKeyPem)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
51
58
|
const bytes = Buffer.from(signed.coseHex, "hex");
|
|
52
59
|
if (!verifyCoseSign1(bytes, signed.publicKeyPem, CTY_DECISION)) {
|
|
53
60
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,KAAK,EACL,OAAO,EACP,UAAU,EACV,eAAe,EACf,UAAU,EACV,MAAM,EACN,aAAa,EACb,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,qDAAqD;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,CAAC,KAAK;IACnB,UAAU,EAAE,CAAC,KAAK;IAClB,QAAQ,EAAE,CAAC,KAAK;IAChB,KAAK,EAAE,CAAC,KAAK;IACb,WAAW,EAAE,CAAC,KAAK;CACX,CAAC;AAiBX,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,OAAO,UAAU,CACf,OAAO,CAAC;QACN,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;QAChD,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QAC9C,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC1C,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB;IACrD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAC7D,OAAO;QACL,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAC7C,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;QAC3C,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QACjC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA2B,EAC3B,aAAqB,EACrB,YAAoB;IAEpB,MAAM,IAAI,GAAG,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACrF,OAAO;QACL,MAAM;QACN,YAAY;QACZ,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"decision-token.js","sourceRoot":"","sources":["../src/decision-token.ts"],"names":[],"mappings":"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"}
|
package/dist/policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CASvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYtE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;gBAG7C,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,WAA+B,EACtC,UAAU,GAAE,kBAAkB,GAAG,IAAW;IAO9C,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CASvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYtE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAAK;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAC;gBAG7C,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,WAA+B,EACtC,UAAU,GAAE,kBAAkB,GAAG,IAAW;IAO9C,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,QAAQ;IA8DrC,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAgB5F,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,QAAQ;IAqBrF,OAAO,CAAC,UAAU;CAUnB"}
|
package/dist/policy.js
CHANGED
|
@@ -38,6 +38,12 @@ export class PolicyEngine {
|
|
|
38
38
|
if (this.store.usedNonces.has(req.nonce)) {
|
|
39
39
|
return { allow: false, reason: "replay-nonce" };
|
|
40
40
|
}
|
|
41
|
+
// A limit with only an upper bound is half a limit: a negative amount clears
|
|
42
|
+
// it, then subtracts from the cumulative counter and reopens a budget that
|
|
43
|
+
// was already spent. Zero passes no money and still burns a nonce and a slot.
|
|
44
|
+
if (req.amount <= 0n) {
|
|
45
|
+
return { allow: false, reason: "amount-not-positive" };
|
|
46
|
+
}
|
|
41
47
|
if (req.amount > this.policy.maxAmount) {
|
|
42
48
|
return { allow: false, reason: "limit-amount" };
|
|
43
49
|
}
|
|
@@ -48,7 +54,10 @@ export class PolicyEngine {
|
|
|
48
54
|
!this.policy.allowedCurrencies.includes(req.currency)) {
|
|
49
55
|
return { allow: false, reason: "scope-currency" };
|
|
50
56
|
}
|
|
51
|
-
|
|
57
|
+
// An allow-list a caller can opt out of by omitting the field is not an
|
|
58
|
+
// allow-list. Once a list is configured, a request that names no tool is
|
|
59
|
+
// outside it.
|
|
60
|
+
if (this.policy.allowedTools && (req.tool === undefined || !this.policy.allowedTools.includes(req.tool))) {
|
|
52
61
|
return { allow: false, reason: "scope-tool" };
|
|
53
62
|
}
|
|
54
63
|
this.rollWindow(req.nowMs);
|
|
@@ -76,7 +85,13 @@ export class PolicyEngine {
|
|
|
76
85
|
};
|
|
77
86
|
}
|
|
78
87
|
consumeDecisionToken(token, req, nowMs) {
|
|
79
|
-
|
|
88
|
+
// This engine holds the key it signs decisions with, so there is no reason to
|
|
89
|
+
// ask the token which key to check it against. A token minted by anyone else
|
|
90
|
+
// is not this engine's decision, whatever it says inside.
|
|
91
|
+
if (!this.issuerKeys) {
|
|
92
|
+
return { allow: false, reason: "decision-bad-sig" };
|
|
93
|
+
}
|
|
94
|
+
if (!verifyDecisionToken(token, nowMs, this.issuerKeys.publicKeyPem)) {
|
|
80
95
|
if (token.claims.expiryMs < nowMs) {
|
|
81
96
|
return { allow: false, reason: "decision-expired" };
|
|
82
97
|
}
|
|
@@ -85,6 +100,11 @@ export class PolicyEngine {
|
|
|
85
100
|
return this.consumeDecision(token.claims.singleUseId, token.claims.requestHash, req);
|
|
86
101
|
}
|
|
87
102
|
consumeDecision(decisionId, requestHash, req) {
|
|
103
|
+
// evaluate() refuses these, but it is not the only door into a decision: a
|
|
104
|
+
// caller holding a token reaches this one directly.
|
|
105
|
+
if (req.amount <= 0n) {
|
|
106
|
+
return { allow: false, reason: "amount-not-positive" };
|
|
107
|
+
}
|
|
88
108
|
if (this.store.consumedDecisions.has(decisionId)) {
|
|
89
109
|
return { allow: false, reason: "decision-replay" };
|
|
90
110
|
}
|
package/dist/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export type AllowDecision = {
|
|
|
26
26
|
};
|
|
27
27
|
export type DenyDecision = {
|
|
28
28
|
allow: false;
|
|
29
|
-
reason: "engine-unavailable" | "engine-fault" | "default-deny" | "limit-amount" | "limit-cumulative" | "velocity" | "scope-payee" | "scope-currency" | "scope-tool" | "replay-nonce" | "expired-manifest" | "manifest-mismatch" | "decision-mismatch" | "decision-replay" | "decision-expired" | "decision-bad-sig";
|
|
29
|
+
reason: "engine-unavailable" | "engine-fault" | "default-deny" | "amount-not-positive" | "limit-amount" | "limit-cumulative" | "velocity" | "scope-payee" | "scope-currency" | "scope-tool" | "replay-nonce" | "expired-manifest" | "manifest-mismatch" | "decision-mismatch" | "decision-replay" | "decision-expired" | "decision-bad-sig";
|
|
30
30
|
};
|
|
31
31
|
export type Decision = AllowDecision | DenyDecision;
|
|
32
32
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,MAAM,MAAM,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EACF,oBAAoB,GACpB,cAAc,GACd,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,MAAM,MAAM,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EACF,oBAAoB,GACpB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,cAAc,GACd,kBAAkB,GAClB,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@cedulon/core",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Fail-closed spend policy engine and decision tokens for Cedulon.",
|
|
5
|
-
"license": "Apache-2.0",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"engines": {
|
|
8
|
-
"node": ">=20"
|
|
9
|
-
},
|
|
10
|
-
"repository": {
|
|
11
|
-
"type": "git",
|
|
12
|
-
"url": "git+https://github.com/dogrucanemek-alt/cedulon.git",
|
|
13
|
-
"directory": "packages/core"
|
|
14
|
-
},
|
|
15
|
-
"homepage": "https://github.com/dogrucanemek-alt/cedulon/tree/master/packages/core",
|
|
16
|
-
"bugs": {
|
|
17
|
-
"url": "https://github.com/dogrucanemek-alt/cedulon/issues"
|
|
18
|
-
},
|
|
19
|
-
"keywords": [
|
|
20
|
-
"cedulon",
|
|
21
|
-
"policy",
|
|
22
|
-
"fail-closed"
|
|
23
|
-
],
|
|
24
|
-
"scripts": {
|
|
25
|
-
"build": "tsc -p tsconfig.build.json"
|
|
26
|
-
},
|
|
27
|
-
"main": "./dist/index.js",
|
|
28
|
-
"types": "./dist/index.d.ts",
|
|
29
|
-
"exports": {
|
|
30
|
-
".": {
|
|
31
|
-
"types": "./dist/index.d.ts",
|
|
32
|
-
"import": "./dist/index.js"
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"files": [
|
|
36
|
-
"dist",
|
|
37
|
-
"README.md",
|
|
38
|
-
"LICENSE"
|
|
39
|
-
],
|
|
40
|
-
"publishConfig": {
|
|
41
|
-
"access": "public"
|
|
42
|
-
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"@cedulon/cose": "^0.
|
|
45
|
-
}
|
|
46
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@cedulon/core",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"description": "Fail-closed spend policy engine and decision tokens for Cedulon.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/dogrucanemek-alt/cedulon.git",
|
|
13
|
+
"directory": "packages/core"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/dogrucanemek-alt/cedulon/tree/master/packages/core",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/dogrucanemek-alt/cedulon/issues"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"cedulon",
|
|
21
|
+
"policy",
|
|
22
|
+
"fail-closed"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.build.json"
|
|
26
|
+
},
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"import": "./dist/index.js"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE"
|
|
39
|
+
],
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@cedulon/cose": "^0.3.0"
|
|
45
|
+
}
|
|
46
|
+
}
|