@mondaydotcomorg/atp-compiler 0.17.14
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 +382 -0
- package/__tests__/integration/all-array-methods-native.test.ts +321 -0
- package/__tests__/integration/all-callback-types.test.ts +406 -0
- package/__tests__/integration/comprehensive-edge-cases.test.ts +701 -0
- package/__tests__/integration/native-behavior-verification.test.ts +340 -0
- package/__tests__/integration/semantic-correctness.test.ts +354 -0
- package/__tests__/integration/threshold-tests.test.ts +529 -0
- package/__tests__/unit/batch-optimizer.test.ts +253 -0
- package/__tests__/unit/checkpoint-manager.test.ts +145 -0
- package/__tests__/unit/detector.test.ts +346 -0
- package/dist/atp-compiler/src/index.d.ts +6 -0
- package/dist/atp-compiler/src/index.d.ts.map +1 -0
- package/dist/atp-compiler/src/index.js +6 -0
- package/dist/atp-compiler/src/index.js.map +1 -0
- package/dist/atp-compiler/src/runtime/batch-parallel.d.ts +3 -0
- package/dist/atp-compiler/src/runtime/batch-parallel.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/batch-parallel.js +13 -0
- package/dist/atp-compiler/src/runtime/batch-parallel.js.map +1 -0
- package/dist/atp-compiler/src/runtime/checkpoint-manager.d.ts +19 -0
- package/dist/atp-compiler/src/runtime/checkpoint-manager.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/checkpoint-manager.js +81 -0
- package/dist/atp-compiler/src/runtime/checkpoint-manager.js.map +1 -0
- package/dist/atp-compiler/src/runtime/context.d.ts +8 -0
- package/dist/atp-compiler/src/runtime/context.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/context.js +25 -0
- package/dist/atp-compiler/src/runtime/context.js.map +1 -0
- package/dist/atp-compiler/src/runtime/errors.d.ts +38 -0
- package/dist/atp-compiler/src/runtime/errors.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/errors.js +61 -0
- package/dist/atp-compiler/src/runtime/errors.js.map +1 -0
- package/dist/atp-compiler/src/runtime/index.d.ts +16 -0
- package/dist/atp-compiler/src/runtime/index.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/index.js +20 -0
- package/dist/atp-compiler/src/runtime/index.js.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-arrays.d.ts +9 -0
- package/dist/atp-compiler/src/runtime/resumable-arrays.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-arrays.js +179 -0
- package/dist/atp-compiler/src/runtime/resumable-arrays.js.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-loops.d.ts +4 -0
- package/dist/atp-compiler/src/runtime/resumable-loops.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-loops.js +61 -0
- package/dist/atp-compiler/src/runtime/resumable-loops.js.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-parallel.d.ts +3 -0
- package/dist/atp-compiler/src/runtime/resumable-parallel.d.ts.map +1 -0
- package/dist/atp-compiler/src/runtime/resumable-parallel.js +44 -0
- package/dist/atp-compiler/src/runtime/resumable-parallel.js.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-batch.d.ts +13 -0
- package/dist/atp-compiler/src/transformer/array-transformer-batch.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-batch.js +55 -0
- package/dist/atp-compiler/src/transformer/array-transformer-batch.js.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-sequential.d.ts +6 -0
- package/dist/atp-compiler/src/transformer/array-transformer-sequential.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-sequential.js +23 -0
- package/dist/atp-compiler/src/transformer/array-transformer-sequential.js.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-utils.d.ts +18 -0
- package/dist/atp-compiler/src/transformer/array-transformer-utils.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-utils.js +69 -0
- package/dist/atp-compiler/src/transformer/array-transformer-utils.js.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-wrappers.d.ts +26 -0
- package/dist/atp-compiler/src/transformer/array-transformer-wrappers.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer-wrappers.js +88 -0
- package/dist/atp-compiler/src/transformer/array-transformer-wrappers.js.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer.d.ts +12 -0
- package/dist/atp-compiler/src/transformer/array-transformer.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/array-transformer.js +47 -0
- package/dist/atp-compiler/src/transformer/array-transformer.js.map +1 -0
- package/dist/atp-compiler/src/transformer/batch-detector.d.ts +16 -0
- package/dist/atp-compiler/src/transformer/batch-detector.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/batch-detector.js +131 -0
- package/dist/atp-compiler/src/transformer/batch-detector.js.map +1 -0
- package/dist/atp-compiler/src/transformer/batch-optimizer.d.ts +27 -0
- package/dist/atp-compiler/src/transformer/batch-optimizer.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/batch-optimizer.js +244 -0
- package/dist/atp-compiler/src/transformer/batch-optimizer.js.map +1 -0
- package/dist/atp-compiler/src/transformer/detector.d.ts +9 -0
- package/dist/atp-compiler/src/transformer/detector.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/detector.js +141 -0
- package/dist/atp-compiler/src/transformer/detector.js.map +1 -0
- package/dist/atp-compiler/src/transformer/index.d.ts +22 -0
- package/dist/atp-compiler/src/transformer/index.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/index.js +132 -0
- package/dist/atp-compiler/src/transformer/index.js.map +1 -0
- package/dist/atp-compiler/src/transformer/loop-transformer.d.ts +25 -0
- package/dist/atp-compiler/src/transformer/loop-transformer.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/loop-transformer.js +193 -0
- package/dist/atp-compiler/src/transformer/loop-transformer.js.map +1 -0
- package/dist/atp-compiler/src/transformer/promise-transformer.d.ts +17 -0
- package/dist/atp-compiler/src/transformer/promise-transformer.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/promise-transformer.js +132 -0
- package/dist/atp-compiler/src/transformer/promise-transformer.js.map +1 -0
- package/dist/atp-compiler/src/transformer/utils.d.ts +15 -0
- package/dist/atp-compiler/src/transformer/utils.d.ts.map +1 -0
- package/dist/atp-compiler/src/transformer/utils.js +118 -0
- package/dist/atp-compiler/src/transformer/utils.js.map +1 -0
- package/dist/atp-compiler/src/types.d.ts +57 -0
- package/dist/atp-compiler/src/types.d.ts.map +1 -0
- package/dist/atp-compiler/src/types.js +23 -0
- package/dist/atp-compiler/src/types.js.map +1 -0
- package/dist/protocol/src/auth.d.ts +173 -0
- package/dist/protocol/src/auth.d.ts.map +1 -0
- package/dist/protocol/src/auth.js +202 -0
- package/dist/protocol/src/auth.js.map +1 -0
- package/dist/protocol/src/index.d.ts +7 -0
- package/dist/protocol/src/index.d.ts.map +1 -0
- package/dist/protocol/src/index.js +7 -0
- package/dist/protocol/src/index.js.map +1 -0
- package/dist/protocol/src/oauth.d.ts +63 -0
- package/dist/protocol/src/oauth.d.ts.map +1 -0
- package/dist/protocol/src/oauth.js +5 -0
- package/dist/protocol/src/oauth.js.map +1 -0
- package/dist/protocol/src/providers.d.ts +167 -0
- package/dist/protocol/src/providers.d.ts.map +1 -0
- package/dist/protocol/src/providers.js +33 -0
- package/dist/protocol/src/providers.js.map +1 -0
- package/dist/protocol/src/schemas.d.ts +6 -0
- package/dist/protocol/src/schemas.d.ts.map +1 -0
- package/dist/protocol/src/schemas.js +51 -0
- package/dist/protocol/src/schemas.js.map +1 -0
- package/dist/protocol/src/types.d.ts +489 -0
- package/dist/protocol/src/types.d.ts.map +1 -0
- package/dist/protocol/src/types.js +88 -0
- package/dist/protocol/src/types.js.map +1 -0
- package/dist/protocol/src/validation.d.ts +76 -0
- package/dist/protocol/src/validation.d.ts.map +1 -0
- package/dist/protocol/src/validation.js +129 -0
- package/dist/protocol/src/validation.js.map +1 -0
- package/dist/provenance/src/ast/instrumentor.d.ts +37 -0
- package/dist/provenance/src/ast/instrumentor.d.ts.map +1 -0
- package/dist/provenance/src/ast/instrumentor.js +299 -0
- package/dist/provenance/src/ast/instrumentor.js.map +1 -0
- package/dist/provenance/src/index.d.ts +7 -0
- package/dist/provenance/src/index.d.ts.map +1 -0
- package/dist/provenance/src/index.js +7 -0
- package/dist/provenance/src/index.js.map +1 -0
- package/dist/provenance/src/policies/engine.d.ts +71 -0
- package/dist/provenance/src/policies/engine.d.ts.map +1 -0
- package/dist/provenance/src/policies/engine.js +433 -0
- package/dist/provenance/src/policies/engine.js.map +1 -0
- package/dist/provenance/src/registry.d.ts +94 -0
- package/dist/provenance/src/registry.d.ts.map +1 -0
- package/dist/provenance/src/registry.js +445 -0
- package/dist/provenance/src/registry.js.map +1 -0
- package/dist/provenance/src/tokens.d.ts +49 -0
- package/dist/provenance/src/tokens.d.ts.map +1 -0
- package/dist/provenance/src/tokens.js +239 -0
- package/dist/provenance/src/tokens.js.map +1 -0
- package/dist/provenance/src/types.d.ts +150 -0
- package/dist/provenance/src/types.d.ts.map +1 -0
- package/dist/provenance/src/types.js +47 -0
- package/dist/provenance/src/types.js.map +1 -0
- package/dist/runtime/src/approval/handler.d.ts +12 -0
- package/dist/runtime/src/approval/handler.d.ts.map +1 -0
- package/dist/runtime/src/approval/handler.js +17 -0
- package/dist/runtime/src/approval/handler.js.map +1 -0
- package/dist/runtime/src/approval/index.d.ts +17 -0
- package/dist/runtime/src/approval/index.d.ts.map +1 -0
- package/dist/runtime/src/approval/index.js +94 -0
- package/dist/runtime/src/approval/index.js.map +1 -0
- package/dist/runtime/src/approval/types.d.ts +21 -0
- package/dist/runtime/src/approval/types.d.ts.map +1 -0
- package/dist/runtime/src/approval/types.js +5 -0
- package/dist/runtime/src/approval/types.js.map +1 -0
- package/dist/runtime/src/cache/backends.d.ts +39 -0
- package/dist/runtime/src/cache/backends.d.ts.map +1 -0
- package/dist/runtime/src/cache/backends.js +167 -0
- package/dist/runtime/src/cache/backends.js.map +1 -0
- package/dist/runtime/src/cache/index.d.ts +32 -0
- package/dist/runtime/src/cache/index.d.ts.map +1 -0
- package/dist/runtime/src/cache/index.js +103 -0
- package/dist/runtime/src/cache/index.js.map +1 -0
- package/dist/runtime/src/cache/types.d.ts +20 -0
- package/dist/runtime/src/cache/types.d.ts.map +1 -0
- package/dist/runtime/src/cache/types.js +2 -0
- package/dist/runtime/src/cache/types.js.map +1 -0
- package/dist/runtime/src/embedding/index.d.ts +39 -0
- package/dist/runtime/src/embedding/index.d.ts.map +1 -0
- package/dist/runtime/src/embedding/index.js +162 -0
- package/dist/runtime/src/embedding/index.js.map +1 -0
- package/dist/runtime/src/embedding/types.d.ts +28 -0
- package/dist/runtime/src/embedding/types.d.ts.map +1 -0
- package/dist/runtime/src/embedding/types.js +5 -0
- package/dist/runtime/src/embedding/types.js.map +1 -0
- package/dist/runtime/src/embedding/utils.d.ts +11 -0
- package/dist/runtime/src/embedding/utils.d.ts.map +1 -0
- package/dist/runtime/src/embedding/utils.js +30 -0
- package/dist/runtime/src/embedding/utils.js.map +1 -0
- package/dist/runtime/src/embedding/vector-store.d.ts +64 -0
- package/dist/runtime/src/embedding/vector-store.d.ts.map +1 -0
- package/dist/runtime/src/embedding/vector-store.js +142 -0
- package/dist/runtime/src/embedding/vector-store.js.map +1 -0
- package/dist/runtime/src/index.d.ts +18 -0
- package/dist/runtime/src/index.d.ts.map +1 -0
- package/dist/runtime/src/index.js +17 -0
- package/dist/runtime/src/index.js.map +1 -0
- package/dist/runtime/src/llm/callback.d.ts +13 -0
- package/dist/runtime/src/llm/callback.d.ts.map +1 -0
- package/dist/runtime/src/llm/callback.js +19 -0
- package/dist/runtime/src/llm/callback.js.map +1 -0
- package/dist/runtime/src/llm/index.d.ts +29 -0
- package/dist/runtime/src/llm/index.d.ts.map +1 -0
- package/dist/runtime/src/llm/index.js +118 -0
- package/dist/runtime/src/llm/index.js.map +1 -0
- package/dist/runtime/src/llm/replay.d.ts +47 -0
- package/dist/runtime/src/llm/replay.d.ts.map +1 -0
- package/dist/runtime/src/llm/replay.js +114 -0
- package/dist/runtime/src/llm/replay.js.map +1 -0
- package/dist/runtime/src/llm/types.d.ts +24 -0
- package/dist/runtime/src/llm/types.d.ts.map +1 -0
- package/dist/runtime/src/llm/types.js +2 -0
- package/dist/runtime/src/llm/types.js.map +1 -0
- package/dist/runtime/src/log/index.d.ts +12 -0
- package/dist/runtime/src/log/index.d.ts.map +1 -0
- package/dist/runtime/src/log/index.js +166 -0
- package/dist/runtime/src/log/index.js.map +1 -0
- package/dist/runtime/src/log/types.d.ts +19 -0
- package/dist/runtime/src/log/types.d.ts.map +1 -0
- package/dist/runtime/src/log/types.js +5 -0
- package/dist/runtime/src/log/types.js.map +1 -0
- package/dist/runtime/src/metadata/decorators.d.ts +27 -0
- package/dist/runtime/src/metadata/decorators.d.ts.map +1 -0
- package/dist/runtime/src/metadata/decorators.js +38 -0
- package/dist/runtime/src/metadata/decorators.js.map +1 -0
- package/dist/runtime/src/metadata/generated.d.ts +18 -0
- package/dist/runtime/src/metadata/generated.d.ts.map +1 -0
- package/dist/runtime/src/metadata/generated.js +290 -0
- package/dist/runtime/src/metadata/generated.js.map +1 -0
- package/dist/runtime/src/metadata/index.d.ts +11 -0
- package/dist/runtime/src/metadata/index.d.ts.map +1 -0
- package/dist/runtime/src/metadata/index.js +45 -0
- package/dist/runtime/src/metadata/index.js.map +1 -0
- package/dist/runtime/src/metadata/types.d.ts +22 -0
- package/dist/runtime/src/metadata/types.d.ts.map +1 -0
- package/dist/runtime/src/metadata/types.js +6 -0
- package/dist/runtime/src/metadata/types.js.map +1 -0
- package/dist/runtime/src/pause/index.d.ts +11 -0
- package/dist/runtime/src/pause/index.d.ts.map +1 -0
- package/dist/runtime/src/pause/index.js +15 -0
- package/dist/runtime/src/pause/index.js.map +1 -0
- package/dist/runtime/src/pause/types.d.ts +46 -0
- package/dist/runtime/src/pause/types.d.ts.map +1 -0
- package/dist/runtime/src/pause/types.js +57 -0
- package/dist/runtime/src/pause/types.js.map +1 -0
- package/dist/runtime/src/progress/index.d.ts +19 -0
- package/dist/runtime/src/progress/index.d.ts.map +1 -0
- package/dist/runtime/src/progress/index.js +61 -0
- package/dist/runtime/src/progress/index.js.map +1 -0
- package/dist/runtime/src/progress/types.d.ts +7 -0
- package/dist/runtime/src/progress/types.d.ts.map +1 -0
- package/dist/runtime/src/progress/types.js +2 -0
- package/dist/runtime/src/progress/types.js.map +1 -0
- package/dist/runtime/src/registry.d.ts +16 -0
- package/dist/runtime/src/registry.d.ts.map +1 -0
- package/dist/runtime/src/registry.js +16 -0
- package/dist/runtime/src/registry.js.map +1 -0
- package/dist/runtime/src/utils.d.ts +11 -0
- package/dist/runtime/src/utils.d.ts.map +1 -0
- package/dist/runtime/src/utils.js +31 -0
- package/dist/runtime/src/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/jest.config.js +29 -0
- package/package.json +56 -0
- package/project.json +31 -0
- package/src/index.ts +6 -0
- package/src/runtime/batch-parallel.ts +22 -0
- package/src/runtime/checkpoint-manager.ts +105 -0
- package/src/runtime/context.ts +33 -0
- package/src/runtime/errors.ts +79 -0
- package/src/runtime/index.ts +35 -0
- package/src/runtime/resumable-arrays.ts +253 -0
- package/src/runtime/resumable-loops.ts +93 -0
- package/src/runtime/resumable-parallel.ts +57 -0
- package/src/transformer/array-transformer-batch.ts +86 -0
- package/src/transformer/array-transformer-sequential.ts +38 -0
- package/src/transformer/array-transformer-utils.ts +80 -0
- package/src/transformer/array-transformer-wrappers.ts +165 -0
- package/src/transformer/array-transformer.ts +76 -0
- package/src/transformer/batch-detector.ts +166 -0
- package/src/transformer/batch-optimizer.ts +320 -0
- package/src/transformer/detector.ts +171 -0
- package/src/transformer/index.ts +155 -0
- package/src/transformer/loop-transformer.ts +285 -0
- package/src/transformer/promise-transformer.ts +194 -0
- package/src/transformer/utils.ts +147 -0
- package/src/types.ts +101 -0
- package/tsconfig.json +12 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './errors.js';
|
|
2
|
+
export * from './context.js';
|
|
3
|
+
export * from './checkpoint-manager.js';
|
|
4
|
+
export * from './resumable-loops.js';
|
|
5
|
+
export * from './resumable-arrays.js';
|
|
6
|
+
export * from './resumable-parallel.js';
|
|
7
|
+
export * from './batch-parallel.js';
|
|
8
|
+
import type { CacheProvider } from '@mondaydotcomorg/atp-protocol';
|
|
9
|
+
export interface InitializeRuntimeOptions {
|
|
10
|
+
executionId: string;
|
|
11
|
+
cache: CacheProvider;
|
|
12
|
+
checkpointPrefix?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function initializeRuntime(options: InitializeRuntimeOptions): void;
|
|
15
|
+
export declare function cleanupRuntime(): void;
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,MAAM,WAAW,wBAAwB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAczE;AAED,wBAAgB,cAAc,IAAI,IAAI,CAAG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './errors.js';
|
|
2
|
+
export * from './context.js';
|
|
3
|
+
export * from './checkpoint-manager.js';
|
|
4
|
+
export * from './resumable-loops.js';
|
|
5
|
+
export * from './resumable-arrays.js';
|
|
6
|
+
export * from './resumable-parallel.js';
|
|
7
|
+
export * from './batch-parallel.js';
|
|
8
|
+
import { CheckpointManager, setCheckpointManager } from './checkpoint-manager.js';
|
|
9
|
+
import { setRuntimeContext } from './context.js';
|
|
10
|
+
export function initializeRuntime(options) {
|
|
11
|
+
const checkpointManager = new CheckpointManager(options.executionId, options.cache, options.checkpointPrefix);
|
|
12
|
+
setCheckpointManager(checkpointManager);
|
|
13
|
+
setRuntimeContext({
|
|
14
|
+
executionId: options.executionId,
|
|
15
|
+
cache: options.cache,
|
|
16
|
+
checkpointPrefix: options.checkpointPrefix,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function cleanupRuntime() { }
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAQjD,MAAM,UAAU,iBAAiB,CAAC,OAAiC;IAClE,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAC9C,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,gBAAgB,CACxB,CAAC;IAEF,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAExC,iBAAiB,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC1C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,KAAU,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function resumableMap<T, R>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<R>, mapId: string): Promise<R[]>;
|
|
2
|
+
export declare function resumableForEach<T>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<void>, forEachId: string): Promise<void>;
|
|
3
|
+
export declare function resumableFilter<T>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<boolean>, filterId: string): Promise<T[]>;
|
|
4
|
+
export declare function resumableReduce<T, R>(items: T[], callback: (accumulator: R, item: T, index: number, array: T[]) => Promise<R>, initialValue: R, reduceId: string): Promise<R>;
|
|
5
|
+
export declare function resumableFind<T>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<boolean>, findId: string): Promise<T | undefined>;
|
|
6
|
+
export declare function resumableSome<T>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<boolean>, someId: string): Promise<boolean>;
|
|
7
|
+
export declare function resumableEvery<T>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<boolean>, everyId: string): Promise<boolean>;
|
|
8
|
+
export declare function resumableFlatMap<T, R>(items: T[], callback: (item: T, index: number, array: T[]) => Promise<R[]>, flatMapId: string): Promise<R[]>;
|
|
9
|
+
//# sourceMappingURL=resumable-arrays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-arrays.d.ts","sourceRoot":"","sources":["../../../../src/runtime/resumable-arrays.ts"],"names":[],"mappings":"AAMA,wBAAsB,YAAY,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5D,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,EAAE,CAAC,CAwBd;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EAC/D,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,eAAe,CAAC,CAAC,EACtC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAClE,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,EAAE,CAAC,CA2Bd;AAED,wBAAsB,eAAe,CAAC,CAAC,EAAE,CAAC,EACzC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5E,YAAY,EAAE,CAAC,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAED,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAClE,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CA0BxB;AAED,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAClE,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,wBAAsB,cAAc,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EAClE,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAC1C,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC9D,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,EAAE,CAAC,CAyBd"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { getCheckpointManager } from './checkpoint-manager.js';
|
|
2
|
+
import { InfiniteLoopDetectionError } from './errors.js';
|
|
3
|
+
const MAX_ITERATIONS = 1000000;
|
|
4
|
+
export async function resumableMap(items, callback, mapId) {
|
|
5
|
+
const checkpointManager = getCheckpointManager();
|
|
6
|
+
const checkpoint = await checkpointManager.load(mapId);
|
|
7
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
8
|
+
const results = checkpoint?.results || [];
|
|
9
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
10
|
+
if (i > MAX_ITERATIONS) {
|
|
11
|
+
throw new InfiniteLoopDetectionError(mapId, i);
|
|
12
|
+
}
|
|
13
|
+
results[i] = await callback(items[i], i, items);
|
|
14
|
+
const newCheckpoint = {
|
|
15
|
+
loopId: mapId,
|
|
16
|
+
currentIndex: i + 1,
|
|
17
|
+
results: results,
|
|
18
|
+
timestamp: Date.now(),
|
|
19
|
+
};
|
|
20
|
+
await checkpointManager.save(newCheckpoint);
|
|
21
|
+
}
|
|
22
|
+
await checkpointManager.clear(mapId);
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
25
|
+
export async function resumableForEach(items, callback, forEachId) {
|
|
26
|
+
const checkpointManager = getCheckpointManager();
|
|
27
|
+
const checkpoint = await checkpointManager.load(forEachId);
|
|
28
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
29
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
30
|
+
if (i > MAX_ITERATIONS) {
|
|
31
|
+
throw new InfiniteLoopDetectionError(forEachId, i);
|
|
32
|
+
}
|
|
33
|
+
await callback(items[i], i, items);
|
|
34
|
+
const newCheckpoint = {
|
|
35
|
+
loopId: forEachId,
|
|
36
|
+
currentIndex: i + 1,
|
|
37
|
+
timestamp: Date.now(),
|
|
38
|
+
};
|
|
39
|
+
await checkpointManager.save(newCheckpoint);
|
|
40
|
+
}
|
|
41
|
+
await checkpointManager.clear(forEachId);
|
|
42
|
+
}
|
|
43
|
+
export async function resumableFilter(items, callback, filterId) {
|
|
44
|
+
const checkpointManager = getCheckpointManager();
|
|
45
|
+
const checkpoint = await checkpointManager.load(filterId);
|
|
46
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
47
|
+
const results = checkpoint?.results || [];
|
|
48
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
49
|
+
if (i > MAX_ITERATIONS) {
|
|
50
|
+
throw new InfiniteLoopDetectionError(filterId, i);
|
|
51
|
+
}
|
|
52
|
+
const passed = await callback(items[i], i, items);
|
|
53
|
+
if (passed) {
|
|
54
|
+
results.push(items[i]);
|
|
55
|
+
}
|
|
56
|
+
const newCheckpoint = {
|
|
57
|
+
loopId: filterId,
|
|
58
|
+
currentIndex: i + 1,
|
|
59
|
+
results: results,
|
|
60
|
+
timestamp: Date.now(),
|
|
61
|
+
};
|
|
62
|
+
await checkpointManager.save(newCheckpoint);
|
|
63
|
+
}
|
|
64
|
+
await checkpointManager.clear(filterId);
|
|
65
|
+
return results;
|
|
66
|
+
}
|
|
67
|
+
export async function resumableReduce(items, callback, initialValue, reduceId) {
|
|
68
|
+
const checkpointManager = getCheckpointManager();
|
|
69
|
+
const checkpoint = await checkpointManager.load(reduceId);
|
|
70
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
71
|
+
let accumulator = checkpoint?.accumulator ?? initialValue;
|
|
72
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
73
|
+
if (i > MAX_ITERATIONS) {
|
|
74
|
+
throw new InfiniteLoopDetectionError(reduceId, i);
|
|
75
|
+
}
|
|
76
|
+
accumulator = await callback(accumulator, items[i], i, items);
|
|
77
|
+
const newCheckpoint = {
|
|
78
|
+
loopId: reduceId,
|
|
79
|
+
currentIndex: i + 1,
|
|
80
|
+
accumulator: accumulator,
|
|
81
|
+
timestamp: Date.now(),
|
|
82
|
+
};
|
|
83
|
+
await checkpointManager.save(newCheckpoint);
|
|
84
|
+
}
|
|
85
|
+
await checkpointManager.clear(reduceId);
|
|
86
|
+
return accumulator;
|
|
87
|
+
}
|
|
88
|
+
export async function resumableFind(items, callback, findId) {
|
|
89
|
+
const checkpointManager = getCheckpointManager();
|
|
90
|
+
const checkpoint = await checkpointManager.load(findId);
|
|
91
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
92
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
93
|
+
if (i > MAX_ITERATIONS) {
|
|
94
|
+
throw new InfiniteLoopDetectionError(findId, i);
|
|
95
|
+
}
|
|
96
|
+
const found = await callback(items[i], i, items);
|
|
97
|
+
if (found) {
|
|
98
|
+
await checkpointManager.clear(findId);
|
|
99
|
+
return items[i];
|
|
100
|
+
}
|
|
101
|
+
const newCheckpoint = {
|
|
102
|
+
loopId: findId,
|
|
103
|
+
currentIndex: i + 1,
|
|
104
|
+
timestamp: Date.now(),
|
|
105
|
+
};
|
|
106
|
+
await checkpointManager.save(newCheckpoint);
|
|
107
|
+
}
|
|
108
|
+
await checkpointManager.clear(findId);
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
export async function resumableSome(items, callback, someId) {
|
|
112
|
+
const checkpointManager = getCheckpointManager();
|
|
113
|
+
const checkpoint = await checkpointManager.load(someId);
|
|
114
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
115
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
116
|
+
if (i > MAX_ITERATIONS) {
|
|
117
|
+
throw new InfiniteLoopDetectionError(someId, i);
|
|
118
|
+
}
|
|
119
|
+
const result = await callback(items[i], i, items);
|
|
120
|
+
if (result) {
|
|
121
|
+
await checkpointManager.clear(someId);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
const newCheckpoint = {
|
|
125
|
+
loopId: someId,
|
|
126
|
+
currentIndex: i + 1,
|
|
127
|
+
timestamp: Date.now(),
|
|
128
|
+
};
|
|
129
|
+
await checkpointManager.save(newCheckpoint);
|
|
130
|
+
}
|
|
131
|
+
await checkpointManager.clear(someId);
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
export async function resumableEvery(items, callback, everyId) {
|
|
135
|
+
const checkpointManager = getCheckpointManager();
|
|
136
|
+
const checkpoint = await checkpointManager.load(everyId);
|
|
137
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
138
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
139
|
+
if (i > MAX_ITERATIONS) {
|
|
140
|
+
throw new InfiniteLoopDetectionError(everyId, i);
|
|
141
|
+
}
|
|
142
|
+
const result = await callback(items[i], i, items);
|
|
143
|
+
if (!result) {
|
|
144
|
+
await checkpointManager.clear(everyId);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const newCheckpoint = {
|
|
148
|
+
loopId: everyId,
|
|
149
|
+
currentIndex: i + 1,
|
|
150
|
+
timestamp: Date.now(),
|
|
151
|
+
};
|
|
152
|
+
await checkpointManager.save(newCheckpoint);
|
|
153
|
+
}
|
|
154
|
+
await checkpointManager.clear(everyId);
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
export async function resumableFlatMap(items, callback, flatMapId) {
|
|
158
|
+
const checkpointManager = getCheckpointManager();
|
|
159
|
+
const checkpoint = await checkpointManager.load(flatMapId);
|
|
160
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
161
|
+
const results = checkpoint?.results || [];
|
|
162
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
163
|
+
if (i > MAX_ITERATIONS) {
|
|
164
|
+
throw new InfiniteLoopDetectionError(flatMapId, i);
|
|
165
|
+
}
|
|
166
|
+
const mapped = await callback(items[i], i, items);
|
|
167
|
+
results.push(...mapped);
|
|
168
|
+
const newCheckpoint = {
|
|
169
|
+
loopId: flatMapId,
|
|
170
|
+
currentIndex: i + 1,
|
|
171
|
+
results: results,
|
|
172
|
+
timestamp: Date.now(),
|
|
173
|
+
};
|
|
174
|
+
await checkpointManager.save(newCheckpoint);
|
|
175
|
+
}
|
|
176
|
+
await checkpointManager.clear(flatMapId);
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=resumable-arrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-arrays.js","sourceRoot":"","sources":["../../../../src/runtime/resumable-arrays.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function resumableForOf<T>(items: T[], callback: (item: T, index: number) => Promise<void>, loopId: string): Promise<void>;
|
|
2
|
+
export declare function resumableWhile(conditionFn: () => boolean | Promise<boolean>, bodyFn: (iteration: number) => Promise<void>, loopId: string): Promise<void>;
|
|
3
|
+
export declare function resumableForLoop(initValue: number, conditionFn: (i: number) => boolean, incrementFn: (i: number) => number, bodyFn: (i: number) => Promise<void>, loopId: string): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=resumable-loops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-loops.d.ts","sourceRoot":"","sources":["../../../../src/runtime/resumable-loops.ts"],"names":[],"mappings":"AAMA,wBAAsB,cAAc,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACnD,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,cAAc,CACnC,WAAW,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAC7C,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC5C,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,gBAAgB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,EACnC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAClC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACpC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBf"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { getCheckpointManager } from './checkpoint-manager.js';
|
|
2
|
+
import { InfiniteLoopDetectionError } from './errors.js';
|
|
3
|
+
const MAX_ITERATIONS = 1000000;
|
|
4
|
+
export async function resumableForOf(items, callback, loopId) {
|
|
5
|
+
const checkpointManager = getCheckpointManager();
|
|
6
|
+
const checkpoint = await checkpointManager.load(loopId);
|
|
7
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
8
|
+
for (let i = startIndex; i < items.length; i++) {
|
|
9
|
+
if (i > MAX_ITERATIONS) {
|
|
10
|
+
throw new InfiniteLoopDetectionError(loopId, i);
|
|
11
|
+
}
|
|
12
|
+
await callback(items[i], i);
|
|
13
|
+
const newCheckpoint = {
|
|
14
|
+
loopId,
|
|
15
|
+
currentIndex: i + 1,
|
|
16
|
+
timestamp: Date.now(),
|
|
17
|
+
};
|
|
18
|
+
await checkpointManager.save(newCheckpoint);
|
|
19
|
+
}
|
|
20
|
+
await checkpointManager.clear(loopId);
|
|
21
|
+
}
|
|
22
|
+
export async function resumableWhile(conditionFn, bodyFn, loopId) {
|
|
23
|
+
const checkpointManager = getCheckpointManager();
|
|
24
|
+
const checkpoint = await checkpointManager.load(loopId);
|
|
25
|
+
let iteration = checkpoint?.currentIndex || 0;
|
|
26
|
+
while (await Promise.resolve(conditionFn())) {
|
|
27
|
+
if (iteration > MAX_ITERATIONS) {
|
|
28
|
+
throw new InfiniteLoopDetectionError(loopId, iteration);
|
|
29
|
+
}
|
|
30
|
+
await bodyFn(iteration);
|
|
31
|
+
const newCheckpoint = {
|
|
32
|
+
loopId,
|
|
33
|
+
currentIndex: iteration + 1,
|
|
34
|
+
timestamp: Date.now(),
|
|
35
|
+
};
|
|
36
|
+
await checkpointManager.save(newCheckpoint);
|
|
37
|
+
iteration++;
|
|
38
|
+
}
|
|
39
|
+
await checkpointManager.clear(loopId);
|
|
40
|
+
}
|
|
41
|
+
export async function resumableForLoop(initValue, conditionFn, incrementFn, bodyFn, loopId) {
|
|
42
|
+
const checkpointManager = getCheckpointManager();
|
|
43
|
+
const checkpoint = await checkpointManager.load(loopId);
|
|
44
|
+
let i = checkpoint?.currentIndex !== undefined ? checkpoint.currentIndex : initValue;
|
|
45
|
+
let iterations = 0;
|
|
46
|
+
while (conditionFn(i)) {
|
|
47
|
+
if (iterations++ > MAX_ITERATIONS) {
|
|
48
|
+
throw new InfiniteLoopDetectionError(loopId, iterations);
|
|
49
|
+
}
|
|
50
|
+
await bodyFn(i);
|
|
51
|
+
const newCheckpoint = {
|
|
52
|
+
loopId,
|
|
53
|
+
currentIndex: incrementFn(i),
|
|
54
|
+
timestamp: Date.now(),
|
|
55
|
+
};
|
|
56
|
+
await checkpointManager.save(newCheckpoint);
|
|
57
|
+
i = incrementFn(i);
|
|
58
|
+
}
|
|
59
|
+
await checkpointManager.clear(loopId);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=resumable-loops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-loops.js","sourceRoot":"","sources":["../../../../src/runtime/resumable-loops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function resumablePromiseAll<T>(promises: Promise<T>[], parallelId: string): Promise<T[]>;
|
|
2
|
+
export declare function resumablePromiseAllSettled<T>(promises: Promise<T>[], parallelId: string): Promise<PromiseSettledResult<T>[]>;
|
|
3
|
+
//# sourceMappingURL=resumable-parallel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-parallel.d.ts","sourceRoot":"","sources":["../../../../src/runtime/resumable-parallel.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,CAAC,EAC1C,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,EAAE,CAAC,CAoBd;AAED,wBAAsB,0BAA0B,CAAC,CAAC,EACjD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAyBpC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { getCheckpointManager } from './checkpoint-manager.js';
|
|
2
|
+
export async function resumablePromiseAll(promises, parallelId) {
|
|
3
|
+
const checkpointManager = getCheckpointManager();
|
|
4
|
+
const checkpoint = await checkpointManager.load(parallelId);
|
|
5
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
6
|
+
const results = checkpoint?.results || [];
|
|
7
|
+
for (let i = startIndex; i < promises.length; i++) {
|
|
8
|
+
results[i] = (await promises[i]);
|
|
9
|
+
const newCheckpoint = {
|
|
10
|
+
loopId: parallelId,
|
|
11
|
+
currentIndex: i + 1,
|
|
12
|
+
results: results,
|
|
13
|
+
timestamp: Date.now(),
|
|
14
|
+
};
|
|
15
|
+
await checkpointManager.save(newCheckpoint);
|
|
16
|
+
}
|
|
17
|
+
await checkpointManager.clear(parallelId);
|
|
18
|
+
return results;
|
|
19
|
+
}
|
|
20
|
+
export async function resumablePromiseAllSettled(promises, parallelId) {
|
|
21
|
+
const checkpointManager = getCheckpointManager();
|
|
22
|
+
const checkpoint = await checkpointManager.load(parallelId);
|
|
23
|
+
const startIndex = checkpoint?.currentIndex || 0;
|
|
24
|
+
const results = checkpoint?.results || [];
|
|
25
|
+
for (let i = startIndex; i < promises.length; i++) {
|
|
26
|
+
try {
|
|
27
|
+
const value = (await promises[i]);
|
|
28
|
+
results[i] = { status: 'fulfilled', value };
|
|
29
|
+
}
|
|
30
|
+
catch (reason) {
|
|
31
|
+
results[i] = { status: 'rejected', reason };
|
|
32
|
+
}
|
|
33
|
+
const newCheckpoint = {
|
|
34
|
+
loopId: parallelId,
|
|
35
|
+
currentIndex: i + 1,
|
|
36
|
+
results: results,
|
|
37
|
+
timestamp: Date.now(),
|
|
38
|
+
};
|
|
39
|
+
await checkpointManager.save(newCheckpoint);
|
|
40
|
+
}
|
|
41
|
+
await checkpointManager.clear(parallelId);
|
|
42
|
+
return results;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=resumable-parallel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resumable-parallel.js","sourceRoot":"","sources":["../../../../src/runtime/resumable-parallel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,QAAsB,EACtB,UAAkB;IAElB,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAI,UAAU,EAAE,OAAe,IAAI,EAAE,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAM,CAAC;QAEtC,MAAM,aAAa,GAAmB;YACrC,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,CAAC,GAAG,CAAC;YACnB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,QAAsB,EACtB,UAAkB;IAElB,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,UAAU,EAAE,YAAY,IAAI,CAAC,CAAC;IACjD,MAAM,OAAO,GAAI,UAAU,EAAE,OAAqC,IAAI,EAAE,CAAC;IAEzE,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAM,CAAC;YACvC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,aAAa,GAAmB;YACrC,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,CAAC,GAAG,CAAC;YACnB,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACrB,CAAC;QACF,MAAM,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
import { BatchParallelDetector } from './batch-detector.js';
|
|
3
|
+
/**
|
|
4
|
+
* Extract batch call info from callback
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractBatchCallInfo(callback: t.Function, batchDetector: BatchParallelDetector): {
|
|
7
|
+
mapperFunction: t.ArrowFunctionExpression;
|
|
8
|
+
} | null;
|
|
9
|
+
/**
|
|
10
|
+
* Transform simple array method to batch parallel execution
|
|
11
|
+
*/
|
|
12
|
+
export declare function transformToBatchParallel(path: any, node: t.CallExpression, methodName: string, callback: t.Function, batchDetector: BatchParallelDetector, onTransform: () => void, fallbackTransform: () => boolean): boolean;
|
|
13
|
+
//# sourceMappingURL=array-transformer-batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-batch.d.ts","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI5D;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,aAAa,EAAE,qBAAqB,GAClC;IACF,cAAc,EAAE,CAAC,CAAC,uBAAuB,CAAC;CAC1C,GAAG,IAAI,CAiCP;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,CAAC,CAAC,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,MAAM,IAAI,EACvB,iBAAiB,EAAE,MAAM,OAAO,GAC9B,OAAO,CAyBT"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
import { generateUniqueId } from '../runtime/context.js';
|
|
3
|
+
import { findLLMCallExpression } from './array-transformer-utils.js';
|
|
4
|
+
import { wrapBatchResultIfNeeded } from './array-transformer-wrappers.js';
|
|
5
|
+
/**
|
|
6
|
+
* Extract batch call info from callback
|
|
7
|
+
*/
|
|
8
|
+
export function extractBatchCallInfo(callback, batchDetector) {
|
|
9
|
+
const paramName = callback.params[0];
|
|
10
|
+
if (!t.isIdentifier(paramName)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const param = paramName.name;
|
|
14
|
+
const llmCall = findLLMCallExpression(callback.body);
|
|
15
|
+
if (!llmCall) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const callInfo = batchDetector.extractCallInfo(llmCall);
|
|
19
|
+
if (!callInfo) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const payloadNode = batchDetector.extractPayloadNode(llmCall);
|
|
23
|
+
if (!payloadNode) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const mapperFunction = t.arrowFunctionExpression([t.identifier(param)], t.objectExpression([
|
|
27
|
+
t.objectProperty(t.identifier('type'), t.stringLiteral(callInfo.type)),
|
|
28
|
+
t.objectProperty(t.identifier('operation'), t.stringLiteral(callInfo.operation)),
|
|
29
|
+
t.objectProperty(t.identifier('payload'), payloadNode),
|
|
30
|
+
]));
|
|
31
|
+
return { mapperFunction };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Transform simple array method to batch parallel execution
|
|
35
|
+
*/
|
|
36
|
+
export function transformToBatchParallel(path, node, methodName, callback, batchDetector, onTransform, fallbackTransform) {
|
|
37
|
+
const methodId = generateUniqueId(`${methodName}_batch`);
|
|
38
|
+
const array = node.callee.object;
|
|
39
|
+
const callInfo = extractBatchCallInfo(callback, batchDetector);
|
|
40
|
+
if (!callInfo) {
|
|
41
|
+
return fallbackTransform();
|
|
42
|
+
}
|
|
43
|
+
const batchCallsArray = t.callExpression(t.memberExpression(array, t.identifier('map')), [
|
|
44
|
+
callInfo.mapperFunction,
|
|
45
|
+
]);
|
|
46
|
+
const batchCall = t.awaitExpression(t.callExpression(t.memberExpression(t.identifier('__runtime'), t.identifier('batchParallel')), [
|
|
47
|
+
batchCallsArray,
|
|
48
|
+
t.stringLiteral(methodId),
|
|
49
|
+
]));
|
|
50
|
+
const finalCall = wrapBatchResultIfNeeded(batchCall, methodName, array, methodId);
|
|
51
|
+
path.replaceWith(finalCall);
|
|
52
|
+
onTransform();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=array-transformer-batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-batch.js","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;GAEG;AACH,MAAM,UAAU,oBAAoB,CACnC,QAAoB,EACpB,aAAoC;IAIpC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC;IAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,CAAC,uBAAuB,CAC/C,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EACrB,CAAC,CAAC,gBAAgB,CAAC;QAClB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChF,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;KACtD,CAAC,CACF,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACvC,IAAS,EACT,IAAsB,EACtB,UAAkB,EAClB,QAAoB,EACpB,aAAoC,EACpC,WAAuB,EACvB,iBAAgC;IAEhC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,UAAU,QAAQ,CAAC,CAAC;IACzD,MAAM,KAAK,GAAI,IAAI,CAAC,MAA6B,CAAC,MAAM,CAAC;IAEzD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,iBAAiB,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;QACxF,QAAQ,CAAC,cAAc;KACvB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe,CAClC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE;QAC9F,eAAe;QACf,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;KACzB,CAAC,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAElF,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC;IACd,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
/**
|
|
3
|
+
* Transform to sequential execution with checkpoints (fallback)
|
|
4
|
+
*/
|
|
5
|
+
export declare function transformToSequential(path: any, node: t.CallExpression, methodName: string, callback: t.Function, onTransform: () => void): boolean;
|
|
6
|
+
//# sourceMappingURL=array-transformer-sequential.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-sequential.d.ts","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-sequential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAIlC;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,GAAG,EACT,IAAI,EAAE,CAAC,CAAC,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,MAAM,IAAI,GACrB,OAAO,CAwBT"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
import { generateUniqueId } from '../runtime/context.js';
|
|
3
|
+
import { getRuntimeMethodName } from './array-transformer-utils.js';
|
|
4
|
+
/**
|
|
5
|
+
* Transform to sequential execution with checkpoints (fallback)
|
|
6
|
+
*/
|
|
7
|
+
export function transformToSequential(path, node, methodName, callback, onTransform) {
|
|
8
|
+
const runtimeMethod = getRuntimeMethodName(methodName);
|
|
9
|
+
if (!runtimeMethod) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const methodId = generateUniqueId(methodName);
|
|
13
|
+
const array = node.callee.object;
|
|
14
|
+
const args = [array, callback, t.stringLiteral(methodId)];
|
|
15
|
+
if (methodName === 'reduce' && node.arguments[1]) {
|
|
16
|
+
args.push(node.arguments[1]);
|
|
17
|
+
}
|
|
18
|
+
const runtimeCall = t.awaitExpression(t.callExpression(t.memberExpression(t.identifier('__runtime'), t.identifier(runtimeMethod)), args));
|
|
19
|
+
path.replaceWith(runtimeCall);
|
|
20
|
+
onTransform();
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=array-transformer-sequential.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-sequential.js","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-sequential.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAS,EACT,IAAsB,EACtB,UAAkB,EAClB,QAAoB,EACpB,WAAuB;IAEvB,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAI,IAAI,CAAC,MAA6B,CAAC,MAAM,CAAC;IACzD,MAAM,IAAI,GAAmB,CAAC,KAAK,EAAE,QAAwB,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1F,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAiB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CACpC,CAAC,CAAC,cAAc,CACf,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAC1E,IAAI,CACJ,CACD,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC;IACd,OAAO,IAAI,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
/**
|
|
3
|
+
* Find LLM call expression in callback body
|
|
4
|
+
*/
|
|
5
|
+
export declare function findLLMCallExpression(body: t.BlockStatement | t.Expression): t.CallExpression | null;
|
|
6
|
+
/**
|
|
7
|
+
* Get array method name from call expression
|
|
8
|
+
*/
|
|
9
|
+
export declare function getArrayMethodName(node: t.CallExpression): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get runtime method name for array method
|
|
12
|
+
*/
|
|
13
|
+
export declare function getRuntimeMethodName(arrayMethod: string): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Check if method can use batch parallel optimization
|
|
16
|
+
*/
|
|
17
|
+
export declare function canUseBatchParallel(methodName: string): boolean;
|
|
18
|
+
//# sourceMappingURL=array-transformer-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-utils.d.ts","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,GACnC,CAAC,CAAC,cAAc,GAAG,IAAI,CA8BzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAYxE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAavE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE/D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import * as t from '@babel/types';
|
|
2
|
+
/**
|
|
3
|
+
* Find LLM call expression in callback body
|
|
4
|
+
*/
|
|
5
|
+
export function findLLMCallExpression(body) {
|
|
6
|
+
let found = null;
|
|
7
|
+
const visit = (node) => {
|
|
8
|
+
if (found)
|
|
9
|
+
return;
|
|
10
|
+
if (t.isAwaitExpression(node) && t.isCallExpression(node.argument)) {
|
|
11
|
+
const call = node.argument;
|
|
12
|
+
if (t.isMemberExpression(call.callee)) {
|
|
13
|
+
found = call;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
Object.keys(node).forEach((key) => {
|
|
18
|
+
const value = node[key];
|
|
19
|
+
if (Array.isArray(value)) {
|
|
20
|
+
value.forEach((item) => {
|
|
21
|
+
if (item && typeof item === 'object' && item.type) {
|
|
22
|
+
visit(item);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
else if (value && typeof value === 'object' && value.type) {
|
|
27
|
+
visit(value);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
visit(body);
|
|
32
|
+
return found;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get array method name from call expression
|
|
36
|
+
*/
|
|
37
|
+
export function getArrayMethodName(node) {
|
|
38
|
+
const arrayMethods = ['map', 'forEach', 'filter', 'reduce', 'find', 'some', 'every', 'flatMap'];
|
|
39
|
+
const { isArrayMethod } = require('./utils.js');
|
|
40
|
+
for (const method of arrayMethods) {
|
|
41
|
+
if (isArrayMethod(node, method)) {
|
|
42
|
+
return method;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get runtime method name for array method
|
|
49
|
+
*/
|
|
50
|
+
export function getRuntimeMethodName(arrayMethod) {
|
|
51
|
+
const mapping = {
|
|
52
|
+
map: 'resumableMap',
|
|
53
|
+
forEach: 'resumableForEach',
|
|
54
|
+
filter: 'resumableFilter',
|
|
55
|
+
reduce: 'resumableReduce',
|
|
56
|
+
find: 'resumableFind',
|
|
57
|
+
some: 'resumableSome',
|
|
58
|
+
every: 'resumableEvery',
|
|
59
|
+
flatMap: 'resumableFlatMap',
|
|
60
|
+
};
|
|
61
|
+
return mapping[arrayMethod] || null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if method can use batch parallel optimization
|
|
65
|
+
*/
|
|
66
|
+
export function canUseBatchParallel(methodName) {
|
|
67
|
+
return ['map', 'forEach', 'filter', 'find', 'some', 'every'].includes(methodName);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=array-transformer-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-transformer-utils.js","sourceRoot":"","sources":["../../../../src/transformer/array-transformer-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAqC;IAErC,IAAI,KAAK,GAA4B,IAAI,CAAC;IAE1C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,IAAI,KAAK;YAAE,OAAO;QAElB,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3B,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO;YACR,CAAC;QACF,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACnD,KAAK,CAAC,IAAI,CAAC,CAAC;oBACb,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7D,KAAK,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACxD,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAEhG,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC;QACf,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACvD,MAAM,OAAO,GAA2B;QACvC,GAAG,EAAE,cAAc;QACnB,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,kBAAkB;KAC3B,CAAC;IAEF,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACrD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnF,CAAC"}
|