@ontrails/core 1.0.0-beta.13 → 1.0.0-beta.15
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/.turbo/turbo-lint.log +1 -1
- package/CHANGELOG.md +17 -0
- package/README.md +19 -14
- package/dist/branded.d.ts +1 -1
- package/dist/branded.d.ts.map +1 -1
- package/dist/branded.js +1 -1
- package/dist/branded.js.map +1 -1
- package/dist/context.d.ts +13 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +19 -3
- package/dist/context.js.map +1 -1
- package/dist/contour.d.ts +81 -0
- package/dist/contour.d.ts.map +1 -0
- package/dist/contour.js +176 -0
- package/dist/contour.js.map +1 -0
- package/dist/cross-schema.d.ts +18 -0
- package/dist/cross-schema.d.ts.map +1 -0
- package/dist/cross-schema.js +29 -0
- package/dist/cross-schema.js.map +1 -0
- package/dist/derive.d.ts +6 -0
- package/dist/derive.d.ts.map +1 -1
- package/dist/derive.js +29 -5
- package/dist/derive.js.map +1 -1
- package/dist/draft.d.ts +28 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +157 -0
- package/dist/draft.js.map +1 -0
- package/dist/errors.d.ts +62 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +44 -1
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +26 -9
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +441 -20
- package/dist/execute.js.map +1 -1
- package/dist/fire.d.ts +43 -0
- package/dist/fire.d.ts.map +1 -0
- package/dist/fire.js +185 -0
- package/dist/fire.js.map +1 -0
- package/dist/index.d.ts +33 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -12
- package/dist/index.js.map +1 -1
- package/dist/internal/cross-batch.d.ts +44 -0
- package/dist/internal/cross-batch.d.ts.map +1 -0
- package/dist/internal/cross-batch.js +58 -0
- package/dist/internal/cross-batch.js.map +1 -0
- package/dist/internal/fork-ctx.d.ts +41 -0
- package/dist/internal/fork-ctx.d.ts.map +1 -0
- package/dist/internal/fork-ctx.js +47 -0
- package/dist/internal/fork-ctx.js.map +1 -0
- package/dist/internal/signal-ref.d.ts +15 -0
- package/dist/internal/signal-ref.d.ts.map +1 -0
- package/dist/internal/signal-ref.js +41 -0
- package/dist/internal/signal-ref.js.map +1 -0
- package/dist/internal/topo-saves.d.ts +53 -0
- package/dist/internal/topo-saves.d.ts.map +1 -0
- package/dist/internal/topo-saves.js +449 -0
- package/dist/internal/topo-saves.js.map +1 -0
- package/dist/internal/topo-snapshots.d.ts +57 -0
- package/dist/internal/topo-snapshots.d.ts.map +1 -0
- package/dist/internal/topo-snapshots.js +372 -0
- package/dist/internal/topo-snapshots.js.map +1 -0
- package/dist/internal/topo-store-read.d.ts +70 -0
- package/dist/internal/topo-store-read.d.ts.map +1 -0
- package/dist/internal/topo-store-read.js +221 -0
- package/dist/internal/topo-store-read.js.map +1 -0
- package/dist/internal/topo-store.d.ts +26 -0
- package/dist/internal/topo-store.d.ts.map +1 -0
- package/dist/internal/topo-store.js +621 -0
- package/dist/internal/topo-store.js.map +1 -0
- package/dist/internal/tracing.d.ts +98 -0
- package/dist/internal/tracing.d.ts.map +1 -0
- package/dist/internal/tracing.js +102 -0
- package/dist/internal/tracing.js.map +1 -0
- package/dist/internal/trails-db.d.ts +16 -0
- package/dist/internal/trails-db.d.ts.map +1 -0
- package/dist/internal/trails-db.js +118 -0
- package/dist/internal/trails-db.js.map +1 -0
- package/dist/internal/zod-wrappers.d.ts +40 -0
- package/dist/internal/zod-wrappers.d.ts.map +1 -0
- package/dist/internal/zod-wrappers.js +59 -0
- package/dist/internal/zod-wrappers.js.map +1 -0
- package/dist/layer.d.ts +22 -5
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +20 -3
- package/dist/layer.js.map +1 -1
- package/dist/path-security.d.ts +1 -1
- package/dist/path-security.d.ts.map +1 -1
- package/dist/path-security.js +1 -1
- package/dist/path-security.js.map +1 -1
- package/dist/resilience.d.ts +1 -1
- package/dist/resilience.d.ts.map +1 -1
- package/dist/resilience.js +3 -3
- package/dist/resilience.js.map +1 -1
- package/dist/resource-config.d.ts +22 -0
- package/dist/resource-config.d.ts.map +1 -0
- package/dist/resource-config.js +210 -0
- package/dist/resource-config.js.map +1 -0
- package/dist/resource.d.ts +74 -0
- package/dist/resource.d.ts.map +1 -0
- package/dist/resource.js +61 -0
- package/dist/resource.js.map +1 -0
- package/dist/run.d.ts +4 -3
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +5 -4
- package/dist/run.js.map +1 -1
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +2 -1
- package/dist/serialization.js.map +1 -1
- package/dist/store/accessor-protocol.d.ts +51 -0
- package/dist/store/accessor-protocol.d.ts.map +1 -0
- package/dist/store/accessor-protocol.js +2 -0
- package/dist/store/accessor-protocol.js.map +1 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +2 -0
- package/dist/store/index.js.map +1 -0
- package/dist/surface-filter.d.ts +13 -0
- package/dist/surface-filter.d.ts.map +1 -0
- package/dist/surface-filter.js +76 -0
- package/dist/surface-filter.js.map +1 -0
- package/dist/topo-store.d.ts +62 -0
- package/dist/topo-store.d.ts.map +1 -0
- package/dist/topo-store.js +319 -0
- package/dist/topo-store.js.map +1 -0
- package/dist/topo.d.ts +23 -9
- package/dist/topo.d.ts.map +1 -1
- package/dist/topo.js +175 -46
- package/dist/topo.js.map +1 -1
- package/dist/trail.d.ts +86 -19
- package/dist/trail.d.ts.map +1 -1
- package/dist/trail.js +59 -4
- package/dist/trail.js.map +1 -1
- package/dist/trails/derive-trail.d.ts +66 -0
- package/dist/trails/derive-trail.d.ts.map +1 -0
- package/dist/trails/derive-trail.js +378 -0
- package/dist/trails/derive-trail.js.map +1 -0
- package/dist/trails/index.d.ts +5 -0
- package/dist/trails/index.d.ts.map +1 -0
- package/dist/trails/index.js +3 -0
- package/dist/trails/index.js.map +1 -0
- package/dist/trails/ingest.d.ts +24 -0
- package/dist/trails/ingest.d.ts.map +1 -0
- package/dist/trails/ingest.js +63 -0
- package/dist/trails/ingest.js.map +1 -0
- package/dist/transport-error-map.d.ts +106 -0
- package/dist/transport-error-map.d.ts.map +1 -0
- package/dist/transport-error-map.js +24 -0
- package/dist/transport-error-map.js.map +1 -0
- package/dist/type-checks.test-d.d.ts +71 -0
- package/dist/type-checks.test-d.d.ts.map +1 -0
- package/dist/type-checks.test-d.js +12 -0
- package/dist/type-checks.test-d.js.map +1 -0
- package/dist/type-utils.d.ts +11 -2
- package/dist/type-utils.d.ts.map +1 -1
- package/dist/type-utils.js.map +1 -1
- package/dist/types.d.ts +113 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validate-established-topo.d.ts +76 -0
- package/dist/validate-established-topo.d.ts.map +1 -0
- package/dist/validate-established-topo.js +43 -0
- package/dist/validate-established-topo.js.map +1 -0
- package/dist/validate-topo.d.ts.map +1 -1
- package/dist/validate-topo.js +27 -8
- package/dist/validate-topo.js.map +1 -1
- package/dist/workspace.d.ts +1 -1
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +1 -1
- package/dist/workspace.js.map +1 -1
- package/package.json +10 -1
- package/src/__tests__/branded.test.ts +5 -5
- package/src/__tests__/context.test.ts +3 -3
- package/src/__tests__/contour.test.ts +263 -0
- package/src/__tests__/derive-trail.test.ts +668 -0
- package/src/__tests__/derive.test.ts +58 -1
- package/src/__tests__/errors.test.ts +118 -0
- package/src/__tests__/execute.test.ts +1179 -141
- package/src/__tests__/fire.test.ts +1056 -0
- package/src/__tests__/fork-ctx.test.ts +83 -0
- package/src/__tests__/ingest.test.ts +191 -0
- package/src/__tests__/{gate.test.ts → layer.test.ts} +21 -21
- package/src/__tests__/path-security.test.ts +7 -7
- package/src/__tests__/resilience.test.ts +8 -8
- package/src/__tests__/resource.test.ts +204 -0
- package/src/__tests__/run.test.ts +13 -13
- package/src/__tests__/service-config.test.ts +28 -32
- package/src/__tests__/surface-filter.test.ts +196 -0
- package/src/__tests__/topo-store-read.test.ts +256 -0
- package/src/__tests__/topo-store.test.ts +869 -0
- package/src/__tests__/topo.test.ts +350 -54
- package/src/__tests__/trail.test.ts +189 -24
- package/src/__tests__/trails-db.test.ts +198 -0
- package/src/__tests__/transport-error-map.test.ts +82 -0
- package/src/__tests__/type-utils.test.ts +29 -1
- package/src/__tests__/validate-topo.test.ts +305 -16
- package/src/__tests__/workspace.test.ts +6 -6
- package/src/__tests__/zod-wrappers.test.ts +62 -0
- package/src/branded.ts +1 -1
- package/src/context.ts +24 -4
- package/src/contour.ts +344 -0
- package/src/cross-schema.ts +36 -0
- package/src/derive.ts +39 -8
- package/src/draft.ts +338 -0
- package/src/errors.ts +62 -18
- package/src/execute.ts +840 -29
- package/src/fire.ts +295 -0
- package/src/index.ts +142 -26
- package/src/internal/cross-batch.ts +77 -0
- package/src/internal/fork-ctx.ts +69 -0
- package/src/internal/signal-ref.ts +87 -0
- package/src/internal/topo-snapshots.ts +517 -0
- package/src/internal/topo-store-read.ts +481 -0
- package/src/internal/topo-store.ts +1192 -0
- package/src/internal/tracing.ts +187 -0
- package/src/internal/trails-db.ts +187 -0
- package/src/internal/zod-wrappers.ts +78 -0
- package/src/layer.ts +50 -0
- package/src/path-security.ts +1 -1
- package/src/resilience.ts +3 -3
- package/src/{provision-config.ts → resource-config.ts} +109 -123
- package/src/resource.ts +155 -0
- package/src/run.ts +5 -4
- package/src/serialization.ts +2 -0
- package/src/store/accessor-protocol.ts +56 -0
- package/src/store/index.ts +4 -0
- package/src/surface-filter.ts +182 -0
- package/src/topo-store.ts +510 -0
- package/src/topo.ts +328 -57
- package/src/trail.ts +199 -31
- package/src/trails/derive-trail.ts +842 -0
- package/src/trails/index.ts +9 -0
- package/src/trails/ingest.ts +146 -0
- package/src/transport-error-map.ts +56 -0
- package/src/type-checks.test-d.ts +106 -0
- package/src/type-utils.ts +17 -2
- package/src/types.ts +148 -11
- package/src/validate-established-topo.ts +63 -0
- package/src/validate-topo.ts +37 -9
- package/src/workspace.ts +1 -1
- package/tsconfig.tests.json +10 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/adapters.d.ts +0 -39
- package/dist/adapters.d.ts.map +0 -1
- package/dist/adapters.js +0 -2
- package/dist/adapters.js.map +0 -1
- package/dist/dispatch.d.ts +0 -27
- package/dist/dispatch.d.ts.map +0 -1
- package/dist/dispatch.js +0 -34
- package/dist/dispatch.js.map +0 -1
- package/dist/event.d.ts +0 -8
- package/dist/event.d.ts.map +0 -1
- package/dist/event.js +0 -7
- package/dist/event.js.map +0 -1
- package/dist/gate.d.ts +0 -17
- package/dist/gate.d.ts.map +0 -1
- package/dist/gate.js +0 -21
- package/dist/gate.js.map +0 -1
- package/dist/health.d.ts +0 -18
- package/dist/health.d.ts.map +0 -1
- package/dist/health.js +0 -5
- package/dist/health.js.map +0 -1
- package/dist/job.d.ts +0 -24
- package/dist/job.d.ts.map +0 -1
- package/dist/job.js +0 -17
- package/dist/job.js.map +0 -1
- package/dist/provision-config.d.ts +0 -22
- package/dist/provision-config.d.ts.map +0 -1
- package/dist/provision-config.js +0 -210
- package/dist/provision-config.js.map +0 -1
- package/dist/provision.d.ts +0 -71
- package/dist/provision.d.ts.map +0 -1
- package/dist/provision.js +0 -56
- package/dist/provision.js.map +0 -1
- package/dist/service-config.d.ts +0 -22
- package/dist/service-config.d.ts.map +0 -1
- package/dist/service-config.js +0 -210
- package/dist/service-config.js.map +0 -1
- package/dist/service.d.ts +0 -71
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -56
- package/dist/service.js.map +0 -1
- package/src/__tests__/service.test.ts +0 -197
- package/src/event.ts +0 -15
- package/src/gate.ts +0 -44
- package/src/provision.ts +0 -148
package/dist/resilience.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export interface RetryOptions {
|
|
|
22
22
|
/** Default retry predicate using the error taxonomy. */
|
|
23
23
|
export declare const shouldRetry: (error: Error) => boolean;
|
|
24
24
|
/** Compute exponential backoff delay with full jitter. */
|
|
25
|
-
export declare const
|
|
25
|
+
export declare const deriveBackoffDelay: (attempt: number, options?: Pick<RetryOptions, "baseDelay" | "maxDelay" | "backoffFactor">) => number;
|
|
26
26
|
export declare const retry: <T>(fn: () => Promise<Result<T, Error>>, options?: RetryOptions) => Promise<Result<T, Error>>;
|
|
27
27
|
/**
|
|
28
28
|
* Run an async Result-returning function with a timeout.
|
package/dist/resilience.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/D,mCAAmC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;AAgCD,wDAAwD;AACxD,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,KAAG,OAA6B,CAAC;AAMzE,0DAA0D;AAC1D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/D,mCAAmC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;AAgCD,wDAAwD;AACxD,eAAO,MAAM,WAAW,GAAI,OAAO,KAAK,KAAG,OAA6B,CAAC;AAMzE,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,UAAU,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,UAAU,GAAG,eAAe,CAAC,KACvE,MAQF,CAAC;AA8CF,eAAO,MAAM,KAAK,GAAU,CAAC,EAC3B,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EACnC,UAAU,YAAY,KACrB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAsB1B,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,IAAI,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EACnC,IAAI,MAAM,EACV,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAoE1B,CAAC"}
|
package/dist/resilience.js
CHANGED
|
@@ -36,10 +36,10 @@ new Promise((resolve) => {
|
|
|
36
36
|
/** Default retry predicate using the error taxonomy. */
|
|
37
37
|
export const shouldRetry = (error) => isRetryable(error);
|
|
38
38
|
// ---------------------------------------------------------------------------
|
|
39
|
-
//
|
|
39
|
+
// deriveBackoffDelay
|
|
40
40
|
// ---------------------------------------------------------------------------
|
|
41
41
|
/** Compute exponential backoff delay with full jitter. */
|
|
42
|
-
export const
|
|
42
|
+
export const deriveBackoffDelay = (attempt, options) => {
|
|
43
43
|
const base = options?.baseDelay ?? 1000;
|
|
44
44
|
const max = options?.maxDelay ?? 30_000;
|
|
45
45
|
const factor = options?.backoffFactor ?? 2;
|
|
@@ -68,7 +68,7 @@ const tryAttempt = async (fn, attempt, maxAttempts, retryPredicate, options) =>
|
|
|
68
68
|
if (isLast || !retryPredicate(result.error)) {
|
|
69
69
|
return { done: true, result };
|
|
70
70
|
}
|
|
71
|
-
const delay =
|
|
71
|
+
const delay = deriveBackoffDelay(attempt, options);
|
|
72
72
|
if (delay > 0) {
|
|
73
73
|
await sleep(delay, options?.signal);
|
|
74
74
|
}
|
package/dist/resilience.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilience.js","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAqBrC,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,MAAoB,EAAiB,EAAE;AAChE,8FAA8F;AAC9F,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;IACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,wDAAwD;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAEzE,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"resilience.js","sourceRoot":"","sources":["../src/resilience.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource resolution pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from execute.ts to keep both modules under the 400 LOC ceiling.
|
|
5
|
+
* Handles config validation, singleton caching, concurrent-creation dedup,
|
|
6
|
+
* and the full resolve-or-create flow for declared resources.
|
|
7
|
+
*/
|
|
8
|
+
import type { ResourceOverrideMap } from './resource.js';
|
|
9
|
+
import type { AnyTrail } from './trail.js';
|
|
10
|
+
import type { TrailContext } from './types.js';
|
|
11
|
+
import { Result } from './result.js';
|
|
12
|
+
type ConfigValues = Readonly<Record<string, Record<string, unknown>>>;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve all declared resources for a trail.
|
|
15
|
+
*
|
|
16
|
+
* Validates per-resource config, checks overrides and caches, and creates
|
|
17
|
+
* new instances as needed. Returns an enriched context with all resource
|
|
18
|
+
* instances injected into extensions.
|
|
19
|
+
*/
|
|
20
|
+
export declare const createResources: (trail: AnyTrail, ctx: TrailContext, overrides?: ResourceOverrideMap, configValues?: ConfigValues) => Promise<Result<TrailContext, Error>>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=resource-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-config.d.ts","sourceRoot":"","sources":["../src/resource-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC,KAAK,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AA4StE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,QAAQ,EACf,KAAK,YAAY,EACjB,YAAY,mBAAmB,EAC/B,eAAe,YAAY,KAC1B,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAsBrC,CAAC"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource resolution pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from execute.ts to keep both modules under the 400 LOC ceiling.
|
|
5
|
+
* Handles config validation, singleton caching, concurrent-creation dedup,
|
|
6
|
+
* and the full resolve-or-create flow for declared resources.
|
|
7
|
+
*/
|
|
8
|
+
import { InternalError, ValidationError } from './errors.js';
|
|
9
|
+
import { Result } from './result.js';
|
|
10
|
+
import { createResourceLookup } from './resource.js';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Singleton caches
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
const singletonResources = new WeakMap();
|
|
15
|
+
/** In-flight resource creation promises, keyed by resource x context. */
|
|
16
|
+
const pendingCreations = new WeakMap();
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Context helpers
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
const toResourceContext = (ctx, config) => ({
|
|
21
|
+
config,
|
|
22
|
+
cwd: ctx.cwd,
|
|
23
|
+
env: ctx.env,
|
|
24
|
+
workspaceRoot: ctx.workspaceRoot,
|
|
25
|
+
});
|
|
26
|
+
const toResourceContextKey = (ctx) => JSON.stringify({
|
|
27
|
+
config: ctx.config,
|
|
28
|
+
cwd: ctx.cwd,
|
|
29
|
+
env: Object.entries(ctx.env ?? {}).toSorted(([left], [right]) => left.localeCompare(right)),
|
|
30
|
+
workspaceRoot: ctx.workspaceRoot,
|
|
31
|
+
});
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Config validation
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
/** Validate and resolve a resource's config from the provided configValues map. */
|
|
36
|
+
const resolveResourceConfig = (declaredResource, configValues) => {
|
|
37
|
+
if (declaredResource.config === undefined) {
|
|
38
|
+
return Result.ok();
|
|
39
|
+
}
|
|
40
|
+
const raw = configValues?.[declaredResource.id];
|
|
41
|
+
if (raw === undefined) {
|
|
42
|
+
return Result.err(new ValidationError(`Resource "${declaredResource.id}" declares a config schema but no config was provided`));
|
|
43
|
+
}
|
|
44
|
+
const parsed = declaredResource.config.safeParse(raw);
|
|
45
|
+
if (!parsed.success) {
|
|
46
|
+
return Result.err(new ValidationError(`Resource "${declaredResource.id}" config validation failed: ${parsed.error.message}`));
|
|
47
|
+
}
|
|
48
|
+
return Result.ok(parsed.data);
|
|
49
|
+
};
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
// Override / cache lookups
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
const hasOwnResourceOverride = (overrides, id) => overrides !== undefined && Object.hasOwn(overrides, id);
|
|
54
|
+
const getCachedSingletonResource = (declaredResource, resourceContext) => {
|
|
55
|
+
const scopedCache = singletonResources.get(declaredResource);
|
|
56
|
+
if (scopedCache === undefined) {
|
|
57
|
+
return { found: false, value: undefined };
|
|
58
|
+
}
|
|
59
|
+
const key = toResourceContextKey(resourceContext);
|
|
60
|
+
if (!scopedCache.has(key)) {
|
|
61
|
+
return { found: false, value: undefined };
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
found: true,
|
|
65
|
+
value: scopedCache.get(key),
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
const getProvidedResource = (ctx, overrides, declaredResource, resourceContext) => {
|
|
69
|
+
const { id } = declaredResource;
|
|
70
|
+
if (hasOwnResourceOverride(overrides, id)) {
|
|
71
|
+
return Result.ok(overrides[id]);
|
|
72
|
+
}
|
|
73
|
+
if (Object.hasOwn(ctx.extensions ?? {}, id)) {
|
|
74
|
+
return Result.ok(ctx.extensions?.[id]);
|
|
75
|
+
}
|
|
76
|
+
const cached = getCachedSingletonResource(declaredResource, resourceContext);
|
|
77
|
+
if (cached.found) {
|
|
78
|
+
return Result.ok(cached.value);
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
};
|
|
82
|
+
const getOverrideOrExtension = (ctx, overrides, declaredResource) => getProvidedResource(ctx, overrides, declaredResource, toResourceContext(ctx));
|
|
83
|
+
const resolveConfigAwareProvidedResource = (ctx, declaredResource, configValues) => {
|
|
84
|
+
const configResult = resolveResourceConfig(declaredResource, configValues);
|
|
85
|
+
if (configResult.isErr()) {
|
|
86
|
+
return configResult;
|
|
87
|
+
}
|
|
88
|
+
const resourceContext = toResourceContext(ctx, configResult.value);
|
|
89
|
+
const provided = getProvidedResource(ctx, undefined, declaredResource, resourceContext);
|
|
90
|
+
return provided
|
|
91
|
+
? Result.ok({ kind: 'provided', value: provided.unwrap() })
|
|
92
|
+
: Result.ok({ kind: 'context', resourceContext });
|
|
93
|
+
};
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// Instance creation
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
const toInternalResourceError = (id, error) => {
|
|
98
|
+
const cause = error instanceof Error ? error : undefined;
|
|
99
|
+
const message = cause?.message ?? String(error);
|
|
100
|
+
return new InternalError(`Resource "${id}" failed to resolve: ${message}`, {
|
|
101
|
+
...(cause ? { cause } : {}),
|
|
102
|
+
context: { resourceId: id },
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const getSingletonResourceCache = (declaredResource) => {
|
|
106
|
+
const existing = singletonResources.get(declaredResource);
|
|
107
|
+
if (existing !== undefined) {
|
|
108
|
+
return existing;
|
|
109
|
+
}
|
|
110
|
+
const created = new Map();
|
|
111
|
+
singletonResources.set(declaredResource, created);
|
|
112
|
+
return created;
|
|
113
|
+
};
|
|
114
|
+
const doCreateResourceInstance = async (declaredResource, resourceContext) => {
|
|
115
|
+
try {
|
|
116
|
+
const created = await declaredResource.create(resourceContext);
|
|
117
|
+
if (created.isErr()) {
|
|
118
|
+
return Result.err(created.error);
|
|
119
|
+
}
|
|
120
|
+
const instance = created.unwrap();
|
|
121
|
+
getSingletonResourceCache(declaredResource).set(toResourceContextKey(resourceContext), instance);
|
|
122
|
+
return Result.ok(instance);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
return Result.err(toInternalResourceError(declaredResource.id, error));
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const trackPendingCreation = (declaredResource, key, promise) => {
|
|
129
|
+
const pending = pendingCreations.get(declaredResource);
|
|
130
|
+
if (pending) {
|
|
131
|
+
pending.set(key, promise);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
pendingCreations.set(declaredResource, new Map([[key, promise]]));
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Deduplicates concurrent creation of the same resource singleton.
|
|
139
|
+
* If a creation is already in flight for this resource x context key,
|
|
140
|
+
* returns the existing promise instead of spawning a second factory call.
|
|
141
|
+
*/
|
|
142
|
+
const createResourceInstance = async (declaredResource, resourceContext) => {
|
|
143
|
+
const key = toResourceContextKey(resourceContext);
|
|
144
|
+
const inflight = pendingCreations.get(declaredResource)?.get(key);
|
|
145
|
+
if (inflight) {
|
|
146
|
+
return inflight;
|
|
147
|
+
}
|
|
148
|
+
const promise = doCreateResourceInstance(declaredResource, resourceContext);
|
|
149
|
+
trackPendingCreation(declaredResource, key, promise);
|
|
150
|
+
try {
|
|
151
|
+
return await promise;
|
|
152
|
+
}
|
|
153
|
+
finally {
|
|
154
|
+
pendingCreations.get(declaredResource)?.delete(key);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
/** Validate config and resolve a single declared resource. */
|
|
158
|
+
const resolveDeclaredResource = async (declaredResource, ctx, overrides, configValues) => {
|
|
159
|
+
// Check overrides/extensions first — skip config validation entirely when
|
|
160
|
+
// a resource instance is already provided.
|
|
161
|
+
const overrideOrExtension = getOverrideOrExtension(ctx, overrides, declaredResource);
|
|
162
|
+
if (overrideOrExtension !== undefined) {
|
|
163
|
+
return overrideOrExtension;
|
|
164
|
+
}
|
|
165
|
+
// Resolve config before consulting the singleton cache so config-aware
|
|
166
|
+
// resources use the same canonical context for cache reads and writes.
|
|
167
|
+
const configAwareResource = resolveConfigAwareProvidedResource(ctx, declaredResource, configValues);
|
|
168
|
+
if (configAwareResource.isErr()) {
|
|
169
|
+
return configAwareResource;
|
|
170
|
+
}
|
|
171
|
+
// No provided instance — create via factory.
|
|
172
|
+
const resolved = configAwareResource.unwrap();
|
|
173
|
+
if (resolved.kind === 'provided') {
|
|
174
|
+
return Result.ok(resolved.value);
|
|
175
|
+
}
|
|
176
|
+
return await createResourceInstance(declaredResource, resolved.resourceContext);
|
|
177
|
+
};
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
// Full trail resource resolution
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
const withResolvedResources = (ctx, resolvedResources) => {
|
|
182
|
+
const extensions = { ...ctx.extensions, ...resolvedResources };
|
|
183
|
+
const resolvedCtx = { ...ctx, extensions };
|
|
184
|
+
const lookup = createResourceLookup(() => resolvedCtx);
|
|
185
|
+
resolvedCtx.resource = lookup;
|
|
186
|
+
return resolvedCtx;
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Resolve all declared resources for a trail.
|
|
190
|
+
*
|
|
191
|
+
* Validates per-resource config, checks overrides and caches, and creates
|
|
192
|
+
* new instances as needed. Returns an enriched context with all resource
|
|
193
|
+
* instances injected into extensions.
|
|
194
|
+
*/
|
|
195
|
+
export const createResources = async (trail, ctx, overrides, configValues) => {
|
|
196
|
+
const { resources } = trail;
|
|
197
|
+
if (resources.length === 0) {
|
|
198
|
+
return Result.ok(ctx);
|
|
199
|
+
}
|
|
200
|
+
const resolvedResources = {};
|
|
201
|
+
for (const declaredResource of resources) {
|
|
202
|
+
const resolved = await resolveDeclaredResource(declaredResource, ctx, overrides, configValues);
|
|
203
|
+
if (resolved.isErr()) {
|
|
204
|
+
return resolved;
|
|
205
|
+
}
|
|
206
|
+
resolvedResources[declaredResource.id] = resolved.unwrap();
|
|
207
|
+
}
|
|
208
|
+
return Result.ok(withResolvedResources(ctx, resolvedResources));
|
|
209
|
+
};
|
|
210
|
+
//# sourceMappingURL=resource-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-config.js","sourceRoot":"","sources":["../src/resource-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Result } from './result.js';
|
|
2
|
+
import type { AnySignal } from './signal.js';
|
|
3
|
+
import type { ResourceLookup, TrailContext } from './types.js';
|
|
4
|
+
import type { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Stable process-scoped fields available when constructing a resource.
|
|
7
|
+
*
|
|
8
|
+
* Resources are app-level singletons, so they intentionally do not receive
|
|
9
|
+
* the full per-request TrailContext. When a resource declares a `config` schema,
|
|
10
|
+
* the validated config is passed as `svc.config`.
|
|
11
|
+
*/
|
|
12
|
+
export type ResourceContext<C = unknown> = Pick<TrailContext, 'cwd' | 'env' | 'workspaceRoot'> & {
|
|
13
|
+
readonly config: C;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Everything needed to describe a resource before a factory is introduced.
|
|
17
|
+
*
|
|
18
|
+
* When `config` is a Zod schema, the `create` callback receives
|
|
19
|
+
* `ResourceContext<C>` with the validated config value.
|
|
20
|
+
*/
|
|
21
|
+
export interface ResourceSpec<T, C = unknown> {
|
|
22
|
+
/** Create the resource instance from stable process-scoped context. */
|
|
23
|
+
readonly create: (svc: ResourceContext<C>) => Result<T, Error> | Promise<Result<T, Error>>;
|
|
24
|
+
/** Config schema — when present, config is validated and passed to `create`. */
|
|
25
|
+
readonly config?: z.ZodType<C> | undefined;
|
|
26
|
+
/** Optional cleanup performed when the hosting trailhead shuts down. */
|
|
27
|
+
readonly dispose?: ((resource: T) => void | Promise<void>) | undefined;
|
|
28
|
+
/** Optional operational readiness probe for introspection tooling. */
|
|
29
|
+
readonly health?: ((resource: T) => Result<unknown, Error> | Promise<Result<unknown, Error>>) | undefined;
|
|
30
|
+
/** Optional test factory used by higher-level helpers. */
|
|
31
|
+
readonly mock?: (() => T | Promise<T>) | undefined;
|
|
32
|
+
/** Human-readable description. */
|
|
33
|
+
readonly description?: string | undefined;
|
|
34
|
+
/** Arbitrary meta for tooling and filtering. */
|
|
35
|
+
readonly meta?: Readonly<Record<string, unknown>> | undefined;
|
|
36
|
+
/** Signals projected or owned by this resource. */
|
|
37
|
+
readonly signals?: readonly AnySignal[] | undefined;
|
|
38
|
+
}
|
|
39
|
+
/** A typed resource definition. */
|
|
40
|
+
export interface Resource<T> extends ResourceSpec<T> {
|
|
41
|
+
readonly kind: 'resource';
|
|
42
|
+
readonly id: string;
|
|
43
|
+
/** Read the resolved resource instance from a trail context. */
|
|
44
|
+
from(ctx: TrailContext): T;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Existential type for heterogeneous resource collections.
|
|
48
|
+
*
|
|
49
|
+
* `Resource<T>` includes function parameters in `dispose`/`health`, so
|
|
50
|
+
* `unknown` is too narrow for mixed resource arrays. `any` is the correct
|
|
51
|
+
* existential here.
|
|
52
|
+
*/
|
|
53
|
+
export type AnyResource = Resource<any>;
|
|
54
|
+
/** Explicit runtime overrides keyed by resource ID. */
|
|
55
|
+
export type ResourceOverrideMap = Readonly<Record<string, unknown>>;
|
|
56
|
+
/** Create a `ctx.resource(...)` accessor bound to a concrete context snapshot. */
|
|
57
|
+
export declare const createResourceLookup: (getContext: () => Pick<TrailContext, "extensions">) => ResourceLookup;
|
|
58
|
+
/**
|
|
59
|
+
* Create a typed resource definition.
|
|
60
|
+
*
|
|
61
|
+
* The resource object is inert until a later execution branch resolves concrete
|
|
62
|
+
* instances into TrailContext extensions.
|
|
63
|
+
*/
|
|
64
|
+
export declare const resource: <T>(id: string, spec: ResourceSpec<T>) => Resource<T>;
|
|
65
|
+
/** Narrow unknown values to resource definitions during topo discovery. */
|
|
66
|
+
export declare const isResource: (value: unknown) => value is AnyResource;
|
|
67
|
+
/**
|
|
68
|
+
* Return the first duplicate resource ID in a collection, if any.
|
|
69
|
+
*
|
|
70
|
+
* This supports later topo registration without each caller duplicating the
|
|
71
|
+
* same scan logic.
|
|
72
|
+
*/
|
|
73
|
+
export declare const findDuplicateResourceId: (resources: readonly Pick<AnyResource, "id">[]) => string | undefined;
|
|
74
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"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"}
|
package/dist/resource.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { InternalError } from './errors.js';
|
|
2
|
+
const getResourceId = (resourceOrId) => typeof resourceOrId === 'string' ? resourceOrId : resourceOrId.id;
|
|
3
|
+
const getResourceInstance = (ctx, resourceOrId) => {
|
|
4
|
+
const id = getResourceId(resourceOrId);
|
|
5
|
+
return ctx.extensions?.[id];
|
|
6
|
+
};
|
|
7
|
+
const hasResourceInstance = (ctx, resourceOrId) => Object.hasOwn(ctx.extensions ?? {}, getResourceId(resourceOrId));
|
|
8
|
+
/** Create a `ctx.resource(...)` accessor bound to a concrete context snapshot. */
|
|
9
|
+
export const createResourceLookup = (getContext) => ((resourceOrId) => {
|
|
10
|
+
const id = getResourceId(resourceOrId);
|
|
11
|
+
const ctx = getContext();
|
|
12
|
+
if (!hasResourceInstance(ctx, id)) {
|
|
13
|
+
throw new InternalError(`Resource "${id}" not provisioned in context`);
|
|
14
|
+
}
|
|
15
|
+
return getResourceInstance(ctx, id);
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Create a typed resource definition.
|
|
19
|
+
*
|
|
20
|
+
* The resource object is inert until a later execution branch resolves concrete
|
|
21
|
+
* instances into TrailContext extensions.
|
|
22
|
+
*/
|
|
23
|
+
export const resource = (id, spec) => (() => {
|
|
24
|
+
if (id.includes(':')) {
|
|
25
|
+
throw new InternalError(`Resource "${id}" is invalid because resource ids may not contain ":"`);
|
|
26
|
+
}
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
...spec,
|
|
29
|
+
from(ctx) {
|
|
30
|
+
const lookup = ctx.resource ?? createResourceLookup(() => ctx);
|
|
31
|
+
return lookup(this);
|
|
32
|
+
},
|
|
33
|
+
id,
|
|
34
|
+
kind: 'resource',
|
|
35
|
+
});
|
|
36
|
+
})();
|
|
37
|
+
/** Narrow unknown values to resource definitions during topo discovery. */
|
|
38
|
+
export const isResource = (value) => {
|
|
39
|
+
if (typeof value !== 'object' || value === null) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const v = value;
|
|
43
|
+
return v.kind === 'resource' && typeof v.id === 'string';
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Return the first duplicate resource ID in a collection, if any.
|
|
47
|
+
*
|
|
48
|
+
* This supports later topo registration without each caller duplicating the
|
|
49
|
+
* same scan logic.
|
|
50
|
+
*/
|
|
51
|
+
export const findDuplicateResourceId = (resources) => {
|
|
52
|
+
const seen = new Set();
|
|
53
|
+
for (const candidate of resources) {
|
|
54
|
+
if (seen.has(candidate.id)) {
|
|
55
|
+
return candidate.id;
|
|
56
|
+
}
|
|
57
|
+
seen.add(candidate.id);
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../src/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwE5C,MAAM,aAAa,GAAG,CACpB,YAA8C,EACtC,EAAE,CACV,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;AAEpE,MAAM,mBAAmB,GAAG,CAC1B,GAAqC,EACrC,YAA8C,EAC3C,EAAE;IACL,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAM,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,GAAqC,EACrC,YAA8C,EACrC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/E,kFAAkF;AAClF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,UAAkD,EAClC,EAAE,CAClB,CAAC,CAAC,YAA8C,EAAE,EAAE;IAClD,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC,CAAmB,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAU,EAAE,IAAqB,EAAe,EAAE,CAC5E,CAAC,GAAG,EAAE;IACJ,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,aAAa,CACrB,aAAa,EAAE,uDAAuD,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,IAAI;QACP,IAAI,CAAC,GAAiB;YACpB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,IAAI,oBAAoB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,EAAE;QACF,IAAI,EAAE,UAAmB;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;AAEP,2EAA2E;AAC3E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAc,EAAwB,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,KAAyC,CAAC;IACpD,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;AAC3D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA6C,EACzB,EAAE;IACtB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
package/dist/run.d.ts
CHANGED
|
@@ -13,9 +13,10 @@ export type RunOptions = ExecuteTrailOptions;
|
|
|
13
13
|
* Execute a trail by ID from a topo without mounting a trailhead.
|
|
14
14
|
*
|
|
15
15
|
* Resolves the trail from the topo, then runs it through the standard
|
|
16
|
-
* `executeTrail` pipeline
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* `executeTrail` pipeline with `topo` threaded so `ctx.fire()` is bound
|
|
17
|
+
* to the producer's context inside `executeTrail`. Returns
|
|
18
|
+
* `Result.err(NotFoundError)` if the trail ID is not registered. Never
|
|
19
|
+
* throws — unexpected exceptions are returned as `Result.err(InternalError)`.
|
|
19
20
|
*
|
|
20
21
|
* @example
|
|
21
22
|
* ```typescript
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAM7C
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAM7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,GAAG,GACd,MAAM,IAAI,EACV,IAAI,MAAM,EACV,OAAO,OAAO,EACd,UAAU,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAUhC,CAAC"}
|
package/dist/run.js
CHANGED
|
@@ -14,9 +14,10 @@ import { Result } from './result.js';
|
|
|
14
14
|
* Execute a trail by ID from a topo without mounting a trailhead.
|
|
15
15
|
*
|
|
16
16
|
* Resolves the trail from the topo, then runs it through the standard
|
|
17
|
-
* `executeTrail` pipeline
|
|
18
|
-
*
|
|
19
|
-
*
|
|
17
|
+
* `executeTrail` pipeline with `topo` threaded so `ctx.fire()` is bound
|
|
18
|
+
* to the producer's context inside `executeTrail`. Returns
|
|
19
|
+
* `Result.err(NotFoundError)` if the trail ID is not registered. Never
|
|
20
|
+
* throws — unexpected exceptions are returned as `Result.err(InternalError)`.
|
|
20
21
|
*
|
|
21
22
|
* @example
|
|
22
23
|
* ```typescript
|
|
@@ -29,6 +30,6 @@ export const run = (topo, id, input, options) => {
|
|
|
29
30
|
if (trail === undefined) {
|
|
30
31
|
return Promise.resolve(Result.err(new NotFoundError(`Trail "${id}" not found in topo "${topo.name}"`)));
|
|
31
32
|
}
|
|
32
|
-
return executeTrail(trail, input, options);
|
|
33
|
+
return executeTrail(trail, input, { ...options, topo });
|
|
33
34
|
};
|
|
34
35
|
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AASrC,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,IAAU,EACV,EAAU,EACV,KAAc,EACd,OAAoB,EACa,EAAE;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CACpB,MAAM,CAAC,GAAG,CACR,IAAI,aAAa,CAAC,UAAU,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CACpE,CACF,CAAC;IACJ,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,eAAe,EAUf,aAAa,
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,eAAe,EAUf,aAAa,EAKd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAsFD,2DAA2D;AAC3D,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,KAAG,eAmB7C,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,GAAI,MAAM,eAAe,KAAG,WAkBxD,CAAC;AAMF,mEAAmE;AACnE,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,OAAO,EAAE,eAAe,CAWvE,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,EAAE,aAAa,CAwC9B,CAAC"}
|
package/dist/serialization.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Safe JSON parsing/stringifying and error serialization/deserialization
|
|
5
5
|
* for transport across process boundaries.
|
|
6
6
|
*/
|
|
7
|
-
import { ValidationError, AmbiguousError, AssertionError, NotFoundError, AlreadyExistsError, ConflictError, PermissionError, TimeoutError, RateLimitError, NetworkError, InternalError, AuthError, CancelledError, isTrailsError, } from './errors.js';
|
|
7
|
+
import { ValidationError, AmbiguousError, AssertionError, NotFoundError, AlreadyExistsError, ConflictError, PermissionError, TimeoutError, RateLimitError, NetworkError, InternalError, DerivationError, AuthError, CancelledError, isTrailsError, } from './errors.js';
|
|
8
8
|
import { Result } from './result.js';
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// Internal helpers (defined before usage)
|
|
@@ -49,6 +49,7 @@ const errorConstructorsByName = {
|
|
|
49
49
|
AuthError: (msg, opts) => new AuthError(msg, opts),
|
|
50
50
|
CancelledError: (msg, opts) => new CancelledError(msg, opts),
|
|
51
51
|
ConflictError: (msg, opts) => new ConflictError(msg, opts),
|
|
52
|
+
DerivationError: (msg, opts) => new DerivationError(msg, opts),
|
|
52
53
|
InternalError: (msg, opts) => new InternalError(msg, opts),
|
|
53
54
|
NetworkError: (msg, opts) => new NetworkError(msg, opts),
|
|
54
55
|
NotFoundError: (msg, opts) => new NotFoundError(msg, opts),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serialization.js","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural accessor protocol used by `deriveTrail()` to synthesize default
|
|
3
|
+
* blazes for standard CRUD operations without depending on `@ontrails/store`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* This type is intentionally minimal and structural. `@ontrails/store`'s
|
|
7
|
+
* `StoreAccessor` / `StoreTableAccessor` interfaces satisfy this protocol
|
|
8
|
+
* through a compile-time extends check (see `packages/store/src/types.ts`).
|
|
9
|
+
* Keeping the protocol in core avoids a core → store dependency while still
|
|
10
|
+
* allowing the derivation helper to call accessors by convention.
|
|
11
|
+
*
|
|
12
|
+
* Required methods (`get`, `list`, `upsert`, `remove`) match the
|
|
13
|
+
* connector-agnostic write contract every bound store must expose. Optional
|
|
14
|
+
* methods (`insert`, `update`) are declared by tabular connectors that
|
|
15
|
+
* distinguish create-only and patch-only operations from the generalized
|
|
16
|
+
* `upsert` contract.
|
|
17
|
+
*/
|
|
18
|
+
export interface StoreAccessorProtocol<TInput, TEntity, TId, TFilters = unknown> {
|
|
19
|
+
/** Retrieve a single entity by identity. Returns `null` when not found. */
|
|
20
|
+
get(id: TId): Promise<TEntity | null>;
|
|
21
|
+
/** List entities, optionally filtered. Returns `[]` when no rows match. */
|
|
22
|
+
list(filters?: TFilters): Promise<readonly TEntity[]>;
|
|
23
|
+
/** Create-or-replace one entity using the connector-agnostic contract. */
|
|
24
|
+
upsert(input: TInput): Promise<TEntity>;
|
|
25
|
+
/**
|
|
26
|
+
* Remove an entity by identity. Returns `{ deleted: true }` when the row
|
|
27
|
+
* was found and removed, `{ deleted: false }` when no matching row
|
|
28
|
+
* existed (not an error).
|
|
29
|
+
*/
|
|
30
|
+
remove(id: TId): Promise<{
|
|
31
|
+
readonly deleted: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Optional insert — available on tabular connectors that distinguish
|
|
35
|
+
* create from update. When absent, synthesized blazes fall back to
|
|
36
|
+
* `upsert`.
|
|
37
|
+
*/
|
|
38
|
+
insert?(input: TInput): Promise<TEntity>;
|
|
39
|
+
/**
|
|
40
|
+
* Optional patch-by-identity — available on tabular connectors. Returns
|
|
41
|
+
* `null` when no row with the given identity exists. When absent,
|
|
42
|
+
* synthesized update blazes fall back to `get` + merge + `upsert`.
|
|
43
|
+
*/
|
|
44
|
+
update?(id: TId, patch: Partial<TInput>): Promise<TEntity | null>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Record shape returned by a resource's `from(ctx)` call, keyed by accessor
|
|
48
|
+
* name. Used by `deriveTrail()` to resolve an accessor by contour name.
|
|
49
|
+
*/
|
|
50
|
+
export type StoreAccessorRecord = Readonly<Record<string, StoreAccessorProtocol<unknown, unknown, unknown, unknown>>>;
|
|
51
|
+
//# sourceMappingURL=accessor-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessor-protocol.d.ts","sourceRoot":"","sources":["../../src/store/accessor-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB,CACpC,MAAM,EACN,OAAO,EACP,GAAG,EACH,QAAQ,GAAG,OAAO;IAElB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACtC,2EAA2E;IAC3E,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACtD,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACxD;;;;OAIG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC;;;;OAIG;IACH,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACnE;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CACxC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAC1E,CAAC"}
|