@solidnumber/cli 2.11.18 → 2.11.20

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.
@@ -0,0 +1,87 @@
1
+ import { Reconciler } from './registry';
2
+ export interface ReconcileOptions {
3
+ dryRun?: boolean;
4
+ prune?: boolean;
5
+ }
6
+ export interface ReconcileReport {
7
+ dryRun: boolean;
8
+ results: ExecResult[];
9
+ counts: Record<string, number>;
10
+ }
11
+ export interface DesiredResource {
12
+ kind: string;
13
+ /** Resolved identity VALUE (e.g. the email / sku / url). */
14
+ identity: string;
15
+ /** Desired fields. Only keys present here are managed (subset semantics). */
16
+ spec: Record<string, unknown>;
17
+ }
18
+ export type ActionType = 'create' | 'update' | 'noop' | 'prune' | 'unsupported';
19
+ export interface PlannedAction {
20
+ kind: string;
21
+ identity: string;
22
+ action: ActionType;
23
+ reason?: string;
24
+ id?: string | number;
25
+ spec?: Record<string, unknown>;
26
+ }
27
+ /** Minimal client surface the executor needs — lets tests inject a fake. */
28
+ export interface ApplyClient {
29
+ get<T = unknown>(url: string): Promise<{
30
+ data: T;
31
+ }>;
32
+ post(url: string, data: unknown, options?: {
33
+ idempotencyKey?: string;
34
+ }): Promise<unknown>;
35
+ put(url: string, data: unknown, options?: {
36
+ idempotencyKey?: string;
37
+ }): Promise<unknown>;
38
+ patch(url: string, data: unknown, options?: {
39
+ idempotencyKey?: string;
40
+ }): Promise<unknown>;
41
+ delete(url: string, options?: {
42
+ idempotencyKey?: string;
43
+ }): Promise<unknown>;
44
+ }
45
+ export interface PlanOptions {
46
+ /** Delete current resources (within a managed kind) absent from the manifest. */
47
+ prune?: boolean;
48
+ }
49
+ /**
50
+ * Parse a manifest string (YAML or JSON) into normalized desired resources.
51
+ * Accepts: a single resource, a top-level array, `{ resources: [...] }`, and
52
+ * multi-document YAML. Each resource may be `{ kind, spec }`, k8s-style
53
+ * `{ kind, metadata, spec }`, or `{ kind, ...fields }` (fields become spec).
54
+ * `metadata.identity` (or a top-level `identity`) overrides the kind default.
55
+ */
56
+ export declare function parseManifest(text: string): DesiredResource[];
57
+ /** Pull the resource array out of a list response, tolerating common shapes. */
58
+ export declare function extractList(resp: unknown, recon: Reconciler): Array<Record<string, unknown>>;
59
+ /**
60
+ * True when every field declared in `desired` already equals the value on the
61
+ * current server item (subset semantics — unmanaged server fields are ignored).
62
+ */
63
+ export declare function specMatches(desired: Record<string, unknown>, current: Record<string, unknown>): boolean;
64
+ /**
65
+ * Compute the reconcile plan for one kind. Pure — given the desired resources
66
+ * and the current server items, returns the ordered list of actions.
67
+ */
68
+ export declare function planKind(recon: Reconciler, desired: DesiredResource[], current: Array<Record<string, unknown>>, opts?: PlanOptions): PlannedAction[];
69
+ /** Stable idempotency key for a resource action, derived from its content. */
70
+ export declare function actionIdempotencyKey(a: PlannedAction): string;
71
+ export interface ExecResult extends PlannedAction {
72
+ status: 'done' | 'skipped' | 'failed';
73
+ error?: string;
74
+ }
75
+ /** Count results by action (+ failed) for a summary line. */
76
+ export declare function tallyResults(results: ExecResult[]): Record<string, number>;
77
+ /**
78
+ * Reconcile a set of desired resources end-to-end: group by kind, fetch current
79
+ * state, plan, execute. Pure orchestration with NO prompting — the interactive
80
+ * prune confirmation lives in the `apply` command, not here, so this is safe to
81
+ * call programmatically (the @solidnumber/cli/client facade uses it). Unknown
82
+ * kinds are skipped (parseManifest already validates when used via the CLI).
83
+ */
84
+ export declare function reconcile(client: ApplyClient, resources: DesiredResource[], opts?: ReconcileOptions): Promise<ReconcileReport>;
85
+ /** Execute a plan. `dryRun` returns the plan annotated as skipped, no writes. */
86
+ export declare function executePlan(client: ApplyClient, recon: Reconciler, actions: PlannedAction[], dryRun: boolean): Promise<ExecResult[]>;
87
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/apply/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseManifest = parseManifest;
37
+ exports.extractList = extractList;
38
+ exports.specMatches = specMatches;
39
+ exports.planKind = planKind;
40
+ exports.actionIdempotencyKey = actionIdempotencyKey;
41
+ exports.tallyResults = tallyResults;
42
+ exports.reconcile = reconcile;
43
+ exports.executePlan = executePlan;
44
+ /**
45
+ * `solid apply` engine — declarative desired-state reconcile.
46
+ *
47
+ * Parse a manifest into resources, fetch current state per kind, compute a
48
+ * plan (create / update / noop / prune), then execute it. The planning core
49
+ * (parseManifest, specMatches, planKind, extractList) is pure so it's unit
50
+ * tested without HTTP; executePlan does the writes through a minimal client.
51
+ */
52
+ const yaml = __importStar(require("js-yaml"));
53
+ const node_crypto_1 = require("node:crypto");
54
+ const registry_1 = require("./registry");
55
+ /**
56
+ * Parse a manifest string (YAML or JSON) into normalized desired resources.
57
+ * Accepts: a single resource, a top-level array, `{ resources: [...] }`, and
58
+ * multi-document YAML. Each resource may be `{ kind, spec }`, k8s-style
59
+ * `{ kind, metadata, spec }`, or `{ kind, ...fields }` (fields become spec).
60
+ * `metadata.identity` (or a top-level `identity`) overrides the kind default.
61
+ */
62
+ function parseManifest(text) {
63
+ const docs = [];
64
+ // loadAll handles both single- and multi-document YAML; JSON is valid YAML.
65
+ yaml.loadAll(text, (d) => { if (d !== null && d !== undefined)
66
+ docs.push(d); });
67
+ const raw = [];
68
+ for (const doc of docs) {
69
+ if (Array.isArray(doc))
70
+ raw.push(...doc);
71
+ else if (doc && typeof doc === 'object' && Array.isArray(doc.resources)) {
72
+ raw.push(...doc.resources);
73
+ }
74
+ else
75
+ raw.push(doc);
76
+ }
77
+ return raw.map((r, i) => normalizeResource(r, i));
78
+ }
79
+ function normalizeResource(r, index) {
80
+ if (!r || typeof r !== 'object') {
81
+ throw new Error(`Manifest entry #${index + 1} is not an object`);
82
+ }
83
+ const obj = r;
84
+ const kind = String(obj.kind || '').trim();
85
+ if (!kind)
86
+ throw new Error(`Manifest entry #${index + 1} is missing "kind"`);
87
+ const recon = (0, registry_1.reconcilerFor)(kind);
88
+ if (!recon) {
89
+ throw new Error(`Unknown kind "${kind}" (known: see \`solid apply --kinds\`)`);
90
+ }
91
+ const metadata = (obj.metadata && typeof obj.metadata === 'object' ? obj.metadata : {});
92
+ // spec source: explicit `spec`, else all fields except kind/metadata.
93
+ let spec;
94
+ if (obj.spec && typeof obj.spec === 'object') {
95
+ spec = { ...obj.spec };
96
+ }
97
+ else {
98
+ spec = { ...obj };
99
+ delete spec.kind;
100
+ delete spec.metadata;
101
+ delete spec.identity;
102
+ }
103
+ const identityField = String(obj.identity || metadata.identity || recon.identity);
104
+ const identityValue = spec[identityField] ?? metadata.name;
105
+ if (identityValue === undefined || identityValue === null || identityValue === '') {
106
+ throw new Error(`${kind} entry #${index + 1} has no identity — set spec.${identityField} (or metadata.name)`);
107
+ }
108
+ return { kind, identity: String(identityValue), spec };
109
+ }
110
+ /** Pull the resource array out of a list response, tolerating common shapes. */
111
+ function extractList(resp, recon) {
112
+ if (Array.isArray(resp))
113
+ return resp;
114
+ if (!resp || typeof resp !== 'object')
115
+ return [];
116
+ const o = resp;
117
+ const candidates = [recon.listKey, 'items', 'results', 'data', `${recon.kind}s`].filter(Boolean);
118
+ for (const key of candidates) {
119
+ if (Array.isArray(o[key]))
120
+ return o[key];
121
+ }
122
+ return [];
123
+ }
124
+ /**
125
+ * True when every field declared in `desired` already equals the value on the
126
+ * current server item (subset semantics — unmanaged server fields are ignored).
127
+ */
128
+ function specMatches(desired, current) {
129
+ for (const [k, v] of Object.entries(desired)) {
130
+ if (!deepEqual(v, current[k]))
131
+ return false;
132
+ }
133
+ return true;
134
+ }
135
+ function deepEqual(a, b) {
136
+ if (a === b)
137
+ return true;
138
+ if (a === null || b === null || typeof a !== typeof b)
139
+ return false;
140
+ if (typeof a !== 'object')
141
+ return false;
142
+ if (Array.isArray(a) || Array.isArray(b)) {
143
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
144
+ return false;
145
+ return a.every((x, i) => deepEqual(x, b[i]));
146
+ }
147
+ const ao = a;
148
+ const bo = b;
149
+ const keys = Object.keys(ao);
150
+ if (keys.length !== Object.keys(bo).length)
151
+ return false;
152
+ return keys.every((k) => deepEqual(ao[k], bo[k]));
153
+ }
154
+ /**
155
+ * Compute the reconcile plan for one kind. Pure — given the desired resources
156
+ * and the current server items, returns the ordered list of actions.
157
+ */
158
+ function planKind(recon, desired, current, opts = {}) {
159
+ const currentByIdentity = new Map();
160
+ for (const item of current) {
161
+ const idv = item[recon.identity];
162
+ if (idv !== undefined && idv !== null)
163
+ currentByIdentity.set(String(idv), item);
164
+ }
165
+ const actions = [];
166
+ const seen = new Set();
167
+ for (const d of desired) {
168
+ seen.add(d.identity);
169
+ const existing = currentByIdentity.get(d.identity);
170
+ if (!existing) {
171
+ actions.push({ kind: d.kind, identity: d.identity, action: 'create', spec: d.spec });
172
+ continue;
173
+ }
174
+ if (specMatches(d.spec, existing)) {
175
+ actions.push({ kind: d.kind, identity: d.identity, action: 'noop', id: existing[recon.idField] });
176
+ }
177
+ else if (recon.updateMethod === null) {
178
+ actions.push({
179
+ kind: d.kind, identity: d.identity, action: 'unsupported',
180
+ reason: `${d.kind} is immutable — delete and recreate to change`,
181
+ id: existing[recon.idField],
182
+ });
183
+ }
184
+ else {
185
+ actions.push({ kind: d.kind, identity: d.identity, action: 'update', id: existing[recon.idField], spec: d.spec });
186
+ }
187
+ }
188
+ if (opts.prune) {
189
+ for (const [idv, item] of currentByIdentity) {
190
+ if (!seen.has(idv)) {
191
+ actions.push({ kind: recon.kind, identity: idv, action: 'prune', id: item[recon.idField] });
192
+ }
193
+ }
194
+ }
195
+ return actions;
196
+ }
197
+ /** Stable idempotency key for a resource action, derived from its content. */
198
+ function actionIdempotencyKey(a) {
199
+ const h = (0, node_crypto_1.createHash)('sha256')
200
+ .update(`${a.action}:${a.kind}:${a.identity}:${JSON.stringify(a.spec ?? {})}`)
201
+ .digest('hex')
202
+ .slice(0, 32);
203
+ return `apply-${h}`;
204
+ }
205
+ /** Count results by action (+ failed) for a summary line. */
206
+ function tallyResults(results) {
207
+ const c = { create: 0, update: 0, noop: 0, prune: 0, unsupported: 0, failed: 0 };
208
+ for (const r of results) {
209
+ if (r.status === 'failed')
210
+ c.failed++;
211
+ if (r.action in c)
212
+ c[r.action]++;
213
+ }
214
+ return c;
215
+ }
216
+ /**
217
+ * Reconcile a set of desired resources end-to-end: group by kind, fetch current
218
+ * state, plan, execute. Pure orchestration with NO prompting — the interactive
219
+ * prune confirmation lives in the `apply` command, not here, so this is safe to
220
+ * call programmatically (the @solidnumber/cli/client facade uses it). Unknown
221
+ * kinds are skipped (parseManifest already validates when used via the CLI).
222
+ */
223
+ async function reconcile(client, resources, opts = {}) {
224
+ const byKind = new Map();
225
+ for (const r of resources) {
226
+ const arr = byKind.get(r.kind) ?? [];
227
+ arr.push(r);
228
+ byKind.set(r.kind, arr);
229
+ }
230
+ const results = [];
231
+ for (const [kind, desired] of byKind) {
232
+ const recon = (0, registry_1.reconcilerFor)(kind);
233
+ if (!recon)
234
+ continue;
235
+ const resp = await client.get(recon.list);
236
+ const current = extractList(resp.data, recon);
237
+ const actions = planKind(recon, desired, current, { prune: opts.prune });
238
+ results.push(...(await executePlan(client, recon, actions, !!opts.dryRun)));
239
+ }
240
+ return { dryRun: !!opts.dryRun, results, counts: tallyResults(results) };
241
+ }
242
+ /** Execute a plan. `dryRun` returns the plan annotated as skipped, no writes. */
243
+ async function executePlan(client, recon, actions, dryRun) {
244
+ const results = [];
245
+ for (const a of actions) {
246
+ if (a.action === 'noop' || a.action === 'unsupported') {
247
+ results.push({ ...a, status: 'skipped' });
248
+ continue;
249
+ }
250
+ if (dryRun) {
251
+ results.push({ ...a, status: 'skipped' });
252
+ continue;
253
+ }
254
+ const key = actionIdempotencyKey(a);
255
+ const item = recon.itemPath.replace('{id}', String(a.id));
256
+ try {
257
+ if (a.action === 'create') {
258
+ await client.post(recon.create, a.spec, { idempotencyKey: key });
259
+ }
260
+ else if (a.action === 'update') {
261
+ if (recon.updateMethod === 'put')
262
+ await client.put(item, a.spec, { idempotencyKey: key });
263
+ else
264
+ await client.patch(item, a.spec, { idempotencyKey: key });
265
+ }
266
+ else if (a.action === 'prune') {
267
+ await client.delete(item, { idempotencyKey: key });
268
+ }
269
+ results.push({ ...a, status: 'done' });
270
+ }
271
+ catch (e) {
272
+ results.push({ ...a, status: 'failed', error: e instanceof Error ? e.message : String(e) });
273
+ }
274
+ }
275
+ return results;
276
+ }
277
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/apply/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Reconciler registry for `solid apply` — maps a declarative manifest `kind`
3
+ * to the REST shape needed to reconcile it (list current, create, update,
4
+ * delete one). Adding a kind = one entry here; the engine stays generic.
5
+ *
6
+ * Endpoints below are taken verbatim from the matching CLI command files
7
+ * (commands/products.ts, crm.ts, webhooks.ts) so they track the real API.
8
+ * A kind with `updateMethod: null` is immutable (create/delete only) — on
9
+ * drift the engine reports it rather than silently mutating.
10
+ */
11
+ export interface Reconciler {
12
+ /** Manifest `kind` this entry handles. */
13
+ kind: string;
14
+ /** Spec field that uniquely identifies a resource within the company. */
15
+ identity: string;
16
+ /** GET collection (list current state). */
17
+ list: string;
18
+ /** POST collection (create). */
19
+ create: string;
20
+ /** Path template for one item; `{id}` is substituted. Used for update/delete. */
21
+ itemPath: string;
22
+ /** HTTP verb for an in-place update, or null when the resource is immutable. */
23
+ updateMethod: 'patch' | 'put' | null;
24
+ /** Field on a fetched server item that holds its id (default `id`). */
25
+ idField: string;
26
+ /** Key in the list response holding the array, when not auto-detectable. */
27
+ listKey?: string;
28
+ }
29
+ export declare const RECONCILERS: Record<string, Reconciler>;
30
+ export declare function reconcilerFor(kind: string): Reconciler | undefined;
31
+ export declare function knownKinds(): string[];
32
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,YAAY,EAAE,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;IACrC,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAyClD,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAElE;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RECONCILERS = void 0;
4
+ exports.reconcilerFor = reconcilerFor;
5
+ exports.knownKinds = knownKinds;
6
+ exports.RECONCILERS = {
7
+ product: {
8
+ kind: 'product',
9
+ identity: 'sku',
10
+ list: '/api/v1/products/',
11
+ create: '/api/v1/products/',
12
+ itemPath: '/api/v1/products/{id}',
13
+ updateMethod: 'patch',
14
+ idField: 'id',
15
+ listKey: 'products',
16
+ },
17
+ contact: {
18
+ kind: 'contact',
19
+ identity: 'email',
20
+ list: '/api/v1/crm/contacts',
21
+ create: '/api/v1/crm/contacts',
22
+ itemPath: '/api/v1/crm/contacts/{id}',
23
+ updateMethod: 'patch',
24
+ idField: 'id',
25
+ listKey: 'contacts',
26
+ },
27
+ deal: {
28
+ kind: 'deal',
29
+ identity: 'name',
30
+ list: '/api/v1/crm/deals',
31
+ create: '/api/v1/crm/deals',
32
+ itemPath: '/api/v1/crm/deals/{id}',
33
+ updateMethod: 'patch',
34
+ idField: 'id',
35
+ listKey: 'deals',
36
+ },
37
+ webhook: {
38
+ kind: 'webhook',
39
+ identity: 'url',
40
+ list: '/api/v1/developer/webhooks',
41
+ create: '/api/v1/developer/webhooks',
42
+ itemPath: '/api/v1/developer/webhooks/{id}',
43
+ updateMethod: null, // webhooks are immutable — recreate to change
44
+ idField: 'id',
45
+ listKey: 'webhooks',
46
+ },
47
+ };
48
+ function reconcilerFor(kind) {
49
+ return exports.RECONCILERS[kind] || exports.RECONCILERS[kind.toLowerCase()];
50
+ }
51
+ function knownKinds() {
52
+ return Object.keys(exports.RECONCILERS).sort();
53
+ }
54
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/apply/registry.ts"],"names":[],"mappings":";;;AAwEA,sCAEC;AAED,gCAEC;AAjDY,QAAA,WAAW,GAA+B;IACrD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,uBAAuB;QACjC,YAAY,EAAE,OAAO;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,UAAU;KACpB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,sBAAsB;QAC9B,QAAQ,EAAE,2BAA2B;QACrC,YAAY,EAAE,OAAO;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,UAAU;KACpB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,wBAAwB;QAClC,YAAY,EAAE,OAAO;QACrB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,4BAA4B;QAClC,MAAM,EAAE,4BAA4B;QACpC,QAAQ,EAAE,iCAAiC;QAC3C,YAAY,EAAE,IAAI,EAAE,8CAA8C;QAClE,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,UAAU;KACpB;CACF,CAAC;AAEF,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,mBAAW,CAAC,IAAI,CAAC,IAAI,mBAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function importESM<T = unknown>(specifier: string): Promise<T>;
2
+ //# sourceMappingURL=esm-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-import.d.ts","sourceRoot":"","sources":["../../src/lib/esm-import.ts"],"names":[],"mappings":"AAmBA,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEpE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.importESM = importESM;
4
+ /**
5
+ * Import an ESM-only package from this CommonJS bundle.
6
+ *
7
+ * The CLI compiles with `module: CommonJS`, under which tsc rewrites a plain
8
+ * `await import('pkg')` into `require('pkg')`. For ESM-only packages (ora-style
9
+ * `"type": "module"` with no `require` export condition) that `require()` throws
10
+ * `ERR_REQUIRE_ESM` on Node < 20.19 — which is exactly what broke `solid audit`
11
+ * (lighthouse) and the startup update check (update-notifier) on older Node.
12
+ *
13
+ * Routing the dynamic import through a `Function` hides it from the TypeScript
14
+ * CommonJS transform, so a *real* ESM `import()` survives to runtime. Importing
15
+ * ESM from CommonJS is always allowed; only `require()` of ESM is not — so this
16
+ * works on every supported Node version. Keep ESM-only deps loading through here
17
+ * rather than reintroducing a bare `import()`/`require()` of them.
18
+ */
19
+ const dynamicEsmImport = new Function('specifier', 'return import(specifier)');
20
+ function importESM(specifier) {
21
+ return dynamicEsmImport(specifier);
22
+ }
23
+ //# sourceMappingURL=esm-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-import.js","sourceRoot":"","sources":["../../src/lib/esm-import.ts"],"names":[],"mappings":";;AAmBA,8BAEC;AArBD;;;;;;;;;;;;;;GAcG;AACH,MAAM,gBAAgB,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAE9D,CAAC;AAEhB,SAAgB,SAAS,CAAc,SAAiB;IACtD,OAAO,gBAAgB,CAAI,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-runner.d.ts","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAgB5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yEAAyE;IACzE,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACrD;AAGD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;sEACkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,EACnN,UAAU,EAAE,MAAM,GACjB,eAAe,EAAE,CA2BnB;AAGD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAmEhC"}
1
+ {"version":3,"file":"lighthouse-runner.d.ts","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAgB5D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yEAAyE;IACzE,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACrD;AAGD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ;qEACiE;IACjE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;sEACkE;IAClE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,EACnN,UAAU,EAAE,MAAM,GACjB,eAAe,EAAE,CA2BnB;AAGD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAoEhC"}
@@ -10,43 +10,11 @@
10
10
  * Pure plumbing: launches Chrome, runs lighthouse, returns the trimmed
