@lionden/core 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 (51) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +23 -0
  3. package/dist/arg-names.d.ts +11 -0
  4. package/dist/arg-names.d.ts.map +1 -0
  5. package/dist/arg-names.js +39 -0
  6. package/dist/arg-names.js.map +1 -0
  7. package/dist/config-resolution.d.ts +20 -0
  8. package/dist/config-resolution.d.ts.map +1 -0
  9. package/dist/config-resolution.js +570 -0
  10. package/dist/config-resolution.js.map +1 -0
  11. package/dist/hook-system.d.ts +51 -0
  12. package/dist/hook-system.d.ts.map +1 -0
  13. package/dist/hook-system.js +144 -0
  14. package/dist/hook-system.js.map +1 -0
  15. package/dist/index.d.ts +17 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +21 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/key-artifacts.d.ts +75 -0
  20. package/dist/key-artifacts.d.ts.map +1 -0
  21. package/dist/key-artifacts.js +258 -0
  22. package/dist/key-artifacts.js.map +1 -0
  23. package/dist/leo-preflight.d.ts +11 -0
  24. package/dist/leo-preflight.d.ts.map +1 -0
  25. package/dist/leo-preflight.js +93 -0
  26. package/dist/leo-preflight.js.map +1 -0
  27. package/dist/log-style.d.ts +22 -0
  28. package/dist/log-style.d.ts.map +1 -0
  29. package/dist/log-style.js +67 -0
  30. package/dist/log-style.js.map +1 -0
  31. package/dist/lre.d.ts +14 -0
  32. package/dist/lre.d.ts.map +1 -0
  33. package/dist/lre.js +113 -0
  34. package/dist/lre.js.map +1 -0
  35. package/dist/plugin-loader.d.ts +20 -0
  36. package/dist/plugin-loader.d.ts.map +1 -0
  37. package/dist/plugin-loader.js +91 -0
  38. package/dist/plugin-loader.js.map +1 -0
  39. package/dist/task-builder.d.ts +49 -0
  40. package/dist/task-builder.d.ts.map +1 -0
  41. package/dist/task-builder.js +123 -0
  42. package/dist/task-builder.js.map +1 -0
  43. package/dist/task-runner.d.ts +78 -0
  44. package/dist/task-runner.d.ts.map +1 -0
  45. package/dist/task-runner.js +247 -0
  46. package/dist/task-runner.js.map +1 -0
  47. package/dist/types.d.ts +186 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +20 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +33 -0
