@tenderprompt/accounts 0.8.4 → 0.9.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.
- package/README.md +6 -355
- package/cli.js +8 -0
- package/package.json +7 -29
- package/dist/api.d.ts +0 -109
- package/dist/api.d.ts.map +0 -1
- package/dist/api.js +0 -141
- package/dist/api.js.map +0 -1
- package/dist/artifact.d.ts +0 -8
- package/dist/artifact.d.ts.map +0 -1
- package/dist/artifact.js +0 -205
- package/dist/artifact.js.map +0 -1
- package/dist/auth-store.d.ts +0 -51
- package/dist/auth-store.d.ts.map +0 -1
- package/dist/auth-store.js +0 -242
- package/dist/auth-store.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -4
- package/dist/cli.js.map +0 -1
- package/dist/contracts.d.ts +0 -226
- package/dist/contracts.d.ts.map +0 -1
- package/dist/contracts.js +0 -5
- package/dist/contracts.js.map +0 -1
- package/dist/errors.d.ts +0 -10
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -19
- package/dist/errors.js.map +0 -1
- package/dist/files.d.ts +0 -22
- package/dist/files.d.ts.map +0 -1
- package/dist/files.js +0 -272
- package/dist/files.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -4
- package/dist/index.js.map +0 -1
- package/dist/main.d.ts +0 -37
- package/dist/main.d.ts.map +0 -1
- package/dist/main.js +0 -2131
- package/dist/main.js.map +0 -1
- package/dist/oauth.d.ts +0 -67
- package/dist/oauth.d.ts.map +0 -1
- package/dist/oauth.js +0 -187
- package/dist/oauth.js.map +0 -1
- package/dist/processes.d.ts +0 -12
- package/dist/processes.d.ts.map +0 -1
- package/dist/processes.js +0 -48
- package/dist/processes.js.map +0 -1
- package/dist/profile-bindings.d.ts +0 -26
- package/dist/profile-bindings.d.ts.map +0 -1
- package/dist/profile-bindings.js +0 -214
- package/dist/profile-bindings.js.map +0 -1
- package/dist/starter.d.ts +0 -20
- package/dist/starter.d.ts.map +0 -1
- package/dist/starter.js +0 -154
- package/dist/starter.js.map +0 -1
- package/skill/tender-accounts/SKILL.md +0 -372
- package/templates/shopify-customer-account/AGENTS.md +0 -15
- package/templates/shopify-customer-account/CLAUDE.md +0 -1
- package/templates/shopify-customer-account/README.md +0 -50
- package/templates/shopify-customer-account/apps/gateway/AGENTS.md +0 -10
- package/templates/shopify-customer-account/apps/gateway/CLAUDE.md +0 -1
- package/templates/shopify-customer-account/apps/gateway/README.md +0 -9
- package/templates/shopify-customer-account/apps/gateway/database-schema.json +0 -49
- package/templates/shopify-customer-account/apps/gateway/dot.dev.vars.example +0 -12
- package/templates/shopify-customer-account/apps/gateway/migrations/0001_customer_auth.sql +0 -76
- package/templates/shopify-customer-account/apps/gateway/package.json +0 -25
- package/templates/shopify-customer-account/apps/gateway/scripts/build-worker.mjs +0 -15
- package/templates/shopify-customer-account/apps/gateway/scripts/pack-tender-artifact.mjs +0 -85
- package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/hostname-policy.ts +0 -66
- package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/schema.ts +0 -90
- package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/session-store.ts +0 -864
- package/templates/shopify-customer-account/apps/gateway/src/platform/customer-auth/shopify-route-adapter.ts +0 -1157
- package/templates/shopify-customer-account/apps/gateway/src/platform/runtime-hostname.ts +0 -46
- package/templates/shopify-customer-account/apps/gateway/src/portal-service.test.ts +0 -70
- package/templates/shopify-customer-account/apps/gateway/src/portal-service.ts +0 -71
- package/templates/shopify-customer-account/apps/gateway/src/runtime-config.test.ts +0 -30
- package/templates/shopify-customer-account/apps/gateway/src/runtime-config.ts +0 -56
- package/templates/shopify-customer-account/apps/gateway/src/worker.ts +0 -85
- package/templates/shopify-customer-account/apps/gateway/tender-accounts.json +0 -10
- package/templates/shopify-customer-account/apps/gateway/tender-app.config.json +0 -40
- package/templates/shopify-customer-account/apps/gateway/tsconfig.json +0 -13
- package/templates/shopify-customer-account/apps/gateway/vitest.config.ts +0 -8
- package/templates/shopify-customer-account/apps/gateway/worker-configuration.d.ts +0 -26
- package/templates/shopify-customer-account/apps/gateway/wrangler.jsonc +0 -42
- package/templates/shopify-customer-account/apps/portal/AGENTS.md +0 -10
- package/templates/shopify-customer-account/apps/portal/CLAUDE.md +0 -1
- package/templates/shopify-customer-account/apps/portal/README.md +0 -7
- package/templates/shopify-customer-account/apps/portal/index.html +0 -13
- package/templates/shopify-customer-account/apps/portal/package.json +0 -33
- package/templates/shopify-customer-account/apps/portal/scripts/build-worker.mjs +0 -11
- package/templates/shopify-customer-account/apps/portal/scripts/pack-tender-artifact.mjs +0 -63
- package/templates/shopify-customer-account/apps/portal/scripts/portal-worker.mjs +0 -84
- package/templates/shopify-customer-account/apps/portal/scripts/portal-worker.test.mjs +0 -14
- package/templates/shopify-customer-account/apps/portal/src/App.tsx +0 -111
- package/templates/shopify-customer-account/apps/portal/src/main.tsx +0 -10
- package/templates/shopify-customer-account/apps/portal/src/styles.css +0 -54
- package/templates/shopify-customer-account/apps/portal/tender-accounts.json +0 -10
- package/templates/shopify-customer-account/apps/portal/tender-app.config.json +0 -19
- package/templates/shopify-customer-account/apps/portal/tsconfig.json +0 -14
- package/templates/shopify-customer-account/apps/portal/vite.config.ts +0 -7
- package/templates/shopify-customer-account/apps/portal/worker-configuration.d.ts +0 -11
- package/templates/shopify-customer-account/apps/portal/wrangler.jsonc +0 -22
- package/templates/shopify-customer-account/dot.dev.vars.example +0 -4
- package/templates/shopify-customer-account/dot.gitignore +0 -9
- package/templates/shopify-customer-account/package.json +0 -22
- package/templates/shopify-customer-account/scripts/artifact-contract.mjs +0 -109
package/dist/api.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/artifact.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type BuildEnvelope, type VerifiedArtifact } from "./contracts.js";
|
|
2
|
-
export declare function verifyArtifact(directory: string): Promise<VerifiedArtifact>;
|
|
3
|
-
export declare function labelLocalArtifact(artifact: VerifiedArtifact, input: {
|
|
4
|
-
gitRevision: string;
|
|
5
|
-
dirty: boolean;
|
|
6
|
-
}): Promise<VerifiedArtifact>;
|
|
7
|
-
export declare function parseBuildEnvelope(value: string): BuildEnvelope;
|
|
8
|
-
//# sourceMappingURL=artifact.d.ts.map
|
package/dist/artifact.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAQxB,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiCjF;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA2D/D"}
|
package/dist/artifact.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { writeFile } from "node:fs/promises";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
import { BUILD_ENVELOPE_FILENAME, BUILD_ENVELOPE_SCHEMA, } from "./contracts.js";
|
|
5
|
-
import { CliError } from "./errors.js";
|
|
6
|
-
import { readBoundedFile, safeArtifactPath } from "./files.js";
|
|
7
|
-
const MAX_ENVELOPE_BYTES = 1024 * 1024;
|
|
8
|
-
const MAX_FILE_BYTES = 25 * 1024 * 1024;
|
|
9
|
-
const MAX_TOTAL_BYTES = 50 * 1024 * 1024;
|
|
10
|
-
export async function verifyArtifact(directory) {
|
|
11
|
-
const root = resolve(directory);
|
|
12
|
-
const envelopePath = resolve(root, BUILD_ENVELOPE_FILENAME);
|
|
13
|
-
const envelopeText = new TextDecoder("utf8", { fatal: true }).decode(await readBoundedFile(envelopePath, MAX_ENVELOPE_BYTES));
|
|
14
|
-
const envelope = parseBuildEnvelope(envelopeText);
|
|
15
|
-
const descriptors = [
|
|
16
|
-
{ path: "worker.mjs", descriptor: envelope.manifest.module },
|
|
17
|
-
...envelope.manifest.files.map((descriptor) => ({ path: `assets/${descriptor.path}`, descriptor })),
|
|
18
|
-
];
|
|
19
|
-
let totalBytes = 0;
|
|
20
|
-
for (const { path, descriptor } of descriptors) {
|
|
21
|
-
const bytes = await readBoundedFile(safeArtifactPath(root, path), Math.min(descriptor.bytes, MAX_FILE_BYTES));
|
|
22
|
-
if (bytes.byteLength !== descriptor.bytes || sha256(bytes) !== descriptor.sha256) {
|
|
23
|
-
throw new CliError("artifact_integrity_failed", `Artifact bytes do not match the retained descriptor for ${path}.`);
|
|
24
|
-
}
|
|
25
|
-
totalBytes += bytes.byteLength;
|
|
26
|
-
}
|
|
27
|
-
if (totalBytes > MAX_TOTAL_BYTES) {
|
|
28
|
-
throw new CliError("artifact_too_large", "The artifact exceeds the 50 MiB developer-delivery limit.");
|
|
29
|
-
}
|
|
30
|
-
const calculatedBundleDigest = sha256(Buffer.from(JSON.stringify(artifactContentLedger(envelope.manifest))));
|
|
31
|
-
if (calculatedBundleDigest !== envelope.bundleDigest) {
|
|
32
|
-
throw new CliError("artifact_integrity_failed", "The artifact manifest does not match its bundle digest.");
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
directory: root,
|
|
36
|
-
envelopePath,
|
|
37
|
-
envelope,
|
|
38
|
-
fileCount: descriptors.length,
|
|
39
|
-
totalBytes,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export async function labelLocalArtifact(artifact, input) {
|
|
43
|
-
if (!input.dirty)
|
|
44
|
-
return artifact;
|
|
45
|
-
const sourceRevision = `local-${input.gitRevision.slice(0, 12)}-${artifact.envelope.bundleDigest.slice(0, 12)}`;
|
|
46
|
-
const envelope = { ...artifact.envelope, sourceRevision };
|
|
47
|
-
await writeFile(artifact.envelopePath, `${JSON.stringify(envelope, null, 2)}\n`, "utf8");
|
|
48
|
-
return { ...artifact, envelope };
|
|
49
|
-
}
|
|
50
|
-
export function parseBuildEnvelope(value) {
|
|
51
|
-
let candidate;
|
|
52
|
-
try {
|
|
53
|
-
candidate = JSON.parse(value);
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
throw new CliError("artifact_envelope_invalid", "The artifact build envelope is not valid JSON.");
|
|
57
|
-
}
|
|
58
|
-
if (!isRecord(candidate) || candidate.schema !== BUILD_ENVELOPE_SCHEMA || !isRecord(candidate.manifest)) {
|
|
59
|
-
throw new CliError("artifact_envelope_invalid", `The artifact must use ${BUILD_ENVELOPE_SCHEMA}.`);
|
|
60
|
-
}
|
|
61
|
-
const sourceRevision = requiredSourceRevision(candidate.sourceRevision);
|
|
62
|
-
const bundleDigest = requiredDigest(candidate.bundleDigest, "bundle digest");
|
|
63
|
-
const manifest = candidate.manifest;
|
|
64
|
-
if (manifest.schema !== "tender.account-artifact/v1" || !isRecord(manifest.app) || !isRecord(manifest.runtime)) {
|
|
65
|
-
throw new CliError("artifact_manifest_invalid", "The artifact manifest uses an unsupported shape.");
|
|
66
|
-
}
|
|
67
|
-
if (manifest.app.fixture === true) {
|
|
68
|
-
throw new CliError("artifact_manifest_invalid", "Merchant artifacts cannot identify themselves as platform fixtures.");
|
|
69
|
-
}
|
|
70
|
-
const app = {
|
|
71
|
-
...manifest.app,
|
|
72
|
-
slug: requiredString(manifest.app.slug, "app slug"),
|
|
73
|
-
label: requiredString(manifest.app.label, "app label"),
|
|
74
|
-
version: requiredString(manifest.app.version, "app version"),
|
|
75
|
-
fixture: false,
|
|
76
|
-
};
|
|
77
|
-
const runtime = {
|
|
78
|
-
...manifest.runtime,
|
|
79
|
-
kind: requiredString(manifest.runtime.kind, "runtime kind"),
|
|
80
|
-
assetPrefix: requiredString(manifest.runtime.assetPrefix, "asset prefix"),
|
|
81
|
-
};
|
|
82
|
-
if (runtime.kind !== "worker" && runtime.kind !== "worker-assets") {
|
|
83
|
-
throw new CliError("artifact_manifest_invalid", "Developer delivery requires a compiled Worker module.");
|
|
84
|
-
}
|
|
85
|
-
if (runtime.assetPrefix !== `/_tenant-artifacts/${bundleDigest}`) {
|
|
86
|
-
throw new CliError("artifact_manifest_invalid", "The artifact asset prefix does not match its bundle digest.");
|
|
87
|
-
}
|
|
88
|
-
const module = artifactModule(manifest.module);
|
|
89
|
-
const files = artifactFiles(manifest.files);
|
|
90
|
-
if (!Array.isArray(manifest.resources) || !Array.isArray(manifest.services)) {
|
|
91
|
-
throw new CliError("artifact_manifest_invalid", "The artifact resource and service declarations must be arrays.");
|
|
92
|
-
}
|
|
93
|
-
const secrets = manifest.secrets === undefined ? undefined : secretNames(manifest.secrets);
|
|
94
|
-
return {
|
|
95
|
-
schema: BUILD_ENVELOPE_SCHEMA,
|
|
96
|
-
sourceRevision,
|
|
97
|
-
bundleDigest,
|
|
98
|
-
manifest: {
|
|
99
|
-
...manifest,
|
|
100
|
-
schema: "tender.account-artifact/v1",
|
|
101
|
-
app,
|
|
102
|
-
runtime,
|
|
103
|
-
module,
|
|
104
|
-
files,
|
|
105
|
-
resources: manifest.resources,
|
|
106
|
-
services: manifest.services,
|
|
107
|
-
...(secrets === undefined ? {} : { secrets }),
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
function artifactModule(value) {
|
|
112
|
-
if (!isRecord(value) || value.path !== "worker.mjs" || value.contentType !== "application/javascript+module") {
|
|
113
|
-
throw new CliError("artifact_manifest_invalid", "The artifact Worker module descriptor is missing or invalid.");
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
path: "worker.mjs",
|
|
117
|
-
sha256: requiredDigest(value.sha256, "Worker module digest"),
|
|
118
|
-
bytes: requiredBytes(value.bytes, "Worker module bytes"),
|
|
119
|
-
contentType: "application/javascript+module",
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
function artifactFiles(value) {
|
|
123
|
-
if (!Array.isArray(value) || value.length > 249) {
|
|
124
|
-
throw new CliError("artifact_manifest_invalid", "The artifact public file list is invalid.");
|
|
125
|
-
}
|
|
126
|
-
const result = [];
|
|
127
|
-
let previous = "";
|
|
128
|
-
for (const candidate of value) {
|
|
129
|
-
if (!isRecord(candidate))
|
|
130
|
-
throw new CliError("artifact_manifest_invalid", "An artifact file descriptor is invalid.");
|
|
131
|
-
const path = requiredString(candidate.path, "artifact path");
|
|
132
|
-
if (!isSafePath(path) || (previous && path.localeCompare(previous) <= 0)) {
|
|
133
|
-
throw new CliError("artifact_manifest_invalid", "Artifact paths must be safe, unique, and sorted.");
|
|
134
|
-
}
|
|
135
|
-
result.push({
|
|
136
|
-
path,
|
|
137
|
-
sha256: requiredDigest(candidate.sha256, `digest for ${path}`),
|
|
138
|
-
bytes: requiredBytes(candidate.bytes, `bytes for ${path}`, true),
|
|
139
|
-
});
|
|
140
|
-
previous = path;
|
|
141
|
-
}
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
144
|
-
function secretNames(value) {
|
|
145
|
-
if (!Array.isArray(value) || value.length > 32) {
|
|
146
|
-
throw new CliError("artifact_manifest_invalid", "The artifact secret declaration list is invalid.");
|
|
147
|
-
}
|
|
148
|
-
const result = [];
|
|
149
|
-
let previous = "";
|
|
150
|
-
for (const candidate of value) {
|
|
151
|
-
if (typeof candidate !== "string" || !/^[A-Z][A-Z0-9_]{2,63}$/u.test(candidate)
|
|
152
|
-
|| candidate.startsWith("TENDER_") || candidate === "ASSETS"
|
|
153
|
-
|| (previous && candidate.localeCompare(previous) <= 0)) {
|
|
154
|
-
throw new CliError("artifact_manifest_invalid", "Artifact secret names must be safe, unique, and sorted.");
|
|
155
|
-
}
|
|
156
|
-
result.push(candidate);
|
|
157
|
-
previous = candidate;
|
|
158
|
-
}
|
|
159
|
-
return result;
|
|
160
|
-
}
|
|
161
|
-
function artifactContentLedger(manifest) {
|
|
162
|
-
if (manifest.databaseSchema !== undefined) {
|
|
163
|
-
return { module: manifest.module, files: manifest.files, databaseSchema: manifest.databaseSchema };
|
|
164
|
-
}
|
|
165
|
-
return { module: manifest.module, files: manifest.files };
|
|
166
|
-
}
|
|
167
|
-
function requiredSourceRevision(value) {
|
|
168
|
-
if (typeof value !== "string" || value.length < 7 || value.length > 128
|
|
169
|
-
|| !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(value)) {
|
|
170
|
-
throw new CliError("artifact_envelope_invalid", "The artifact source revision is invalid.");
|
|
171
|
-
}
|
|
172
|
-
return value;
|
|
173
|
-
}
|
|
174
|
-
function requiredString(value, label) {
|
|
175
|
-
if (typeof value !== "string" || value.length === 0 || value.length > 512) {
|
|
176
|
-
throw new CliError("artifact_manifest_invalid", `The ${label} is invalid.`);
|
|
177
|
-
}
|
|
178
|
-
return value;
|
|
179
|
-
}
|
|
180
|
-
function requiredDigest(value, label) {
|
|
181
|
-
const digest = requiredString(value, label).toLowerCase();
|
|
182
|
-
if (!/^[a-f0-9]{64}$/u.test(digest))
|
|
183
|
-
throw new CliError("artifact_manifest_invalid", `The ${label} is invalid.`);
|
|
184
|
-
return digest;
|
|
185
|
-
}
|
|
186
|
-
function requiredBytes(value, label, allowZero = false) {
|
|
187
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value)
|
|
188
|
-
|| value < (allowZero ? 0 : 1) || value > MAX_FILE_BYTES) {
|
|
189
|
-
throw new CliError("artifact_manifest_invalid", `The ${label} is invalid.`);
|
|
190
|
-
}
|
|
191
|
-
return value;
|
|
192
|
-
}
|
|
193
|
-
function isSafePath(value) {
|
|
194
|
-
return value.length <= 512 && !value.startsWith("/") && !value.endsWith("/")
|
|
195
|
-
&& !value.includes("\\") && !value.includes("%")
|
|
196
|
-
&& value.split("/").every((segment) => segment.length > 0 && segment !== "." && segment !== ".."
|
|
197
|
-
&& /^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(segment));
|
|
198
|
-
}
|
|
199
|
-
function sha256(value) {
|
|
200
|
-
return createHash("sha256").update(value).digest("hex");
|
|
201
|
-
}
|
|
202
|
-
function isRecord(value) {
|
|
203
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=artifact.js.map
|
package/dist/artifact.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact.js","sourceRoot":"","sources":["../src/artifact.ts"],"names":[],"mappings":"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"}
|
package/dist/auth-store.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export declare const CLI_AUTH_SCHEMA = "tender.accounts-auth/v1";
|
|
2
|
-
export declare const CLI_AUTH_STORE_SCHEMA = "tender.accounts-auth-store/v2";
|
|
3
|
-
export declare const DEFAULT_AUTH_PROFILE = "default";
|
|
4
|
-
export interface StoredCliAuth {
|
|
5
|
-
schema: typeof CLI_AUTH_SCHEMA;
|
|
6
|
-
apiUrl: string;
|
|
7
|
-
accessToken?: string;
|
|
8
|
-
accessTokenExpiresAt?: string;
|
|
9
|
-
refreshToken?: string;
|
|
10
|
-
refreshTokenExpiresAt?: string;
|
|
11
|
-
principal?: {
|
|
12
|
-
tenantId: string;
|
|
13
|
-
ownerEmail: string;
|
|
14
|
-
projects: string[];
|
|
15
|
-
};
|
|
16
|
-
pendingDevice?: {
|
|
17
|
-
deviceCode: string;
|
|
18
|
-
userCode: string;
|
|
19
|
-
verificationUri: string;
|
|
20
|
-
verificationUriComplete: string;
|
|
21
|
-
expiresAt: string;
|
|
22
|
-
intervalSeconds: number;
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
export interface StoredAuthProfile {
|
|
26
|
-
profile: string;
|
|
27
|
-
auth: StoredCliAuth;
|
|
28
|
-
}
|
|
29
|
-
export interface CliAuthStore {
|
|
30
|
-
read(profile: string): Promise<StoredCliAuth | null>;
|
|
31
|
-
list(): Promise<StoredAuthProfile[]>;
|
|
32
|
-
write(profile: string, auth: StoredCliAuth): Promise<void>;
|
|
33
|
-
compareAndSwap(profile: string, expected: StoredCliAuth | null, auth: StoredCliAuth | null): Promise<boolean>;
|
|
34
|
-
clear(profile: string): Promise<void>;
|
|
35
|
-
clearAll(): Promise<void>;
|
|
36
|
-
description(): string;
|
|
37
|
-
}
|
|
38
|
-
export declare function createDefaultAuthStore(environment: NodeJS.ProcessEnv): CliAuthStore;
|
|
39
|
-
export declare function validateAuthProfile(value: string): string;
|
|
40
|
-
export declare function validateNamedAuthProfile(value: string): string;
|
|
41
|
-
export declare class MemoryCliAuthStore implements CliAuthStore {
|
|
42
|
-
private readonly profiles;
|
|
43
|
-
read(profile: string): Promise<StoredCliAuth | null>;
|
|
44
|
-
list(): Promise<StoredAuthProfile[]>;
|
|
45
|
-
write(profile: string, auth: StoredCliAuth): Promise<void>;
|
|
46
|
-
compareAndSwap(profile: string, expected: StoredCliAuth | null, auth: StoredCliAuth | null): Promise<boolean>;
|
|
47
|
-
clear(profile: string): Promise<void>;
|
|
48
|
-
clearAll(): Promise<void>;
|
|
49
|
-
description(): string;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=auth-store.d.ts.map
|
package/dist/auth-store.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,eAAe,4BAA4B,CAAC;AACzD,eAAO,MAAM,qBAAqB,kCAAkC,CAAC;AACrE,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,uBAAuB,EAAE,MAAM,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACrD,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9G,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,WAAW,IAAI,MAAM,CAAC;CACvB;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAInF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAEvD,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAGzD;IAEK,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAIzC;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;IAEK,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlH;IAEK,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9B;IAED,WAAW,IAAI,MAAM,CAEpB;CACF"}
|
package/dist/auth-store.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { homedir } from "node:os";
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { chmod, mkdir, open, readFile, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
4
|
-
import { dirname, resolve } from "node:path";
|
|
5
|
-
import { isDeepStrictEqual } from "node:util";
|
|
6
|
-
import { CliError } from "./errors.js";
|
|
7
|
-
export const CLI_AUTH_SCHEMA = "tender.accounts-auth/v1";
|
|
8
|
-
export const CLI_AUTH_STORE_SCHEMA = "tender.accounts-auth-store/v2";
|
|
9
|
-
export const DEFAULT_AUTH_PROFILE = "default";
|
|
10
|
-
export function createDefaultAuthStore(environment) {
|
|
11
|
-
const explicitPath = environment.TENDER_ACCOUNTS_AUTH_FILE;
|
|
12
|
-
if (explicitPath)
|
|
13
|
-
return new FileCliAuthStore(resolve(explicitPath));
|
|
14
|
-
return new FileCliAuthStore(resolve(homedir(), ".tender-accounts/auth.json"));
|
|
15
|
-
}
|
|
16
|
-
export function validateAuthProfile(value) {
|
|
17
|
-
const profile = value.trim();
|
|
18
|
-
if (!/^[A-Za-z0-9_-]{1,64}$/u.test(profile)) {
|
|
19
|
-
throw new CliError("auth_profile_invalid", "The auth profile must be 1-64 letters, numbers, underscores, or hyphens.", "tender-accounts auth create merchant-name --device --json");
|
|
20
|
-
}
|
|
21
|
-
return profile;
|
|
22
|
-
}
|
|
23
|
-
export function validateNamedAuthProfile(value) {
|
|
24
|
-
const profile = validateAuthProfile(value);
|
|
25
|
-
if (profile.toLowerCase() === DEFAULT_AUTH_PROFILE) {
|
|
26
|
-
throw new CliError("auth_profile_reserved", "The default profile is managed with auth login and auth logout.", "tender-accounts auth create merchant-name");
|
|
27
|
-
}
|
|
28
|
-
return profile;
|
|
29
|
-
}
|
|
30
|
-
export class MemoryCliAuthStore {
|
|
31
|
-
profiles = new Map();
|
|
32
|
-
async read(profile) {
|
|
33
|
-
const value = this.profiles.get(validateAuthProfile(profile));
|
|
34
|
-
return value ? structuredClone(value) : null;
|
|
35
|
-
}
|
|
36
|
-
async list() {
|
|
37
|
-
return [...this.profiles.entries()]
|
|
38
|
-
.sort(([left], [right]) => left.localeCompare(right))
|
|
39
|
-
.map(([profile, auth]) => ({ profile, auth: structuredClone(auth) }));
|
|
40
|
-
}
|
|
41
|
-
async write(profile, auth) {
|
|
42
|
-
this.profiles.set(validateAuthProfile(profile), structuredClone(auth));
|
|
43
|
-
}
|
|
44
|
-
async compareAndSwap(profile, expected, auth) {
|
|
45
|
-
const selected = validateAuthProfile(profile);
|
|
46
|
-
const current = this.profiles.get(selected) ?? null;
|
|
47
|
-
if (!isDeepStrictEqual(current, expected))
|
|
48
|
-
return false;
|
|
49
|
-
if (auth)
|
|
50
|
-
this.profiles.set(selected, structuredClone(auth));
|
|
51
|
-
else
|
|
52
|
-
this.profiles.delete(selected);
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
async clear(profile) {
|
|
56
|
-
this.profiles.delete(validateAuthProfile(profile));
|
|
57
|
-
}
|
|
58
|
-
async clearAll() {
|
|
59
|
-
this.profiles.clear();
|
|
60
|
-
}
|
|
61
|
-
description() {
|
|
62
|
-
return "memory";
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
class FileCliAuthStore {
|
|
66
|
-
path;
|
|
67
|
-
constructor(path) {
|
|
68
|
-
this.path = path;
|
|
69
|
-
}
|
|
70
|
-
async read(profile) {
|
|
71
|
-
const profiles = await this.readProfiles();
|
|
72
|
-
const value = profiles.get(validateAuthProfile(profile));
|
|
73
|
-
return value ? structuredClone(value) : null;
|
|
74
|
-
}
|
|
75
|
-
async list() {
|
|
76
|
-
return [...(await this.readProfiles()).entries()]
|
|
77
|
-
.sort(([left], [right]) => left.localeCompare(right))
|
|
78
|
-
.map(([profile, auth]) => ({ profile, auth: structuredClone(auth) }));
|
|
79
|
-
}
|
|
80
|
-
async write(profile, auth) {
|
|
81
|
-
const selected = validateAuthProfile(profile);
|
|
82
|
-
await this.mutate((profiles) => profiles.set(selected, structuredClone(auth)));
|
|
83
|
-
}
|
|
84
|
-
async compareAndSwap(profile, expected, auth) {
|
|
85
|
-
const selected = validateAuthProfile(profile);
|
|
86
|
-
return await this.mutate((profiles) => {
|
|
87
|
-
const current = profiles.get(selected) ?? null;
|
|
88
|
-
if (!isDeepStrictEqual(current, expected))
|
|
89
|
-
return false;
|
|
90
|
-
if (auth)
|
|
91
|
-
profiles.set(selected, structuredClone(auth));
|
|
92
|
-
else
|
|
93
|
-
profiles.delete(selected);
|
|
94
|
-
return true;
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
async clear(profile) {
|
|
98
|
-
const selected = validateAuthProfile(profile);
|
|
99
|
-
await this.mutate((profiles) => profiles.delete(selected));
|
|
100
|
-
}
|
|
101
|
-
async clearAll() {
|
|
102
|
-
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
103
|
-
await this.withLock(async () => await rm(this.path, { force: true }));
|
|
104
|
-
}
|
|
105
|
-
description() {
|
|
106
|
-
return this.path;
|
|
107
|
-
}
|
|
108
|
-
async readProfiles() {
|
|
109
|
-
try {
|
|
110
|
-
return parseStoredAuthStore(await readFile(this.path, "utf8"));
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
if (isMissing(error))
|
|
114
|
-
return new Map();
|
|
115
|
-
throw error;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
async mutate(change) {
|
|
119
|
-
await mkdir(dirname(this.path), { recursive: true, mode: 0o700 });
|
|
120
|
-
await chmod(dirname(this.path), 0o700);
|
|
121
|
-
return await this.withLock(async () => {
|
|
122
|
-
const profiles = await this.readProfiles();
|
|
123
|
-
const result = change(profiles);
|
|
124
|
-
if (profiles.size === 0) {
|
|
125
|
-
await rm(this.path, { force: true });
|
|
126
|
-
return result;
|
|
127
|
-
}
|
|
128
|
-
const temporary = `${this.path}.${process.pid}.${randomUUID()}.tmp`;
|
|
129
|
-
const payload = {
|
|
130
|
-
schema: CLI_AUTH_STORE_SCHEMA,
|
|
131
|
-
profiles: Object.fromEntries([...profiles.entries()].sort(([left], [right]) => left.localeCompare(right))),
|
|
132
|
-
};
|
|
133
|
-
await writeFile(temporary, `${JSON.stringify(payload, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
|
|
134
|
-
await chmod(temporary, 0o600);
|
|
135
|
-
await rename(temporary, this.path);
|
|
136
|
-
await chmod(this.path, 0o600);
|
|
137
|
-
return result;
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
async withLock(operation) {
|
|
141
|
-
const lockPath = `${this.path}.lock`;
|
|
142
|
-
const deadline = Date.now() + 5_000;
|
|
143
|
-
let handle;
|
|
144
|
-
while (!handle) {
|
|
145
|
-
try {
|
|
146
|
-
handle = await open(lockPath, "wx", 0o600);
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
if (!isAlreadyExists(error))
|
|
150
|
-
throw error;
|
|
151
|
-
const lock = await stat(lockPath).catch(() => null);
|
|
152
|
-
if (lock && Date.now() - lock.mtimeMs > 30_000) {
|
|
153
|
-
await rm(lockPath, { force: true });
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
if (Date.now() >= deadline) {
|
|
157
|
-
throw new CliError("auth_store_busy", "Another Tender Accounts command is updating the login store.", "Wait for that command to finish, then retry.");
|
|
158
|
-
}
|
|
159
|
-
await new Promise((resolvePromise) => setTimeout(resolvePromise, 25));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
return await operation();
|
|
164
|
-
}
|
|
165
|
-
finally {
|
|
166
|
-
await handle.close();
|
|
167
|
-
await rm(lockPath, { force: true });
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
function parseStoredAuthStore(value) {
|
|
172
|
-
let parsed;
|
|
173
|
-
try {
|
|
174
|
-
parsed = JSON.parse(value);
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
throw new CliError("auth_store_invalid", "The stored Tender Accounts login is not valid JSON.", "tender-accounts auth logout --local --all --json");
|
|
178
|
-
}
|
|
179
|
-
if (isRecord(parsed) && parsed.schema === CLI_AUTH_SCHEMA) {
|
|
180
|
-
return new Map([[DEFAULT_AUTH_PROFILE, parseStoredAuth(parsed)]]);
|
|
181
|
-
}
|
|
182
|
-
if (!isRecord(parsed) || parsed.schema !== CLI_AUTH_STORE_SCHEMA || !isRecord(parsed.profiles)) {
|
|
183
|
-
throw new CliError("auth_store_invalid", "The stored Tender Accounts login uses an unsupported format.", "tender-accounts auth logout --local --all --json");
|
|
184
|
-
}
|
|
185
|
-
const profiles = new Map();
|
|
186
|
-
for (const [profile, auth] of Object.entries(parsed.profiles)) {
|
|
187
|
-
profiles.set(validateAuthProfile(profile), parseStoredAuth(auth));
|
|
188
|
-
}
|
|
189
|
-
return profiles;
|
|
190
|
-
}
|
|
191
|
-
function parseStoredAuth(parsed) {
|
|
192
|
-
if (!isRecord(parsed) || parsed.schema !== CLI_AUTH_SCHEMA || typeof parsed.apiUrl !== "string") {
|
|
193
|
-
throw new CliError("auth_store_invalid", "The stored Tender Accounts login uses an unsupported format.", "tender-accounts auth logout --local --all --json");
|
|
194
|
-
}
|
|
195
|
-
const auth = { schema: CLI_AUTH_SCHEMA, apiUrl: parsed.apiUrl };
|
|
196
|
-
if (typeof parsed.accessToken === "string")
|
|
197
|
-
auth.accessToken = parsed.accessToken;
|
|
198
|
-
if (typeof parsed.accessTokenExpiresAt === "string")
|
|
199
|
-
auth.accessTokenExpiresAt = parsed.accessTokenExpiresAt;
|
|
200
|
-
if (typeof parsed.refreshToken === "string")
|
|
201
|
-
auth.refreshToken = parsed.refreshToken;
|
|
202
|
-
if (typeof parsed.refreshTokenExpiresAt === "string")
|
|
203
|
-
auth.refreshTokenExpiresAt = parsed.refreshTokenExpiresAt;
|
|
204
|
-
if (isRecord(parsed.principal)
|
|
205
|
-
&& typeof parsed.principal.tenantId === "string"
|
|
206
|
-
&& typeof parsed.principal.ownerEmail === "string"
|
|
207
|
-
&& Array.isArray(parsed.principal.projects)
|
|
208
|
-
&& parsed.principal.projects.every((project) => typeof project === "string")) {
|
|
209
|
-
auth.principal = {
|
|
210
|
-
tenantId: parsed.principal.tenantId,
|
|
211
|
-
ownerEmail: parsed.principal.ownerEmail,
|
|
212
|
-
projects: [...parsed.principal.projects],
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
if (isRecord(parsed.pendingDevice)
|
|
216
|
-
&& typeof parsed.pendingDevice.deviceCode === "string"
|
|
217
|
-
&& typeof parsed.pendingDevice.userCode === "string"
|
|
218
|
-
&& typeof parsed.pendingDevice.verificationUri === "string"
|
|
219
|
-
&& typeof parsed.pendingDevice.verificationUriComplete === "string"
|
|
220
|
-
&& typeof parsed.pendingDevice.expiresAt === "string"
|
|
221
|
-
&& typeof parsed.pendingDevice.intervalSeconds === "number") {
|
|
222
|
-
auth.pendingDevice = {
|
|
223
|
-
deviceCode: parsed.pendingDevice.deviceCode,
|
|
224
|
-
userCode: parsed.pendingDevice.userCode,
|
|
225
|
-
verificationUri: parsed.pendingDevice.verificationUri,
|
|
226
|
-
verificationUriComplete: parsed.pendingDevice.verificationUriComplete,
|
|
227
|
-
expiresAt: parsed.pendingDevice.expiresAt,
|
|
228
|
-
intervalSeconds: parsed.pendingDevice.intervalSeconds,
|
|
229
|
-
};
|
|
230
|
-
}
|
|
231
|
-
return auth;
|
|
232
|
-
}
|
|
233
|
-
function isMissing(value) {
|
|
234
|
-
return value instanceof Error && "code" in value && value.code === "ENOENT";
|
|
235
|
-
}
|
|
236
|
-
function isAlreadyExists(value) {
|
|
237
|
-
return value instanceof Error && "code" in value && value.code === "EEXIST";
|
|
238
|
-
}
|
|
239
|
-
function isRecord(value) {
|
|
240
|
-
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
241
|
-
}
|
|
242
|
-
//# sourceMappingURL=auth-store.js.map
|
package/dist/auth-store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../src/auth-store.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
DELETED
package/dist/cli.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
DELETED
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|