@cedulon/core 0.2.0 → 0.3.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.
@@ -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
- export declare function verifyDecisionToken(signed: SignedDecisionToken, nowMs?: number): boolean;
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":"AAcA,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,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAkBxF;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"}
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"}
@@ -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
- export function verifyDecisionToken(signed, nowMs) {
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":"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"}
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,WAAW,EACX,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;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA2B,EAC3B,KAAc,EACd,oBAA6B;IAE7B,IAAI,oBAAoB,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,EAAE,CAAC;QAClG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAiB,EACjB,MAAc,EACd,WAAmB,EACnB,QAAgB,EAChB,aAAqB,EACrB,YAAoB;IAEpB,OAAO,iBAAiB,CACtB;QACE,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;QAC/B,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACxF,QAAQ;QACR,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,WAAW;KACZ,EACD,aAAa,EACb,YAAY,CACb,CAAC;AACJ,CAAC"}
@@ -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;IAqDrC,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAU5F,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,QAAQ;IAgBrF,OAAO,CAAC,UAAU;CAUnB"}
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
- if (this.policy.allowedTools && req.tool && !this.policy.allowedTools.includes(req.tool)) {
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
- if (!verifyDecisionToken(token, nowMs)) {
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
  }
@@ -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
@@ -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.2.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.2.0"
45
- }
46
- }
1
+ {
2
+ "name": "@cedulon/core",
3
+ "version": "0.3.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.3.0"
45
+ }
46
+ }