@xemahq/license-verifier 0.1.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.
Files changed (98) hide show
  1. package/README.md +224 -0
  2. package/dist/bin/xema-license-keygen.d.ts +3 -0
  3. package/dist/bin/xema-license-keygen.d.ts.map +1 -0
  4. package/dist/bin/xema-license-keygen.js +63 -0
  5. package/dist/bin/xema-license-keygen.js.map +1 -0
  6. package/dist/bin/xema-license-mint-oss.d.ts +3 -0
  7. package/dist/bin/xema-license-mint-oss.d.ts.map +1 -0
  8. package/dist/bin/xema-license-mint-oss.js +70 -0
  9. package/dist/bin/xema-license-mint-oss.js.map +1 -0
  10. package/dist/embedded/license-material.generated.d.ts +4 -0
  11. package/dist/embedded/license-material.generated.d.ts.map +1 -0
  12. package/dist/embedded/license-material.generated.js +7 -0
  13. package/dist/embedded/license-material.generated.js.map +1 -0
  14. package/dist/index.d.ts +13 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +50 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/lib/base64url.d.ts +4 -0
  19. package/dist/lib/base64url.d.ts.map +1 -0
  20. package/dist/lib/base64url.js +31 -0
  21. package/dist/lib/base64url.js.map +1 -0
  22. package/dist/lib/compact-jws.d.ts +16 -0
  23. package/dist/lib/compact-jws.d.ts.map +1 -0
  24. package/dist/lib/compact-jws.js +47 -0
  25. package/dist/lib/compact-jws.js.map +1 -0
  26. package/dist/lib/effective-license.d.ts +28 -0
  27. package/dist/lib/effective-license.d.ts.map +1 -0
  28. package/dist/lib/effective-license.js +39 -0
  29. package/dist/lib/effective-license.js.map +1 -0
  30. package/dist/lib/embedded-license.d.ts +7 -0
  31. package/dist/lib/embedded-license.d.ts.map +1 -0
  32. package/dist/lib/embedded-license.js +26 -0
  33. package/dist/lib/embedded-license.js.map +1 -0
  34. package/dist/lib/evaluate-entitlement.d.ts +28 -0
  35. package/dist/lib/evaluate-entitlement.d.ts.map +1 -0
  36. package/dist/lib/evaluate-entitlement.js +84 -0
  37. package/dist/lib/evaluate-entitlement.js.map +1 -0
  38. package/dist/lib/evaluate-limit.d.ts +18 -0
  39. package/dist/lib/evaluate-limit.d.ts.map +1 -0
  40. package/dist/lib/evaluate-limit.js +49 -0
  41. package/dist/lib/evaluate-limit.js.map +1 -0
  42. package/dist/lib/license-claims.d.ts +29 -0
  43. package/dist/lib/license-claims.d.ts.map +1 -0
  44. package/dist/lib/license-claims.js +3 -0
  45. package/dist/lib/license-claims.js.map +1 -0
  46. package/dist/lib/license-enums.d.ts +47 -0
  47. package/dist/lib/license-enums.d.ts.map +1 -0
  48. package/dist/lib/license-enums.js +58 -0
  49. package/dist/lib/license-enums.js.map +1 -0
  50. package/dist/lib/license-signer.d.ts +16 -0
  51. package/dist/lib/license-signer.d.ts.map +1 -0
  52. package/dist/lib/license-signer.js +35 -0
  53. package/dist/lib/license-signer.js.map +1 -0
  54. package/dist/lib/oss-license.d.ts +3 -0
  55. package/dist/lib/oss-license.d.ts.map +1 -0
  56. package/dist/lib/oss-license.js +27 -0
  57. package/dist/lib/oss-license.js.map +1 -0
  58. package/dist/lib/parse-license-claims.d.ts +8 -0
  59. package/dist/lib/parse-license-claims.d.ts.map +1 -0
  60. package/dist/lib/parse-license-claims.js +0 -0
  61. package/dist/lib/parse-license-claims.js.map +1 -0
  62. package/dist/lib/render-license-material.d.ts +8 -0
  63. package/dist/lib/render-license-material.d.ts.map +1 -0
  64. package/dist/lib/render-license-material.js +55 -0
  65. package/dist/lib/render-license-material.js.map +1 -0
  66. package/dist/lib/resolve-license-state.d.ts +20 -0
  67. package/dist/lib/resolve-license-state.d.ts.map +1 -0
  68. package/dist/lib/resolve-license-state.js +74 -0
  69. package/dist/lib/resolve-license-state.js.map +1 -0
  70. package/dist/lib/rfc3339.d.ts +2 -0
  71. package/dist/lib/rfc3339.d.ts.map +1 -0
  72. package/dist/lib/rfc3339.js +24 -0
  73. package/dist/lib/rfc3339.js.map +1 -0
  74. package/dist/lib/sign-license.d.ts +4 -0
  75. package/dist/lib/sign-license.d.ts.map +1 -0
  76. package/dist/lib/sign-license.js +27 -0
  77. package/dist/lib/sign-license.js.map +1 -0
  78. package/dist/lib/trust-store.d.ts +7 -0
  79. package/dist/lib/trust-store.d.ts.map +1 -0
  80. package/dist/lib/trust-store.js +32 -0
  81. package/dist/lib/trust-store.js.map +1 -0
  82. package/dist/lib/verification-failure.d.ts +17 -0
  83. package/dist/lib/verification-failure.d.ts.map +1 -0
  84. package/dist/lib/verification-failure.js +19 -0
  85. package/dist/lib/verification-failure.js.map +1 -0
  86. package/dist/lib/verified-license.d.ts +10 -0
  87. package/dist/lib/verified-license.d.ts.map +1 -0
  88. package/dist/lib/verified-license.js +8 -0
  89. package/dist/lib/verified-license.js.map +1 -0
  90. package/dist/lib/verify-license.d.ts +13 -0
  91. package/dist/lib/verify-license.d.ts.map +1 -0
  92. package/dist/lib/verify-license.js +98 -0
  93. package/dist/lib/verify-license.js.map +1 -0
  94. package/dist/signing.d.ts +4 -0
  95. package/dist/signing.d.ts.map +1 -0
  96. package/dist/signing.js +10 -0
  97. package/dist/signing.js.map +1 -0
  98. package/package.json +56 -0