11
11
  * audit. No Commander, no UI — those live in `commands/audit.ts`.
12
12
  */
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || (function () {
30
- var ownKeys = function(o) {
31
- ownKeys = Object.getOwnPropertyNames || function (o) {
32
- var ar = [];
33
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
- return ar;
35
- };
36
- return ownKeys(o);
37
- };
38
- return function (mod) {
39
- if (mod && mod.__esModule) return mod;
40
- var result = {};
41
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
- __setModuleDefault(result, mod);
43
- return result;
44
- };
45
- })();
46
13
  Object.defineProperty(exports, "__esModule", { value: true });
47
14
  exports.extractIssues = extractIssues;
48
15
  exports.runLighthouse = runLighthouse;
49
16
  const browser_install_1 = require("./browser-install");
17
+ const esm_import_1 = require("./esm-import");
50
18
  /** Map our short category names → Lighthouse's category IDs +
51
19
  * configuration. `mobile` is special: it's not a separate category
52
20
  * in Lighthouse — it's a form-factor toggle that runs the perf+a11y
@@ -119,8 +87,9 @@ async function runLighthouse(url, category, opts = {}) {
119
87
  // pay zero cost.
120
88
  // eslint-disable-next-line @typescript-eslint/no-var-requires
121
89
  const puppeteer = require('puppeteer-core');
122
- // Lighthouse v13 ESM-only — use dynamic import.
123
- const lighthouseModule = await Promise.resolve().then(() => __importStar(require('lighthouse')));
90
+ // Lighthouse v13 is ESM-only — load it through importESM so tsc's CommonJS
91
+ // transform doesn't downlevel it to require() (ERR_REQUIRE_ESM on Node<20.19).
92
+ const lighthouseModule = await (0, esm_import_1.importESM)('lighthouse');
124
93
  const lighthouse = (lighthouseModule.default ?? lighthouseModule);
125
94
  const browser = await puppeteer.launch({
126
95
  executablePath: browserResult.executablePath,
@@ -1 +1 @@
1
- {"version":3,"file":"lighthouse-runner.js","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lighthouse-runner.js","sourceRoot":"","sources":["../../src/lib/lighthouse-runner.ts"],"names":[],"mappings":"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"}