spell-runtime 1.2.1 → 1.2.5
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/README.md +149 -25
- package/README.txt +128 -25
- package/dist/api/server.js +114 -20
- package/dist/api/server.js.map +1 -1
- package/dist/bundle/install.d.ts +1 -1
- package/dist/bundle/install.js +57 -15
- package/dist/bundle/install.js.map +1 -1
- package/dist/cli/index.js +12 -10
- package/dist/cli/index.js.map +1 -1
- package/dist/license/entitlement.d.ts +28 -0
- package/dist/license/entitlement.js +174 -0
- package/dist/license/entitlement.js.map +1 -0
- package/dist/license/store.d.ts +4 -0
- package/dist/license/store.js +157 -34
- package/dist/license/store.js.map +1 -1
- package/dist/policy/index.d.ts +26 -0
- package/dist/policy/index.js +194 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/runner/cast.js +12 -2
- package/dist/runner/cast.js.map +1 -1
- package/dist/runner/dockerRunner.d.ts +1 -0
- package/dist/runner/dockerRunner.js +116 -5
- package/dist/runner/dockerRunner.js.map +1 -1
- package/dist/runner/spell-runner.js +0 -0
- package/package.json +7 -1
package/dist/cli/index.js
CHANGED
|
@@ -26,9 +26,9 @@ async function runCli(argv = process.argv) {
|
|
|
26
26
|
program
|
|
27
27
|
.command("install")
|
|
28
28
|
.description("Install a spell bundle from local path or git URL")
|
|
29
|
-
.argument("<
|
|
30
|
-
.action(async (
|
|
31
|
-
const result = await (0, install_1.installBundle)(
|
|
29
|
+
.argument("<source>", "Path to local spell bundle or git URL (git requires #<ref>)")
|
|
30
|
+
.action(async (source) => {
|
|
31
|
+
const result = await (0, install_1.installBundle)(source);
|
|
32
32
|
process.stdout.write(`${result.id}@${result.version}\n`);
|
|
33
33
|
});
|
|
34
34
|
program
|
|
@@ -94,10 +94,12 @@ async function runCli(argv = process.argv) {
|
|
|
94
94
|
.option("--dry-run", "Validate and summarize only", false)
|
|
95
95
|
.option("--yes", "Acknowledge high or critical risk", false)
|
|
96
96
|
.option("--allow-billing", "Allow billing-enabled spells", false)
|
|
97
|
-
.option("--require-signature", "Require verified signature",
|
|
97
|
+
.option("--require-signature", "Require verified signature (default)", true)
|
|
98
|
+
.option("--allow-unsigned", "Allow unsigned bundles (overrides signature requirement)", false)
|
|
98
99
|
.option("--verbose", "Verbose logs", false)
|
|
99
100
|
.option("--profile <name>", "Reserved for future use")
|
|
100
101
|
.action(async (id, options) => {
|
|
102
|
+
const requireSignature = options.allowUnsigned ? false : options.requireSignature;
|
|
101
103
|
const result = await (0, cast_1.castSpell)({
|
|
102
104
|
id,
|
|
103
105
|
version: options.version,
|
|
@@ -106,7 +108,7 @@ async function runCli(argv = process.argv) {
|
|
|
106
108
|
dryRun: options.dryRun,
|
|
107
109
|
yes: options.yes,
|
|
108
110
|
allowBilling: options.allowBilling,
|
|
109
|
-
requireSignature
|
|
111
|
+
requireSignature,
|
|
110
112
|
verbose: options.verbose,
|
|
111
113
|
profile: options.profile
|
|
112
114
|
});
|
|
@@ -152,12 +154,12 @@ async function runCli(argv = process.argv) {
|
|
|
152
154
|
process.stdout.write(`key_id: ${result.keyId}\n`);
|
|
153
155
|
process.stdout.write(`digest: ${result.digestHex}\n`);
|
|
154
156
|
});
|
|
155
|
-
const license = program.command("license").description("Manage local
|
|
157
|
+
const license = program.command("license").description("Manage local entitlement tokens for billing");
|
|
156
158
|
license
|
|
157
159
|
.command("add")
|
|
158
|
-
.description("Add or update a local
|
|
160
|
+
.description("Add or update a local entitlement token")
|
|
159
161
|
.argument("<name>", "License label")
|
|
160
|
-
.argument("<token>", "
|
|
162
|
+
.argument("<token>", "Entitlement token")
|
|
161
163
|
.action(async (name, token) => {
|
|
162
164
|
await (0, store_2.upsertLicense)(name, token);
|
|
163
165
|
process.stdout.write(`added license=${name.trim()}\n`);
|
|
@@ -171,9 +173,9 @@ async function runCli(argv = process.argv) {
|
|
|
171
173
|
process.stdout.write("No licenses\n");
|
|
172
174
|
return;
|
|
173
175
|
}
|
|
174
|
-
process.stdout.write("name\
|
|
176
|
+
process.stdout.write("name\tissuer\tmode\tcurrency\tmax_amount\texpires_at\tupdated_at\n");
|
|
175
177
|
for (const entry of licenses) {
|
|
176
|
-
process.stdout.write(`${entry.name}\t${entry.
|
|
178
|
+
process.stdout.write(`${entry.name}\t${entry.entitlement?.issuer ?? "-"}\t${entry.entitlement?.mode ?? "-"}\t${entry.entitlement?.currency ?? "-"}\t${entry.entitlement?.max_amount ?? "-"}\t${entry.entitlement?.expires_at ?? "-"}\t${entry.updated_at ?? "-"}\n`);
|
|
177
179
|
}
|
|
178
180
|
});
|
|
179
181
|
license
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type EntitlementMode = "upfront" | "on_success" | "subscription";
|
|
2
|
+
export interface EntitlementClaims {
|
|
3
|
+
version: "v1";
|
|
4
|
+
issuer: string;
|
|
5
|
+
key_id: string;
|
|
6
|
+
mode: EntitlementMode;
|
|
7
|
+
currency: string;
|
|
8
|
+
max_amount: number;
|
|
9
|
+
not_before: string;
|
|
10
|
+
expires_at: string;
|
|
11
|
+
}
|
|
12
|
+
export interface EntitlementTokenMetadata {
|
|
13
|
+
format: "ent1";
|
|
14
|
+
payload_base64url: string;
|
|
15
|
+
signature_base64url: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ParsedEntitlementToken {
|
|
18
|
+
rawToken: string;
|
|
19
|
+
claims: EntitlementClaims;
|
|
20
|
+
metadata: EntitlementTokenMetadata;
|
|
21
|
+
}
|
|
22
|
+
export interface VerifiedEntitlementToken extends ParsedEntitlementToken {
|
|
23
|
+
}
|
|
24
|
+
export declare function parseEntitlementToken(token: string): ParsedEntitlementToken;
|
|
25
|
+
export declare function verifyEntitlementToken(token: string, now?: Date): Promise<VerifiedEntitlementToken>;
|
|
26
|
+
export declare function isEntitlementWithinTimeWindow(claims: EntitlementClaims, now?: Date): boolean;
|
|
27
|
+
export declare function assertEntitlementWithinTimeWindow(claims: EntitlementClaims, now?: Date): void;
|
|
28
|
+
export declare function parseEntitlementClaims(payload: unknown): EntitlementClaims;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseEntitlementToken = parseEntitlementToken;
|
|
4
|
+
exports.verifyEntitlementToken = verifyEntitlementToken;
|
|
5
|
+
exports.isEntitlementWithinTimeWindow = isEntitlementWithinTimeWindow;
|
|
6
|
+
exports.assertEntitlementWithinTimeWindow = assertEntitlementWithinTimeWindow;
|
|
7
|
+
exports.parseEntitlementClaims = parseEntitlementClaims;
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const trustStore_1 = require("../signature/trustStore");
|
|
10
|
+
const errors_1 = require("../util/errors");
|
|
11
|
+
const TOKEN_PREFIX = "ent1";
|
|
12
|
+
const BASE64URL_PATTERN = /^[A-Za-z0-9_-]+$/;
|
|
13
|
+
const ISO_TIMESTAMP_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/;
|
|
14
|
+
const ENTITLEMENT_MODES = new Set(["upfront", "on_success", "subscription"]);
|
|
15
|
+
function parseEntitlementToken(token) {
|
|
16
|
+
const trimmed = token.trim();
|
|
17
|
+
if (!trimmed) {
|
|
18
|
+
throw new errors_1.SpellError("entitlement token must be non-empty");
|
|
19
|
+
}
|
|
20
|
+
const segments = trimmed.split(".");
|
|
21
|
+
if (segments.length !== 3 || segments[0] !== TOKEN_PREFIX) {
|
|
22
|
+
throw new errors_1.SpellError("invalid entitlement token format; expected ent1.<payloadBase64url>.<signatureBase64url>");
|
|
23
|
+
}
|
|
24
|
+
const payloadSegment = segments[1];
|
|
25
|
+
const signatureSegment = segments[2];
|
|
26
|
+
if (!payloadSegment || !signatureSegment) {
|
|
27
|
+
throw new errors_1.SpellError("invalid entitlement token format; payload and signature segments are required");
|
|
28
|
+
}
|
|
29
|
+
assertBase64Url(payloadSegment, "entitlement payload segment");
|
|
30
|
+
assertBase64Url(signatureSegment, "entitlement signature segment");
|
|
31
|
+
const payloadBytes = decodeBase64Url(payloadSegment, "entitlement payload");
|
|
32
|
+
const payloadRaw = payloadBytes.toString("utf8");
|
|
33
|
+
let payload;
|
|
34
|
+
try {
|
|
35
|
+
payload = JSON.parse(payloadRaw);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
throw new errors_1.SpellError(`invalid entitlement payload JSON: ${error.message}`);
|
|
39
|
+
}
|
|
40
|
+
const claims = parseEntitlementClaims(payload);
|
|
41
|
+
return {
|
|
42
|
+
rawToken: trimmed,
|
|
43
|
+
claims,
|
|
44
|
+
metadata: {
|
|
45
|
+
format: "ent1",
|
|
46
|
+
payload_base64url: payloadSegment,
|
|
47
|
+
signature_base64url: signatureSegment
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function verifyEntitlementToken(token, now = new Date()) {
|
|
52
|
+
const parsed = parseEntitlementToken(token);
|
|
53
|
+
const { claims, metadata } = parsed;
|
|
54
|
+
const trust = await (0, trustStore_1.loadPublisherTrust)(claims.issuer);
|
|
55
|
+
if (!trust) {
|
|
56
|
+
throw new errors_1.SpellError(`entitlement issuer is not trusted: ${claims.issuer}`);
|
|
57
|
+
}
|
|
58
|
+
const key = trust.keys.find((entry) => entry.key_id === claims.key_id);
|
|
59
|
+
if (!key) {
|
|
60
|
+
throw new errors_1.SpellError(`entitlement key_id is not trusted for issuer '${claims.issuer}': ${claims.key_id}`);
|
|
61
|
+
}
|
|
62
|
+
const signatureBytes = decodeBase64Url(metadata.signature_base64url, "entitlement signature");
|
|
63
|
+
const publicKeyDer = decodeBase64Url(key.public_key, "trusted public key");
|
|
64
|
+
let publicKey;
|
|
65
|
+
try {
|
|
66
|
+
publicKey = (0, node_crypto_1.createPublicKey)({ key: publicKeyDer, format: "der", type: "spki" });
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
throw new errors_1.SpellError(`invalid trusted public key: ${error.message}`);
|
|
70
|
+
}
|
|
71
|
+
const payloadSegmentBytes = Buffer.from(metadata.payload_base64url, "utf8");
|
|
72
|
+
const validSignature = (0, node_crypto_1.verify)(null, payloadSegmentBytes, publicKey, signatureBytes);
|
|
73
|
+
if (!validSignature) {
|
|
74
|
+
throw new errors_1.SpellError("entitlement signature verification failed");
|
|
75
|
+
}
|
|
76
|
+
assertEntitlementWithinTimeWindow(claims, now);
|
|
77
|
+
return parsed;
|
|
78
|
+
}
|
|
79
|
+
function isEntitlementWithinTimeWindow(claims, now = new Date()) {
|
|
80
|
+
const nowMs = now.getTime();
|
|
81
|
+
const notBeforeMs = parseIsoTimestamp(claims.not_before, "not_before");
|
|
82
|
+
const expiresAtMs = parseIsoTimestamp(claims.expires_at, "expires_at");
|
|
83
|
+
return nowMs >= notBeforeMs && nowMs <= expiresAtMs;
|
|
84
|
+
}
|
|
85
|
+
function assertEntitlementWithinTimeWindow(claims, now = new Date()) {
|
|
86
|
+
const nowMs = now.getTime();
|
|
87
|
+
const notBeforeMs = parseIsoTimestamp(claims.not_before, "not_before");
|
|
88
|
+
const expiresAtMs = parseIsoTimestamp(claims.expires_at, "expires_at");
|
|
89
|
+
if (notBeforeMs > expiresAtMs) {
|
|
90
|
+
throw new errors_1.SpellError("invalid entitlement payload: not_before must be <= expires_at");
|
|
91
|
+
}
|
|
92
|
+
if (nowMs < notBeforeMs) {
|
|
93
|
+
throw new errors_1.SpellError(`entitlement token not valid yet (not_before=${claims.not_before})`);
|
|
94
|
+
}
|
|
95
|
+
if (nowMs > expiresAtMs) {
|
|
96
|
+
throw new errors_1.SpellError(`entitlement token expired (expires_at=${claims.expires_at})`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function parseEntitlementClaims(payload) {
|
|
100
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
|
|
101
|
+
throw new errors_1.SpellError("invalid entitlement payload: expected JSON object");
|
|
102
|
+
}
|
|
103
|
+
const obj = payload;
|
|
104
|
+
const version = readRequiredString(obj, "version");
|
|
105
|
+
if (version !== "v1") {
|
|
106
|
+
throw new errors_1.SpellError(`invalid entitlement payload: unsupported version '${version}'`);
|
|
107
|
+
}
|
|
108
|
+
const issuer = readRequiredString(obj, "issuer");
|
|
109
|
+
const keyId = readRequiredString(obj, "key_id");
|
|
110
|
+
const mode = readRequiredString(obj, "mode");
|
|
111
|
+
if (!ENTITLEMENT_MODES.has(mode)) {
|
|
112
|
+
throw new errors_1.SpellError(`invalid entitlement payload: unsupported mode '${mode}'`);
|
|
113
|
+
}
|
|
114
|
+
const currency = readRequiredString(obj, "currency");
|
|
115
|
+
const maxAmount = readRequiredNumber(obj, "max_amount");
|
|
116
|
+
if (!Number.isFinite(maxAmount) || maxAmount < 0) {
|
|
117
|
+
throw new errors_1.SpellError("invalid entitlement payload: max_amount must be a non-negative finite number");
|
|
118
|
+
}
|
|
119
|
+
const notBefore = readRequiredString(obj, "not_before");
|
|
120
|
+
const expiresAt = readRequiredString(obj, "expires_at");
|
|
121
|
+
const notBeforeMs = parseIsoTimestamp(notBefore, "not_before");
|
|
122
|
+
const expiresAtMs = parseIsoTimestamp(expiresAt, "expires_at");
|
|
123
|
+
if (notBeforeMs > expiresAtMs) {
|
|
124
|
+
throw new errors_1.SpellError("invalid entitlement payload: not_before must be <= expires_at");
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
version: "v1",
|
|
128
|
+
issuer,
|
|
129
|
+
key_id: keyId,
|
|
130
|
+
mode: mode,
|
|
131
|
+
currency,
|
|
132
|
+
max_amount: maxAmount,
|
|
133
|
+
not_before: notBefore,
|
|
134
|
+
expires_at: expiresAt
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function readRequiredString(obj, key) {
|
|
138
|
+
const value = obj[key];
|
|
139
|
+
if (typeof value !== "string" || !value.trim()) {
|
|
140
|
+
throw new errors_1.SpellError(`invalid entitlement payload: missing '${key}' string`);
|
|
141
|
+
}
|
|
142
|
+
return value.trim();
|
|
143
|
+
}
|
|
144
|
+
function readRequiredNumber(obj, key) {
|
|
145
|
+
const value = obj[key];
|
|
146
|
+
if (typeof value !== "number") {
|
|
147
|
+
throw new errors_1.SpellError(`invalid entitlement payload: missing '${key}' number`);
|
|
148
|
+
}
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
function parseIsoTimestamp(value, key) {
|
|
152
|
+
if (!ISO_TIMESTAMP_PATTERN.test(value)) {
|
|
153
|
+
throw new errors_1.SpellError(`invalid entitlement payload: '${key}' must be an ISO-8601 timestamp`);
|
|
154
|
+
}
|
|
155
|
+
const epochMs = Date.parse(value);
|
|
156
|
+
if (!Number.isFinite(epochMs)) {
|
|
157
|
+
throw new errors_1.SpellError(`invalid entitlement payload: '${key}' is not a valid timestamp`);
|
|
158
|
+
}
|
|
159
|
+
return epochMs;
|
|
160
|
+
}
|
|
161
|
+
function assertBase64Url(value, label) {
|
|
162
|
+
if (!BASE64URL_PATTERN.test(value)) {
|
|
163
|
+
throw new errors_1.SpellError(`invalid ${label}: must be base64url`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function decodeBase64Url(value, label) {
|
|
167
|
+
try {
|
|
168
|
+
return Buffer.from(value, "base64url");
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
throw new errors_1.SpellError(`invalid base64url for ${label}: ${error.message}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=entitlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlement.js","sourceRoot":"","sources":["../../src/license/entitlement.ts"],"names":[],"mappings":"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"}
|
package/dist/license/store.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { SpellBilling } from "../types";
|
|
2
|
+
import { EntitlementClaims } from "./entitlement";
|
|
1
3
|
export interface StoredLicense {
|
|
2
4
|
name: string;
|
|
3
5
|
hasToken: boolean;
|
|
4
6
|
created_at?: string;
|
|
5
7
|
updated_at?: string;
|
|
8
|
+
entitlement?: EntitlementClaims;
|
|
6
9
|
}
|
|
7
10
|
export declare function toLicenseKey(name: string): string;
|
|
8
11
|
export declare function licenseFilePath(name: string): string;
|
|
@@ -10,3 +13,4 @@ export declare function upsertLicense(name: string, token: string): Promise<void
|
|
|
10
13
|
export declare function removeLicense(name: string): Promise<boolean>;
|
|
11
14
|
export declare function listLicenses(): Promise<StoredLicense[]>;
|
|
12
15
|
export declare function findFirstUsableLicense(): Promise<StoredLicense | null>;
|
|
16
|
+
export declare function findMatchingLicenseForBilling(billing: SpellBilling, now?: Date): Promise<StoredLicense | null>;
|
package/dist/license/store.js
CHANGED
|
@@ -9,10 +9,12 @@ exports.upsertLicense = upsertLicense;
|
|
|
9
9
|
exports.removeLicense = removeLicense;
|
|
10
10
|
exports.listLicenses = listLicenses;
|
|
11
11
|
exports.findFirstUsableLicense = findFirstUsableLicense;
|
|
12
|
+
exports.findMatchingLicenseForBilling = findMatchingLicenseForBilling;
|
|
12
13
|
const promises_1 = require("node:fs/promises");
|
|
13
14
|
const node_path_1 = __importDefault(require("node:path"));
|
|
14
15
|
const errors_1 = require("../util/errors");
|
|
15
16
|
const paths_1 = require("../util/paths");
|
|
17
|
+
const entitlement_1 = require("./entitlement");
|
|
16
18
|
function toLicenseKey(name) {
|
|
17
19
|
return Buffer.from(name, "utf8").toString("base64url");
|
|
18
20
|
}
|
|
@@ -22,13 +24,16 @@ function licenseFilePath(name) {
|
|
|
22
24
|
async function upsertLicense(name, token) {
|
|
23
25
|
const normalizedName = normalizeName(name);
|
|
24
26
|
const normalizedToken = normalizeToken(token);
|
|
27
|
+
const verifiedToken = await (0, entitlement_1.verifyEntitlementToken)(normalizedToken);
|
|
25
28
|
await (0, promises_1.mkdir)((0, paths_1.licensesRoot)(), { recursive: true });
|
|
26
29
|
const now = new Date().toISOString();
|
|
27
30
|
const existing = await loadLicenseRecord(normalizedName);
|
|
28
31
|
const payload = {
|
|
29
|
-
version: "
|
|
32
|
+
version: "v2",
|
|
30
33
|
name: normalizedName,
|
|
31
|
-
token:
|
|
34
|
+
token: verifiedToken.rawToken,
|
|
35
|
+
token_metadata: verifiedToken.metadata,
|
|
36
|
+
entitlement: verifiedToken.claims,
|
|
32
37
|
created_at: existing?.created_at ?? now,
|
|
33
38
|
updated_at: now
|
|
34
39
|
};
|
|
@@ -65,20 +70,15 @@ async function listLicenses() {
|
|
|
65
70
|
catch {
|
|
66
71
|
continue;
|
|
67
72
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const obj = parsed;
|
|
71
|
-
if (obj.version !== "v1")
|
|
72
|
-
continue;
|
|
73
|
-
if (typeof obj.name !== "string" || !obj.name.trim())
|
|
74
|
-
continue;
|
|
75
|
-
if (typeof obj.token !== "string")
|
|
73
|
+
const record = parseLicenseRecord(parsed, { strict: false, filePath });
|
|
74
|
+
if (!record)
|
|
76
75
|
continue;
|
|
77
76
|
licenses.push({
|
|
78
|
-
name:
|
|
79
|
-
hasToken:
|
|
80
|
-
created_at:
|
|
81
|
-
updated_at:
|
|
77
|
+
name: record.name,
|
|
78
|
+
hasToken: record.token.trim().length > 0,
|
|
79
|
+
created_at: record.created_at,
|
|
80
|
+
updated_at: record.updated_at,
|
|
81
|
+
entitlement: record.entitlement
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
licenses.sort((a, b) => a.name.localeCompare(b.name));
|
|
@@ -88,6 +88,25 @@ async function findFirstUsableLicense() {
|
|
|
88
88
|
const licenses = await listLicenses();
|
|
89
89
|
return licenses.find((entry) => entry.hasToken) ?? null;
|
|
90
90
|
}
|
|
91
|
+
async function findMatchingLicenseForBilling(billing, now = new Date()) {
|
|
92
|
+
const licenses = await listLicenses();
|
|
93
|
+
const targetCurrency = billing.currency.trim().toLowerCase();
|
|
94
|
+
for (const entry of licenses) {
|
|
95
|
+
if (!entry.entitlement)
|
|
96
|
+
continue;
|
|
97
|
+
const entitlement = entry.entitlement;
|
|
98
|
+
if (!(0, entitlement_1.isEntitlementWithinTimeWindow)(entitlement, now))
|
|
99
|
+
continue;
|
|
100
|
+
if (entitlement.mode !== billing.mode)
|
|
101
|
+
continue;
|
|
102
|
+
if (entitlement.currency.trim().toLowerCase() !== targetCurrency)
|
|
103
|
+
continue;
|
|
104
|
+
if (entitlement.max_amount < billing.max_amount)
|
|
105
|
+
continue;
|
|
106
|
+
return entry;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
91
110
|
async function loadLicenseRecord(name) {
|
|
92
111
|
const filePath = licenseFilePath(name);
|
|
93
112
|
let raw;
|
|
@@ -104,25 +123,11 @@ async function loadLicenseRecord(name) {
|
|
|
104
123
|
catch {
|
|
105
124
|
throw new errors_1.SpellError(`failed to parse license file: ${filePath}`);
|
|
106
125
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const obj = parsed;
|
|
111
|
-
const version = readRequiredString(obj, "version");
|
|
112
|
-
if (version !== "v1") {
|
|
113
|
-
throw new errors_1.SpellError(`unsupported license file version: ${version}`);
|
|
114
|
-
}
|
|
115
|
-
const parsedName = readRequiredString(obj, "name");
|
|
116
|
-
if (parsedName !== name) {
|
|
117
|
-
throw new errors_1.SpellError(`license file name mismatch: expected '${name}', got '${parsedName}'`);
|
|
126
|
+
const record = parseLicenseRecord(parsed, { strict: true, filePath, expectedName: name });
|
|
127
|
+
if (!record) {
|
|
128
|
+
throw new errors_1.SpellError(`failed to load license file: ${filePath}`);
|
|
118
129
|
}
|
|
119
|
-
return
|
|
120
|
-
version: "v1",
|
|
121
|
-
name: parsedName,
|
|
122
|
-
token: readRequiredString(obj, "token"),
|
|
123
|
-
created_at: readRequiredString(obj, "created_at"),
|
|
124
|
-
updated_at: readRequiredString(obj, "updated_at")
|
|
125
|
-
};
|
|
130
|
+
return record;
|
|
126
131
|
}
|
|
127
132
|
function normalizeName(name) {
|
|
128
133
|
const trimmed = name.trim();
|
|
@@ -138,11 +143,129 @@ function normalizeToken(token) {
|
|
|
138
143
|
}
|
|
139
144
|
return trimmed;
|
|
140
145
|
}
|
|
141
|
-
function
|
|
146
|
+
function parseLicenseRecord(parsed, options) {
|
|
147
|
+
const fail = (message) => {
|
|
148
|
+
if (options.strict) {
|
|
149
|
+
throw new errors_1.SpellError(message);
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
};
|
|
153
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
154
|
+
return fail(`license file must be a JSON object: ${options.filePath}`);
|
|
155
|
+
}
|
|
156
|
+
const obj = parsed;
|
|
157
|
+
const version = readOptionalString(obj, "version");
|
|
158
|
+
if (!version) {
|
|
159
|
+
return fail("missing 'version' string");
|
|
160
|
+
}
|
|
161
|
+
if (version !== "v1" && version !== "v2") {
|
|
162
|
+
return fail(`unsupported license file version: ${version}`);
|
|
163
|
+
}
|
|
164
|
+
const name = readOptionalString(obj, "name");
|
|
165
|
+
if (!name) {
|
|
166
|
+
return fail("missing 'name' string");
|
|
167
|
+
}
|
|
168
|
+
if (options.expectedName && name !== options.expectedName) {
|
|
169
|
+
return fail(`license file name mismatch: expected '${options.expectedName}', got '${name}'`);
|
|
170
|
+
}
|
|
171
|
+
const token = readOptionalString(obj, "token");
|
|
172
|
+
if (!token) {
|
|
173
|
+
return fail("missing 'token' string");
|
|
174
|
+
}
|
|
175
|
+
const createdAt = readOptionalString(obj, "created_at");
|
|
176
|
+
const updatedAt = readOptionalString(obj, "updated_at");
|
|
177
|
+
if (options.strict && !createdAt) {
|
|
178
|
+
return fail("missing 'created_at' string");
|
|
179
|
+
}
|
|
180
|
+
if (options.strict && !updatedAt) {
|
|
181
|
+
return fail("missing 'updated_at' string");
|
|
182
|
+
}
|
|
183
|
+
if (version === "v1") {
|
|
184
|
+
const record = {
|
|
185
|
+
version: "v1",
|
|
186
|
+
name,
|
|
187
|
+
token,
|
|
188
|
+
created_at: createdAt,
|
|
189
|
+
updated_at: updatedAt
|
|
190
|
+
};
|
|
191
|
+
return record;
|
|
192
|
+
}
|
|
193
|
+
const tokenMetadata = parseTokenMetadata(obj.token_metadata, options, fail);
|
|
194
|
+
if (!tokenMetadata) {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
let entitlement;
|
|
198
|
+
try {
|
|
199
|
+
entitlement = (0, entitlement_1.parseEntitlementClaims)(obj.entitlement);
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
return fail(error.message);
|
|
203
|
+
}
|
|
204
|
+
let tokenClaims;
|
|
205
|
+
let tokenMetadataFromToken;
|
|
206
|
+
try {
|
|
207
|
+
const parsedToken = (0, entitlement_1.parseEntitlementToken)(token);
|
|
208
|
+
tokenClaims = parsedToken.claims;
|
|
209
|
+
tokenMetadataFromToken = parsedToken.metadata;
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
return fail(`invalid stored entitlement token: ${error.message}`);
|
|
213
|
+
}
|
|
214
|
+
if (tokenMetadataFromToken.payload_base64url !== tokenMetadata.payload_base64url ||
|
|
215
|
+
tokenMetadataFromToken.signature_base64url !== tokenMetadata.signature_base64url) {
|
|
216
|
+
return fail("stored entitlement token metadata does not match token segments");
|
|
217
|
+
}
|
|
218
|
+
if (!entitlementsEqual(tokenClaims, entitlement)) {
|
|
219
|
+
return fail("stored entitlement claims do not match token payload claims");
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
version: "v2",
|
|
223
|
+
name,
|
|
224
|
+
token,
|
|
225
|
+
created_at: createdAt,
|
|
226
|
+
updated_at: updatedAt,
|
|
227
|
+
token_metadata: tokenMetadata,
|
|
228
|
+
entitlement
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function parseTokenMetadata(input, options, fail) {
|
|
232
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
233
|
+
return fail(`license token_metadata must be an object: ${options.filePath}`);
|
|
234
|
+
}
|
|
235
|
+
const metadataObj = input;
|
|
236
|
+
const format = readOptionalString(metadataObj, "format");
|
|
237
|
+
if (format !== "ent1") {
|
|
238
|
+
return fail("license token_metadata.format must be 'ent1'");
|
|
239
|
+
}
|
|
240
|
+
const payloadBase64Url = readOptionalString(metadataObj, "payload_base64url");
|
|
241
|
+
if (!payloadBase64Url || !/^[A-Za-z0-9_-]+$/.test(payloadBase64Url)) {
|
|
242
|
+
return fail("license token_metadata.payload_base64url must be base64url");
|
|
243
|
+
}
|
|
244
|
+
const signatureBase64Url = readOptionalString(metadataObj, "signature_base64url");
|
|
245
|
+
if (!signatureBase64Url || !/^[A-Za-z0-9_-]+$/.test(signatureBase64Url)) {
|
|
246
|
+
return fail("license token_metadata.signature_base64url must be base64url");
|
|
247
|
+
}
|
|
248
|
+
return {
|
|
249
|
+
format: "ent1",
|
|
250
|
+
payload_base64url: payloadBase64Url,
|
|
251
|
+
signature_base64url: signatureBase64Url
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
function readOptionalString(obj, key) {
|
|
142
255
|
const value = obj[key];
|
|
143
256
|
if (typeof value !== "string" || !value.trim()) {
|
|
144
|
-
|
|
257
|
+
return undefined;
|
|
145
258
|
}
|
|
146
259
|
return value.trim();
|
|
147
260
|
}
|
|
261
|
+
function entitlementsEqual(left, right) {
|
|
262
|
+
return left.version === right.version &&
|
|
263
|
+
left.issuer === right.issuer &&
|
|
264
|
+
left.key_id === right.key_id &&
|
|
265
|
+
left.mode === right.mode &&
|
|
266
|
+
left.currency === right.currency &&
|
|
267
|
+
left.max_amount === right.max_amount &&
|
|
268
|
+
left.not_before === right.not_before &&
|
|
269
|
+
left.expires_at === right.expires_at;
|
|
270
|
+
}
|
|
148
271
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/license/store.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/license/store.ts"],"names":[],"mappings":"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"}
|