@powerhousedao/reactor 4.1.0-dev.12 → 4.1.0-dev.121
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/dist/src/cache/buffer/ring-buffer.d.ts +37 -0
- package/dist/src/cache/buffer/ring-buffer.d.ts.map +1 -0
- package/dist/src/cache/buffer/ring-buffer.js +69 -0
- package/dist/src/cache/buffer/ring-buffer.js.map +1 -0
- package/dist/src/cache/index.d.ts +3 -0
- package/dist/src/cache/index.d.ts.map +1 -0
- package/dist/src/cache/index.js +2 -0
- package/dist/src/cache/index.js.map +1 -0
- package/dist/src/cache/kysely-operation-index.d.ts +13 -0
- package/dist/src/cache/kysely-operation-index.d.ts.map +1 -0
- package/dist/src/cache/kysely-operation-index.js +207 -0
- package/dist/src/cache/kysely-operation-index.js.map +1 -0
- package/dist/src/cache/kysely-write-cache.d.ts +134 -0
- package/dist/src/cache/kysely-write-cache.d.ts.map +1 -0
- package/dist/src/cache/kysely-write-cache.js +375 -0
- package/dist/src/cache/kysely-write-cache.js.map +1 -0
- package/dist/src/cache/lru/lru-tracker.d.ts +15 -0
- package/dist/src/cache/lru/lru-tracker.d.ts.map +1 -0
- package/dist/src/cache/lru/lru-tracker.js +96 -0
- package/dist/src/cache/lru/lru-tracker.js.map +1 -0
- package/dist/src/cache/operation-index-types.d.ts +49 -0
- package/dist/src/cache/operation-index-types.d.ts.map +1 -0
- package/dist/src/cache/operation-index-types.js +4 -0
- package/dist/src/cache/operation-index-types.js.map +1 -0
- package/dist/src/cache/write/interfaces.d.ts +83 -0
- package/dist/src/cache/write/interfaces.d.ts.map +1 -0
- package/dist/src/cache/write/interfaces.js +2 -0
- package/dist/src/cache/write/interfaces.js.map +1 -0
- package/dist/src/cache/write-cache-types.d.ts +42 -0
- package/dist/src/cache/write-cache-types.d.ts.map +1 -0
- package/dist/src/cache/write-cache-types.js +2 -0
- package/dist/src/cache/write-cache-types.js.map +1 -0
- package/dist/src/client/reactor-client.d.ts +103 -0
- package/dist/src/client/reactor-client.d.ts.map +1 -0
- package/dist/src/client/reactor-client.js +184 -0
- package/dist/src/client/reactor-client.js.map +1 -0
- package/dist/src/client/types.d.ts +213 -0
- package/dist/src/client/types.d.ts.map +1 -0
- package/dist/src/client/types.js +14 -0
- package/dist/src/client/types.js.map +1 -0
- package/dist/src/core/builder.d.ts +20 -0
- package/dist/src/core/builder.d.ts.map +1 -0
- package/dist/src/core/builder.js +47 -0
- package/dist/src/core/builder.js.map +1 -0
- package/dist/src/core/reactor-builder.d.ts +37 -0
- package/dist/src/core/reactor-builder.d.ts.map +1 -0
- package/dist/src/core/reactor-builder.js +138 -0
- package/dist/src/core/reactor-builder.js.map +1 -0
- package/dist/src/core/reactor.d.ts +111 -0
- package/dist/src/core/reactor.d.ts.map +1 -0
- package/dist/src/core/reactor.js +952 -0
- package/dist/src/core/reactor.js.map +1 -0
- package/dist/src/core/types.d.ts +183 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/utils.d.ts +51 -0
- package/dist/src/core/utils.d.ts.map +1 -0
- package/dist/src/core/utils.js +141 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/events/event-bus.d.ts +3 -3
- package/dist/src/events/event-bus.d.ts.map +1 -1
- package/dist/src/events/event-bus.js.map +1 -1
- package/dist/src/events/interfaces.d.ts +1 -1
- package/dist/src/events/interfaces.d.ts.map +1 -1
- package/dist/src/events/types.d.ts +31 -1
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +7 -0
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/executor/interfaces.d.ts +31 -54
- package/dist/src/executor/interfaces.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +32 -0
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
- package/dist/src/executor/simple-job-executor-manager.js +214 -0
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
- package/dist/src/executor/simple-job-executor.d.ts +62 -0
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
- package/dist/src/executor/simple-job-executor.js +705 -0
- package/dist/src/executor/simple-job-executor.js.map +1 -0
- package/dist/src/executor/types.d.ts +32 -8
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/executor/types.js.map +1 -1
- package/dist/src/executor/util.d.ts +65 -0
- package/dist/src/executor/util.d.ts.map +1 -0
- package/dist/src/executor/util.js +154 -0
- package/dist/src/executor/util.js.map +1 -0
- package/dist/src/index.d.ts +35 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +43 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts +16 -0
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -0
- package/dist/src/job-tracker/in-memory-job-tracker.js +84 -0
- package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -0
- package/dist/src/job-tracker/index.d.ts +3 -0
- package/dist/src/job-tracker/index.d.ts.map +1 -0
- package/dist/src/job-tracker/index.js +2 -0
- package/dist/src/job-tracker/index.js.map +1 -0
- package/dist/src/job-tracker/interfaces.d.ts +42 -0
- package/dist/src/job-tracker/interfaces.d.ts.map +1 -0
- package/dist/src/job-tracker/interfaces.js +2 -0
- package/dist/src/job-tracker/interfaces.js.map +1 -0
- package/dist/src/queue/interfaces.d.ts +46 -5
- package/dist/src/queue/interfaces.d.ts.map +1 -1
- package/dist/src/queue/job-execution-handle.d.ts +25 -0
- package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
- package/dist/src/queue/job-execution-handle.js +62 -0
- package/dist/src/queue/job-execution-handle.js.map +1 -0
- package/dist/src/queue/queue.d.ts +56 -5
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js +284 -36
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +38 -5
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +12 -0
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/read-models/coordinator.d.ts +38 -0
- package/dist/src/read-models/coordinator.d.ts.map +1 -0
- package/dist/src/read-models/coordinator.js +72 -0
- package/dist/src/read-models/coordinator.js.map +1 -0
- package/dist/src/read-models/document-view.d.ts +24 -0
- package/dist/src/read-models/document-view.d.ts.map +1 -0
- package/dist/src/read-models/document-view.js +368 -0
- package/dist/src/read-models/document-view.js.map +1 -0
- package/dist/src/read-models/interfaces.d.ts +29 -0
- package/dist/src/read-models/interfaces.d.ts.map +1 -0
- package/dist/src/read-models/interfaces.js +2 -0
- package/dist/src/read-models/interfaces.js.map +1 -0
- package/dist/src/read-models/types.d.ts +46 -0
- package/dist/src/read-models/types.d.ts.map +1 -0
- package/dist/src/read-models/types.js +2 -0
- package/dist/src/read-models/types.js.map +1 -0
- package/dist/src/registry/implementation.d.ts +62 -0
- package/dist/src/registry/implementation.d.ts.map +1 -0
- package/dist/src/registry/implementation.js +96 -0
- package/dist/src/registry/implementation.js.map +1 -0
- package/dist/src/registry/index.d.ts +3 -0
- package/dist/src/registry/index.d.ts.map +1 -0
- package/dist/src/registry/index.js +2 -0
- package/dist/src/registry/index.js.map +1 -0
- package/dist/src/registry/interfaces.d.ts +39 -0
- package/dist/src/registry/interfaces.d.ts.map +1 -0
- package/dist/src/registry/interfaces.js +2 -0
- package/dist/src/registry/interfaces.js.map +1 -0
- package/dist/src/shared/awaiter.d.ts +32 -0
- package/dist/src/shared/awaiter.d.ts.map +1 -0
- package/dist/src/shared/awaiter.js +132 -0
- package/dist/src/shared/awaiter.js.map +1 -0
- package/dist/src/shared/consistency-tracker.d.ts +48 -0
- package/dist/src/shared/consistency-tracker.d.ts.map +1 -0
- package/dist/src/shared/consistency-tracker.js +123 -0
- package/dist/src/shared/consistency-tracker.js.map +1 -0
- package/dist/src/shared/errors.d.ts +17 -0
- package/dist/src/shared/errors.d.ts.map +1 -0
- package/dist/src/shared/errors.js +33 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/factories.d.ts +16 -0
- package/dist/src/shared/factories.d.ts.map +1 -0
- package/dist/src/shared/factories.js +33 -0
- package/dist/src/shared/factories.js.map +1 -0
- package/dist/src/shared/types.d.ts +126 -20
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js +35 -1
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/shared/utils.d.ts +3 -0
- package/dist/src/shared/utils.d.ts.map +1 -0
- package/dist/src/shared/utils.js +8 -0
- package/dist/src/shared/utils.js.map +1 -0
- package/dist/src/signer/passthrough-signer.d.ts +6 -0
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
- package/dist/src/signer/passthrough-signer.js +6 -0
- package/dist/src/signer/passthrough-signer.js.map +1 -0
- package/dist/src/signer/types.d.ts +15 -0
- package/dist/src/signer/types.d.ts.map +1 -0
- package/dist/src/signer/types.js +2 -0
- package/dist/src/signer/types.js.map +1 -0
- package/dist/src/storage/index.d.ts +4 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +3 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +335 -0
- package/dist/src/storage/interfaces.d.ts.map +1 -0
- package/dist/src/storage/interfaces.js +19 -0
- package/dist/src/storage/interfaces.js.map +1 -0
- package/dist/src/storage/kysely/document-indexer.d.ts +28 -0
- package/dist/src/storage/kysely/document-indexer.d.ts.map +1 -0
- package/dist/src/storage/kysely/document-indexer.js +350 -0
- package/dist/src/storage/kysely/document-indexer.js.map +1 -0
- package/dist/src/storage/kysely/keyframe-store.d.ts +15 -0
- package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -0
- package/dist/src/storage/kysely/keyframe-store.js +64 -0
- package/dist/src/storage/kysely/keyframe-store.js.map +1 -0
- package/dist/src/storage/kysely/store.d.ts +15 -0
- package/dist/src/storage/kysely/store.d.ts.map +1 -0
- package/dist/src/storage/kysely/store.js +196 -0
- package/dist/src/storage/kysely/store.js.map +1 -0
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts +13 -0
- package/dist/src/storage/kysely/sync-cursor-storage.d.ts.map +1 -0
- package/dist/src/storage/kysely/sync-cursor-storage.js +93 -0
- package/dist/src/storage/kysely/sync-cursor-storage.js.map +1 -0
- package/dist/src/storage/kysely/sync-remote-storage.d.ts +13 -0
- package/dist/src/storage/kysely/sync-remote-storage.d.ts.map +1 -0
- package/dist/src/storage/kysely/sync-remote-storage.js +134 -0
- package/dist/src/storage/kysely/sync-remote-storage.js.map +1 -0
- package/dist/src/storage/kysely/types.d.ts +135 -0
- package/dist/src/storage/kysely/types.d.ts.map +1 -0
- package/dist/src/storage/kysely/types.js +2 -0
- package/dist/src/storage/kysely/types.js.map +1 -0
- package/dist/src/storage/migrations/001_create_operation_table.d.ts +3 -0
- package/dist/src/storage/migrations/001_create_operation_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/001_create_operation_table.js +40 -0
- package/dist/src/storage/migrations/001_create_operation_table.js.map +1 -0
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts +3 -0
- package/dist/src/storage/migrations/002_create_keyframe_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/002_create_keyframe_table.js +27 -0
- package/dist/src/storage/migrations/002_create_keyframe_table.js.map +1 -0
- package/dist/src/storage/migrations/003_create_document_table.d.ts +3 -0
- package/dist/src/storage/migrations/003_create_document_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/003_create_document_table.js +10 -0
- package/dist/src/storage/migrations/003_create_document_table.js.map +1 -0
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts +3 -0
- package/dist/src/storage/migrations/004_create_document_relationship_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/004_create_document_relationship_table.js +35 -0
- package/dist/src/storage/migrations/004_create_document_relationship_table.js.map +1 -0
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts +3 -0
- package/dist/src/storage/migrations/005_create_indexer_state_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/005_create_indexer_state_table.js +10 -0
- package/dist/src/storage/migrations/005_create_indexer_state_table.js.map +1 -0
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts +3 -0
- package/dist/src/storage/migrations/006_create_document_snapshot_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/006_create_document_snapshot_table.js +49 -0
- package/dist/src/storage/migrations/006_create_document_snapshot_table.js.map +1 -0
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts +3 -0
- package/dist/src/storage/migrations/007_create_slug_mapping_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/007_create_slug_mapping_table.js +24 -0
- package/dist/src/storage/migrations/007_create_slug_mapping_table.js.map +1 -0
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts +3 -0
- package/dist/src/storage/migrations/008_create_view_state_table.d.ts.map +1 -0
- package/dist/src/storage/migrations/008_create_view_state_table.js +9 -0
- package/dist/src/storage/migrations/008_create_view_state_table.js.map +1 -0
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts +3 -0
- package/dist/src/storage/migrations/009_create_operation_index_tables.d.ts.map +1 -0
- package/dist/src/storage/migrations/009_create_operation_index_tables.js +50 -0
- package/dist/src/storage/migrations/009_create_operation_index_tables.js.map +1 -0
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts +3 -0
- package/dist/src/storage/migrations/010_create_sync_tables.d.ts.map +1 -0
- package/dist/src/storage/migrations/010_create_sync_tables.js +43 -0
- package/dist/src/storage/migrations/010_create_sync_tables.js.map +1 -0
- package/dist/src/storage/migrations/index.d.ts +3 -0
- package/dist/src/storage/migrations/index.d.ts.map +1 -0
- package/dist/src/storage/migrations/index.js +3 -0
- package/dist/src/storage/migrations/index.js.map +1 -0
- package/dist/src/storage/migrations/migrator.d.ts +5 -0
- package/dist/src/storage/migrations/migrator.d.ts.map +1 -0
- package/dist/src/storage/migrations/migrator.js +55 -0
- package/dist/src/storage/migrations/migrator.js.map +1 -0
- package/dist/src/storage/migrations/run-migrations.d.ts +2 -0
- package/dist/src/storage/migrations/run-migrations.d.ts.map +1 -0
- package/dist/src/storage/migrations/run-migrations.js +58 -0
- package/dist/src/storage/migrations/run-migrations.js.map +1 -0
- package/dist/src/storage/migrations/types.d.ts +9 -0
- package/dist/src/storage/migrations/types.d.ts.map +1 -0
- package/dist/src/storage/migrations/types.js +2 -0
- package/dist/src/storage/migrations/types.js.map +1 -0
- package/dist/src/storage/txn.d.ts +15 -0
- package/dist/src/storage/txn.d.ts.map +1 -0
- package/dist/src/storage/txn.js +43 -0
- package/dist/src/storage/txn.js.map +1 -0
- package/dist/src/subs/default-error-handler.d.ts +13 -0
- package/dist/src/subs/default-error-handler.d.ts.map +1 -0
- package/dist/src/subs/default-error-handler.js +27 -0
- package/dist/src/subs/default-error-handler.js.map +1 -0
- package/dist/src/subs/react-subscription-manager.d.ts +45 -0
- package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
- package/dist/src/subs/react-subscription-manager.js +185 -0
- package/dist/src/subs/react-subscription-manager.js.map +1 -0
- package/dist/src/subs/types.d.ts +64 -0
- package/dist/src/subs/types.d.ts.map +1 -0
- package/dist/src/subs/types.js +2 -0
- package/dist/src/subs/types.js.map +1 -0
- package/dist/src/sync/channels/index.d.ts +3 -0
- package/dist/src/sync/channels/index.d.ts.map +1 -0
- package/dist/src/sync/channels/index.js +3 -0
- package/dist/src/sync/channels/index.js.map +1 -0
- package/dist/src/sync/channels/internal-channel.d.ts +57 -0
- package/dist/src/sync/channels/internal-channel.d.ts.map +1 -0
- package/dist/src/sync/channels/internal-channel.js +106 -0
- package/dist/src/sync/channels/internal-channel.js.map +1 -0
- package/dist/src/sync/channels/utils.d.ts +15 -0
- package/dist/src/sync/channels/utils.d.ts.map +1 -0
- package/dist/src/sync/channels/utils.js +26 -0
- package/dist/src/sync/channels/utils.js.map +1 -0
- package/dist/src/sync/errors.d.ts +10 -0
- package/dist/src/sync/errors.d.ts.map +1 -0
- package/dist/src/sync/errors.js +17 -0
- package/dist/src/sync/errors.js.map +1 -0
- package/dist/src/sync/index.d.ts +12 -0
- package/dist/src/sync/index.d.ts.map +1 -0
- package/dist/src/sync/index.js +9 -0
- package/dist/src/sync/index.js.map +1 -0
- package/dist/src/sync/interfaces.d.ts +150 -0
- package/dist/src/sync/interfaces.d.ts.map +1 -0
- package/dist/src/sync/interfaces.js +2 -0
- package/dist/src/sync/interfaces.js.map +1 -0
- package/dist/src/sync/mailbox.d.ts +21 -0
- package/dist/src/sync/mailbox.d.ts.map +1 -0
- package/dist/src/sync/mailbox.js +59 -0
- package/dist/src/sync/mailbox.js.map +1 -0
- package/dist/src/sync/sync-builder.d.ts +17 -0
- package/dist/src/sync/sync-builder.d.ts.map +1 -0
- package/dist/src/sync/sync-builder.js +29 -0
- package/dist/src/sync/sync-builder.js.map +1 -0
- package/dist/src/sync/sync-manager.d.ts +33 -0
- package/dist/src/sync/sync-manager.d.ts.map +1 -0
- package/dist/src/sync/sync-manager.js +196 -0
- package/dist/src/sync/sync-manager.js.map +1 -0
- package/dist/src/sync/sync-operation.d.ts +28 -0
- package/dist/src/sync/sync-operation.d.ts.map +1 -0
- package/dist/src/sync/sync-operation.js +63 -0
- package/dist/src/sync/sync-operation.js.map +1 -0
- package/dist/src/sync/types.d.ts +61 -0
- package/dist/src/sync/types.d.ts.map +1 -0
- package/dist/src/sync/types.js +16 -0
- package/dist/src/sync/types.js.map +1 -0
- package/dist/src/sync/utils.d.ts +17 -0
- package/dist/src/sync/utils.d.ts.map +1 -0
- package/dist/src/sync/utils.js +34 -0
- package/dist/src/sync/utils.js.map +1 -0
- package/dist/src/utils/reshuffle.d.ts +30 -0
- package/dist/src/utils/reshuffle.d.ts.map +1 -0
- package/dist/src/utils/reshuffle.js +47 -0
- package/dist/src/utils/reshuffle.js.map +1 -0
- package/package.json +23 -7
- package/dist/bench/end-to-end-flow.bench.d.ts +0 -2
- package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
- package/dist/bench/end-to-end-flow.bench.js +0 -256
- package/dist/bench/end-to-end-flow.bench.js.map +0 -1
- package/dist/bench/event-bus.bench.d.ts +0 -2
- package/dist/bench/event-bus.bench.d.ts.map +0 -1
- package/dist/bench/event-bus.bench.js +0 -238
- package/dist/bench/event-bus.bench.js.map +0 -1
- package/dist/bench/queue-only.bench.d.ts +0 -2
- package/dist/bench/queue-only.bench.d.ts.map +0 -1
- package/dist/bench/queue-only.bench.js +0 -40
- package/dist/bench/queue-only.bench.js.map +0 -1
- package/dist/bench/reactor-throughput.bench.d.ts +0 -2
- package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
- package/dist/bench/reactor-throughput.bench.js +0 -137
- package/dist/bench/reactor-throughput.bench.js.map +0 -1
- package/dist/src/executor/job-executor.d.ts +0 -62
- package/dist/src/executor/job-executor.d.ts.map +0 -1
- package/dist/src/executor/job-executor.js +0 -325
- package/dist/src/executor/job-executor.js.map +0 -1
- package/dist/test/event-bus.test.d.ts +0 -2
- package/dist/test/event-bus.test.d.ts.map +0 -1
- package/dist/test/event-bus.test.js +0 -532
- package/dist/test/event-bus.test.js.map +0 -1
- package/dist/test/job-executor.test.d.ts +0 -2
- package/dist/test/job-executor.test.d.ts.map +0 -1
- package/dist/test/job-executor.test.js +0 -581
- package/dist/test/job-executor.test.js.map +0 -1
- package/dist/test/queue.test.d.ts +0 -2
- package/dist/test/queue.test.d.ts.map +0 -1
- package/dist/test/queue.test.js +0 -396
- package/dist/test/queue.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,72 +1,49 @@
|
|
|
1
|
-
import { Job } from "../queue/types.js";
|
|
2
|
-
import {
|
|
1
|
+
import type { Job } from "../queue/types.js";
|
|
2
|
+
import type { ExecutorManagerStatus, JobResult } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Simple interface for executing a job.
|
|
5
|
+
* A JobExecutor simply takes a job and executes it - nothing more.
|
|
6
6
|
*/
|
|
7
7
|
export interface IJobExecutor {
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* Begins listening for 'jobAvailable' events from the event bus and executing jobs when capacity allows.
|
|
11
|
-
*
|
|
12
|
-
* @param config - Configuration options for the executor
|
|
13
|
-
* @returns Promise that resolves when the executor is started
|
|
14
|
-
*/
|
|
15
|
-
start(config?: JobExecutorConfig): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Stop the job executor.
|
|
18
|
-
* Gracefully stops listening for events and waits for current jobs to complete.
|
|
19
|
-
* @param graceful - Whether to wait for current jobs to complete
|
|
20
|
-
* @returns Promise that resolves when the executor is stopped
|
|
21
|
-
*/
|
|
22
|
-
stop(graceful?: boolean): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Execute a single job immediately.
|
|
9
|
+
* Execute a single job.
|
|
25
10
|
* @param job - The job to execute
|
|
26
11
|
* @returns Promise that resolves to the job result
|
|
27
12
|
*/
|
|
28
13
|
executeJob(job: Job): Promise<JobResult>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Interface for managing multiple job executors.
|
|
17
|
+
* Listens for 'jobAvailable' events from the event bus, pulls jobs from the queue,
|
|
18
|
+
* and coordinates the distribution of jobs across multiple executor instances.
|
|
19
|
+
*/
|
|
20
|
+
export interface IJobExecutorManager {
|
|
29
21
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
activeJobs: number;
|
|
36
|
-
totalJobsProcessed: number;
|
|
37
|
-
totalJobsSucceeded: number;
|
|
38
|
-
totalJobsFailed: number;
|
|
39
|
-
lastJobCompletedAt?: string;
|
|
40
|
-
uptime?: number;
|
|
41
|
-
}>;
|
|
42
|
-
/**
|
|
43
|
-
* Get statistics about job execution performance.
|
|
44
|
-
* @returns Promise that resolves to execution statistics
|
|
22
|
+
* Start the executor manager.
|
|
23
|
+
* Begins listening for 'jobAvailable' events and dispatching to executors.
|
|
24
|
+
*
|
|
25
|
+
* @param numExecutors - Number of executor instances to create
|
|
26
|
+
* @returns Promise that resolves when the manager is started
|
|
45
27
|
*/
|
|
46
|
-
|
|
47
|
-
averageExecutionTime: number;
|
|
48
|
-
successRate: number;
|
|
49
|
-
jobsPerSecond: number;
|
|
50
|
-
queueBacklog: number;
|
|
51
|
-
}>;
|
|
28
|
+
start(numExecutors: number): Promise<void>;
|
|
52
29
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* @
|
|
30
|
+
* Stop the executor manager.
|
|
31
|
+
*
|
|
32
|
+
* @param graceful - Whether to wait for current jobs to complete
|
|
33
|
+
* @returns Promise that resolves when the manager is stopped
|
|
56
34
|
*/
|
|
57
|
-
|
|
35
|
+
stop(graceful?: boolean): Promise<void>;
|
|
58
36
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* @returns
|
|
37
|
+
* Get all managed executor instances.
|
|
38
|
+
*
|
|
39
|
+
* @returns Array of executor instances
|
|
62
40
|
*/
|
|
63
|
-
|
|
41
|
+
getExecutors(): IJobExecutor[];
|
|
64
42
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* @
|
|
68
|
-
* @returns Function to unsubscribe from the event
|
|
43
|
+
* Get the current status of the manager.
|
|
44
|
+
*
|
|
45
|
+
* @returns The current manager status
|
|
69
46
|
*/
|
|
70
|
-
|
|
47
|
+
getStatus(): ExecutorManagerStatus;
|
|
71
48
|
}
|
|
72
49
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/executor/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/executor/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,YAAY,IAAI,YAAY,EAAE,CAAC;IAE/B;;;;OAIG;IACH,SAAS,IAAI,qBAAqB,CAAC;CACpC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
+
import type { IJobTracker } from "../job-tracker/interfaces.js";
|
|
3
|
+
import type { IQueue } from "../queue/interfaces.js";
|
|
4
|
+
import type { IJobExecutor, IJobExecutorManager } from "./interfaces.js";
|
|
5
|
+
import type { ExecutorManagerStatus } from "./types.js";
|
|
6
|
+
export type JobExecutorFactory = () => IJobExecutor;
|
|
7
|
+
/**
|
|
8
|
+
* Manages multiple job executors and coordinates job distribution.
|
|
9
|
+
* Listens for job available events and dispatches jobs to executors.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SimpleJobExecutorManager implements IJobExecutorManager {
|
|
12
|
+
private executorFactory;
|
|
13
|
+
private eventBus;
|
|
14
|
+
private queue;
|
|
15
|
+
private jobTracker;
|
|
16
|
+
private executors;
|
|
17
|
+
private isRunning;
|
|
18
|
+
private activeJobs;
|
|
19
|
+
private totalJobsProcessed;
|
|
20
|
+
private unsubscribe?;
|
|
21
|
+
constructor(executorFactory: JobExecutorFactory, eventBus: IEventBus, queue: IQueue, jobTracker: IJobTracker);
|
|
22
|
+
start(numExecutors: number): Promise<void>;
|
|
23
|
+
stop(graceful?: boolean): Promise<void>;
|
|
24
|
+
getExecutors(): IJobExecutor[];
|
|
25
|
+
getStatus(): ExecutorManagerStatus;
|
|
26
|
+
private processNextJob;
|
|
27
|
+
private checkForMoreJobs;
|
|
28
|
+
private processExistingJobs;
|
|
29
|
+
private toErrorInfo;
|
|
30
|
+
private formatErrorHistory;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=simple-job-executor-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-job-executor-manager.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIrD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAa,MAAM,YAAY,CAAC;AAGnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAQhE,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAa;gBAGvB,eAAe,EAAE,kBAAkB,EACnC,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW;IAG3B,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1C,IAAI,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1C,YAAY,IAAI,YAAY,EAAE;IAI9B,SAAS,IAAI,qBAAqB;YASpB,cAAc;YAiGd,gBAAgB;YAkBhB,mBAAmB;IAwBjC,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;CAwB3B"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { QueueEventTypes } from "../queue/types.js";
|
|
2
|
+
import { createConsistencyToken } from "./util.js";
|
|
3
|
+
/**
|
|
4
|
+
* Manages multiple job executors and coordinates job distribution.
|
|
5
|
+
* Listens for job available events and dispatches jobs to executors.
|
|
6
|
+
*/
|
|
7
|
+
export class SimpleJobExecutorManager {
|
|
8
|
+
executorFactory;
|
|
9
|
+
eventBus;
|
|
10
|
+
queue;
|
|
11
|
+
jobTracker;
|
|
12
|
+
executors = [];
|
|
13
|
+
isRunning = false;
|
|
14
|
+
activeJobs = 0;
|
|
15
|
+
totalJobsProcessed = 0;
|
|
16
|
+
unsubscribe;
|
|
17
|
+
constructor(executorFactory, eventBus, queue, jobTracker) {
|
|
18
|
+
this.executorFactory = executorFactory;
|
|
19
|
+
this.eventBus = eventBus;
|
|
20
|
+
this.queue = queue;
|
|
21
|
+
this.jobTracker = jobTracker;
|
|
22
|
+
}
|
|
23
|
+
async start(numExecutors) {
|
|
24
|
+
if (this.isRunning) {
|
|
25
|
+
throw new Error("JobExecutorManager is already running");
|
|
26
|
+
}
|
|
27
|
+
if (numExecutors < 1) {
|
|
28
|
+
throw new Error("Number of executors must be at least 1");
|
|
29
|
+
}
|
|
30
|
+
// Create executors
|
|
31
|
+
this.executors = [];
|
|
32
|
+
for (let i = 0; i < numExecutors; i++) {
|
|
33
|
+
this.executors.push(this.executorFactory());
|
|
34
|
+
}
|
|
35
|
+
// Start listening for job available events
|
|
36
|
+
this.unsubscribe = this.eventBus.subscribe(QueueEventTypes.JOB_AVAILABLE, async () => {
|
|
37
|
+
// Only process if we have capacity (simple round-robin for now)
|
|
38
|
+
if (this.activeJobs < this.executors.length) {
|
|
39
|
+
await this.processNextJob();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
this.isRunning = true;
|
|
43
|
+
// Process any existing jobs in the queue
|
|
44
|
+
await this.processExistingJobs();
|
|
45
|
+
}
|
|
46
|
+
async stop(graceful = true) {
|
|
47
|
+
if (!this.isRunning) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Stop listening for new jobs
|
|
51
|
+
if (this.unsubscribe) {
|
|
52
|
+
this.unsubscribe();
|
|
53
|
+
this.unsubscribe = undefined;
|
|
54
|
+
}
|
|
55
|
+
if (graceful) {
|
|
56
|
+
// Wait for active jobs to complete
|
|
57
|
+
while (this.activeJobs > 0) {
|
|
58
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
this.executors = [];
|
|
62
|
+
this.isRunning = false;
|
|
63
|
+
}
|
|
64
|
+
getExecutors() {
|
|
65
|
+
return [...this.executors];
|
|
66
|
+
}
|
|
67
|
+
getStatus() {
|
|
68
|
+
return {
|
|
69
|
+
isRunning: this.isRunning,
|
|
70
|
+
numExecutors: this.executors.length,
|
|
71
|
+
activeJobs: this.activeJobs,
|
|
72
|
+
totalJobsProcessed: this.totalJobsProcessed,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async processNextJob() {
|
|
76
|
+
// dequeue next available job
|
|
77
|
+
let handle;
|
|
78
|
+
try {
|
|
79
|
+
handle = await this.queue.dequeueNext();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error("Error dequeueing job:", error);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (!handle) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// start the job execution
|
|
89
|
+
handle.start();
|
|
90
|
+
this.activeJobs++;
|
|
91
|
+
this.jobTracker.markRunning(handle.job.id);
|
|
92
|
+
// Find an available executor (simple round-robin)
|
|
93
|
+
const executorIndex = this.totalJobsProcessed % this.executors.length;
|
|
94
|
+
const executor = this.executors[executorIndex];
|
|
95
|
+
// execute the job
|
|
96
|
+
let result;
|
|
97
|
+
try {
|
|
98
|
+
result = await executor.executeJob(handle.job);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
const errorInfo = this.toErrorInfo(error instanceof Error ? error : String(error));
|
|
102
|
+
console.error(`Error executing job ${handle.job.id}:`, errorInfo.message);
|
|
103
|
+
handle.fail(errorInfo);
|
|
104
|
+
this.activeJobs--;
|
|
105
|
+
this.jobTracker.markFailed(handle.job.id, errorInfo);
|
|
106
|
+
await this.checkForMoreJobs();
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
// handle the result
|
|
110
|
+
if (result.success) {
|
|
111
|
+
handle.complete();
|
|
112
|
+
this.totalJobsProcessed++;
|
|
113
|
+
const consistencyToken = createConsistencyToken(result.operationsWithContext || []);
|
|
114
|
+
this.jobTracker.markCompleted(handle.job.id, consistencyToken, result.operations);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Handle retry logic
|
|
118
|
+
const retryCount = handle.job.retryCount || 0;
|
|
119
|
+
const maxRetries = handle.job.maxRetries || 0;
|
|
120
|
+
if (retryCount < maxRetries) {
|
|
121
|
+
const currentErrorInfo = result.error
|
|
122
|
+
? this.toErrorInfo(result.error)
|
|
123
|
+
: this.toErrorInfo("Unknown error");
|
|
124
|
+
try {
|
|
125
|
+
await this.queue.retryJob(handle.job.id, currentErrorInfo);
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
const retryErrorInfo = this.toErrorInfo(error instanceof Error ? error : "Failed to retry job");
|
|
129
|
+
console.error(`Failed to retry job ${handle.job.id}:`, retryErrorInfo.message);
|
|
130
|
+
this.jobTracker.markFailed(handle.job.id, retryErrorInfo);
|
|
131
|
+
handle.fail(retryErrorInfo);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const currentErrorInfo = result.error
|
|
136
|
+
? this.toErrorInfo(result.error)
|
|
137
|
+
: this.toErrorInfo("Unknown error");
|
|
138
|
+
const fullErrorInfo = this.formatErrorHistory(handle.job.errorHistory, currentErrorInfo, retryCount + 1);
|
|
139
|
+
this.jobTracker.markFailed(handle.job.id, fullErrorInfo);
|
|
140
|
+
handle.fail(fullErrorInfo);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
this.activeJobs--;
|
|
144
|
+
await this.checkForMoreJobs();
|
|
145
|
+
}
|
|
146
|
+
async checkForMoreJobs() {
|
|
147
|
+
if (!this.isRunning) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
let hasMore;
|
|
151
|
+
try {
|
|
152
|
+
hasMore = await this.queue.hasJobs();
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.error("Error checking for more jobs:", error);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (hasMore) {
|
|
159
|
+
await this.processNextJob();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async processExistingJobs() {
|
|
163
|
+
let hasJobs;
|
|
164
|
+
try {
|
|
165
|
+
hasJobs = await this.queue.hasJobs();
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.error("Error checking for existing jobs:", error);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (hasJobs) {
|
|
172
|
+
// Start processing up to the number of executors
|
|
173
|
+
const promises = [];
|
|
174
|
+
for (let i = 0; i < Math.min(this.executors.length, 5); i++) {
|
|
175
|
+
promises.push(this.processNextJob());
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
await Promise.all(promises);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error("Error processing existing jobs:", error);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
toErrorInfo(error) {
|
|
186
|
+
if (error instanceof Error) {
|
|
187
|
+
return {
|
|
188
|
+
message: error.message,
|
|
189
|
+
stack: error.stack || new Error().stack || "",
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
message: error,
|
|
194
|
+
stack: new Error().stack || "",
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
formatErrorHistory(errorHistory, currentError, totalAttempts) {
|
|
198
|
+
const allErrors = [...errorHistory, currentError];
|
|
199
|
+
if (allErrors.length === 1) {
|
|
200
|
+
return currentError;
|
|
201
|
+
}
|
|
202
|
+
const messageLines = [`Job failed after ${totalAttempts} attempts:`];
|
|
203
|
+
const stackLines = [];
|
|
204
|
+
allErrors.forEach((error, index) => {
|
|
205
|
+
messageLines.push(`[Attempt ${index + 1}] ${error.message}`);
|
|
206
|
+
stackLines.push(`[Attempt ${index + 1}] Stack trace:\n${error.stack}`);
|
|
207
|
+
});
|
|
208
|
+
return {
|
|
209
|
+
message: messageLines.join("\n"),
|
|
210
|
+
stack: stackLines.join("\n\n"),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=simple-job-executor-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-job-executor-manager.js","sourceRoot":"","sources":["../../../src/executor/simple-job-executor-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { IDocumentOperationStorage, IDocumentStorage } from "document-drive";
|
|
2
|
+
import type { IOperationIndex } from "../cache/operation-index-types.js";
|
|
3
|
+
import type { IWriteCache } from "../cache/write/interfaces.js";
|
|
4
|
+
import type { IEventBus } from "../events/interfaces.js";
|
|
5
|
+
import type { Job } from "../queue/types.js";
|
|
6
|
+
import type { IDocumentModelRegistry } from "../registry/interfaces.js";
|
|
7
|
+
import type { IOperationStore } from "../storage/interfaces.js";
|
|
8
|
+
import type { IJobExecutor } from "./interfaces.js";
|
|
9
|
+
import type { JobExecutorConfig, JobResult } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Simple job executor that processes a job by applying actions through document model reducers.
|
|
12
|
+
*
|
|
13
|
+
* @see docs/planning/Storage/IOperationStore.md for storage schema
|
|
14
|
+
* @see docs/planning/Operations/index.md for operation structure
|
|
15
|
+
* @see docs/planning/Jobs/reshuffle.md for skip mechanism details
|
|
16
|
+
*/
|
|
17
|
+
export declare class SimpleJobExecutor implements IJobExecutor {
|
|
18
|
+
private registry;
|
|
19
|
+
private documentStorage;
|
|
20
|
+
private operationStorage;
|
|
21
|
+
private operationStore;
|
|
22
|
+
private eventBus;
|
|
23
|
+
private writeCache;
|
|
24
|
+
private operationIndex;
|
|
25
|
+
private config;
|
|
26
|
+
constructor(registry: IDocumentModelRegistry, documentStorage: IDocumentStorage, operationStorage: IDocumentOperationStorage, operationStore: IOperationStore, eventBus: IEventBus, writeCache: IWriteCache, operationIndex: IOperationIndex, config: JobExecutorConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Execute a single job by applying all its actions through the appropriate reducers.
|
|
29
|
+
* Actions are processed sequentially in order.
|
|
30
|
+
*/
|
|
31
|
+
executeJob(job: Job): Promise<JobResult>;
|
|
32
|
+
private processActions;
|
|
33
|
+
/**
|
|
34
|
+
* Execute a CREATE_DOCUMENT system action.
|
|
35
|
+
* This creates a new document in storage along with its initial operation.
|
|
36
|
+
* For a new document, the operation index is always 0.
|
|
37
|
+
*/
|
|
38
|
+
private executeCreateDocumentAction;
|
|
39
|
+
/**
|
|
40
|
+
* Execute a DELETE_DOCUMENT system action.
|
|
41
|
+
* This deletes a document from legacy storage and writes the operation to IOperationStore.
|
|
42
|
+
* The operation index is determined from the document's current operation count.
|
|
43
|
+
*/
|
|
44
|
+
private executeDeleteDocumentAction;
|
|
45
|
+
/**
|
|
46
|
+
* Execute an UPGRADE_DOCUMENT system action.
|
|
47
|
+
* This sets the document's initial state from the upgrade action.
|
|
48
|
+
* The operation index is determined from the document's current operation count.
|
|
49
|
+
*/
|
|
50
|
+
private executeUpgradeDocumentAction;
|
|
51
|
+
private executeAddRelationshipAction;
|
|
52
|
+
private executeRemoveRelationshipAction;
|
|
53
|
+
private createOperation;
|
|
54
|
+
private executeLoadJob;
|
|
55
|
+
private writeOperationToStore;
|
|
56
|
+
private updateDocumentRevision;
|
|
57
|
+
private writeCacheState;
|
|
58
|
+
private buildSuccessResult;
|
|
59
|
+
private buildErrorResult;
|
|
60
|
+
private accumulateResultOrReturnError;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=simple-job-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAYxB,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAU/D;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAIlD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IATxB,OAAO,CAAC,MAAM,CAA8B;gBAGlC,QAAQ,EAAE,sBAAsB,EAChC,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,EAAE,yBAAyB,EAC3C,cAAc,EAAE,eAAe,EAC/B,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EACvC,MAAM,EAAE,iBAAiB;IAW3B;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;YAiDhC,cAAc;IAiS5B;;;;OAIG;YACW,2BAA2B;IAgIzC;;;;OAIG;YACW,2BAA2B;IAuHzC;;;;OAIG;YACW,4BAA4B;YAoI5B,4BAA4B;YAoK5B,+BAA+B;IA8H7C,OAAO,CAAC,eAAe;YAcT,cAAc;YAqGd,qBAAqB;IAiCnC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,6BAA6B;CAgBtC"}
|