@exactjs/core 0.6.4 → 0.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -66,6 +66,8 @@ install localization explicitly with `import '@exactjs/core/localization'`. Comp
66
66
  no such import.
67
67
 
68
68
  Use explicit task policy for placement, scheduling, cancellation, keys, or inspectable identity.
69
+ Task status includes queued and running work, including nonblocking and deferred tasks. Readiness
70
+ policy independently controls whether Suspense waits.
69
71
  Framework integrations use the `runtime/render`, `runtime/registry`, and `framework/component-contracts` subpaths.
70
72
 
71
73
  ## Learn more
@@ -36,7 +36,9 @@ export interface TaskOwner extends AsyncDisposable {
36
36
  }
37
37
  /** Owner-bound observable state for one task definition. */
38
38
  export interface TaskStatus<Result> {
39
+ /** Whether any generation is queued or running, regardless of its readiness policy. */
39
40
  readonly pending: boolean;
41
+ /** Number of unsettled generations, including nonblocking and deferred work. */
40
42
  readonly pendingCount: number;
41
43
  readonly generation: number;
42
44
  readonly result: Result | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\treadonly pending: boolean;\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\t/** Whether any generation is queued or running, regardless of its readiness policy. */\n\treadonly pending: boolean;\n\t/** Number of unsettled generations, including nonblocking and deferred work. */\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
@@ -14,7 +14,6 @@ export type InternalTaskGeneration<Result> = {
14
14
  readonly reject: (error: unknown) => void;
15
15
  readonly parent: TaskFrameRecord | undefined;
16
16
  readonly releaseReservation?: () => void;
17
- readonly foreground: boolean;
18
17
  readonly activation: TaskActivation;
19
18
  /** Effective lane policy; dependency-driven activation always uses latest-wins. */
20
19
  readonly concurrency: 'parallel' | 'latest' | 'queue';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly foreground: boolean;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
1
+ {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
@@ -132,7 +132,6 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
132
132
  reject,
133
133
  parent: ambient,
134
134
  releaseReservation,
135
- foreground,
136
135
  activation,
137
136
  concurrency,
138
137
  readiness,
@@ -151,10 +150,9 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
151
150
  }
152
151
  void promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);
153
152
  lane.active.add(record);
154
- if (foreground) {
155
- state.pendingCount++;
156
- lane.pendingCount++;
157
- }
153
+ // Status describes all unsettled generations; readiness is registered separately above.
154
+ state.pendingCount++;
155
+ lane.pendingCount++;
158
156
  if (concurrency === 'queue') {
159
157
  lane.queue.push(record);
160
158
  pumpLane(definition, owner, state, lane);
@@ -226,10 +224,8 @@ function startGeneration(definition, owner, state, lane, record) {
226
224
  }
227
225
  function finishGeneration(definition, owner, state, lane, record) {
228
226
  lane.active.delete(record);
229
- if (record.foreground)
230
- state.pendingCount = Math.max(0, state.pendingCount - 1);
231
- if (record.foreground)
232
- lane.pendingCount = Math.max(0, lane.pendingCount - 1);
227
+ state.pendingCount = Math.max(0, state.pendingCount - 1);
228
+ lane.pendingCount = Math.max(0, lane.pendingCount - 1);
233
229
  if (record.concurrency === 'queue') {
234
230
  const next = lane.queue.shift();
235
231
  if (next) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/tasks/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tforeground,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\tif (foreground) {\n\t\tstate.pendingCount++;\n\t\tlane.pendingCount++;\n\t}\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tif (record.foreground) state.pendingCount = Math.max(0, state.pendingCount - 1);\n\tif (record.foreground) lane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/tasks/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\t// Status describes all unsettled generations; readiness is registered separately above.\n\tstate.pendingCount++;\n\tlane.pendingCount++;\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tstate.pendingCount = Math.max(0, state.pendingCount - 1);\n\tlane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
@@ -36,7 +36,9 @@ export interface TaskOwner extends AsyncDisposable {
36
36
  }
37
37
  /** Owner-bound observable state for one task definition. */
38
38
  export interface TaskStatus<Result> {
39
+ /** Whether any generation is queued or running, regardless of its readiness policy. */
39
40
  readonly pending: boolean;
41
+ /** Number of unsettled generations, including nonblocking and deferred work. */
40
42
  readonly pendingCount: number;
41
43
  readonly generation: number;
42
44
  readonly result: Result | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,MAAM,cAAc,GACvB,gBAAgB,GAChB,UAAU,GACV,aAAa,GACb,SAAS,GACT,WAAW,CAAC;AAEf,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,GAAG,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACrD,MAAM,IAAI,iBAAiB,CAAC;IAC5B,MAAM,IAAI,iBAAiB,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,MAAM,IAAI,iBAAiB,CAAC;IAC5B,KAAK,IAAI,iBAAiB,CAAC;IAC3B,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,iBAAiB,CAAC;IACpC,SAAS,IAAI,iBAAiB,CAAC;IAC/B,MAAM,IAAI,iBAAiB,CAAC;IAC5B,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,QAAQ,IAAI,iBAAiB,CAAC;IAC9B,WAAW,IAAI,iBAAiB,CAAC;IACjC,QAAQ,IAAI,iBAAiB,CAAC;CAC9B;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAU,SAAQ,eAAe;IACjD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC7B;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAU,CAAC,MAAM;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc,CAAC,MAAM,CAAE,SAAQ,WAAW,CAAC,MAAM,CAAC;IAClE,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAK,EACvC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAC1E,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GACzE,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IACvC,KAAK,CAAC,OAAO,GAAG,KAAK,EACpB,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GACvE,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;IACpC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChD;AAED,wCAAwC;AACxC,MAAM,WAAW,YAAY,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM;IAC3D,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;CACxC;AAED,2FAA2F;AAE3F,MAAM,MAAM,eAAe,CAAC,MAAM,GAAG,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;AAE5E,uDAAuD;AACvD,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,CAChE,SAAQ,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EACjC,UAAU,CAAC,MAAM,CAAC;CAAG;AAEvB,oGAAoG;AACpG,MAAM,WAAW,kBAAkB,CAAC,IAAI,SAAS,OAAO,EAAE;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvD,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAS,OAAO,EAAE,CAAC;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,CAAE,SAAQ,UAAU;IACvF,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\treadonly pending: boolean;\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\t/** Whether any generation is queued or running, regardless of its readiness policy. */\n\treadonly pending: boolean;\n\t/** Number of unsettled generations, including nonblocking and deferred work. */\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
@@ -14,7 +14,6 @@ export type InternalTaskGeneration<Result> = {
14
14
  readonly reject: (error: unknown) => void;
15
15
  readonly parent: TaskFrameRecord | undefined;
16
16
  readonly releaseReservation?: () => void;
17
- readonly foreground: boolean;
18
17
  readonly activation: TaskActivation;
19
18
  /** Effective lane policy; dependency-driven activation always uses latest-wins. */
20
19
  readonly concurrency: 'parallel' | 'latest' | 'queue';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly foreground: boolean;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
1
+ {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
@@ -132,7 +132,6 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
132
132
  reject,
133
133
  parent: ambient,
134
134
  releaseReservation,
135
- foreground,
136
135
  activation,
137
136
  concurrency,
138
137
  readiness,
@@ -151,10 +150,9 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
151
150
  }
152
151
  void promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);
153
152
  lane.active.add(record);
154
- if (foreground) {
155
- state.pendingCount++;
156
- lane.pendingCount++;
157
- }
153
+ // Status describes all unsettled generations; readiness is registered separately above.
154
+ state.pendingCount++;
155
+ lane.pendingCount++;
158
156
  if (concurrency === 'queue') {
159
157
  lane.queue.push(record);
160
158
  pumpLane(definition, owner, state, lane);
@@ -226,10 +224,8 @@ function startGeneration(definition, owner, state, lane, record) {
226
224
  }
227
225
  function finishGeneration(definition, owner, state, lane, record) {
228
226
  lane.active.delete(record);
229
- if (record.foreground)
230
- state.pendingCount = Math.max(0, state.pendingCount - 1);
231
- if (record.foreground)
232
- lane.pendingCount = Math.max(0, lane.pendingCount - 1);
227
+ state.pendingCount = Math.max(0, state.pendingCount - 1);
228
+ lane.pendingCount = Math.max(0, lane.pendingCount - 1);
233
229
  if (record.concurrency === 'queue') {
234
230
  const next = lane.queue.shift();
235
231
  if (next) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/tasks/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,IAAI,EACJ,gCAAgC,EAChC,YAAY,EACZ,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAW9E,OAAO,EACN,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAO3E,MAAM,cAAc,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,UAAU,CACzB,OAAiC,EACjC,cAA6E;IAE7E,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,OAAO,cAAc,KAAK,UAAU;QACvC,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,UAAU,GAA0C;QACzD,CAAC,mBAAmB,CAAC,EAAE,IAAI;QAC3B,OAAO;QACP,cAAc,EAAE,cAAyE;QACzF,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,EAAE,IAAI,OAAO,EAAE;KACrB,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAU,EAAE,EAAE,CACnC,gBAAgB,CACf,UAAU,EACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1D,SAAS,EACT,IAAI,EACJ,SAAS,CACT,CAAwC,CAAC;IAC3C,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC5E,oCAAoC,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,CACzB,MAAmB,EACnB,KAAiC,EACjC,GAAG,IAAU;IAEb,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,QAAQ,CACvB,IAAgC,EAChC,OAAwC;IAExC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAU,EAAE,EAAE,CAChC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAG/D,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACzE,oCAAoC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC9B,IAAY,EACZ,IAAgC;IAEhC,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,UAAU,CACzB,IAA8D,EAC9D,OAAgE;IAEhE,MAAM,UAAU,GAAG,cAAc,CAAC,IAA2C,CAAC,CAAC;IAC/E,OAAO,gBAAgB,CACtB,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EACzD,OAAO,EAAE,GAAG,EACZ,UAAU,CACV,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,uBAAuB,CACtC,IAAgC,EAChC,KAAsB,EACtB,cAAsB,EACtB,UAAyC,EACzC,IAAU;IAEV,OAAO,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,gBAAgB,CACxB,UAAwC,EACxC,aAA0C,EAC1C,cAAyD,EACzD,IAAU,EACV,aAA6B,SAAS,EACtC,cAAuB;IAEvB,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB;QACvD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAiB,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,YAAoB,CAAC;IAC1C,MAAM,gBAAgB,GAAG,UAAU,KAAK,SAAS,CAAC;IAClD,2FAA2F;IAC3F,2FAA2F;IAC3F,4FAA4F;IAC5F,MAAM,OAAO,GAAG,gBAAgB;QAC/B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,cAAc,IAAI,sBAAsB,EAAE,IAAI,4BAA4B,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GACV,aAAa;QACb,OAAO,EAAE,KAAK;QACd,sBAAsB,EAAE;QACxB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK;YACxB,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3C,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,gBAAgB;QAC3B,CAAC,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC;QACpC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,cAAc,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;IACjG,IAAI,WAAW,KAAK,QAAQ;QAAE,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,QAAQ,IAAI,QAAQ,CAAC;IAC9E,MAAM,SAAS,GACd,UAAU,CAAC,OAAO,CAAC,SAAS;QAC5B,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,SAAS,KAAK,UAAU,IAAI,QAAQ,KAAK,UAAU,CAAC;IACvE,IAAI,kBAA4C,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACjD,kBAAkB,GAAG,OAAO,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAiC,CAAC;IACtC,IAAI,MAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACpD,OAAO,GAAG,MAAM,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC;IACf,CAAC,CAAC,CAAC;IACH,yEAAyE;IACzE,8EAA8E;IAC9E,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,MAAM,GAAmC;QAC9C,UAAU;QACV,UAAU;QACV,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,EAAE;QACZ,OAAO;QACP,OAAO;QACP,MAAM;QACN,MAAM,EAAE,OAAO;QACf,kBAAkB;QAClB,UAAU;QACV,UAAU;QACV,WAAW;QACX,SAAS;QACT,QAAQ;QACR,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,KAAK;KAChB,CAAC;IACF,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,UAAU,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC3C,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC,iBAAiB,CACrD,UAAU,EACV,OAAO,EACP,GAAG,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,EAC7C,GAAG,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,MAAM,CAAC,CAC7C,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,EAAE,EAAE;YACzF,IAAI,EAAE,IAAI;SACV,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QAChB,KAAK,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IACD,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACP,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM;YAAE,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACvB,UAAwC,EACxC,KAAsB,EACtB,KAAqC,EACrC,IAA8B,EAC9B,MAAsC;IAEtC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,OAAO,CAAS,CAAC,gBAAgB,EAAE,eAAe,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,GAAG,EAAE;YAC1B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9F,MAAM,cAAc,GAAG,8BAA8B,CACpD,KAAK,EACL,MAAM,EACN,UAAU,CAAC,OAAO,EAClB,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,cAAc,CACzB,CAAC;YACF,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC9B,KAAK,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC7D,CAAC,CAAC;QACF,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;QACrC,YAAY,CAAC,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,KAAK,SAAS,CAAC,IAAI,CAClB,CAAC,KAAK,EAAE,EAAE;QACT,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,qBAAqB;YAAE,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAC3C,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,CAAC,KAAK;YAAE,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACtF,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;QACT,gCAAgC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAC3C,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC;gBAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAC/D,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,CAAC,KAAK,YAAY,gBAAgB,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAC9D,CAAC;QACD,IAAI,MAAM,CAAC,KAAK;YACf,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE;gBAC3C,OAAO,EAAE,KAAK,YAAY,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;aAClE,CAAC,CAAC;QACJ,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CACD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACxB,UAAwC,EACxC,KAAsB,EACtB,KAAqC,EACrC,IAA8B,EAC9B,MAAsC;IAEtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,MAAM,CAAC,UAAU;QAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,UAAU;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACV,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAChB,UAAwC,EACxC,KAAsB,EACtB,KAAqC,EACrC,IAA8B;IAE9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAChC,IAAI,IAAI;QAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,UAAU,CAClB,UAAwC,EACxC,KAAsB;IAEtB,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,GAAG,eAAe,CACtB;YACC,cAAc,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI,GAAG,EAAE;YAChB,YAAY,EAAE,CAAC;SACf,EACD,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,CAC9B,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAChB,KAAqC,EACrC,GAAY;IAEZ,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,GAAG,eAAe,CACrB;YACC,GAAG;YACH,MAAM,EAAE,IAAI,GAAG,EAAkC;YACjD,KAAK,EAAE,EAAsC;YAC7C,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,SAAS;SAChB,EACD,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CACxC,CAAC;QACF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAS,IAA8B,EAAE,MAAe;IAC1E,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;QACvC,gCAAgC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACF,CAAC;AAED,SAAS,cAAc,CACtB,IAAgC;IAEhC,MAAM,UAAU,GACf,IAGA,CAAC,mBAAmB,CAAC,CAAC;IACvB,IAAI,CAAC,UAAU;QACd,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;IACjG,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC3C,IAAI,KAAK;QAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;IAC7C,IAAI,CAAC,WAAW;QACf,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAC/F,OAAO,WAAW,CAAC;AACpB,CAAC","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tforeground,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\tif (foreground) {\n\t\tstate.pendingCount++;\n\t\tlane.pendingCount++;\n\t}\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tif (record.foreground) state.pendingCount = Math.max(0, state.pendingCount - 1);\n\tif (record.foreground) lane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/tasks/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\t// Status describes all unsettled generations; readiness is registered separately above.\n\tstate.pendingCount++;\n\tlane.pendingCount++;\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tstate.pendingCount = Math.max(0, state.pendingCount - 1);\n\tlane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
@@ -36,7 +36,9 @@ export interface TaskOwner extends AsyncDisposable {
36
36
  }
37
37
  /** Owner-bound observable state for one task definition. */
38
38
  export interface TaskStatus<Result> {
39
+ /** Whether any generation is queued or running, regardless of its readiness policy. */
39
40
  readonly pending: boolean;
41
+ /** Number of unsettled generations, including nonblocking and deferred work. */
40
42
  readonly pendingCount: number;
41
43
  readonly generation: number;
42
44
  readonly result: Result | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/tasks/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/tasks/contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\treadonly pending: boolean;\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/tasks/contracts.ts"],"names":[],"mappings":"","sourcesContent":["/** Describes why a task generation began. */\nexport type TaskActivation =\n\t| 'initialization'\n\t| 'reactive'\n\t| 'interaction'\n\t| 'invoked'\n\t| 'lifecycle';\n\n/** Capabilities scoped to one task frame. */\nexport interface TaskContext {\n\treadonly signal: AbortSignal;\n\treadonly generation: number;\n\treadonly activation: TaskActivation;\n\tpeek<T>(read: () => T): T;\n\toptimistic(work: () => void): void;\n\tcleanup(cleanup: () => void | Promise<void>): void;\n\town<T extends Disposable | AsyncDisposable>(resource: T): T;\n}\n\n/**\n * Declarative task policy accepted only as the default value of a final\n * {@link TaskContext} parameter in compiler-authored source.\n */\nexport interface TaskContextPolicy extends TaskContext {\n\tclient(): TaskContextPolicy;\n\tserver(): TaskContextPolicy;\n\t/** Declares a missable snapshot receiver for browser-initiated server work. */\n\tprogress(): TaskContextPolicy;\n\tparallel(): TaskContextPolicy;\n\tlatest(): TaskContextPolicy;\n\tqueue(): TaskContextPolicy;\n\tkey<T>(value: T): TaskContextPolicy;\n\timmediate(): TaskContextPolicy;\n\tnormal(): TaskContextPolicy;\n\tdeferred(): TaskContextPolicy;\n\tblocking(): TaskContextPolicy;\n\tnonblocking(): TaskContextPolicy;\n\tdetached(): TaskContextPolicy;\n}\n\n/** Durable cancellation and concurrency ownership for task generations. */\nexport interface TaskOwner extends AsyncDisposable {\n\treadonly signal: AbortSignal;\n}\n\n/** Owner-bound observable state for one task definition. */\nexport interface TaskStatus<Result> {\n\t/** Whether any generation is queued or running, regardless of its readiness policy. */\n\treadonly pending: boolean;\n\t/** Number of unsettled generations, including nonblocking and deferred work. */\n\treadonly pendingCount: number;\n\treadonly generation: number;\n\treadonly result: Result | undefined;\n\treadonly error: unknown;\n\tcancel(reason?: unknown): void;\n}\n\n/** A thenable whose result settles only after its attached task subtree. */\nexport interface TaskInvocation<Result> extends PromiseLike<Result> {\n\tthen<TResult1 = Result, TResult2 = never>(\n\t\tonFulfilled?: ((value: Result) => TResult1 | PromiseLike<TResult1>) | null,\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\n\t): TaskInvocation<TResult1 | TResult2>;\n\tcatch<TResult = never>(\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\n\t): TaskInvocation<Result | TResult>;\n\tfinally(onFinally?: (() => void) | null): TaskInvocation<Result>;\n\treadonly [Symbol.toStringTag]: 'TaskInvocation';\n}\n\n/** Callable runtime task definition. */\nexport interface TaskFunction<Args extends unknown[], Result> {\n\t(...args: Args): TaskInvocation<Result>;\n}\n\n/** Existential task function retained where authored argument tuples are not inspected. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Runtime task registries preserve arbitrary authored argument tuples through callable identity.\nexport type AnyTaskFunction<Result = unknown> = TaskFunction<any[], Result>;\n\n/** Owner-bound task callable with aggregate status. */\nexport interface BoundTaskFunction<Args extends unknown[], Result>\n\textends TaskFunction<Args, Result>,\n\t\tTaskStatus<Result> {}\n\n/** Runtime policy required when an integration defines a task outside compiled component source. */\nexport interface RuntimeTaskOptions<Args extends unknown[]> {\n\treadonly label?: string;\n\treadonly placement?: 'current' | 'client' | 'server';\n\treadonly priority?: 'immediate' | 'normal' | 'deferred';\n\treadonly concurrency?: 'parallel' | 'latest' | 'queue';\n\treadonly concurrencyKey?: (...args: Args) => unknown;\n\t/**\n\t * Compiler-generated resolver for defaulted task parameters. It evaluates\n\t * omitted defaults once per generation without subscribing the task to\n\t * reactive reads performed while resolving them.\n\t */\n\treadonly captureArguments?: (args: unknown[]) => readonly unknown[];\n\treadonly readiness?: 'blocking' | 'nonblocking';\n\treadonly detached?: boolean;\n\treadonly owner?: TaskOwner;\n}\n\n/** Reserved callback that must run or be explicitly released exactly once. */\nexport interface ReservedTaskCallback<Args extends unknown[], Result> extends Disposable {\n\t(...args: Args): Result;\n\tcancel(reason?: unknown): void;\n}\n"]}
@@ -14,7 +14,6 @@ export type InternalTaskGeneration<Result> = {
14
14
  readonly reject: (error: unknown) => void;
15
15
  readonly parent: TaskFrameRecord | undefined;
16
16
  readonly releaseReservation?: () => void;
17
- readonly foreground: boolean;
18
17
  readonly activation: TaskActivation;
19
18
  /** Effective lane policy; dependency-driven activation always uses latest-wins. */
20
19
  readonly concurrency: 'parallel' | 'latest' | 'queue';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"runtime-types.d.ts","sourceRoot":"","sources":["../../src/tasks/runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC;IAC/C,qBAAqB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;KAClC,CAAC;CACF,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI;IACtC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,sBAAsB,CAAC,MAAM,IAAI;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly foreground: boolean;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
1
+ {"version":3,"file":"runtime-types.js","sourceRoot":"","sources":["../../src/tasks/runtime-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReactiveMutationJournal } from '@exactjs/reactive/framework/runtime';\n\nimport type { AnyComponentInstance } from '../component/contracts.js';\nimport type { ComponentTraceSpan } from '../component/performance-trace.js';\nimport type { TaskActivation } from './contracts.js';\nimport type { TaskFrameRecord } from './frame-runtime.js';\n\n/** Mutable execution record for one owner- and lane-scoped task generation. */\nexport type InternalTaskGeneration<Result> = {\n\treadonly generation: number;\n\treadonly controller: AbortController;\n\treadonly args: readonly unknown[];\n\treadonly journals: ReactiveMutationJournal[];\n\treadonly promise: Promise<Result>;\n\treadonly resolve: (value: Result) => void;\n\treadonly reject: (error: unknown) => void;\n\treadonly parent: TaskFrameRecord | undefined;\n\treadonly releaseReservation?: () => void;\n\treadonly activation: TaskActivation;\n\t/** Effective lane policy; dependency-driven activation always uses latest-wins. */\n\treadonly concurrency: 'parallel' | 'latest' | 'queue';\n\treadonly readiness: 'blocking' | 'nonblocking';\n\treadinessRegistration?: { cancel(): void };\n\tpriority: 'immediate' | 'normal' | 'deferred';\n\tscheduledWork?: () => void;\n\tobserved: boolean;\n\tstarted: boolean;\n\texecuting: boolean;\n\ttrace?: {\n\t\treadonly owner: AnyComponentInstance;\n\t\treadonly span: ComponentTraceSpan;\n\t};\n};\n\n/** Concurrency lane state shared by generations with the same task key. */\nexport type InternalTaskLane<Result> = {\n\treadonly key: unknown;\n\treadonly active: Set<InternalTaskGeneration<Result>>;\n\treadonly queue: InternalTaskGeneration<Result>[];\n\tpendingCount: number;\n\tgeneration: number;\n\tresult: Result | undefined;\n\terror: unknown;\n};\n\n/** Aggregate status and keyed lanes for one task definition under one owner. */\nexport type InternalTaskOwnerState<Result> = {\n\tnextGeneration: number;\n\tgeneration: number;\n\tpendingCount: number;\n\tresult: Result | undefined;\n\terror: unknown;\n\treadonly lanes: Map<unknown, InternalTaskLane<Result>>;\n\tlanesVersion: number;\n};\n"]}
@@ -132,7 +132,6 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
132
132
  reject,
133
133
  parent: ambient,
134
134
  releaseReservation,
135
- foreground,
136
135
  activation,
137
136
  concurrency,
138
137
  readiness,
@@ -151,10 +150,9 @@ function invokeDefinition(definition, explicitOwner, explicitParent, args, activ
151
150
  }
152
151
  void promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);
153
152
  lane.active.add(record);
154
- if (foreground) {
155
- state.pendingCount++;
156
- lane.pendingCount++;
157
- }
153
+ // Status describes all unsettled generations; readiness is registered separately above.
154
+ state.pendingCount++;
155
+ lane.pendingCount++;
158
156
  if (concurrency === 'queue') {
159
157
  lane.queue.push(record);
160
158
  pumpLane(definition, owner, state, lane);
@@ -226,10 +224,8 @@ function startGeneration(definition, owner, state, lane, record) {
226
224
  }
227
225
  function finishGeneration(definition, owner, state, lane, record) {
228
226
  lane.active.delete(record);
229
- if (record.foreground)
230
- state.pendingCount = Math.max(0, state.pendingCount - 1);
231
- if (record.foreground)
232
- lane.pendingCount = Math.max(0, lane.pendingCount - 1);
227
+ state.pendingCount = Math.max(0, state.pendingCount - 1);
228
+ lane.pendingCount = Math.max(0, lane.pendingCount - 1);
233
229
  if (record.concurrency === 'queue') {
234
230
  const next = lane.queue.shift();
235
231
  if (next) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tasks/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tforeground,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\tif (foreground) {\n\t\tstate.pendingCount++;\n\t\tlane.pendingCount++;\n\t}\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tif (record.foreground) state.pendingCount = Math.max(0, state.pendingCount - 1);\n\tif (record.foreground) lane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/tasks/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tpeek,\n\trollbackReactiveMutationJournals,\n\tscheduleWork\n} from '@exactjs/reactive/framework/runtime';\nimport { reactiveObjects } from '@exactjs/reactive/framework/objects';\n\nimport { TaskCancellation } from './cancellation.js';\nimport { inheritComponentContinuationIdentity } from './component-continuation.js';\nimport { taskDefinitionBrand, type TaskDefinition } from './definition-record.js';\nimport { discardTaskMutations, publishTaskMutations } from './resources.js';\nimport { readExactInspectionSource } from '../component/inspection-source.js';\nimport type {\n\tBoundTaskFunction,\n\tRuntimeTaskOptions,\n\tTaskActivation,\n\tTaskContext,\n\tTaskFunction,\n\tTaskInvocation,\n\tTaskOwner,\n\tTaskStatus\n} from './contracts.js';\nimport {\n\tattachTaskFrameSettlement,\n\tcreateTaskOwnerRecord,\n\tcurrentTaskFrameRecord,\n\tmaterializeDeferredTaskFrame,\n\tcurrentTaskOwnerRecord,\n\tframeForTaskContext,\n\ttaskOwnerRecord,\n\ttype TaskOwnerRecord\n} from './frame-runtime.js';\nimport { taskOwnerForHost } from './owner-hosts.js';\nimport { TaskInvocationValue } from './invocation.js';\nimport { validateTaskOptions } from './options.js';\nimport { donateTaskPriority, taskWorkPriority } from './priority.js';\nimport { executeScheduledTaskGeneration } from './generation-execution.js';\nimport { markTaskPerformanceTrace, startTaskPerformanceTrace } from './performance-trace.js';\nimport { createTaskStatus, defineTaskStatusProperties } from './status.js';\nimport type {\n\tInternalTaskGeneration,\n\tInternalTaskLane,\n\tInternalTaskOwnerState\n} from './runtime-types.js';\n\nconst defaultLaneKey = Symbol('exact.default-task-lane');\n\n/**\n * Defines one stable runtime task using the same owner, lane, generation,\n * frame, cancellation, cleanup, and status runtime used by compiled tasks.\n */\nexport function defineTask<Args extends unknown[], Result>(\n\toptions: RuntimeTaskOptions<Args>,\n\timplementation: (...args: [...Args, TaskContext]) => Result | Promise<Result>\n): TaskFunction<Args, Awaited<Result>> {\n\tvalidateTaskOptions(options);\n\tif (typeof implementation !== 'function')\n\t\tthrow new TypeError('defineTask() requires an implementation function');\n\tconst sourceEntityId = readExactInspectionSource(implementation);\n\tconst definition: TaskDefinition<Args, Awaited<Result>> = {\n\t\t[taskDefinitionBrand]: true,\n\t\toptions,\n\t\timplementation: implementation as TaskDefinition<Args, Awaited<Result>>['implementation'],\n\t\t...(sourceEntityId ? { sourceEntityId } : {}),\n\t\towners: new WeakMap()\n\t};\n\tconst callable = ((...args: Args) =>\n\t\tinvokeDefinition(\n\t\t\tdefinition,\n\t\t\toptions.owner ? taskOwnerRecord(options.owner) : undefined,\n\t\t\tundefined,\n\t\t\targs,\n\t\t\t'invoked'\n\t\t)) as TaskFunction<Args, Awaited<Result>>;\n\tObject.defineProperty(callable, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(implementation, callable);\n\treturn callable;\n}\n\n/** Invokes a child task with an explicit retained parent after any await boundary. */\nexport function invokeTask<Args extends unknown[], Result>(\n\tparent: TaskContext,\n\tchild: TaskFunction<Args, Result>,\n\t...args: Args\n): TaskInvocation<Result> {\n\tconst frame = frameForTaskContext(parent);\n\treturn invokeDefinition(readDefinition(child), frame.owner, frame, args);\n}\n\n/** Creates an owner-bound callable facade with aggregate reactive status. */\nexport function bindTask<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\toptions?: { readonly owner?: TaskOwner }\n): BoundTaskFunction<Args, Result> {\n\tconst definition = readDefinition(task);\n\tconst owner = resolveBoundOwner(options?.owner);\n\tconst status = createTaskStatus(ownerState(definition, owner), undefined, cancelLane);\n\tconst bound = ((...args: Args) =>\n\t\tinvokeDefinition(definition, owner, undefined, args, 'invoked')) as BoundTaskFunction<\n\t\tArgs,\n\t\tResult\n\t>;\n\tObject.defineProperty(bound, taskDefinitionBrand, { value: definition });\n\tinheritComponentContinuationIdentity(task, bound);\n\tdefineTaskStatusProperties(bound, status);\n\treturn bound;\n}\n\n/**\n * Binds compiler-generated task functions to an explicit durable host.\n *\n * Explicit host lookup preserves ownership across development module graphs\n * that contain more than one physical copy of the core runtime.\n */\nexport function bindTaskForHost<Args extends unknown[], Result>(\n\thost: object,\n\ttask: TaskFunction<Args, Result>\n): BoundTaskFunction<Args, Result> {\n\tconst owner = taskOwnerForHost(host);\n\tif (!owner) throw new Error('bindTaskForHost() requires a registered durable task host');\n\treturn bindTask(task, { owner });\n}\n\n/** Returns a non-callable owner-bound status view, optionally filtered to one key. */\nexport function taskStatus<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result> | ((...args: Args) => Result),\n\toptions?: { readonly owner?: TaskOwner; readonly key?: unknown }\n): TaskStatus<Awaited<Result>> {\n\tconst definition = readDefinition(task as TaskFunction<Args, Awaited<Result>>);\n\treturn createTaskStatus(\n\t\townerState(definition, resolveBoundOwner(options?.owner)),\n\t\toptions?.key,\n\t\tcancelLane\n\t);\n}\n\n/** Internal setup activation entry used by the compiler-facing activation ABI. */\nexport function invokeTaskForActivation<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>,\n\towner: TaskOwnerRecord,\n\tactivationSite: object,\n\tactivation: 'initialization' | 'reactive',\n\targs: Args\n): TaskInvocation<Result> {\n\treturn invokeDefinition(readDefinition(task), owner, undefined, args, activation, activationSite);\n}\n\nfunction invokeDefinition<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\texplicitOwner: TaskOwnerRecord | undefined,\n\texplicitParent: ReturnType<typeof currentTaskFrameRecord>,\n\targs: Args,\n\tactivation: TaskActivation = 'invoked',\n\tactivationSite?: object\n): TaskInvocation<Result> {\n\tconst capturedArgs = definition.options.captureArguments\n\t\t? peek(() => definition.options.captureArguments!(args))\n\t\t: args;\n\tif (!Array.isArray(capturedArgs))\n\t\tthrow new TypeError('Task argument capture must return an argument array');\n\tconst resolvedArgs = capturedArgs as Args;\n\tconst dependencyDriven = activation !== 'invoked';\n\t// Dependency-driven activations are durable-owner roots. A dependency can publish while an\n\t// earlier generation's continuation is temporarily restored; inheriting that ambient frame\n\t// would make the replacement generation a child of the generation it is about to supersede.\n\tconst ambient = dependencyDriven\n\t\t? explicitParent\n\t\t: (explicitParent ?? currentTaskFrameRecord() ?? materializeDeferredTaskFrame());\n\tconst owner =\n\t\texplicitOwner ??\n\t\tambient?.owner ??\n\t\tcurrentTaskOwnerRecord() ??\n\t\t(definition.options.owner\n\t\t\t? taskOwnerRecord(definition.options.owner)\n\t\t\t: createTaskOwnerRecord(definition.options.label));\n\tconst state = ownerState(definition, owner);\n\tconst key = dependencyDriven\n\t\t? (activationSite ?? defaultLaneKey)\n\t\t: (definition.options.concurrencyKey?.(...resolvedArgs) ?? defaultLaneKey);\n\tconst lane = taskLane(state, key);\n\tconst concurrency = dependencyDriven ? 'latest' : (definition.options.concurrency ?? 'parallel');\n\tif (concurrency === 'latest') cancelLane(lane, 'superseded');\n\tconst generation = ++state.nextGeneration;\n\tconst controller = new AbortController();\n\tconst priority = definition.options.priority ?? ambient?.priority ?? 'normal';\n\tconst readiness =\n\t\tdefinition.options.readiness ??\n\t\t(priority === 'deferred' ? 'nonblocking' : (ambient?.readiness ?? 'blocking'));\n\tconst foreground = readiness === 'blocking' && priority !== 'deferred';\n\tlet releaseReservation: (() => void) | undefined;\n\tif (ambient && !definition.options.detached) {\n\t\tconst reservation = new Promise<void>((resolve) => {\n\t\t\treleaseReservation = resolve;\n\t\t});\n\t\tattachTaskFrameSettlement(ambient, reservation);\n\t}\n\tlet resolve!: (value: Result) => void;\n\tlet reject!: (error: unknown) => void;\n\tconst promise = new Promise<Result>((accept, fail) => {\n\t\tresolve = accept;\n\t\treject = fail;\n\t});\n\t// Structural propagation owns unobserved failures, so the backing native\n\t// promise must never also surface them as process-level unhandled rejections.\n\tvoid promise.catch(() => undefined);\n\tconst record: InternalTaskGeneration<Result> = {\n\t\tgeneration,\n\t\tcontroller,\n\t\targs: resolvedArgs,\n\t\tjournals: [],\n\t\tpromise,\n\t\tresolve,\n\t\treject,\n\t\tparent: ambient,\n\t\treleaseReservation,\n\t\tactivation,\n\t\tconcurrency,\n\t\treadiness,\n\t\tpriority,\n\t\tobserved: false,\n\t\tstarted: false,\n\t\texecuting: false\n\t};\n\towner.settlements.add(promise);\n\towner.observeSettlement?.(promise);\n\tif (foreground && owner.registerReadiness) {\n\t\trecord.readinessRegistration = owner.registerReadiness(\n\t\t\tgeneration,\n\t\t\tpromise,\n\t\t\t() => publishTaskMutations(controller.signal),\n\t\t\t() => discardTaskMutations(controller.signal)\n\t\t);\n\t\tcontroller.signal.addEventListener('abort', () => record.readinessRegistration?.cancel(), {\n\t\t\tonce: true\n\t\t});\n\t}\n\tvoid promise.finally(() => owner.settlements.delete(promise)).catch(() => undefined);\n\tlane.active.add(record);\n\t// Status describes all unsettled generations; readiness is registered separately above.\n\tstate.pendingCount++;\n\tlane.pendingCount++;\n\tif (concurrency === 'queue') {\n\t\tlane.queue.push(record);\n\t\tpumpLane(definition, owner, state, lane);\n\t} else {\n\t\tstartGeneration(definition, owner, state, lane, record);\n\t}\n\treturn new TaskInvocationValue(promise, () => {\n\t\trecord.observed = true;\n\t\tif (record.parent) donateTaskPriority(record, record.parent.priority);\n\t});\n}\n\nfunction startGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\trecord.started = true;\n\tstate.error = undefined;\n\tlane.error = undefined;\n\tconst execution = new Promise<Result>((resolveExecution, rejectExecution) => {\n\t\tconst scheduledWork = () => {\n\t\t\trecord.executing = true;\n\t\t\tstartTaskPerformanceTrace(owner, record, definition.sourceEntityId, definition.options.label);\n\t\t\tconst frameExecution = executeScheduledTaskGeneration(\n\t\t\t\towner,\n\t\t\t\trecord,\n\t\t\t\tdefinition.options,\n\t\t\t\tdefinition.sourceEntityId,\n\t\t\t\tdefinition.implementation\n\t\t\t);\n\t\t\trecord.releaseReservation?.();\n\t\t\tvoid frameExecution.then(resolveExecution, rejectExecution);\n\t\t};\n\t\trecord.scheduledWork = scheduledWork;\n\t\tscheduleWork(scheduledWork, taskWorkPriority(record.priority), rejectExecution);\n\t});\n\tvoid execution.then(\n\t\t(value) => {\n\t\t\tfor (const journal of record.journals) journal.discard();\n\t\t\tif (!record.readinessRegistration) publishTaskMutations(record.controller.signal);\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tstate.result = value;\n\t\t\t\tstate.error = undefined;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.result = value;\n\t\t\t\tlane.error = undefined;\n\t\t\t\tlane.generation = record.generation;\n\t\t\t}\n\t\t\tif (record.trace) markTaskPerformanceTrace(record, 'settled', { outcome: 'success' });\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.resolve(value);\n\t\t},\n\t\t(error) => {\n\t\t\trollbackReactiveMutationJournals(record.journals);\n\t\t\tdiscardTaskMutations(record.controller.signal);\n\t\t\trecord.readinessRegistration?.cancel();\n\t\t\tif (record.generation >= state.generation) {\n\t\t\t\tstate.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) state.error = error;\n\t\t\t}\n\t\t\tif (record.generation >= lane.generation) {\n\t\t\t\tlane.generation = record.generation;\n\t\t\t\tif (!(error instanceof TaskCancellation)) lane.error = error;\n\t\t\t}\n\t\t\tif (record.trace)\n\t\t\t\tmarkTaskPerformanceTrace(record, 'settled', {\n\t\t\t\t\toutcome: error instanceof TaskCancellation ? 'cancelled' : 'error'\n\t\t\t\t});\n\t\t\tfinishGeneration(definition, owner, state, lane, record);\n\t\t\trecord.reject(error);\n\t\t}\n\t);\n}\n\nfunction finishGeneration<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>,\n\trecord: InternalTaskGeneration<Result>\n): void {\n\tlane.active.delete(record);\n\tstate.pendingCount = Math.max(0, state.pendingCount - 1);\n\tlane.pendingCount = Math.max(0, lane.pendingCount - 1);\n\tif (record.concurrency === 'queue') {\n\t\tconst next = lane.queue.shift();\n\t\tif (next) {\n\t\t\tstartGeneration(definition, owner, state, lane, next);\n\t\t}\n\t}\n}\n\nfunction pumpLane<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord,\n\tstate: InternalTaskOwnerState<Result>,\n\tlane: InternalTaskLane<Result>\n): void {\n\tif ([...lane.active].some((record) => record.started)) return;\n\tconst next = lane.queue.shift();\n\tif (next) startGeneration(definition, owner, state, lane, next);\n}\n\nfunction ownerState<Args extends unknown[], Result>(\n\tdefinition: TaskDefinition<Args, Result>,\n\towner: TaskOwnerRecord\n): InternalTaskOwnerState<Result> {\n\tlet state = definition.owners.get(owner);\n\tif (!state) {\n\t\tstate = reactiveObjects<InternalTaskOwnerState<Result>>(\n\t\t\t{\n\t\t\t\tnextGeneration: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tpendingCount: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined,\n\t\t\t\tlanes: new Map(),\n\t\t\t\tlanesVersion: 0\n\t\t\t},\n\t\t\t{ passthroughKeys: ['lanes'] }\n\t\t);\n\t\tdefinition.owners.set(owner, state);\n\t}\n\treturn state;\n}\n\nfunction taskLane<Result>(\n\tstate: InternalTaskOwnerState<Result>,\n\tkey: unknown\n): InternalTaskLane<Result> {\n\tlet lane = state.lanes.get(key);\n\tif (!lane) {\n\t\tlane = reactiveObjects<InternalTaskLane<Result>>(\n\t\t\t{\n\t\t\t\tkey,\n\t\t\t\tactive: new Set<InternalTaskGeneration<Result>>(),\n\t\t\t\tqueue: [] as InternalTaskGeneration<Result>[],\n\t\t\t\tpendingCount: 0,\n\t\t\t\tgeneration: 0,\n\t\t\t\tresult: undefined,\n\t\t\t\terror: undefined\n\t\t\t},\n\t\t\t{ passthroughKeys: ['active', 'queue'] }\n\t\t);\n\t\tstate.lanes.set(key, lane);\n\t\tstate.lanesVersion++;\n\t}\n\treturn lane;\n}\n\nfunction cancelLane<Result>(lane: InternalTaskLane<Result>, reason: unknown): void {\n\tfor (const record of lane.active) {\n\t\trecord.readinessRegistration?.cancel();\n\t\trollbackReactiveMutationJournals(record.journals);\n\t\trecord.journals.length = 0;\n\t\trecord.controller.abort(reason);\n\t}\n}\n\nfunction readDefinition<Args extends unknown[], Result>(\n\ttask: TaskFunction<Args, Result>\n): TaskDefinition<Args, Result> {\n\tconst definition = (\n\t\ttask as TaskFunction<Args, Result> & {\n\t\t\t[taskDefinitionBrand]?: TaskDefinition<Args, Result>;\n\t\t}\n\t)[taskDefinitionBrand];\n\tif (!definition)\n\t\tthrow new TypeError('taskStatus() and task invocation require a compiled or defineTask() task');\n\treturn definition;\n}\n\nfunction resolveBoundOwner(owner?: TaskOwner): TaskOwnerRecord {\n\tif (owner) return taskOwnerRecord(owner);\n\tconst ownerRecord = currentTaskOwnerRecord();\n\tif (!ownerRecord)\n\t\tthrow new Error('Binding task status requires an explicit owner outside a durable task host');\n\treturn ownerRecord;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exactjs/core",
3
- "version": "0.6.4",
3
+ "version": "0.6.5",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "AGENTS.md",