@@ -0,0 +1,570 @@
1
+ import * as os from "node:os";
2
+ import * as path from "node:path";
3
+ import { checkRuntimeImportRefExists, classifyRuntimeImportRef, isConfigVariable, isValidAleoAddress, isValidExecutionImportsMapKey, normalizeProgramId, normalizeRuntimeImportRef, resolveConfigVariable, SDK_LOG_LEVELS, } from "@lionden/config";
4
+ import { HookDispatcherImpl } from "./hook-system.js";
5
+ export class ConfigResolutionError extends Error {
6
+ errors;
7
+ constructor(message, errors) {
8
+ super(message);
9
+ this.errors = errors;
10
+ this.name = "ConfigResolutionError";
11
+ }
12
+ }
13
+ export async function resolveConfig(userConfig, plugins, projectRoot) {
14
+ // Route config hooks through the shared dispatcher. This boots a standalone
15
+ // instance — the LRE does not exist yet at this phase of CLI startup. Lazy
16
+ // hook factories resolve once (single-flight in resolveCategory) and the
17
+ // resolved handlers are reused across all four stages below.
18
+ const hooks = new HookDispatcherImpl();
19
+ hooks.registerPlugins(plugins);
20
+ // 1. Extend user config (waterfall — an undefined return keeps the prior value)
21
+ const config = await hooks.waterfall("config", "extendUserConfig", userConfig);
22
+ // 2. Validate user config (built-in core passes first, then plugin handlers)
23
+ const userErrors = [
24
+ ...validateSdkUserConfig(config),
25
+ ...validateExecutionUserConfig(config),
26
+ ...(await hooks.collect("config", "validateUserConfig", config))
27
+ .flat()
28
+ // drop undefined returns from handlers that break the ConfigValidationError[] contract
29
+ .filter(Boolean),
30
+ ];
31
+ if (userErrors.length > 0) {
32
+ throw new ConfigResolutionError(`Config validation failed:\n${formatErrors(userErrors)}`, userErrors);
33
+ }
34
+ // 3. Resolve: build the resolved config from defaults + plugin partials
35
+ const resolvedVariable = async (v) => {
36
+ return resolveConfigVariable(v);
37
+ };
38
+ // Start with defaults, then merge plugin partials in plugin order.
39
+ let resolved = buildDefaults(config, projectRoot);
40
+ const partials = await hooks.collect("config", "resolveConfig", config, resolvedVariable);
41
+ for (const partial of partials) {
42
+ resolved = mergePartial(resolved, partial);
43
+ }
44
+ // 4. Validate resolved config (built-in core passes first, then plugin handlers)
45
+ const resolvedErrors = [
46
+ ...validateExecutionResolvedConfig(resolved),
47
+ ...(await hooks.collect("config", "validateResolvedConfig", resolved))
48
+ .flat()
49
+ // drop undefined returns from handlers that break the ConfigValidationError[] contract
50
+ .filter(Boolean),
51
+ ];
52
+ if (resolvedErrors.length > 0) {
53
+ throw new ConfigResolutionError(`Resolved config validation failed:\n${formatErrors(resolvedErrors)}`, resolvedErrors);
54
+ }
55
+ return { resolved, extendedUserConfig: config };
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Helpers
59
+ // ---------------------------------------------------------------------------
60
+ function formatErrors(errors) {
61
+ return errors.map((e) => ` - ${e.path}: ${e.message}`).join("\n");
62
+ }
63
+ function buildDefaults(config, projectRoot) {
64
+ const programsDir = config.programsDir ?? "programs";
65
+ const artifactsDir = config.artifactsDir ?? "artifacts";
66
+ const typechainDir = config.typechainDir ?? "typechain";
67
+ // codegen.outDir takes precedence over typechainDir when explicitly set
68
+ const codegenOutDir = config.codegen?.outDir ?? typechainDir;
69
+ const deploymentsDir = config.deploy?.deploymentsDir ?? "deployments";
70
+ const paths = {
71
+ root: projectRoot,
72
+ programs: path.resolve(projectRoot, programsDir),
73
+ artifacts: path.resolve(projectRoot, artifactsDir),
74
+ typechain: path.resolve(projectRoot, codegenOutDir),
75
+ cache: path.resolve(projectRoot, artifactsDir, ".cache"),
76
+ deployments: path.resolve(projectRoot, deploymentsDir),
77
+ };
78
+ const compiler = {
79
+ enableDce: config.compiler?.enableDce ?? true,
80
+ conditionalBlockMaxDepth: config.compiler?.conditionalBlockMaxDepth ?? 10,
81
+ buildTests: config.compiler?.buildTests ?? false,
82
+ extraFlags: config.compiler?.extraFlags ?? [],
83
+ };
84
+ const codegen = {
85
+ enabled: config.codegen?.enabled ?? true,
86
+ outDir: codegenOutDir,
87
+ dynamicRecords: normalizeDynamicRecords(config.codegen?.dynamicRecords),
88
+ };
89
+ const testing = {
90
+ framework: config.testing?.framework ?? "vitest",
91
+ timeout: config.testing?.timeout ?? 120_000,
92
+ autoStartDevnode: config.testing?.autoStartDevnode ?? true,
93
+ };
94
+ const deploy = {
95
+ defaultPriorityFee: config.deploy?.defaultPriorityFee ?? 0,
96
+ privateFee: config.deploy?.privateFee ?? false,
97
+ confirmTransactions: config.deploy?.confirmTransactions ?? true,
98
+ confirmationTimeout: config.deploy?.confirmationTimeout ?? 60_000,
99
+ deploymentsDir: deploymentsDir,
100
+ skipDeployed: config.deploy?.skipDeployed ?? true,
101
+ interDeploymentDelay: config.deploy?.interDeploymentDelay,
102
+ autoExport: config.deploy?.autoExport ?? false,
103
+ };
104
+ const sdk = resolveSdkConfig(config, projectRoot, paths.artifacts);
105
+ const execution = resolveExecutionConfig(config, projectRoot);
106
+ // Resolve networks
107
+ const networks = {};
108
+ const userNetworks = config.networks ?? {};
109
+ const deployEphemeral = config.deploy?.ephemeral;
110
+ // Always provide a default devnode network if none specified
111
+ if (Object.keys(userNetworks).length === 0) {
112
+ networks["devnode"] = {
113
+ type: "devnode",
114
+ socketAddr: "127.0.0.1:3030",
115
+ autoBlock: true,
116
+ verbosity: 0,
117
+ accounts: [],
118
+ network: "testnet",
119
+ ephemeral: deployEphemeral ?? true,
120
+ };
121
+ }
122
+ else {
123
+ for (const [name, netConfig] of Object.entries(userNetworks)) {
124
+ networks[name] = resolveNetworkConfig(name, netConfig, deployEphemeral);
125
+ }
126
+ }
127
+ const defaultNetwork = config.defaultNetwork ?? "devnode";
128
+ const namedAccounts = resolveNamedAccountsConfig(config.namedAccounts ?? {});
129
+ return {
130
+ leoVersion: config.leoVersion ?? "4.3.2",
131
+ skipLeoVersionCheck: config.skipLeoVersionCheck ?? false,
132
+ leoBinary: expandTilde(config.leoBinary ?? "leo"),
133
+ paths,
134
+ networks,
135
+ defaultNetwork,
136
+ compiler,
137
+ codegen,
138
+ testing,
139
+ deploy,
140
+ sdk,
141
+ execution,
142
+ namedAccounts,
143
+ };
144
+ }
145
+ function resolveSdkConfig(config, projectRoot, artifactsPath) {
146
+ const keyCache = config.sdk?.keyCache;
147
+ const logLevel = config.sdk?.logLevel ?? "warn";
148
+ const storage = keyCache?.storage ?? "filesystem";
149
+ const egress = resolveSdkEgressConfig(config);
150
+ if (storage === "memory") {
151
+ return egress === undefined
152
+ ? { logLevel, keyCache: { storage } }
153
+ : { logLevel, keyCache: { storage }, egress };
154
+ }
155
+ const rawPath = keyCache?.path ?? path.join(artifactsPath, ".cache", "provable-keys");
156
+ const expandedPath = expandTilde(rawPath);
157
+ const absolutePath = path.isAbsolute(expandedPath)
158
+ ? expandedPath
159
+ : path.resolve(projectRoot, expandedPath);
160
+ return egress === undefined
161
+ ? {
162
+ logLevel,
163
+ keyCache: {
164
+ storage,
165
+ path: normalizeAleoKeyCachePath(absolutePath),
166
+ },
167
+ }
168
+ : {
169
+ logLevel,
170
+ keyCache: {
171
+ storage,
172
+ path: normalizeAleoKeyCachePath(absolutePath),
173
+ },
174
+ egress,
175
+ };
176
+ }
177
+ function resolveSdkEgressConfig(config) {
178
+ const egress = config.sdk?.egress;
179
+ if (!egress)
180
+ return undefined;
181
+ const resolved = {};
182
+ if (egress.networkHosts)
183
+ resolved.networkHosts = [...egress.networkHosts];
184
+ if (egress.violation)
185
+ resolved.violation = egress.violation;
186
+ return resolved;
187
+ }
188
+ function normalizeAleoKeyCachePath(p) {
189
+ return path.basename(p) === ".aleo" ? p : path.join(p, ".aleo");
190
+ }
191
+ /**
192
+ * Normalize the user-provided `dynamicRecords` map into the resolved form by
193
+ * attaching each map key as `helperName`. Defensive against malformed input
194
+ * (non-object map, non-object entries) — entries that don't look like helper
195
+ * configs are dropped silently so the resolved shape stays stable. The
196
+ * plugin-leo `validateUserConfig` hook is responsible for surfacing those
197
+ * malformed entries as `ConfigValidationError` to the user before this
198
+ * normalization is consumed by codegen.
199
+ */
200
+ function normalizeDynamicRecords(raw) {
201
+ if (raw == null || typeof raw !== "object" || Array.isArray(raw))
202
+ return {};
203
+ const entries = [];
204
+ for (const [helperName, value] of Object.entries(raw)) {
205
+ if (value == null || typeof value !== "object" || Array.isArray(value))
206
+ continue;
207
+ const helper = value;
208
+ const sourceRecord = helper["sourceRecord"];
209
+ const schema = helper["schema"];
210
+ if (typeof sourceRecord !== "string" ||
211
+ schema == null ||
212
+ typeof schema !== "object" ||
213
+ Array.isArray(schema)) {
214
+ continue;
215
+ }
216
+ const normalizedSchema = {};
217
+ for (const [k, v] of Object.entries(schema)) {
218
+ if (typeof v !== "string")
219
+ continue;
220
+ normalizedSchema[k] = v;
221
+ }
222
+ const sourceProgram = helper["sourceProgram"];
223
+ entries.push([
224
+ helperName,
225
+ {
226
+ helperName,
227
+ sourceRecord,
228
+ ...(typeof sourceProgram === "string" ? { sourceProgram } : {}),
229
+ schema: normalizedSchema,
230
+ },
231
+ ]);
232
+ }
233
+ return Object.fromEntries(entries);
234
+ }
235
+ function resolveNetworkConfig(networkName, config, deployEphemeral) {
236
+ switch (config.type) {
237
+ case "devnode":
238
+ return {
239
+ type: "devnode",
240
+ socketAddr: config.socketAddr ?? "127.0.0.1:3030",
241
+ autoBlock: config.autoBlock ?? true,
242
+ verbosity: config.verbosity ?? 0,
243
+ accounts: (config.accounts ?? []).map((a, i) => {
244
+ const key = resolveStringOrVariable(a.privateKey);
245
+ if (!key) {
246
+ const err = {
247
+ path: `networks.${networkName}.accounts[${i}].privateKey`,
248
+ message: "Account private key must be a non-empty string or a resolvable ConfigVariable",
249
+ };
250
+ throw new ConfigResolutionError(err.message, [err]);
251
+ }
252
+ return { privateKey: key, name: a.name };
253
+ }),
254
+ genesisPath: config.genesisPath,
255
+ network: config.network ?? "testnet",
256
+ privateKey: resolveStringOrVariable(config.privateKey),
257
+ consensusHeights: config.consensusHeights,
258
+ // provider/binary stay undefined unless the user set them — auto-detect
259
+ // (which can fall back to leo) keys off their absence at start time.
260
+ ...(config.provider !== undefined ? { provider: config.provider } : {}),
261
+ ...(config.binary !== undefined ? { binary: expandTilde(config.binary) } : {}),
262
+ ...(config.storagePath !== undefined
263
+ ? { storagePath: expandTilde(config.storagePath) }
264
+ : {}),
265
+ ...(config.clearStorageOnStart !== undefined
266
+ ? { clearStorageOnStart: config.clearStorageOnStart }
267
+ : {}),
268
+ ephemeral: config.ephemeral ?? deployEphemeral ?? true,
269
+ };
270
+ case "http":
271
+ return {
272
+ type: "http",
273
+ endpoint: config.endpoint,
274
+ network: config.network,
275
+ privateKey: resolveStringOrVariable(config.privateKey),
276
+ apiKey: resolveStringOrVariable(config.apiKey),
277
+ ephemeral: config.ephemeral ?? deployEphemeral ?? false,
278
+ };
279
+ default: {
280
+ const unknownType = config.type;
281
+ throw new ConfigResolutionError(`Unknown network type "${unknownType}" for network "${networkName}". Supported types are "devnode" and "http".`, [
282
+ {
283
+ path: `networks.${networkName}.type`,
284
+ message: `Unknown network type "${unknownType}". Supported types are "devnode" and "http".`,
285
+ },
286
+ ]);
287
+ }
288
+ }
289
+ }
290
+ function resolveStringOrVariable(value) {
291
+ if (value === undefined)
292
+ return undefined;
293
+ if (typeof value === "string")
294
+ return value;
295
+ if (isConfigVariable(value))
296
+ return resolveConfigVariable(value);
297
+ return undefined;
298
+ }
299
+ // ---------------------------------------------------------------------------
300
+ // Named accounts resolution
301
+ // ---------------------------------------------------------------------------
302
+ /**
303
+ * Resolve user-provided namedAccounts config to the fully classified form.
304
+ * This is synchronous — ConfigVariable values are resolved eagerly (existing
305
+ * convention). Address derivation from private keys is deferred to runtime.
306
+ *
307
+ * Validation:
308
+ * - Numeric index: must be a finite non-negative integer
309
+ * - String starting with "aleo1": must pass full address shape validation
310
+ * - String starting with "APrivateKey1": accepted as-is (private key)
311
+ * - Other strings: config error
312
+ */
313
+ function resolveNamedAccountsConfig(userNamedAccounts) {
314
+ const resolved = {};
315
+ for (const [accountName, accountConfig] of Object.entries(userNamedAccounts)) {
316
+ const networks = {};
317
+ for (const [key, value] of Object.entries(accountConfig)) {
318
+ if (value === undefined)
319
+ continue;
320
+ const resolvedValue = resolveNamedAccountValue(accountName, key, value);
321
+ if (key === "default") {
322
+ // handled below via accountConfig.default
323
+ continue;
324
+ }
325
+ networks[key] = resolvedValue;
326
+ }
327
+ const defaultValue = accountConfig.default !== undefined
328
+ ? resolveNamedAccountValue(accountName, "default", accountConfig.default)
329
+ : undefined;
330
+ resolved[accountName] = { networks, default: defaultValue };
331
+ }
332
+ return resolved;
333
+ }
334
+ function resolveNamedAccountValue(accountName, keyName, value) {
335
+ // Resolve ConfigVariable first
336
+ let raw;
337
+ if (typeof value === "number") {
338
+ raw = value;
339
+ }
340
+ else if (typeof value === "string") {
341
+ raw = value;
342
+ }
343
+ else if (isConfigVariable(value)) {
344
+ const resolved = resolveConfigVariable(value);
345
+ // After variable resolution, treat as string
346
+ raw = resolved;
347
+ }
348
+ else {
349
+ throw new ConfigResolutionError(`Named account "${accountName}" (${keyName}): unsupported value type.`, [
350
+ {
351
+ path: `namedAccounts.${accountName}.${keyName}`,
352
+ message: "Value must be a number, string, or ConfigVariable.",
353
+ },
354
+ ]);
355
+ }
356
+ if (typeof raw === "number") {
357
+ // Validate: finite non-negative integer
358
+ if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw < 0) {
359
+ throw new ConfigResolutionError(`Named account "${accountName}" (${keyName}): index must be a non-negative integer, got ${raw}.`, [
360
+ {
361
+ path: `namedAccounts.${accountName}.${keyName}`,
362
+ message: `Index must be a non-negative integer, got ${raw}.`,
363
+ },
364
+ ]);
365
+ }
366
+ return { type: "index", index: raw };
367
+ }
368
+ // raw is a string
369
+ if (raw.startsWith("aleo1")) {
370
+ if (!isValidAleoAddress(raw)) {
371
+ throw new ConfigResolutionError(`Named account "${accountName}" (${keyName}): "${raw}" looks like an Aleo address but has an invalid format. ` +
372
+ `Expected "aleo1" followed by exactly 58 lowercase alphanumeric characters.`, [
373
+ {
374
+ path: `namedAccounts.${accountName}.${keyName}`,
375
+ message: `Invalid Aleo address format. Expected "aleo1" + 58 lowercase alphanumeric chars.`,
376
+ },
377
+ ]);
378
+ }
379
+ return { type: "address", address: raw };
380
+ }
381
+ if (raw.startsWith("APrivateKey1")) {
382
+ return { type: "privateKey", privateKey: raw };
383
+ }
384
+ throw new ConfigResolutionError(`Named account "${accountName}" (${keyName}): string "${raw}" is not a recognized Aleo address (aleo1...) or private key (APrivateKey1...).`, [
385
+ {
386
+ path: `namedAccounts.${accountName}.${keyName}`,
387
+ message: `Must be an Aleo address (aleo1...), a private key (APrivateKey1...), or a devnode account index (number).`,
388
+ },
389
+ ]);
390
+ }
391
+ function expandTilde(p) {
392
+ if (p.startsWith("~/")) {
393
+ return path.join(os.homedir(), p.slice(2));
394
+ }
395
+ return p;
396
+ }
397
+ function mergePartial(base, partial) {
398
+ return {
399
+ ...base,
400
+ ...partial,
401
+ paths: { ...base.paths, ...(partial.paths ?? {}) },
402
+ compiler: {
403
+ ...base.compiler,
404
+ ...(partial.compiler ?? {}),
405
+ },
406
+ codegen: { ...base.codegen, ...(partial.codegen ?? {}) },
407
+ testing: { ...base.testing, ...(partial.testing ?? {}) },
408
+ deploy: { ...base.deploy, ...(partial.deploy ?? {}) },
409
+ sdk: mergeSdkConfig(base.sdk, partial.sdk),
410
+ execution: {
411
+ imports: {
412
+ ...base.execution.imports,
413
+ ...(partial.execution?.imports ?? {}),
414
+ },
415
+ },
416
+ networks: { ...base.networks, ...(partial.networks ?? {}) },
417
+ namedAccounts: { ...base.namedAccounts, ...(partial.namedAccounts ?? {}) },
418
+ };
419
+ }
420
+ // ---------------------------------------------------------------------------
421
+ // Execution config (runtime imports for dynamic dispatch)
422
+ // ---------------------------------------------------------------------------
423
+ /**
424
+ * Resolve `execution.imports` into normalized `RuntimeImportRef[]` keyed by
425
+ * canonical `.aleo` program id. Invalid refs are skipped here — they would
426
+ * have surfaced in `validateExecutionUserConfig`. Map keys collide-merge
427
+ * after normalization (e.g. `governance` + `governance.aleo` → one entry).
428
+ */
429
+ function resolveExecutionConfig(config, projectRoot) {
430
+ const raw = config.execution?.imports;
431
+ if (!raw || typeof raw !== "object") {
432
+ return { imports: {} };
433
+ }
434
+ const byKey = new Map();
435
+ for (const [rawKey, refs] of Object.entries(raw)) {
436
+ if (!isValidExecutionImportsMapKey(rawKey))
437
+ continue;
438
+ if (!Array.isArray(refs))
439
+ continue;
440
+ const canonicalKey = normalizeProgramId(rawKey);
441
+ const refList = byKey.get(canonicalKey) ?? [];
442
+ for (const raw of refs) {
443
+ if (typeof raw !== "string" || raw.length === 0)
444
+ continue;
445
+ if (classifyRuntimeImportRef(raw) === "invalid")
446
+ continue;
447
+ try {
448
+ refList.push(normalizeRuntimeImportRef(raw, projectRoot));
449
+ }
450
+ catch {
451
+ // Ignore — already filtered by classify above; defense in depth.
452
+ }
453
+ }
454
+ byKey.set(canonicalKey, refList);
455
+ }
456
+ // Dedup and sort each list deterministically for cache identity stability.
457
+ const result = {};
458
+ for (const [key, refs] of byKey) {
459
+ result[key] = dedupAndSortRuntimeImports(refs);
460
+ }
461
+ return { imports: result };
462
+ }
463
+ function dedupAndSortRuntimeImports(refs) {
464
+ const seen = new Set();
465
+ const out = [];
466
+ for (const ref of refs) {
467
+ const key = ref.kind === "programId" ? `id:${ref.programId}` : `path:${ref.absolutePath}`;
468
+ if (seen.has(key))
469
+ continue;
470
+ seen.add(key);
471
+ out.push(ref);
472
+ }
473
+ out.sort((a, b) => {
474
+ const aKey = a.kind === "programId" ? a.programId : a.absolutePath;
475
+ const bKey = b.kind === "programId" ? b.programId : b.absolutePath;
476
+ if (aKey === bKey)
477
+ return 0;
478
+ return aKey < bKey ? -1 : 1;
479
+ });
480
+ return out;
481
+ }
482
+ function validateExecutionUserConfig(config) {
483
+ const errors = [];
484
+ const imports = config.execution?.imports;
485
+ if (imports === undefined)
486
+ return errors;
487
+ if (typeof imports !== "object" || imports === null || Array.isArray(imports)) {
488
+ errors.push({
489
+ path: "execution.imports",
490
+ message: "Must be an object mapping program ids to import-ref arrays.",
491
+ });
492
+ return errors;
493
+ }
494
+ for (const [key, refs] of Object.entries(imports)) {
495
+ if (!isValidExecutionImportsMapKey(key)) {
496
+ errors.push({
497
+ path: `execution.imports[${JSON.stringify(key)}]`,
498
+ message: `Map keys must be Leo program ids (bare or .aleo). Got ${JSON.stringify(key)}.`,
499
+ });
500
+ continue;
501
+ }
502
+ if (!Array.isArray(refs)) {
503
+ errors.push({
504
+ path: `execution.imports[${JSON.stringify(key)}]`,
505
+ message: "Value must be an array of program-id or path refs.",
506
+ });
507
+ continue;
508
+ }
509
+ if (refs.length === 0) {
510
+ errors.push({
511
+ path: `execution.imports[${JSON.stringify(key)}]`,
512
+ message: "Array must be non-empty (omit the key instead of providing []).",
513
+ });
514
+ continue;
515
+ }
516
+ refs.forEach((raw, i) => {
517
+ if (typeof raw !== "string") {
518
+ errors.push({
519
+ path: `execution.imports[${JSON.stringify(key)}][${i}]`,
520
+ message: `Ref must be a string, got ${typeof raw}.`,
521
+ });
522
+ return;
523
+ }
524
+ if (classifyRuntimeImportRef(raw) === "invalid") {
525
+ errors.push({
526
+ path: `execution.imports[${JSON.stringify(key)}][${i}]`,
527
+ message: `Ref ${JSON.stringify(raw)} is neither a Leo program id (bare or .aleo) nor a path (contains \`/\`, \`\\\\\`, or starts with \`~\`).`,
528
+ });
529
+ }
530
+ });
531
+ }
532
+ return errors;
533
+ }
534
+ const SDK_LOG_LEVEL_SET = new Set(SDK_LOG_LEVELS);
535
+ function validateSdkUserConfig(config) {
536
+ const errors = [];
537
+ const logLevel = config.sdk?.logLevel;
538
+ if (logLevel !== undefined && !SDK_LOG_LEVEL_SET.has(logLevel)) {
539
+ errors.push({
540
+ path: "sdk.logLevel",
541
+ message: `sdk.logLevel must be one of: ${SDK_LOG_LEVELS.join(", ")}`,
542
+ });
543
+ }
544
+ return errors;
545
+ }
546
+ function validateExecutionResolvedConfig(resolved) {
547
+ const errors = [];
548
+ for (const [key, refs] of Object.entries(resolved.execution.imports)) {
549
+ refs.forEach((ref, i) => {
550
+ const diagnostic = checkRuntimeImportRefExists(ref, `execution.imports[${JSON.stringify(key)}][${i}]`);
551
+ if (diagnostic) {
552
+ errors.push({ path: diagnostic.path, message: diagnostic.message });
553
+ }
554
+ });
555
+ }
556
+ return errors;
557
+ }
558
+ function mergeSdkConfig(base, partial) {
559
+ const mergedKeyCache = {
560
+ ...base.keyCache,
561
+ ...(partial?.keyCache ?? {}),
562
+ };
563
+ return {
564
+ ...base,
565
+ ...(partial ?? {}),
566
+ logLevel: partial?.logLevel ?? base.logLevel,
567
+ keyCache: mergedKeyCache.storage === "memory" ? { storage: "memory" } : mergedKeyCache,
568
+ };
569
+ }
570
+ //# sourceMappingURL=config-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-resolution.js","sourceRoot":"","sources":["../src/config-resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { HookCategory, HookDispatcher, LionDenPlugin } from "./types.js";
2
+ /**
3
+ * The hook dispatcher manages all hook registrations and executions.
4
+ * Hook handlers are lazy-loaded by category on first invocation.
5
+ */
6
+ export declare class HookDispatcherImpl implements HookDispatcher {
7
+ /**
8
+ * category -> plugin ID -> resolved handlers (or a factory for lazy loading)
9
+ */
10
+ private readonly registry;
11
+ /** Track which categories have been fully resolved */
12
+ private readonly resolved;
13
+ /**
14
+ * Track in-flight category resolution so concurrent dispatches share work.
15
+ * A factory must not dispatch its own category while resolving — that would
16
+ * await the very promise it is inside and deadlock.
17
+ */
18
+ private readonly resolving;
19
+ /**
20
+ * Register all hook handlers from a list of plugins (already in load order).
21
+ */
22
+ registerPlugins(plugins: readonly LionDenPlugin[]): void;
23
+ /**
24
+ * Ensure all handlers for a category are resolved (lazy factories called).
25
+ */
26
+ private resolveCategory;
27
+ /**
28
+ * Get all resolved handler functions for a specific hook point,
29
+ * in plugin dependency order.
30
+ */
31
+ private getHandlers;
32
+ /**
33
+ * Serial dispatch: handlers execute sequentially in plugin order.
34
+ * Each receives the context; return values are ignored.
35
+ */
36
+ serial<TContext>(category: HookCategory, hookName: string, context: TContext): Promise<void>;
37
+ /**
38
+ * Waterfall dispatch: each handler receives the previous handler's return
39
+ * value. The final value is returned.
40
+ */
41
+ waterfall<TValue>(category: HookCategory, hookName: string, initialValue: TValue, ...extraArgs: unknown[]): Promise<TValue>;
42
+ /**
43
+ * Collect dispatch: handlers execute sequentially in plugin order and each
44
+ * handler's return value is gathered into the result array (in the same
45
+ * order). Extra args are forwarded to every handler after the context.
46
+ * Used by the config lifecycle to aggregate validation errors and partial
47
+ * config resolutions.
48
+ */
49
+ collect<TResult>(category: HookCategory, hookName: string, context: unknown, ...extraArgs: unknown[]): Promise<TResult[]>;
50
+ }
51
+ //# sourceMappingURL=hook-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-system.d.ts","sourceRoot":"","sources":["../src/hook-system.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAkB,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9F;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAOrB;IAEJ,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IAEpE;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI;IAkCxD;;OAEG;YACW,eAAe;IAmC7B;;;OAGG;YACW,WAAW;IAkBzB;;;OAGG;IACG,MAAM,CAAC,QAAQ,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAOhB;;;OAGG;IACG,SAAS,CAAC,MAAM,EACpB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,GAAG,SAAS,EAAE,OAAO,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EACnB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,GAAG,SAAS,EAAE,OAAO,EAAE,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;CAQtB"}