@@ -0,0 +1,28 @@
1
+ import { type LicenseState, type ResolveLicenseStateOptions } from './resolve-license-state.ts';
2
+ import type { LicenseTrustStore } from './trust-store.ts';
3
+ import type { LicenseVerificationFailureCode } from './verification-failure.ts';
4
+ import type { VerifiedLicense } from './verified-license.ts';
5
+ export declare enum LicenseSource {
6
+ Customer = "customer",
7
+ EmbeddedOpenSource = "embedded-open-source"
8
+ }
9
+ export interface ResolveEffectiveLicenseInput extends ResolveLicenseStateOptions {
10
+ readonly customerLicense: string | undefined;
11
+ readonly trustStore?: LicenseTrustStore;
12
+ }
13
+ export interface EffectiveLicenseVerified {
14
+ readonly ok: true;
15
+ readonly source: LicenseSource;
16
+ readonly license: VerifiedLicense;
17
+ readonly state: LicenseState;
18
+ readonly token: string;
19
+ }
20
+ export interface EffectiveLicenseUnverifiable {
21
+ readonly ok: false;
22
+ readonly source: LicenseSource;
23
+ readonly code: LicenseVerificationFailureCode;
24
+ readonly message: string;
25
+ }
26
+ export type EffectiveLicense = EffectiveLicenseVerified | EffectiveLicenseUnverifiable;
27
+ export declare function resolveEffectiveLicense(input: ResolveEffectiveLicenseInput): EffectiveLicense;
28
+ //# sourceMappingURL=effective-license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-license.d.ts","sourceRoot":"","sources":["../../src/lib/effective-license.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAwB7D,oBAAY,aAAa;IAEvB,QAAQ,aAAa;IAErB,kBAAkB,yBAAyB;CAC5C;AAED,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAM9E,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IAM7C,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAOD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAM7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAOD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAE9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,4BAA4B,CAAC;AAUjC,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,gBAAgB,CA6BlB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LicenseSource = void 0;
4
+ exports.resolveEffectiveLicense = resolveEffectiveLicense;
5
+ const embedded_license_ts_1 = require("./embedded-license.js");
6
+ const resolve_license_state_ts_1 = require("./resolve-license-state.js");
7
+ const verify_license_ts_1 = require("./verify-license.js");
8
+ var LicenseSource;
9
+ (function (LicenseSource) {
10
+ LicenseSource["Customer"] = "customer";
11
+ LicenseSource["EmbeddedOpenSource"] = "embedded-open-source";
12
+ })(LicenseSource || (exports.LicenseSource = LicenseSource = {}));
13
+ function resolveEffectiveLicense(input) {
14
+ const source = input.customerLicense === undefined
15
+ ? LicenseSource.EmbeddedOpenSource
16
+ : LicenseSource.Customer;
17
+ const token = input.customerLicense ?? (0, embedded_license_ts_1.getEmbeddedOssLicense)();
18
+ const trustStore = input.trustStore ?? (0, embedded_license_ts_1.getProductionLicenseTrustStore)();
19
+ const verified = (0, verify_license_ts_1.verifyLicense)(token, { trustStore });
20
+ if (!verified.ok) {
21
+ return {
22
+ ok: false,
23
+ source,
24
+ code: verified.code,
25
+ message: verified.message,
26
+ };
27
+ }
28
+ const state = (0, resolve_license_state_ts_1.resolveLicenseState)(verified, {
29
+ ...(input.now !== undefined ? { now: input.now } : {}),
30
+ ...(input.clockSkewToleranceMs !== undefined
31
+ ? { clockSkewToleranceMs: input.clockSkewToleranceMs }
32
+ : {}),
33
+ ...(input.highestObservedTimeMs !== undefined
34
+ ? { highestObservedTimeMs: input.highestObservedTimeMs }
35
+ : {}),
36
+ });
37
+ return { ok: true, source, license: verified, state, token };
38
+ }
39
+ //# sourceMappingURL=effective-license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-license.js","sourceRoot":"","sources":["../../src/lib/effective-license.ts"],"names":[],"mappings":";;;AAqGA,0DA+BC;AApID,+DAG+B;AAC/B,yEAIoC;AAGpC,2DAAoD;AAyBpD,IAAY,aAKX;AALD,WAAY,aAAa;IAEvB,sCAAqB,CAAA;IAErB,4DAA2C,CAAA;AAC7C,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AA4DD,SAAgB,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,MAAM,GACV,KAAK,CAAC,eAAe,KAAK,SAAS;QACjC,CAAC,CAAC,aAAa,CAAC,kBAAkB;QAClC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,IAAI,IAAA,2CAAqB,GAAE,CAAC;IAE/D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAA,oDAA8B,GAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAA,iCAAa,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM;YACN,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,8CAAmB,EAAC,QAAQ,EAAE;QAC1C,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,qBAAqB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAAE;YACxD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type LicenseTrustStore } from './trust-store.ts';
2
+ import { type LicenseVerificationResult } from './verify-license.ts';
3
+ export declare function getProductionLicenseTrustStore(): LicenseTrustStore;
4
+ export declare function isLicenseMaterialProvisioned(): boolean;
5
+ export declare function getEmbeddedOssLicense(): string;
6
+ export declare function verifyEmbeddedOssLicense(): LicenseVerificationResult;
7
+ //# sourceMappingURL=embedded-license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-license.d.ts","sourceRoot":"","sources":["../../src/lib/embedded-license.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAY7B,wBAAgB,8BAA8B,IAAI,iBAAiB,CAGlE;AASD,wBAAgB,4BAA4B,IAAI,OAAO,CAEtD;AAUD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAUD,wBAAgB,wBAAwB,IAAI,yBAAyB,CAIpE"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProductionLicenseTrustStore = getProductionLicenseTrustStore;
4
+ exports.isLicenseMaterialProvisioned = isLicenseMaterialProvisioned;
5
+ exports.getEmbeddedOssLicense = getEmbeddedOssLicense;
6
+ exports.verifyEmbeddedOssLicense = verifyEmbeddedOssLicense;
7
+ const license_material_generated_ts_1 = require("../embedded/license-material.generated.js");
8
+ const trust_store_ts_1 = require("./trust-store.js");
9
+ const verify_license_ts_1 = require("./verify-license.js");
10
+ let cachedTrustStore;
11
+ function getProductionLicenseTrustStore() {
12
+ cachedTrustStore ??= (0, trust_store_ts_1.createLicenseTrustStore)(license_material_generated_ts_1.EMBEDDED_LICENSE_PUBLIC_KEYS);
13
+ return cachedTrustStore;
14
+ }
15
+ function isLicenseMaterialProvisioned() {
16
+ return license_material_generated_ts_1.LICENSE_MATERIAL_PROVISIONED;
17
+ }
18
+ function getEmbeddedOssLicense() {
19
+ return license_material_generated_ts_1.EMBEDDED_OSS_LICENSE;
20
+ }
21
+ function verifyEmbeddedOssLicense() {
22
+ return (0, verify_license_ts_1.verifyLicense)(getEmbeddedOssLicense(), {
23
+ trustStore: getProductionLicenseTrustStore(),
24
+ });
25
+ }
26
+ //# sourceMappingURL=embedded-license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded-license.js","sourceRoot":"","sources":["../../src/lib/embedded-license.ts"],"names":[],"mappings":";;AAwBA,wEAGC;AASD,oEAEC;AAUD,sDAEC;AAUD,4DAIC;AAhED,6FAImD;AACnD,qDAG0B;AAC1B,2DAG6B;AAE7B,IAAI,gBAA+C,CAAC;AAUpD,SAAgB,8BAA8B;IAC5C,gBAAgB,KAAK,IAAA,wCAAuB,EAAC,4DAA4B,CAAC,CAAC;IAC3E,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AASD,SAAgB,4BAA4B;IAC1C,OAAO,4DAA4B,CAAC;AACtC,CAAC;AAUD,SAAgB,qBAAqB;IACnC,OAAO,oDAAoB,CAAC;AAC9B,CAAC;AAUD,SAAgB,wBAAwB;IACtC,OAAO,IAAA,iCAAa,EAAC,qBAAqB,EAAE,EAAE;QAC5C,UAAU,EAAE,8BAA8B,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { LicenseEntitlement } from './license-claims.ts';
2
+ import { EntitlementAction, EntitlementKind } from './license-enums.ts';
3
+ import { type LicenseState, type ResolveLicenseStateOptions } from './resolve-license-state.ts';
4
+ import type { VerifiedLicense } from './verified-license.ts';
5
+ export declare enum EntitlementDenialReason {
6
+ MalformedQuery = "malformed-query",
7
+ LicenseNotYetValid = "license-not-yet-valid",
8
+ LicenseRevoked = "license-revoked",
9
+ LicenseSuspended = "license-suspended",
10
+ LicenseRestricted = "license-restricted",
11
+ NoMatchingEntitlement = "no-matching-entitlement"
12
+ }
13
+ export interface EntitlementQuery {
14
+ readonly kind: EntitlementKind;
15
+ readonly id: string;
16
+ readonly action: EntitlementAction;
17
+ }
18
+ export type EntitlementDecision = {
19
+ readonly granted: true;
20
+ readonly state: LicenseState;
21
+ readonly matched: LicenseEntitlement;
22
+ } | {
23
+ readonly granted: false;
24
+ readonly state: LicenseState;
25
+ readonly reason: EntitlementDenialReason;
26
+ };
27
+ export declare function evaluateEntitlement(license: VerifiedLicense, query: EntitlementQuery, options?: ResolveLicenseStateOptions): EntitlementDecision;
28
+ //# sourceMappingURL=evaluate-entitlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-entitlement.d.ts","sourceRoot":"","sources":["../../src/lib/evaluate-entitlement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAGL,iBAAiB,EACjB,eAAe,EAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,0BAA0B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,oBAAY,uBAAuB;IAEjC,cAAc,oBAAoB;IAElC,kBAAkB,0BAA0B;IAE5C,cAAc,oBAAoB;IAElC,gBAAgB,sBAAsB;IAEtC,iBAAiB,uBAAuB;IAExC,qBAAqB,4BAA4B;CAClD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAE/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAE7B,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;CAC1C,CAAC;AAgBN,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,gBAAgB,EACvB,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAoCrB"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntitlementDenialReason = void 0;
4
+ exports.evaluateEntitlement = evaluateEntitlement;
5
+ const license_enums_ts_1 = require("./license-enums.js");
6
+ const resolve_license_state_ts_1 = require("./resolve-license-state.js");
7
+ var EntitlementDenialReason;
8
+ (function (EntitlementDenialReason) {
9
+ EntitlementDenialReason["MalformedQuery"] = "malformed-query";
10
+ EntitlementDenialReason["LicenseNotYetValid"] = "license-not-yet-valid";
11
+ EntitlementDenialReason["LicenseRevoked"] = "license-revoked";
12
+ EntitlementDenialReason["LicenseSuspended"] = "license-suspended";
13
+ EntitlementDenialReason["LicenseRestricted"] = "license-restricted";
14
+ EntitlementDenialReason["NoMatchingEntitlement"] = "no-matching-entitlement";
15
+ })(EntitlementDenialReason || (exports.EntitlementDenialReason = EntitlementDenialReason = {}));
16
+ function evaluateEntitlement(license, query, options = {}) {
17
+ const state = (0, resolve_license_state_ts_1.resolveLicenseState)(license, options);
18
+ if (!isAskableQuery(query)) {
19
+ return {
20
+ granted: false,
21
+ state,
22
+ reason: EntitlementDenialReason.MalformedQuery,
23
+ };
24
+ }
25
+ if (state.notYetValid) {
26
+ return {
27
+ granted: false,
28
+ state,
29
+ reason: EntitlementDenialReason.LicenseNotYetValid,
30
+ };
31
+ }
32
+ const denial = denialForState(state, query.action);
33
+ if (denial !== null) {
34
+ return { granted: false, state, reason: denial };
35
+ }
36
+ const matched = license.claims.entitlements.find((entitlement) => covers(entitlement, query));
37
+ if (matched === undefined) {
38
+ return {
39
+ granted: false,
40
+ state,
41
+ reason: EntitlementDenialReason.NoMatchingEntitlement,
42
+ };
43
+ }
44
+ return { granted: true, state, matched };
45
+ }
46
+ function denialForState(state, action) {
47
+ switch (state.status) {
48
+ case license_enums_ts_1.LicenseStatus.Revoked:
49
+ return EntitlementDenialReason.LicenseRevoked;
50
+ case license_enums_ts_1.LicenseStatus.Suspended:
51
+ return action === license_enums_ts_1.EntitlementAction.RunExisting
52
+ ? null
53
+ : EntitlementDenialReason.LicenseSuspended;
54
+ case license_enums_ts_1.LicenseStatus.Expired:
55
+ if (state.stage === license_enums_ts_1.LicenseLifecycleStage.Grace) {
56
+ return null;
57
+ }
58
+ return action === license_enums_ts_1.EntitlementAction.RunExisting
59
+ ? null
60
+ : EntitlementDenialReason.LicenseRestricted;
61
+ case license_enums_ts_1.LicenseStatus.Active:
62
+ return null;
63
+ default: {
64
+ const exhaustive = state.status;
65
+ throw new TypeError(`unhandled license status ${String(exhaustive)}`);
66
+ }
67
+ }
68
+ }
69
+ function covers(entitlement, query) {
70
+ if (entitlement.kind !== query.kind) {
71
+ return false;
72
+ }
73
+ return (entitlement.id === query.id || entitlement.id === license_enums_ts_1.ENTITLEMENT_ID_WILDCARD);
74
+ }
75
+ function isAskableQuery(query) {
76
+ const kindIsKnown = Object.values(license_enums_ts_1.EntitlementKind).includes(query.kind);
77
+ const actionIsKnown = Object.values(license_enums_ts_1.EntitlementAction).includes(query.action);
78
+ return (kindIsKnown &&
79
+ actionIsKnown &&
80
+ typeof query.id === 'string' &&
81
+ query.id !== license_enums_ts_1.ENTITLEMENT_ID_WILDCARD &&
82
+ license_enums_ts_1.CANONICAL_IDENTIFIER_PATTERN.test(query.id));
83
+ }
84
+ //# sourceMappingURL=evaluate-entitlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-entitlement.js","sourceRoot":"","sources":["../../src/lib/evaluate-entitlement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { LicenseLimitValue } from './license-claims.ts';
2
+ import { LicenseLimitKind } from './license-enums.ts';
3
+ import type { VerifiedLicense } from './verified-license.ts';
4
+ export declare enum LimitDecisionReason {
5
+ Unlimited = "unlimited",
6
+ WithinLimit = "within-limit",
7
+ LimitExceeded = "limit-exceeded",
8
+ MalformedRequest = "malformed-request"
9
+ }
10
+ export interface LimitDecision {
11
+ readonly within: boolean;
12
+ readonly reason: LimitDecisionReason;
13
+ readonly kind: LicenseLimitKind;
14
+ readonly limit: LicenseLimitValue;
15
+ readonly requested: number;
16
+ }
17
+ export declare function evaluateLimit(license: VerifiedLicense, kind: LicenseLimitKind, requested: number): LimitDecision;
18
+ //# sourceMappingURL=evaluate-limit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-limit.d.ts","sourceRoot":"","sources":["../../src/lib/evaluate-limit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAA2B,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,oBAAY,mBAAmB;IAE7B,SAAS,cAAc;IAEvB,WAAW,iBAAiB;IAE5B,aAAa,mBAAmB;IAEhC,gBAAgB,sBAAsB;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAcD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,GAChB,aAAa,CAmCf"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LimitDecisionReason = void 0;
4
+ exports.evaluateLimit = evaluateLimit;
5
+ const license_enums_ts_1 = require("./license-enums.js");
6
+ var LimitDecisionReason;
7
+ (function (LimitDecisionReason) {
8
+ LimitDecisionReason["Unlimited"] = "unlimited";
9
+ LimitDecisionReason["WithinLimit"] = "within-limit";
10
+ LimitDecisionReason["LimitExceeded"] = "limit-exceeded";
11
+ LimitDecisionReason["MalformedRequest"] = "malformed-request";
12
+ })(LimitDecisionReason || (exports.LimitDecisionReason = LimitDecisionReason = {}));
13
+ function evaluateLimit(license, kind, requested) {
14
+ const limit = license.claims.limits[kind];
15
+ if (!Number.isSafeInteger(requested) || requested < 0) {
16
+ return {
17
+ within: false,
18
+ reason: LimitDecisionReason.MalformedRequest,
19
+ kind,
20
+ limit,
21
+ requested,
22
+ };
23
+ }
24
+ if (limit === license_enums_ts_1.LICENSE_LIMIT_UNLIMITED) {
25
+ return {
26
+ within: true,
27
+ reason: LimitDecisionReason.Unlimited,
28
+ kind,
29
+ limit,
30
+ requested,
31
+ };
32
+ }
33
+ return requested <= limit
34
+ ? {
35
+ within: true,
36
+ reason: LimitDecisionReason.WithinLimit,
37
+ kind,
38
+ limit,
39
+ requested,
40
+ }
41
+ : {
42
+ within: false,
43
+ reason: LimitDecisionReason.LimitExceeded,
44
+ kind,
45
+ limit,
46
+ requested,
47
+ };
48
+ }
49
+ //# sourceMappingURL=evaluate-limit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate-limit.js","sourceRoot":"","sources":["../../src/lib/evaluate-limit.ts"],"names":[],"mappings":";;;AAoCA,sCAuCC;AA1ED,yDAA+E;AAI/E,IAAY,mBASX;AATD,WAAY,mBAAmB;IAE7B,8CAAuB,CAAA;IAEvB,mDAA4B,CAAA;IAE5B,uDAAgC,CAAA;IAEhC,6DAAsC,CAAA;AACxC,CAAC,EATW,mBAAmB,mCAAnB,mBAAmB,QAS9B;AAsBD,SAAgB,aAAa,CAC3B,OAAwB,EACxB,IAAsB,EACtB,SAAiB;IAEjB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,mBAAmB,CAAC,gBAAgB;YAC5C,IAAI;YACJ,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,0CAAuB,EAAE,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,mBAAmB,CAAC,SAAS;YACrC,IAAI;YACJ,KAAK;YACL,SAAS;SACV,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,IAAI,KAAK;QACvB,CAAC,CAAC;YACE,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,mBAAmB,CAAC,WAAW;YACvC,IAAI;YACJ,KAAK;YACL,SAAS;SACV;QACH,CAAC,CAAC;YACE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,mBAAmB,CAAC,aAAa;YACzC,IAAI;YACJ,KAAK;YACL,SAAS;SACV,CAAC;AACR,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { EntitlementKind, LicenseClaimsVersion, LicenseLimitKind, LicenseSignatureAlgorithm, LicenseStatus, LicenseTier, LICENSE_JWS_TYPE, LICENSE_LIMIT_UNLIMITED } from './license-enums.ts';
2
+ export type LicenseLimitValue = number | typeof LICENSE_LIMIT_UNLIMITED;
3
+ export type LicenseLimits = Readonly<Record<LicenseLimitKind, LicenseLimitValue>>;
4
+ export interface LicenseSubject {
5
+ customerId: string;
6
+ customerName: string;
7
+ }
8
+ export interface LicenseEntitlement {
9
+ kind: EntitlementKind;
10
+ id: string;
11
+ }
12
+ export interface LicenseClaims {
13
+ version: LicenseClaimsVersion;
14
+ licenseId: string;
15
+ issuer: string;
16
+ subject: LicenseSubject;
17
+ tier: LicenseTier;
18
+ status: LicenseStatus;
19
+ entitlements: readonly LicenseEntitlement[];
20
+ limits: LicenseLimits;
21
+ issuedAt: string;
22
+ expiresAt: string | null;
23
+ }
24
+ export interface LicenseJwsHeader {
25
+ alg: LicenseSignatureAlgorithm;
26
+ kid: string;
27
+ typ: typeof LICENSE_JWS_TYPE;
28
+ }
29
+ //# sourceMappingURL=license-claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-claims.d.ts","sourceRoot":"","sources":["../../src/lib/license-claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,uBAAuB,CAAC;AAGxE,MAAM,MAAM,aAAa,GAAG,QAAQ,CAClC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAC5C,CAAC;AAGF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,yBAAyB,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,gBAAgB,CAAC;CAC9B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=license-claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-claims.js","sourceRoot":"","sources":["../../src/lib/license-claims.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ export declare enum LicenseTier {
2
+ OpenSource = "open-source",
3
+ SelfHostedCommercial = "self-hosted-commercial",
4
+ Appliance = "appliance"
5
+ }
6
+ export declare enum EntitlementKind {
7
+ Distribution = "distribution",
8
+ Biome = "biome",
9
+ CapabilityClass = "capability-class"
10
+ }
11
+ export declare const ENTITLEMENT_ID_WILDCARD = "*";
12
+ export declare enum LicenseStatus {
13
+ Active = "active",
14
+ Expired = "expired",
15
+ Revoked = "revoked",
16
+ Suspended = "suspended"
17
+ }
18
+ export declare enum LicenseLifecycleStage {
19
+ Valid = "valid",
20
+ Grace = "grace",
21
+ Restricted = "restricted"
22
+ }
23
+ export declare const LICENSE_GRACE_PERIOD_MS: number;
24
+ export declare enum EntitlementAction {
25
+ RunExisting = "run-existing",
26
+ Install = "install",
27
+ Upgrade = "upgrade"
28
+ }
29
+ export declare enum LicenseLimitKind {
30
+ Nodes = "nodes",
31
+ Seats = "seats"
32
+ }
33
+ export declare const LICENSE_LIMIT_UNLIMITED: null;
34
+ export declare enum LicenseClaimsVersion {
35
+ V1 = 1
36
+ }
37
+ export declare enum LicenseSignatureAlgorithm {
38
+ EdDSA = "EdDSA"
39
+ }
40
+ export declare const LICENSE_JWS_TYPE = "application/vnd.xema.license+jws";
41
+ export declare const CANONICAL_IDENTIFIER_PATTERN: RegExp;
42
+ export declare const XEMA_LICENSE_ISSUER = "https://license.xema.dev";
43
+ export declare const OSS_DISTRIBUTION_ID = "oss";
44
+ export declare const OSS_LICENSE_ID = "xema-oss";
45
+ export declare const OSS_LICENSE_CUSTOMER_ID = "xema-open-source";
46
+ export declare const OSS_LICENSE_CUSTOMER_NAME = "Xema Open Source";
47
+ //# sourceMappingURL=license-enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-enums.d.ts","sourceRoot":"","sources":["../../src/lib/license-enums.ts"],"names":[],"mappings":"AAmBA,oBAAY,WAAW;IACrB,UAAU,gBAAgB;IAC1B,oBAAoB,2BAA2B;IAC/C,SAAS,cAAc;CACxB;AAGD,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,eAAe,qBAAqB;CACrC;AAGD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAG3C,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAGD,oBAAY,qBAAqB;IAC/B,KAAK,UAAU;IACf,KAAK,UAAU;IACf,UAAU,eAAe;CAC1B;AAGD,eAAO,MAAM,uBAAuB,QAA2B,CAAC;AAGhE,oBAAY,iBAAiB;IAC3B,WAAW,iBAAiB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAGD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAGD,eAAO,MAAM,uBAAuB,MAAO,CAAC;AAG5C,oBAAY,oBAAoB;IAC9B,EAAE,IAAI;CACP;AAGD,oBAAY,yBAAyB;IACnC,KAAK,UAAU;CAChB;AAGD,eAAO,MAAM,gBAAgB,qCAAqC,CAAC;AAGnE,eAAO,MAAM,4BAA4B,QACiB,CAAC;AAG3D,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAG9D,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAGzC,eAAO,MAAM,cAAc,aAAa,CAAC;AAGzC,eAAO,MAAM,uBAAuB,qBAAqB,CAAC;AAG1D,eAAO,MAAM,yBAAyB,qBAAqB,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OSS_LICENSE_CUSTOMER_NAME = exports.OSS_LICENSE_CUSTOMER_ID = exports.OSS_LICENSE_ID = exports.OSS_DISTRIBUTION_ID = exports.XEMA_LICENSE_ISSUER = exports.CANONICAL_IDENTIFIER_PATTERN = exports.LICENSE_JWS_TYPE = exports.LicenseSignatureAlgorithm = exports.LicenseClaimsVersion = exports.LICENSE_LIMIT_UNLIMITED = exports.LicenseLimitKind = exports.EntitlementAction = exports.LICENSE_GRACE_PERIOD_MS = exports.LicenseLifecycleStage = exports.LicenseStatus = exports.ENTITLEMENT_ID_WILDCARD = exports.EntitlementKind = exports.LicenseTier = void 0;
4
+ var LicenseTier;
5
+ (function (LicenseTier) {
6
+ LicenseTier["OpenSource"] = "open-source";
7
+ LicenseTier["SelfHostedCommercial"] = "self-hosted-commercial";
8
+ LicenseTier["Appliance"] = "appliance";
9
+ })(LicenseTier || (exports.LicenseTier = LicenseTier = {}));
10
+ var EntitlementKind;
11
+ (function (EntitlementKind) {
12
+ EntitlementKind["Distribution"] = "distribution";
13
+ EntitlementKind["Biome"] = "biome";
14
+ EntitlementKind["CapabilityClass"] = "capability-class";
15
+ })(EntitlementKind || (exports.EntitlementKind = EntitlementKind = {}));
16
+ exports.ENTITLEMENT_ID_WILDCARD = '*';
17
+ var LicenseStatus;
18
+ (function (LicenseStatus) {
19
+ LicenseStatus["Active"] = "active";
20
+ LicenseStatus["Expired"] = "expired";
21
+ LicenseStatus["Revoked"] = "revoked";
22
+ LicenseStatus["Suspended"] = "suspended";
23
+ })(LicenseStatus || (exports.LicenseStatus = LicenseStatus = {}));
24
+ var LicenseLifecycleStage;
25
+ (function (LicenseLifecycleStage) {
26
+ LicenseLifecycleStage["Valid"] = "valid";
27
+ LicenseLifecycleStage["Grace"] = "grace";
28
+ LicenseLifecycleStage["Restricted"] = "restricted";
29
+ })(LicenseLifecycleStage || (exports.LicenseLifecycleStage = LicenseLifecycleStage = {}));
30
+ exports.LICENSE_GRACE_PERIOD_MS = 30 * 24 * 60 * 60 * 1000;
31
+ var EntitlementAction;
32
+ (function (EntitlementAction) {
33
+ EntitlementAction["RunExisting"] = "run-existing";
34
+ EntitlementAction["Install"] = "install";
35
+ EntitlementAction["Upgrade"] = "upgrade";
36
+ })(EntitlementAction || (exports.EntitlementAction = EntitlementAction = {}));
37
+ var LicenseLimitKind;
38
+ (function (LicenseLimitKind) {
39
+ LicenseLimitKind["Nodes"] = "nodes";
40
+ LicenseLimitKind["Seats"] = "seats";
41
+ })(LicenseLimitKind || (exports.LicenseLimitKind = LicenseLimitKind = {}));
42
+ exports.LICENSE_LIMIT_UNLIMITED = null;
43
+ var LicenseClaimsVersion;
44
+ (function (LicenseClaimsVersion) {
45
+ LicenseClaimsVersion[LicenseClaimsVersion["V1"] = 1] = "V1";
46
+ })(LicenseClaimsVersion || (exports.LicenseClaimsVersion = LicenseClaimsVersion = {}));
47
+ var LicenseSignatureAlgorithm;
48
+ (function (LicenseSignatureAlgorithm) {
49
+ LicenseSignatureAlgorithm["EdDSA"] = "EdDSA";
50
+ })(LicenseSignatureAlgorithm || (exports.LicenseSignatureAlgorithm = LicenseSignatureAlgorithm = {}));
51
+ exports.LICENSE_JWS_TYPE = 'application/vnd.xema.license+jws';
52
+ exports.CANONICAL_IDENTIFIER_PATTERN = /^[a-zA-Z0-9](?:[a-zA-Z0-9._:/@+-]{0,254}[a-zA-Z0-9])?$/;
53
+ exports.XEMA_LICENSE_ISSUER = 'https://license.xema.dev';
54
+ exports.OSS_DISTRIBUTION_ID = 'oss';
55
+ exports.OSS_LICENSE_ID = 'xema-oss';
56
+ exports.OSS_LICENSE_CUSTOMER_ID = 'xema-open-source';
57
+ exports.OSS_LICENSE_CUSTOMER_NAME = 'Xema Open Source';
58
+ //# sourceMappingURL=license-enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-enums.js","sourceRoot":"","sources":["../../src/lib/license-enums.ts"],"names":[],"mappings":";;;AAmBA,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,yCAA0B,CAAA;IAC1B,8DAA+C,CAAA;IAC/C,sCAAuB,CAAA;AACzB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAGD,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;IACf,uDAAoC,CAAA;AACtC,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAGY,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAG3C,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,oCAAmB,CAAA;IACnB,wCAAuB,CAAA;AACzB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAGD,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,wCAAe,CAAA;IACf,wCAAe,CAAA;IACf,kDAAyB,CAAA;AAC3B,CAAC,EAJW,qBAAqB,qCAArB,qBAAqB,QAIhC;AAGY,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAGhE,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,iDAA4B,CAAA;IAC5B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAGD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,mCAAe,CAAA;AACjB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAGY,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAG5C,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,2DAAM,CAAA;AACR,CAAC,EAFW,oBAAoB,oCAApB,oBAAoB,QAE/B;AAGD,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;AACjB,CAAC,EAFW,yBAAyB,yCAAzB,yBAAyB,QAEpC;AAGY,QAAA,gBAAgB,GAAG,kCAAkC,CAAC;AAGtD,QAAA,4BAA4B,GACvC,wDAAwD,CAAC;AAG9C,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AAGjD,QAAA,mBAAmB,GAAG,KAAK,CAAC;AAG5B,QAAA,cAAc,GAAG,UAAU,CAAC;AAG5B,QAAA,uBAAuB,GAAG,kBAAkB,CAAC;AAG7C,QAAA,yBAAyB,GAAG,kBAAkB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { LicenseSignatureAlgorithm } from './license-enums.ts';
2
+ export interface LicenseSigner {
3
+ readonly keyId: string;
4
+ readonly algorithm: LicenseSignatureAlgorithm;
5
+ sign(signingInput: Uint8Array): Promise<Uint8Array>;
6
+ }
7
+ export declare class LocalKeyLicenseSigner implements LicenseSigner {
8
+ #private;
9
+ readonly algorithm = LicenseSignatureAlgorithm.EdDSA;
10
+ readonly keyId: string;
11
+ private constructor();
12
+ static fromPrivateKeyPem(privateKeyPem: string): LocalKeyLicenseSigner;
13
+ exportPublicKeyPem(): string;
14
+ sign(signingInput: Uint8Array): Promise<Uint8Array>;
15
+ }
16
+ //# sourceMappingURL=license-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-signer.d.ts","sourceRoot":"","sources":["../../src/lib/license-signer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAiB/D,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAE9C,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACrD;AAYD,qBAAa,qBAAsB,YAAW,aAAa;;IACzD,SAAgB,SAAS,mCAAmC;IAC5D,SAAgB,KAAK,EAAE,MAAM,CAAC;IAG9B,OAAO;WAaO,iBAAiB,CAC7B,aAAa,EAAE,MAAM,GACpB,qBAAqB;IAiBjB,kBAAkB,IAAI,MAAM;IAM5B,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAK3D"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LocalKeyLicenseSigner = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const license_enums_ts_1 = require("./license-enums.js");
6
+ const trust_store_ts_1 = require("./trust-store.js");
7
+ class LocalKeyLicenseSigner {
8
+ algorithm = license_enums_ts_1.LicenseSignatureAlgorithm.EdDSA;
9
+ keyId;
10
+ #privateKey;
11
+ constructor(privateKey, keyId) {
12
+ this.#privateKey = privateKey;
13
+ this.keyId = keyId;
14
+ }
15
+ static fromPrivateKeyPem(privateKeyPem) {
16
+ const privateKey = (0, node_crypto_1.createPrivateKey)({ key: privateKeyPem, format: 'pem' });
17
+ if (privateKey.asymmetricKeyType !== 'ed25519') {
18
+ throw new TypeError(`a Xema license signing key must be ed25519, received ${String(privateKey.asymmetricKeyType)}`);
19
+ }
20
+ const publicKeyPem = (0, node_crypto_1.createPublicKey)(privateKey)
21
+ .export({ format: 'pem', type: 'spki' })
22
+ .toString();
23
+ return new LocalKeyLicenseSigner(privateKey, (0, trust_store_ts_1.computeLicenseKeyId)(publicKeyPem));
24
+ }
25
+ exportPublicKeyPem() {
26
+ return (0, node_crypto_1.createPublicKey)(this.#privateKey)
27
+ .export({ format: 'pem', type: 'spki' })
28
+ .toString();
29
+ }
30
+ sign(signingInput) {
31
+ return Promise.resolve(new Uint8Array((0, node_crypto_1.sign)(null, signingInput, this.#privateKey)));
32
+ }
33
+ }
34
+ exports.LocalKeyLicenseSigner = LocalKeyLicenseSigner;
35
+ //# sourceMappingURL=license-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-signer.js","sourceRoot":"","sources":["../../src/lib/license-signer.ts"],"names":[],"mappings":";;;AAAA,6CAKqB;AAErB,yDAA+D;AAC/D,qDAAuD;AAkCvD,MAAa,qBAAqB;IAChB,SAAS,GAAG,4CAAyB,CAAC,KAAK,CAAC;IAC5C,KAAK,CAAS;IACrB,WAAW,CAAY;IAEhC,YAAoB,UAAqB,EAAE,KAAa;QACtD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAUM,MAAM,CAAC,iBAAiB,CAC7B,aAAqB;QAErB,MAAM,UAAU,GAAG,IAAA,8BAAgB,EAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,IAAI,UAAU,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,SAAS,CACjB,wDAAwD,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAC/F,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,6BAAe,EAAC,UAAU,CAAC;aAC7C,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACvC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,qBAAqB,CAC9B,UAAU,EACV,IAAA,oCAAmB,EAAC,YAAY,CAAC,CAClC,CAAC;IACJ,CAAC;IAGM,kBAAkB;QACvB,OAAO,IAAA,6BAAe,EAAC,IAAI,CAAC,WAAW,CAAC;aACrC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACvC,QAAQ,EAAE,CAAC;IAChB,CAAC;IAEM,IAAI,CAAC,YAAwB;QAClC,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,UAAU,CAAC,IAAA,kBAAI,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;CACF;AAhDD,sDAgDC"}
@@ -0,0 +1,3 @@
1
+ import type { LicenseClaims } from './license-claims.ts';
2
+ export declare function buildOssLicenseClaims(issuedAt: string): LicenseClaims;
3
+ //# sourceMappingURL=oss-license.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-license.d.ts","sourceRoot":"","sources":["../../src/lib/oss-license.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiCzD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAqBrE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOssLicenseClaims = buildOssLicenseClaims;
4
+ const license_enums_ts_1 = require("./license-enums.js");
5
+ function buildOssLicenseClaims(issuedAt) {
6
+ return {
7
+ version: license_enums_ts_1.LicenseClaimsVersion.V1,
8
+ licenseId: license_enums_ts_1.OSS_LICENSE_ID,
9
+ issuer: license_enums_ts_1.XEMA_LICENSE_ISSUER,
10
+ subject: {
11
+ customerId: license_enums_ts_1.OSS_LICENSE_CUSTOMER_ID,
12
+ customerName: license_enums_ts_1.OSS_LICENSE_CUSTOMER_NAME,
13
+ },
14
+ tier: license_enums_ts_1.LicenseTier.OpenSource,
15
+ status: license_enums_ts_1.LicenseStatus.Active,
16
+ entitlements: [
17
+ { kind: license_enums_ts_1.EntitlementKind.Distribution, id: license_enums_ts_1.OSS_DISTRIBUTION_ID },
18
+ ],
19
+ limits: {
20
+ [license_enums_ts_1.LicenseLimitKind.Nodes]: null,
21
+ [license_enums_ts_1.LicenseLimitKind.Seats]: null,
22
+ },
23
+ issuedAt,
24
+ expiresAt: null,
25
+ };
26
+ }
27
+ //# sourceMappingURL=oss-license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-license.js","sourceRoot":"","sources":["../../src/lib/oss-license.ts"],"names":[],"mappings":";;AAiCA,sDAqBC;AArDD,yDAW4B;AAqB5B,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,OAAO;QACL,OAAO,EAAE,uCAAoB,CAAC,EAAE;QAChC,SAAS,EAAE,iCAAc;QACzB,MAAM,EAAE,sCAAmB;QAC3B,OAAO,EAAE;YACP,UAAU,EAAE,0CAAuB;YACnC,YAAY,EAAE,4CAAyB;SACxC;QACD,IAAI,EAAE,8BAAW,CAAC,UAAU;QAC5B,MAAM,EAAE,gCAAa,CAAC,MAAM;QAC5B,YAAY,EAAE;YACZ,EAAE,IAAI,EAAE,kCAAe,CAAC,YAAY,EAAE,EAAE,EAAE,sCAAmB,EAAE;SAChE;QACD,MAAM,EAAE;YACN,CAAC,mCAAgB,CAAC,KAAK,CAAC,EAAE,IAAI;YAC9B,CAAC,mCAAgB,CAAC,KAAK,CAAC,EAAE,IAAI;SAC/B;QACD,QAAQ;QACR,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { LicenseClaims } from './license-claims.ts';
2
+ import { type LicenseVerificationFailure } from './verification-failure.ts';
3
+ export type ParseLicenseClaimsResult = {
4
+ readonly ok: true;
5
+ readonly claims: LicenseClaims;
6
+ } | LicenseVerificationFailure;
7
+ export declare function parseLicenseClaims(payload: unknown): ParseLicenseClaimsResult;
8
+ //# sourceMappingURL=parse-license-claims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-license-claims.d.ts","sourceRoot":"","sources":["../../src/lib/parse-license-claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAKd,MAAM,qBAAqB,CAAC;AAW7B,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AA2BnC,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GACrD,0BAA0B,CAAC;AAe/B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,wBAAwB,CA4F7E"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-license-claims.js","sourceRoot":"","sources":["../../src/lib/parse-license-claims.ts"],"names":[],"mappings":"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"}