@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.
Files changed (285) hide show
  1. package/README.md +382 -0
  2. package/__tests__/integration/all-array-methods-native.test.ts +321 -0
  3. package/__tests__/integration/all-callback-types.test.ts +406 -0
  4. package/__tests__/integration/comprehensive-edge-cases.test.ts +701 -0
  5. package/__tests__/integration/native-behavior-verification.test.ts +340 -0
  6. package/__tests__/integration/semantic-correctness.test.ts +354 -0
  7. package/__tests__/integration/threshold-tests.test.ts +529 -0
  8. package/__tests__/unit/batch-optimizer.test.ts +253 -0
  9. package/__tests__/unit/checkpoint-manager.test.ts +145 -0
  10. package/__tests__/unit/detector.test.ts +346 -0
  11. package/dist/atp-compiler/src/index.d.ts +6 -0
  12. package/dist/atp-compiler/src/index.d.ts.map +1 -0
  13. package/dist/atp-compiler/src/index.js +6 -0
  14. package/dist/atp-compiler/src/index.js.map +1 -0
  15. package/dist/atp-compiler/src/runtime/batch-parallel.d.ts +3 -0
  16. package/dist/atp-compiler/src/runtime/batch-parallel.d.ts.map +1 -0
  17. package/dist/atp-compiler/src/runtime/batch-parallel.js +13 -0
  18. package/dist/atp-compiler/src/runtime/batch-parallel.js.map +1 -0
  19. package/dist/atp-compiler/src/runtime/checkpoint-manager.d.ts +19 -0
  20. package/dist/atp-compiler/src/runtime/checkpoint-manager.d.ts.map +1 -0
  21. package/dist/atp-compiler/src/runtime/checkpoint-manager.js +81 -0
  22. package/dist/atp-compiler/src/runtime/checkpoint-manager.js.map +1 -0
  23. package/dist/atp-compiler/src/runtime/context.d.ts +8 -0
  24. package/dist/atp-compiler/src/runtime/context.d.ts.map +1 -0
  25. package/dist/atp-compiler/src/runtime/context.js +25 -0
  26. package/dist/atp-compiler/src/runtime/context.js.map +1 -0
  27. package/dist/atp-compiler/src/runtime/errors.d.ts +38 -0
  28. package/dist/atp-compiler/src/runtime/errors.d.ts.map +1 -0
  29. package/dist/atp-compiler/src/runtime/errors.js +61 -0
  30. package/dist/atp-compiler/src/runtime/errors.js.map +1 -0
  31. package/dist/atp-compiler/src/runtime/index.d.ts +16 -0
  32. package/dist/atp-compiler/src/runtime/index.d.ts.map +1 -0
  33. package/dist/atp-compiler/src/runtime/index.js +20 -0
  34. package/dist/atp-compiler/src/runtime/index.js.map +1 -0
  35. package/dist/atp-compiler/src/runtime/resumable-arrays.d.ts +9 -0
  36. package/dist/atp-compiler/src/runtime/resumable-arrays.d.ts.map +1 -0
  37. package/dist/atp-compiler/src/runtime/resumable-arrays.js +179 -0
  38. package/dist/atp-compiler/src/runtime/resumable-arrays.js.map +1 -0
  39. package/dist/atp-compiler/src/runtime/resumable-loops.d.ts +4 -0
  40. package/dist/atp-compiler/src/runtime/resumable-loops.d.ts.map +1 -0
  41. package/dist/atp-compiler/src/runtime/resumable-loops.js +61 -0
  42. package/dist/atp-compiler/src/runtime/resumable-loops.js.map +1 -0
  43. package/dist/atp-compiler/src/runtime/resumable-parallel.d.ts +3 -0
  44. package/dist/atp-compiler/src/runtime/resumable-parallel.d.ts.map +1 -0
  45. package/dist/atp-compiler/src/runtime/resumable-parallel.js +44 -0
  46. package/dist/atp-compiler/src/runtime/resumable-parallel.js.map +1 -0
  47. package/dist/atp-compiler/src/transformer/array-transformer-batch.d.ts +13 -0
  48. package/dist/atp-compiler/src/transformer/array-transformer-batch.d.ts.map +1 -0
  49. package/dist/atp-compiler/src/transformer/array-transformer-batch.js +55 -0
  50. package/dist/atp-compiler/src/transformer/array-transformer-batch.js.map +1 -0
  51. package/dist/atp-compiler/src/transformer/array-transformer-sequential.d.ts +6 -0
  52. package/dist/atp-compiler/src/transformer/array-transformer-sequential.d.ts.map +1 -0
  53. package/dist/atp-compiler/src/transformer/array-transformer-sequential.js +23 -0
  54. package/dist/atp-compiler/src/transformer/array-transformer-sequential.js.map +1 -0
  55. package/dist/atp-compiler/src/transformer/array-transformer-utils.d.ts +18 -0
  56. package/dist/atp-compiler/src/transformer/array-transformer-utils.d.ts.map +1 -0
  57. package/dist/atp-compiler/src/transformer/array-transformer-utils.js +69 -0
  58. package/dist/atp-compiler/src/transformer/array-transformer-utils.js.map +1 -0
  59. package/dist/atp-compiler/src/transformer/array-transformer-wrappers.d.ts +26 -0
  60. package/dist/atp-compiler/src/transformer/array-transformer-wrappers.d.ts.map +1 -0
  61. package/dist/atp-compiler/src/transformer/array-transformer-wrappers.js +88 -0
  62. package/dist/atp-compiler/src/transformer/array-transformer-wrappers.js.map +1 -0
  63. package/dist/atp-compiler/src/transformer/array-transformer.d.ts +12 -0
  64. package/dist/atp-compiler/src/transformer/array-transformer.d.ts.map +1 -0
  65. package/dist/atp-compiler/src/transformer/array-transformer.js +47 -0
  66. package/dist/atp-compiler/src/transformer/array-transformer.js.map +1 -0
  67. package/dist/atp-compiler/src/transformer/batch-detector.d.ts +16 -0
  68. package/dist/atp-compiler/src/transformer/batch-detector.d.ts.map +1 -0
  69. package/dist/atp-compiler/src/transformer/batch-detector.js +131 -0
  70. package/dist/atp-compiler/src/transformer/batch-detector.js.map +1 -0
  71. package/dist/atp-compiler/src/transformer/batch-optimizer.d.ts +27 -0
  72. package/dist/atp-compiler/src/transformer/batch-optimizer.d.ts.map +1 -0
  73. package/dist/atp-compiler/src/transformer/batch-optimizer.js +244 -0
  74. package/dist/atp-compiler/src/transformer/batch-optimizer.js.map +1 -0
  75. package/dist/atp-compiler/src/transformer/detector.d.ts +9 -0
  76. package/dist/atp-compiler/src/transformer/detector.d.ts.map +1 -0
  77. package/dist/atp-compiler/src/transformer/detector.js +141 -0
  78. package/dist/atp-compiler/src/transformer/detector.js.map +1 -0
  79. package/dist/atp-compiler/src/transformer/index.d.ts +22 -0
  80. package/dist/atp-compiler/src/transformer/index.d.ts.map +1 -0
  81. package/dist/atp-compiler/src/transformer/index.js +132 -0
  82. package/dist/atp-compiler/src/transformer/index.js.map +1 -0
  83. package/dist/atp-compiler/src/transformer/loop-transformer.d.ts +25 -0
  84. package/dist/atp-compiler/src/transformer/loop-transformer.d.ts.map +1 -0
  85. package/dist/atp-compiler/src/transformer/loop-transformer.js +193 -0
  86. package/dist/atp-compiler/src/transformer/loop-transformer.js.map +1 -0
  87. package/dist/atp-compiler/src/transformer/promise-transformer.d.ts +17 -0
  88. package/dist/atp-compiler/src/transformer/promise-transformer.d.ts.map +1 -0
  89. package/dist/atp-compiler/src/transformer/promise-transformer.js +132 -0
  90. package/dist/atp-compiler/src/transformer/promise-transformer.js.map +1 -0
  91. package/dist/atp-compiler/src/transformer/utils.d.ts +15 -0
  92. package/dist/atp-compiler/src/transformer/utils.d.ts.map +1 -0
  93. package/dist/atp-compiler/src/transformer/utils.js +118 -0
  94. package/dist/atp-compiler/src/transformer/utils.js.map +1 -0
  95. package/dist/atp-compiler/src/types.d.ts +57 -0
  96. package/dist/atp-compiler/src/types.d.ts.map +1 -0
  97. package/dist/atp-compiler/src/types.js +23 -0
  98. package/dist/atp-compiler/src/types.js.map +1 -0
  99. package/dist/protocol/src/auth.d.ts +173 -0
  100. package/dist/protocol/src/auth.d.ts.map +1 -0
  101. package/dist/protocol/src/auth.js +202 -0
  102. package/dist/protocol/src/auth.js.map +1 -0
  103. package/dist/protocol/src/index.d.ts +7 -0
  104. package/dist/protocol/src/index.d.ts.map +1 -0
  105. package/dist/protocol/src/index.js +7 -0
  106. package/dist/protocol/src/index.js.map +1 -0
  107. package/dist/protocol/src/oauth.d.ts +63 -0
  108. package/dist/protocol/src/oauth.d.ts.map +1 -0
  109. package/dist/protocol/src/oauth.js +5 -0
  110. package/dist/protocol/src/oauth.js.map +1 -0
  111. package/dist/protocol/src/providers.d.ts +167 -0
  112. package/dist/protocol/src/providers.d.ts.map +1 -0
  113. package/dist/protocol/src/providers.js +33 -0
  114. package/dist/protocol/src/providers.js.map +1 -0
  115. package/dist/protocol/src/schemas.d.ts +6 -0
  116. package/dist/protocol/src/schemas.d.ts.map +1 -0
  117. package/dist/protocol/src/schemas.js +51 -0
  118. package/dist/protocol/src/schemas.js.map +1 -0
  119. package/dist/protocol/src/types.d.ts +489 -0
  120. package/dist/protocol/src/types.d.ts.map +1 -0
  121. package/dist/protocol/src/types.js +88 -0
  122. package/dist/protocol/src/types.js.map +1 -0
  123. package/dist/protocol/src/validation.d.ts +76 -0
  124. package/dist/protocol/src/validation.d.ts.map +1 -0
  125. package/dist/protocol/src/validation.js +129 -0
  126. package/dist/protocol/src/validation.js.map +1 -0
  127. package/dist/provenance/src/ast/instrumentor.d.ts +37 -0
  128. package/dist/provenance/src/ast/instrumentor.d.ts.map +1 -0
  129. package/dist/provenance/src/ast/instrumentor.js +299 -0
  130. package/dist/provenance/src/ast/instrumentor.js.map +1 -0
  131. package/dist/provenance/src/index.d.ts +7 -0
  132. package/dist/provenance/src/index.d.ts.map +1 -0
  133. package/dist/provenance/src/index.js +7 -0
  134. package/dist/provenance/src/index.js.map +1 -0
  135. package/dist/provenance/src/policies/engine.d.ts +71 -0
  136. package/dist/provenance/src/policies/engine.d.ts.map +1 -0
  137. package/dist/provenance/src/policies/engine.js +433 -0
  138. package/dist/provenance/src/policies/engine.js.map +1 -0
  139. package/dist/provenance/src/registry.d.ts +94 -0
  140. package/dist/provenance/src/registry.d.ts.map +1 -0
  141. package/dist/provenance/src/registry.js +445 -0
  142. package/dist/provenance/src/registry.js.map +1 -0
  143. package/dist/provenance/src/tokens.d.ts +49 -0
  144. package/dist/provenance/src/tokens.d.ts.map +1 -0
  145. package/dist/provenance/src/tokens.js +239 -0
  146. package/dist/provenance/src/tokens.js.map +1 -0
  147. package/dist/provenance/src/types.d.ts +150 -0
  148. package/dist/provenance/src/types.d.ts.map +1 -0
  149. package/dist/provenance/src/types.js +47 -0
  150. package/dist/provenance/src/types.js.map +1 -0
  151. package/dist/runtime/src/approval/handler.d.ts +12 -0
  152. package/dist/runtime/src/approval/handler.d.ts.map +1 -0
  153. package/dist/runtime/src/approval/handler.js +17 -0
  154. package/dist/runtime/src/approval/handler.js.map +1 -0
  155. package/dist/runtime/src/approval/index.d.ts +17 -0
  156. package/dist/runtime/src/approval/index.d.ts.map +1 -0
  157. package/dist/runtime/src/approval/index.js +94 -0
  158. package/dist/runtime/src/approval/index.js.map +1 -0
  159. package/dist/runtime/src/approval/types.d.ts +21 -0
  160. package/dist/runtime/src/approval/types.d.ts.map +1 -0
  161. package/dist/runtime/src/approval/types.js +5 -0
  162. package/dist/runtime/src/approval/types.js.map +1 -0
  163. package/dist/runtime/src/cache/backends.d.ts +39 -0
  164. package/dist/runtime/src/cache/backends.d.ts.map +1 -0
  165. package/dist/runtime/src/cache/backends.js +167 -0
  166. package/dist/runtime/src/cache/backends.js.map +1 -0
  167. package/dist/runtime/src/cache/index.d.ts +32 -0
  168. package/dist/runtime/src/cache/index.d.ts.map +1 -0
  169. package/dist/runtime/src/cache/index.js +103 -0
  170. package/dist/runtime/src/cache/index.js.map +1 -0
  171. package/dist/runtime/src/cache/types.d.ts +20 -0
  172. package/dist/runtime/src/cache/types.d.ts.map +1 -0
  173. package/dist/runtime/src/cache/types.js +2 -0
  174. package/dist/runtime/src/cache/types.js.map +1 -0
  175. package/dist/runtime/src/embedding/index.d.ts +39 -0
  176. package/dist/runtime/src/embedding/index.d.ts.map +1 -0
  177. package/dist/runtime/src/embedding/index.js +162 -0
  178. package/dist/runtime/src/embedding/index.js.map +1 -0
  179. package/dist/runtime/src/embedding/types.d.ts +28 -0
  180. package/dist/runtime/src/embedding/types.d.ts.map +1 -0
  181. package/dist/runtime/src/embedding/types.js +5 -0
  182. package/dist/runtime/src/embedding/types.js.map +1 -0
  183. package/dist/runtime/src/embedding/utils.d.ts +11 -0
  184. package/dist/runtime/src/embedding/utils.d.ts.map +1 -0
  185. package/dist/runtime/src/embedding/utils.js +30 -0
  186. package/dist/runtime/src/embedding/utils.js.map +1 -0
  187. package/dist/runtime/src/embedding/vector-store.d.ts +64 -0
  188. package/dist/runtime/src/embedding/vector-store.d.ts.map +1 -0
  189. package/dist/runtime/src/embedding/vector-store.js +142 -0
  190. package/dist/runtime/src/embedding/vector-store.js.map +1 -0
  191. package/dist/runtime/src/index.d.ts +18 -0
  192. package/dist/runtime/src/index.d.ts.map +1 -0
  193. package/dist/runtime/src/index.js +17 -0
  194. package/dist/runtime/src/index.js.map +1 -0
  195. package/dist/runtime/src/llm/callback.d.ts +13 -0
  196. package/dist/runtime/src/llm/callback.d.ts.map +1 -0
  197. package/dist/runtime/src/llm/callback.js +19 -0
  198. package/dist/runtime/src/llm/callback.js.map +1 -0
  199. package/dist/runtime/src/llm/index.d.ts +29 -0
  200. package/dist/runtime/src/llm/index.d.ts.map +1 -0
  201. package/dist/runtime/src/llm/index.js +118 -0
  202. package/dist/runtime/src/llm/index.js.map +1 -0
  203. package/dist/runtime/src/llm/replay.d.ts +47 -0
  204. package/dist/runtime/src/llm/replay.d.ts.map +1 -0
  205. package/dist/runtime/src/llm/replay.js +114 -0
  206. package/dist/runtime/src/llm/replay.js.map +1 -0
  207. package/dist/runtime/src/llm/types.d.ts +24 -0
  208. package/dist/runtime/src/llm/types.d.ts.map +1 -0
  209. package/dist/runtime/src/llm/types.js +2 -0
  210. package/dist/runtime/src/llm/types.js.map +1 -0
  211. package/dist/runtime/src/log/index.d.ts +12 -0
  212. package/dist/runtime/src/log/index.d.ts.map +1 -0
  213. package/dist/runtime/src/log/index.js +166 -0
  214. package/dist/runtime/src/log/index.js.map +1 -0
  215. package/dist/runtime/src/log/types.d.ts +19 -0
  216. package/dist/runtime/src/log/types.d.ts.map +1 -0
  217. package/dist/runtime/src/log/types.js +5 -0
  218. package/dist/runtime/src/log/types.js.map +1 -0
  219. package/dist/runtime/src/metadata/decorators.d.ts +27 -0
  220. package/dist/runtime/src/metadata/decorators.d.ts.map +1 -0
  221. package/dist/runtime/src/metadata/decorators.js +38 -0
  222. package/dist/runtime/src/metadata/decorators.js.map +1 -0
  223. package/dist/runtime/src/metadata/generated.d.ts +18 -0
  224. package/dist/runtime/src/metadata/generated.d.ts.map +1 -0
  225. package/dist/runtime/src/metadata/generated.js +290 -0
  226. package/dist/runtime/src/metadata/generated.js.map +1 -0
  227. package/dist/runtime/src/metadata/index.d.ts +11 -0
  228. package/dist/runtime/src/metadata/index.d.ts.map +1 -0
  229. package/dist/runtime/src/metadata/index.js +45 -0
  230. package/dist/runtime/src/metadata/index.js.map +1 -0
  231. package/dist/runtime/src/metadata/types.d.ts +22 -0
  232. package/dist/runtime/src/metadata/types.d.ts.map +1 -0
  233. package/dist/runtime/src/metadata/types.js +6 -0
  234. package/dist/runtime/src/metadata/types.js.map +1 -0
  235. package/dist/runtime/src/pause/index.d.ts +11 -0
  236. package/dist/runtime/src/pause/index.d.ts.map +1 -0
  237. package/dist/runtime/src/pause/index.js +15 -0
  238. package/dist/runtime/src/pause/index.js.map +1 -0
  239. package/dist/runtime/src/pause/types.d.ts +46 -0
  240. package/dist/runtime/src/pause/types.d.ts.map +1 -0
  241. package/dist/runtime/src/pause/types.js +57 -0
  242. package/dist/runtime/src/pause/types.js.map +1 -0
  243. package/dist/runtime/src/progress/index.d.ts +19 -0
  244. package/dist/runtime/src/progress/index.d.ts.map +1 -0
  245. package/dist/runtime/src/progress/index.js +61 -0
  246. package/dist/runtime/src/progress/index.js.map +1 -0
  247. package/dist/runtime/src/progress/types.d.ts +7 -0
  248. package/dist/runtime/src/progress/types.d.ts.map +1 -0
  249. package/dist/runtime/src/progress/types.js +2 -0
  250. package/dist/runtime/src/progress/types.js.map +1 -0
  251. package/dist/runtime/src/registry.d.ts +16 -0
  252. package/dist/runtime/src/registry.d.ts.map +1 -0
  253. package/dist/runtime/src/registry.js +16 -0
  254. package/dist/runtime/src/registry.js.map +1 -0
  255. package/dist/runtime/src/utils.d.ts +11 -0
  256. package/dist/runtime/src/utils.d.ts.map +1 -0
  257. package/dist/runtime/src/utils.js +31 -0
  258. package/dist/runtime/src/utils.js.map +1 -0
  259. package/dist/tsconfig.tsbuildinfo +1 -0
  260. package/jest.config.js +29 -0
  261. package/package.json +56 -0
  262. package/project.json +31 -0
  263. package/src/index.ts +6 -0
  264. package/src/runtime/batch-parallel.ts +22 -0
  265. package/src/runtime/checkpoint-manager.ts +105 -0
  266. package/src/runtime/context.ts +33 -0
  267. package/src/runtime/errors.ts +79 -0
  268. package/src/runtime/index.ts +35 -0
  269. package/src/runtime/resumable-arrays.ts +253 -0
  270. package/src/runtime/resumable-loops.ts +93 -0
  271. package/src/runtime/resumable-parallel.ts +57 -0
  272. package/src/transformer/array-transformer-batch.ts +86 -0
  273. package/src/transformer/array-transformer-sequential.ts +38 -0
  274. package/src/transformer/array-transformer-utils.ts +80 -0
  275. package/src/transformer/array-transformer-wrappers.ts +165 -0
  276. package/src/transformer/array-transformer.ts +76 -0
  277. package/src/transformer/batch-detector.ts +166 -0
  278. package/src/transformer/batch-optimizer.ts +320 -0
  279. package/src/transformer/detector.ts +171 -0
  280. package/src/transformer/index.ts +155 -0
  281. package/src/transformer/loop-transformer.ts +285 -0
  282. package/src/transformer/promise-transformer.ts +194 -0
  283. package/src/transformer/utils.ts +147 -0
  284. package/src/types.ts +101 -0
  285. 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":"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"}
@@ -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"}