target-supabase-sdk 0.2.0 → 0.2.2
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 +130 -11
- package/dist/browser.d.ts +44 -36
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +6 -45
- package/dist/browser.js.map +1 -1
- package/dist/chunks/create-logger-DyH3mZ8p.js +1028 -0
- package/dist/chunks/create-logger-DyH3mZ8p.js.map +1 -0
- package/dist/chunks/enable-log-persist-BH-tbKEj.js +1481 -0
- package/dist/chunks/enable-log-persist-BH-tbKEj.js.map +1 -0
- package/dist/chunks/word.interface-DLgRobKV.js +1973 -0
- package/dist/chunks/word.interface-DLgRobKV.js.map +1 -0
- package/dist/command/command.api.d.ts +1 -1
- package/dist/command/command.api.d.ts.map +1 -1
- package/dist/command/command.interface.d.ts +1 -1
- package/dist/command/command.interface.d.ts.map +1 -1
- package/dist/core.api.d.ts +10 -6
- package/dist/core.api.d.ts.map +1 -1
- package/dist/core.interface.d.ts +3 -2
- package/dist/core.interface.d.ts.map +1 -1
- package/dist/core.utils.d.ts +1 -1
- package/dist/core.utils.d.ts.map +1 -1
- package/dist/idea/idea.interface.d.ts +1 -1
- package/dist/idea/idea.interface.d.ts.map +1 -1
- package/dist/link/link.api.d.ts +1 -1
- package/dist/link/link.api.d.ts.map +1 -1
- package/dist/link/link.interface.d.ts +2 -2
- package/dist/link/link.interface.d.ts.map +1 -1
- package/dist/list/list.api.d.ts +3 -1
- package/dist/list/list.api.d.ts.map +1 -1
- package/dist/list/list.interface.d.ts +2 -2
- package/dist/list/list.interface.d.ts.map +1 -1
- package/dist/node/env/env-parsers.d.ts +19 -0
- package/dist/node/env/env-parsers.d.ts.map +1 -0
- package/dist/node/env/index.d.ts +11 -0
- package/dist/node/env/index.d.ts.map +1 -0
- package/dist/node/env/init-supabase-from-env.d.ts +17 -0
- package/dist/node/env/init-supabase-from-env.d.ts.map +1 -0
- package/dist/node/env/load-env.d.ts +20 -0
- package/dist/node/env/load-env.d.ts.map +1 -0
- package/dist/node/env/project-root.d.ts +11 -0
- package/dist/node/env/project-root.d.ts.map +1 -0
- package/dist/node/env/public-base-url.d.ts +10 -0
- package/dist/node/env/public-base-url.d.ts.map +1 -0
- package/dist/node/env/require-env.d.ts +3 -0
- package/dist/node/env/require-env.d.ts.map +1 -0
- package/dist/node/fs/json-state-store.d.ts +19 -0
- package/dist/node/fs/json-state-store.d.ts.map +1 -0
- package/dist/node/fs/read-source-file.d.ts +19 -0
- package/dist/node/fs/read-source-file.d.ts.map +1 -0
- package/dist/node/node-liveness.d.ts +30 -0
- package/dist/node/node-liveness.d.ts.map +1 -0
- package/dist/node/node-runtime.base.d.ts +21 -3
- package/dist/node/node-runtime.base.d.ts.map +1 -1
- package/dist/node/node.api.d.ts +1 -1
- package/dist/node/node.api.d.ts.map +1 -1
- package/dist/node/node.interface.d.ts +1 -6
- package/dist/node/node.interface.d.ts.map +1 -1
- package/dist/node/preload/run-service-preload.d.ts +14 -0
- package/dist/node/preload/run-service-preload.d.ts.map +1 -0
- package/dist/node/preload/service-preload.interface.d.ts +15 -0
- package/dist/node/preload/service-preload.interface.d.ts.map +1 -0
- package/dist/node/process/index.d.ts +5 -0
- package/dist/node/process/index.d.ts.map +1 -0
- package/dist/node/process/managed-child-processes.d.ts +37 -0
- package/dist/node/process/managed-child-processes.d.ts.map +1 -0
- package/dist/node/process/process-spawn.d.ts +27 -0
- package/dist/node/process/process-spawn.d.ts.map +1 -0
- package/dist/node/readiness/index.d.ts +9 -0
- package/dist/node/readiness/index.d.ts.map +1 -0
- package/dist/node/readiness/poll-until.d.ts +11 -0
- package/dist/node/readiness/poll-until.d.ts.map +1 -0
- package/dist/node/readiness/readiness-checks.d.ts +22 -0
- package/dist/node/readiness/readiness-checks.d.ts.map +1 -0
- package/dist/node/readiness/readiness.types.d.ts +12 -0
- package/dist/node/readiness/readiness.types.d.ts.map +1 -0
- package/dist/node/readiness/run-readiness-checks.d.ts +4 -0
- package/dist/node/readiness/run-readiness-checks.d.ts.map +1 -0
- package/dist/node/readiness/service-ready-gate.d.ts +26 -0
- package/dist/node/readiness/service-ready-gate.d.ts.map +1 -0
- package/dist/node.d.ts +26 -12
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +2482 -18
- package/dist/node.js.map +1 -1
- package/dist/parcel/chunk-fetch-registry.d.ts +14 -0
- package/dist/parcel/chunk-fetch-registry.d.ts.map +1 -0
- package/dist/parcel/chunk-url.utils.d.ts +9 -0
- package/dist/parcel/chunk-url.utils.d.ts.map +1 -0
- package/dist/parcel/parcel-manager.d.ts +44 -20
- package/dist/parcel/parcel-manager.d.ts.map +1 -1
- package/dist/parcel/parcel.api.d.ts +306 -0
- package/dist/parcel/parcel.api.d.ts.map +1 -0
- package/dist/parcel/parcel.interface.d.ts +26 -5
- package/dist/parcel/parcel.interface.d.ts.map +1 -1
- package/dist/parcel/parcel.service.d.ts +38 -0
- package/dist/parcel/parcel.service.d.ts.map +1 -0
- package/dist/parcel/storage-provider-registry.d.ts +17 -0
- package/dist/parcel/storage-provider-registry.d.ts.map +1 -0
- package/dist/parcel/storage-provider.types.d.ts +31 -0
- package/dist/parcel/storage-provider.types.d.ts.map +1 -0
- package/dist/preload.d.ts +7 -0
- package/dist/preload.d.ts.map +1 -0
- package/dist/preload.js +47 -0
- package/dist/preload.js.map +1 -0
- package/dist/repo/repo-context.utils.d.ts.map +1 -1
- package/dist/repo/repo-manager.d.ts +1 -1
- package/dist/repo/repo-manager.d.ts.map +1 -1
- package/dist/repo/repo.api.d.ts +1 -1
- package/dist/repo/repo.api.d.ts.map +1 -1
- package/dist/repo/repo.interface.d.ts +1 -1
- package/dist/repo/repo.interface.d.ts.map +1 -1
- package/dist/repo/repo.script-loader.d.ts +3 -3
- package/dist/repo/repo.script-loader.d.ts.map +1 -1
- package/dist/service/base.interface.d.ts +54 -57
- package/dist/service/base.interface.d.ts.map +1 -1
- package/dist/service/index.d.ts +21 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/service.api.d.ts +503 -0
- package/dist/service/service.api.d.ts.map +1 -0
- package/dist/service/service.interface.d.ts +36 -9
- package/dist/service/service.interface.d.ts.map +1 -1
- package/dist/shared/http/fetch-retry.d.ts +21 -0
- package/dist/shared/http/fetch-retry.d.ts.map +1 -0
- package/dist/shared/log/create-logger.d.ts +27 -0
- package/dist/shared/log/create-logger.d.ts.map +1 -0
- package/dist/shared/log/enable-log-persist.d.ts +28 -0
- package/dist/shared/log/enable-log-persist.d.ts.map +1 -0
- package/dist/shared/log/index.d.ts +6 -6
- package/dist/shared/log/index.d.ts.map +1 -1
- package/dist/shared/log/log-manager.d.ts +25 -27
- package/dist/shared/log/log-manager.d.ts.map +1 -1
- package/dist/shared/log/log-persist-batch-id.d.ts +13 -0
- package/dist/shared/log/log-persist-batch-id.d.ts.map +1 -0
- package/dist/shared/log/log-persist-flush.d.ts +8 -0
- package/dist/shared/log/log-persist-flush.d.ts.map +1 -0
- package/dist/shared/log/log-persist-hook.d.ts +6 -0
- package/dist/shared/log/log-persist-hook.d.ts.map +1 -0
- package/dist/shared/log/log-persist-logger.d.ts +15 -0
- package/dist/shared/log/log-persist-logger.d.ts.map +1 -0
- package/dist/shared/log/log-persist-registry.d.ts +18 -0
- package/dist/shared/log/log-persist-registry.d.ts.map +1 -0
- package/dist/shared/log/log-persist.config.d.ts +10 -0
- package/dist/shared/log/log-persist.config.d.ts.map +1 -0
- package/dist/shared/log/log-persist.d.ts +55 -0
- package/dist/shared/log/log-persist.d.ts.map +1 -0
- package/dist/shared/log/log-persist.interface.d.ts +116 -0
- package/dist/shared/log/log-persist.interface.d.ts.map +1 -0
- package/dist/shared/log/log-scope.d.ts +25 -18
- package/dist/shared/log/log-scope.d.ts.map +1 -1
- package/dist/shared/utils/fetch-url.d.ts +3 -0
- package/dist/shared/utils/fetch-url.d.ts.map +1 -0
- package/dist/shared/utils/network-error.d.ts +14 -0
- package/dist/shared/utils/network-error.d.ts.map +1 -0
- package/dist/shared/utils/safe-file-name.d.ts +14 -0
- package/dist/shared/utils/safe-file-name.d.ts.map +1 -0
- package/dist/shared/utils/sha256.d.ts +3 -0
- package/dist/shared/utils/sha256.d.ts.map +1 -0
- package/dist/supabase.d.ts +7 -2
- package/dist/supabase.d.ts.map +1 -1
- package/dist/task/index.d.ts +8 -7
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/local-task-registry.d.ts +1 -1
- package/dist/task/local-task-registry.d.ts.map +1 -1
- package/dist/task/task-manager.d.ts +7 -9
- package/dist/task/task-manager.d.ts.map +1 -1
- package/dist/{node → task}/task-node.d.ts +2 -3
- package/dist/task/task-node.d.ts.map +1 -0
- package/dist/task/task-post-validated.api.d.ts +19 -0
- package/dist/task/task-post-validated.api.d.ts.map +1 -0
- package/dist/task/task-post.api.d.ts +10 -5
- package/dist/task/task-post.api.d.ts.map +1 -1
- package/dist/task/task-queue.d.ts +7 -0
- package/dist/task/task-queue.d.ts.map +1 -0
- package/dist/task/task-repo-context.d.ts.map +1 -1
- package/dist/task/task-repo-validation.d.ts +2 -2
- package/dist/task/task-repo-validation.d.ts.map +1 -1
- package/dist/task/task.api.d.ts +13 -13
- package/dist/task/task.api.d.ts.map +1 -1
- package/dist/task/task.constant.d.ts +4 -0
- package/dist/task/task.constant.d.ts.map +1 -0
- package/dist/task/task.interface.d.ts +1 -1
- package/dist/task/task.interface.d.ts.map +1 -1
- package/dist/trigger/trigger-manager.d.ts +25 -0
- package/dist/trigger/trigger-manager.d.ts.map +1 -0
- package/dist/trigger/trigger-node.d.ts +23 -0
- package/dist/trigger/trigger-node.d.ts.map +1 -0
- package/dist/trigger/trigger.api.d.ts +4 -4
- package/dist/trigger/trigger.api.d.ts.map +1 -1
- package/dist/trigger/trigger.constant.d.ts +8 -0
- package/dist/trigger/trigger.constant.d.ts.map +1 -0
- package/dist/trigger/trigger.interface.d.ts +46 -2
- package/dist/trigger/trigger.interface.d.ts.map +1 -1
- package/dist/word/word.api.d.ts +1 -1
- package/dist/word/word.api.d.ts.map +1 -1
- package/dist/word/word.interface.d.ts +2 -2
- package/dist/word/word.interface.d.ts.map +1 -1
- package/package.json +84 -74
- package/src/browser.ts +144 -79
- package/src/command/command.api.ts +19 -17
- package/src/command/command.interface.ts +2 -3
- package/src/core.api.ts +466 -477
- package/src/core.interface.ts +63 -62
- package/src/core.utils.ts +64 -64
- package/src/idea/idea.interface.ts +3 -3
- package/src/link/link.api.ts +28 -30
- package/src/link/link.interface.ts +3 -4
- package/src/list/list.api.ts +50 -29
- package/src/list/list.interface.ts +3 -4
- package/src/node/env/env-parsers.ts +77 -0
- package/src/node/env/index.ts +10 -0
- package/src/node/env/init-supabase-from-env.ts +38 -0
- package/src/node/env/load-env.ts +67 -0
- package/src/node/env/project-root.ts +34 -0
- package/src/node/env/public-base-url.ts +18 -0
- package/src/node/env/require-env.ts +15 -0
- package/src/node/fs/json-state-store.ts +97 -0
- package/src/node/fs/read-source-file.ts +75 -0
- package/src/node/node-liveness.ts +80 -0
- package/src/node/node-runtime.base.ts +135 -104
- package/src/node/node.api.ts +11 -10
- package/src/node/node.interface.ts +1 -8
- package/src/node/node.utils.ts +1 -1
- package/src/node/preload/run-service-preload.ts +48 -0
- package/src/node/preload/service-preload.interface.ts +14 -0
- package/src/node/process/index.ts +8 -0
- package/src/node/process/managed-child-processes.ts +121 -0
- package/src/node/process/process-spawn.ts +61 -0
- package/src/node/readiness/index.ts +20 -0
- package/src/node/readiness/poll-until.ts +27 -0
- package/src/node/readiness/readiness-checks.ts +79 -0
- package/src/node/readiness/readiness.types.ts +13 -0
- package/src/node/readiness/run-readiness-checks.ts +20 -0
- package/src/node/readiness/service-ready-gate.ts +65 -0
- package/src/node.ts +138 -47
- package/src/parcel/chunk-fetch-registry.ts +96 -0
- package/src/parcel/chunk-url.utils.ts +30 -0
- package/src/parcel/parcel-manager.ts +431 -173
- package/src/parcel/parcel.api.ts +103 -0
- package/src/parcel/parcel.interface.ts +44 -23
- package/src/parcel/parcel.service.ts +79 -0
- package/src/parcel/storage-provider-registry.ts +49 -0
- package/src/parcel/storage-provider.types.ts +45 -0
- package/src/preload.ts +7 -0
- package/src/repo/repo-context.utils.ts +3 -4
- package/src/repo/repo-manager.ts +7 -20
- package/src/repo/repo.api.ts +5 -5
- package/src/repo/repo.interface.ts +1 -2
- package/src/repo/repo.script-loader.ts +4 -8
- package/src/service/base.interface.ts +81 -90
- package/src/service/index.ts +173 -0
- package/src/service/service.api.ts +294 -0
- package/src/service/service.interface.ts +49 -17
- package/src/shared/http/fetch-retry.ts +145 -0
- package/src/shared/log/create-logger.ts +51 -0
- package/src/shared/log/enable-log-persist.ts +225 -0
- package/src/shared/log/index.ts +19 -11
- package/src/shared/log/log-manager.ts +65 -69
- package/src/shared/log/log-persist-batch-id.ts +43 -0
- package/src/shared/log/log-persist-flush.ts +128 -0
- package/src/shared/log/log-persist-hook.ts +13 -0
- package/src/shared/log/log-persist-logger.ts +33 -0
- package/src/shared/log/log-persist-registry.ts +252 -0
- package/src/shared/log/log-persist.config.ts +97 -0
- package/src/shared/log/log-persist.interface.ts +132 -0
- package/src/shared/log/log-persist.ts +704 -0
- package/src/shared/log/log-scope.ts +46 -46
- package/src/shared/utils/config-path.utils.ts +1 -1
- package/src/shared/utils/fetch-url.ts +13 -0
- package/src/shared/utils/network-error.ts +152 -0
- package/src/shared/utils/safe-file-name.ts +37 -0
- package/src/shared/utils/sha256.ts +15 -0
- package/src/supabase.ts +125 -119
- package/src/task/index.ts +31 -34
- package/src/task/local-task-registry.ts +9 -17
- package/src/task/task-manager.ts +34 -35
- package/src/{node → task}/task-node.ts +91 -73
- package/src/task/task-post-validated.api.ts +47 -0
- package/src/task/task-post.api.ts +81 -98
- package/src/task/task-queue.ts +18 -0
- package/src/task/task-repo-context.ts +2 -1
- package/src/task/task-repo-validation.ts +6 -8
- package/src/task/task.api.ts +61 -25
- package/src/task/task.constant.ts +4 -0
- package/src/task/task.interface.ts +4 -7
- package/src/trigger/trigger-manager.ts +287 -0
- package/src/trigger/trigger-node.ts +80 -0
- package/src/trigger/trigger.api.ts +11 -11
- package/src/trigger/trigger.constant.ts +10 -0
- package/src/trigger/trigger.interface.ts +52 -2
- package/src/trigger/trigger.utils.ts +1 -1
- package/src/word/word.api.ts +28 -30
- package/src/word/word.interface.ts +3 -4
- package/dist/auth/auth.api.d.ts +0 -28
- package/dist/auth/auth.api.d.ts.map +0 -1
- package/dist/auth/auth.api.js +0 -51
- package/dist/auth/auth.api.js.map +0 -1
- package/dist/command/command.api.js +0 -58
- package/dist/command/command.api.js.map +0 -1
- package/dist/command/command.interface.js +0 -9
- package/dist/command/command.interface.js.map +0 -1
- package/dist/core.api.js +0 -412
- package/dist/core.api.js.map +0 -1
- package/dist/core.interface.js +0 -46
- package/dist/core.interface.js.map +0 -1
- package/dist/core.utils.js +0 -81
- package/dist/core.utils.js.map +0 -1
- package/dist/feed/feed.interface.d.ts +0 -27
- package/dist/feed/feed.interface.d.ts.map +0 -1
- package/dist/feed/feed.interface.js +0 -17
- package/dist/feed/feed.interface.js.map +0 -1
- package/dist/file/file-manager.d.ts +0 -24
- package/dist/file/file-manager.d.ts.map +0 -1
- package/dist/file/file-manager.js +0 -109
- package/dist/file/file-manager.js.map +0 -1
- package/dist/file/file.api.d.ts +0 -15
- package/dist/file/file.api.d.ts.map +0 -1
- package/dist/file/file.api.js +0 -30
- package/dist/file/file.api.js.map +0 -1
- package/dist/file/file.interface.d.ts +0 -25
- package/dist/file/file.interface.d.ts.map +0 -1
- package/dist/file/file.interface.js +0 -9
- package/dist/file/file.interface.js.map +0 -1
- package/dist/file-list/file-list.api.d.ts +0 -15
- package/dist/file-list/file-list.api.d.ts.map +0 -1
- package/dist/file-list/file-list.api.js +0 -54
- package/dist/file-list/file-list.api.js.map +0 -1
- package/dist/file-list/file-list.interface.d.ts +0 -22
- package/dist/file-list/file-list.interface.d.ts.map +0 -1
- package/dist/file-list/file-list.interface.js +0 -5
- package/dist/file-list/file-list.interface.js.map +0 -1
- package/dist/idea/idea.interface.js +0 -15
- package/dist/idea/idea.interface.js.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/link/link.api.js +0 -30
- package/dist/link/link.api.js.map +0 -1
- package/dist/link/link.interface.js +0 -7
- package/dist/link/link.interface.js.map +0 -1
- package/dist/list/list.api.js +0 -30
- package/dist/list/list.api.js.map +0 -1
- package/dist/list/list.interface.js +0 -6
- package/dist/list/list.interface.js.map +0 -1
- package/dist/node/node-log-scope.d.ts +0 -11
- package/dist/node/node-log-scope.d.ts.map +0 -1
- package/dist/node/node-log-scope.js +0 -7
- package/dist/node/node-log-scope.js.map +0 -1
- package/dist/node/node-runtime.base.js +0 -397
- package/dist/node/node-runtime.base.js.map +0 -1
- package/dist/node/node-task.preset.d.ts +0 -1
- package/dist/node/node-task.preset.d.ts.map +0 -1
- package/dist/node/node-task.preset.js +0 -14
- package/dist/node/node-task.preset.js.map +0 -1
- package/dist/node/node.api.js +0 -100
- package/dist/node/node.api.js.map +0 -1
- package/dist/node/node.interface.js +0 -19
- package/dist/node/node.interface.js.map +0 -1
- package/dist/node/node.utils.js +0 -36
- package/dist/node/node.utils.js.map +0 -1
- package/dist/node/task-node.d.ts.map +0 -1
- package/dist/node/task-node.js +0 -245
- package/dist/node/task-node.js.map +0 -1
- package/dist/node/trigger-node.d.ts +0 -18
- package/dist/node/trigger-node.d.ts.map +0 -1
- package/dist/node/trigger-node.js +0 -150
- package/dist/node/trigger-node.js.map +0 -1
- package/dist/parcel/parcel-manager.js +0 -156
- package/dist/parcel/parcel-manager.js.map +0 -1
- package/dist/parcel/parcel.interface.js +0 -11
- package/dist/parcel/parcel.interface.js.map +0 -1
- package/dist/question-list/question-list.api.d.ts +0 -13
- package/dist/question-list/question-list.api.d.ts.map +0 -1
- package/dist/question-list/question-list.api.js +0 -35
- package/dist/question-list/question-list.api.js.map +0 -1
- package/dist/question-list/question-list.interface.d.ts +0 -18
- package/dist/question-list/question-list.interface.d.ts.map +0 -1
- package/dist/question-list/question-list.interface.js +0 -5
- package/dist/question-list/question-list.interface.js.map +0 -1
- package/dist/repo/repo-context.utils.js +0 -81
- package/dist/repo/repo-context.utils.js.map +0 -1
- package/dist/repo/repo-manager.js +0 -166
- package/dist/repo/repo-manager.js.map +0 -1
- package/dist/repo/repo.api.js +0 -40
- package/dist/repo/repo.api.js.map +0 -1
- package/dist/repo/repo.interface.js +0 -8
- package/dist/repo/repo.interface.js.map +0 -1
- package/dist/repo/repo.script-loader.js +0 -108
- package/dist/repo/repo.script-loader.js.map +0 -1
- package/dist/review/review.api.d.ts +0 -14
- package/dist/review/review.api.d.ts.map +0 -1
- package/dist/review/review.api.js +0 -133
- package/dist/review/review.api.js.map +0 -1
- package/dist/review/review.interface.d.ts +0 -24
- package/dist/review/review.interface.d.ts.map +0 -1
- package/dist/review/review.interface.js +0 -10
- package/dist/review/review.interface.js.map +0 -1
- package/dist/review-v2/apis/post-review-setting.api.d.ts +0 -12
- package/dist/review-v2/apis/post-review-setting.api.d.ts.map +0 -1
- package/dist/review-v2/apis/post-review-setting.api.js +0 -27
- package/dist/review-v2/apis/post-review-setting.api.js.map +0 -1
- package/dist/review-v2/apis/post-review.api.d.ts +0 -13
- package/dist/review-v2/apis/post-review.api.d.ts.map +0 -1
- package/dist/review-v2/apis/post-review.api.js +0 -46
- package/dist/review-v2/apis/post-review.api.js.map +0 -1
- package/dist/review-v2/review-setting.interface.d.ts +0 -23
- package/dist/review-v2/review-setting.interface.d.ts.map +0 -1
- package/dist/review-v2/review-setting.interface.js +0 -5
- package/dist/review-v2/review-setting.interface.js.map +0 -1
- package/dist/review-v2/review.interface.d.ts +0 -20
- package/dist/review-v2/review.interface.d.ts.map +0 -1
- package/dist/review-v2/review.interface.js +0 -5
- package/dist/review-v2/review.interface.js.map +0 -1
- package/dist/service/api.interface.d.ts +0 -35
- package/dist/service/api.interface.d.ts.map +0 -1
- package/dist/service/api.interface.js +0 -12
- package/dist/service/api.interface.js.map +0 -1
- package/dist/service/base.interface.js +0 -7
- package/dist/service/base.interface.js.map +0 -1
- package/dist/service/service.interface.js +0 -11
- package/dist/service/service.interface.js.map +0 -1
- package/dist/shared/log/create-api-logger.d.ts +0 -21
- package/dist/shared/log/create-api-logger.d.ts.map +0 -1
- package/dist/shared/log/create-api-logger.js +0 -19
- package/dist/shared/log/create-api-logger.js.map +0 -1
- package/dist/shared/log/index.js +0 -10
- package/dist/shared/log/index.js.map +0 -1
- package/dist/shared/log/log-manager.js +0 -237
- package/dist/shared/log/log-manager.js.map +0 -1
- package/dist/shared/log/log-scope.js +0 -70
- package/dist/shared/log/log-scope.js.map +0 -1
- package/dist/shared/utils/config-path.utils.js +0 -85
- package/dist/shared/utils/config-path.utils.js.map +0 -1
- package/dist/shared/utils/error.utils.js +0 -15
- package/dist/shared/utils/error.utils.js.map +0 -1
- package/dist/shared/utils/id.utils.js +0 -5
- package/dist/shared/utils/id.utils.js.map +0 -1
- package/dist/supabase.js +0 -100
- package/dist/supabase.js.map +0 -1
- package/dist/task/index.js +0 -14
- package/dist/task/index.js.map +0 -1
- package/dist/task/local-task-registry.js +0 -214
- package/dist/task/local-task-registry.js.map +0 -1
- package/dist/task/task-manager.js +0 -196
- package/dist/task/task-manager.js.map +0 -1
- package/dist/task/task-post.api.js +0 -91
- package/dist/task/task-post.api.js.map +0 -1
- package/dist/task/task-repo-context.js +0 -12
- package/dist/task/task-repo-context.js.map +0 -1
- package/dist/task/task-repo-validation.js +0 -96
- package/dist/task/task-repo-validation.js.map +0 -1
- package/dist/task/task.api.js +0 -303
- package/dist/task/task.api.js.map +0 -1
- package/dist/task/task.interface.js +0 -36
- package/dist/task/task.interface.js.map +0 -1
- package/dist/task/task.utils.js +0 -2
- package/dist/task/task.utils.js.map +0 -1
- package/dist/trigger/trigger.api.js +0 -125
- package/dist/trigger/trigger.api.js.map +0 -1
- package/dist/trigger/trigger.interface.js +0 -11
- package/dist/trigger/trigger.interface.js.map +0 -1
- package/dist/trigger/trigger.utils.js +0 -39
- package/dist/trigger/trigger.utils.js.map +0 -1
- package/dist/word/word.api.js +0 -30
- package/dist/word/word.api.js.map +0 -1
- package/dist/word/word.interface.js +0 -6
- package/dist/word/word.interface.js.map +0 -1
- package/src/auth/auth.api.ts +0 -87
- package/src/feed/feed.interface.ts +0 -33
- package/src/file/file-manager.ts +0 -145
- package/src/file/file.api.ts +0 -43
- package/src/file/file.interface.ts +0 -30
- package/src/file-list/file-list.api.ts +0 -64
- package/src/file-list/file-list.interface.ts +0 -24
- package/src/node/node-log-scope.ts +0 -15
- package/src/node/node-task.preset.ts +0 -13
- package/src/node/trigger-node.ts +0 -180
- package/src/question-list/question-list.api.ts +0 -42
- package/src/question-list/question-list.interface.ts +0 -21
- package/src/review/review.api.ts +0 -145
- package/src/review/review.interface.ts +0 -26
- package/src/review-v2/apis/post-review-setting.api.ts +0 -35
- package/src/review-v2/apis/post-review.api.ts +0 -59
- package/src/review-v2/review-setting.interface.ts +0 -26
- package/src/review-v2/review.interface.ts +0 -23
- package/src/service/api.interface.ts +0 -47
- package/src/shared/log/create-api-logger.ts +0 -36
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { validateWithSchema } from "../core.api";
|
|
2
|
+
import { generateResponse, type SupabaseResponse } from "../core.interface";
|
|
3
|
+
import { createLogger, logManager } from "../shared/log";
|
|
4
|
+
import type { Task } from "./task.interface";
|
|
5
|
+
import { createTaskRow, postTaskSchema } from "./task-post.api";
|
|
6
|
+
import { TaskRepoValidation } from "./task-repo-validation";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Create a task row with publish-time Repo + params validation.
|
|
10
|
+
* **Node entry only** — requires local Repo bootstrap and {@link TaskRepoValidation}.
|
|
11
|
+
*
|
|
12
|
+
* @see target-supabase-sdk/node
|
|
13
|
+
*/
|
|
14
|
+
export const postTaskWithValidation = validateWithSchema(
|
|
15
|
+
postTaskSchema,
|
|
16
|
+
"postTaskSchema",
|
|
17
|
+
)(async ({ name, value, params, taskStatus, tagList, extra, traceId, traceParentId }) => {
|
|
18
|
+
const taskTraceId = traceId?.trim() || logManager.generateTraceId();
|
|
19
|
+
const logger = createLogger({
|
|
20
|
+
module: "postTaskWithValidation",
|
|
21
|
+
traceId: taskTraceId,
|
|
22
|
+
traceParentId: traceParentId ?? null,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const validation = await TaskRepoValidation.validate({
|
|
26
|
+
logger,
|
|
27
|
+
taskTypeKey: value,
|
|
28
|
+
params,
|
|
29
|
+
bootstrapLocal: true,
|
|
30
|
+
});
|
|
31
|
+
if (!validation.isValid) {
|
|
32
|
+
logger.warn(validation.message, {
|
|
33
|
+
topic: "task",
|
|
34
|
+
data: {
|
|
35
|
+
taskTypeKey: value,
|
|
36
|
+
reason: validation.reason,
|
|
37
|
+
step: validation.step,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return generateResponse.error(validation.message, undefined, String(validation.code)) as SupabaseResponse<Task>;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return createTaskRow(
|
|
44
|
+
{ name, value, params, taskStatus, tagList, extra, traceId, traceParentId, taskTraceId },
|
|
45
|
+
logger,
|
|
46
|
+
);
|
|
47
|
+
});
|
|
@@ -1,116 +1,99 @@
|
|
|
1
|
-
import { createTarget, validateWithSchema } from "../core.api";
|
|
2
|
-
import { generateResponse, type SupabaseResponse } from "../core.interface";
|
|
3
|
-
import { createApiLogger, logManager } from "../shared/log";
|
|
4
1
|
import { z } from "zod";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { createTarget, validateWithSchema } from "../core.api";
|
|
3
|
+
import type { SupabaseResponse } from "../core.interface";
|
|
4
|
+
import { createLogger, type LoggerWithScope, logManager } from "../shared/log";
|
|
5
|
+
import { CategoryTask, type Task, TaskStatus } from "./task.interface";
|
|
7
6
|
|
|
8
7
|
const traceIdSchema = z.string().trim().min(1).optional();
|
|
9
8
|
const traceParentIdSchema = z.string().trim().min(1).nullable().optional();
|
|
10
9
|
|
|
11
10
|
/** Initial status for a new task — OPEN (draft) or TODO (claimable by workers). */
|
|
12
11
|
const postTaskInitialStatusSchema = z
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
.union([z.literal(TaskStatus.OPEN), z.literal(TaskStatus.TODO)])
|
|
13
|
+
.optional()
|
|
14
|
+
.default(TaskStatus.TODO);
|
|
16
15
|
|
|
17
16
|
export const postTaskSchema = z.object({
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
name: z.string().trim().min(1),
|
|
18
|
+
/** Task type key — matches `task.value`, {@link patchClaimTask}, {@link Repo.value}, and local Repo registry. */
|
|
19
|
+
value: z.string().trim().min(1),
|
|
20
|
+
params: z.unknown(),
|
|
21
|
+
taskStatus: postTaskInitialStatusSchema,
|
|
22
|
+
tagList: z.array(z.string()).optional().default([]),
|
|
23
|
+
extra: z.string().optional(),
|
|
24
|
+
traceId: traceIdSchema,
|
|
25
|
+
traceParentId: traceParentIdSchema,
|
|
27
26
|
});
|
|
28
27
|
|
|
29
28
|
export type PostTaskPayload = z.infer<typeof postTaskSchema>;
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
* @see target-supabase-sdk/node
|
|
35
|
-
*/
|
|
36
|
-
export const postTask = validateWithSchema(
|
|
37
|
-
postTaskSchema,
|
|
38
|
-
"postTaskSchema",
|
|
39
|
-
)(async ({
|
|
40
|
-
name,
|
|
41
|
-
value,
|
|
42
|
-
params,
|
|
43
|
-
taskStatus,
|
|
44
|
-
tagList,
|
|
45
|
-
extra,
|
|
46
|
-
traceId,
|
|
47
|
-
traceParentId,
|
|
48
|
-
}) => {
|
|
49
|
-
const taskTraceId = traceId?.trim() || logManager.generateTraceId();
|
|
50
|
-
const logger = createApiLogger("postTask", {
|
|
51
|
-
traceId: taskTraceId,
|
|
52
|
-
traceParentId: traceParentId ?? null,
|
|
53
|
-
});
|
|
30
|
+
export type CreateTaskRowInput = PostTaskPayload & {
|
|
31
|
+
taskTraceId: string;
|
|
32
|
+
};
|
|
54
33
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
34
|
+
/** Shared DB insert for {@link postTask} and {@link postTaskWithValidation}. */
|
|
35
|
+
export async function createTaskRow(
|
|
36
|
+
{ name, value, params, taskStatus, tagList, extra, taskTraceId, traceParentId }: CreateTaskRowInput,
|
|
37
|
+
logger: LoggerWithScope,
|
|
38
|
+
): Promise<SupabaseResponse<Task>> {
|
|
39
|
+
const result = await createTarget<Task, PostTaskPayload>({
|
|
40
|
+
payload: {
|
|
41
|
+
name,
|
|
42
|
+
value,
|
|
43
|
+
params,
|
|
44
|
+
taskStatus,
|
|
45
|
+
tagList,
|
|
46
|
+
extra,
|
|
47
|
+
traceId: taskTraceId,
|
|
48
|
+
traceParentId,
|
|
49
|
+
},
|
|
50
|
+
createFn: () => ({
|
|
51
|
+
name,
|
|
52
|
+
value,
|
|
53
|
+
category: CategoryTask.TASK,
|
|
54
|
+
tagList,
|
|
55
|
+
extra,
|
|
56
|
+
details: {
|
|
57
|
+
manifestVersion: 0,
|
|
58
|
+
status: taskStatus,
|
|
59
|
+
params,
|
|
60
|
+
progress: 0,
|
|
61
|
+
nodeId: null,
|
|
62
|
+
traceId: taskTraceId,
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
});
|
|
76
66
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
traceParentId,
|
|
87
|
-
},
|
|
88
|
-
createFn: () => ({
|
|
89
|
-
name,
|
|
90
|
-
value,
|
|
91
|
-
category: CategoryTask.TASK,
|
|
92
|
-
tagList,
|
|
93
|
-
extra,
|
|
94
|
-
details: {
|
|
95
|
-
manifestVersion: 0,
|
|
96
|
-
status: taskStatus,
|
|
97
|
-
params,
|
|
98
|
-
progress: 0,
|
|
99
|
-
nodeId: null,
|
|
100
|
-
traceId: taskTraceId,
|
|
101
|
-
},
|
|
102
|
-
}),
|
|
103
|
-
});
|
|
67
|
+
logger.info("任務已創建", {
|
|
68
|
+
topic: "task",
|
|
69
|
+
data: {
|
|
70
|
+
taskId: result.data?.id,
|
|
71
|
+
taskTypeKey: value,
|
|
72
|
+
status: taskStatus,
|
|
73
|
+
traceId: taskTraceId,
|
|
74
|
+
},
|
|
75
|
+
});
|
|
104
76
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Create a task row (scheduler / admin). **Browser and Node** — no Repo or params validation.
|
|
82
|
+
* Execution-time checks live in {@link TaskManager.prepareTask}.
|
|
83
|
+
*/
|
|
84
|
+
export const postTask = validateWithSchema(
|
|
85
|
+
postTaskSchema,
|
|
86
|
+
"postTaskSchema",
|
|
87
|
+
)(async ({ name, value, params, taskStatus, tagList, extra, traceId, traceParentId }) => {
|
|
88
|
+
const taskTraceId = traceId?.trim() || logManager.generateTraceId();
|
|
89
|
+
const logger = createLogger({
|
|
90
|
+
module: "postTask",
|
|
91
|
+
traceId: taskTraceId,
|
|
92
|
+
traceParentId: traceParentId ?? null,
|
|
93
|
+
});
|
|
114
94
|
|
|
115
|
-
|
|
95
|
+
return createTaskRow(
|
|
96
|
+
{ name, value, params, taskStatus, tagList, extra, traceId, traceParentId, taskTraceId },
|
|
97
|
+
logger,
|
|
98
|
+
);
|
|
116
99
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Task, TaskStatus } from "./task.interface";
|
|
2
|
+
|
|
3
|
+
export type TaskStatusCount = Partial<Record<TaskStatus, number>>;
|
|
4
|
+
|
|
5
|
+
/** Count tasks of `taskType` grouped by each requested status. */
|
|
6
|
+
export function countTasksByType(tasks: Task[], taskType: string, statuses: TaskStatus[]): TaskStatusCount {
|
|
7
|
+
const filtered = tasks.filter((task) => task.value === taskType);
|
|
8
|
+
const counts: TaskStatusCount = {};
|
|
9
|
+
for (const status of statuses) {
|
|
10
|
+
counts[status] = filtered.filter((task) => task.details.status === status).length;
|
|
11
|
+
}
|
|
12
|
+
return counts;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Total tasks of `taskType` whose status is in `statuses`. */
|
|
16
|
+
export function summarizeTaskQueue(tasks: Task[], taskType: string, statuses: TaskStatus[]): number {
|
|
17
|
+
return tasks.filter((task) => task.value === taskType && statuses.includes(task.details.status)).length;
|
|
18
|
+
}
|
|
@@ -96,7 +96,8 @@ export const TASK_RUNNER_CONFIG_DIR = "config" as const;
|
|
|
96
96
|
export const TASK_RUNNER_ROOT_CONFIG_FILENAME = "task.config.js" as const;
|
|
97
97
|
|
|
98
98
|
/** Default root config path: `config/task.config.js` */
|
|
99
|
-
export const TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH =
|
|
99
|
+
export const TASK_RUNNER_ROOT_CONFIG_RELATIVE_PATH =
|
|
100
|
+
`${TASK_RUNNER_CONFIG_DIR}/${TASK_RUNNER_ROOT_CONFIG_FILENAME}` as const;
|
|
100
101
|
|
|
101
102
|
/** Legacy fallback at project root */
|
|
102
103
|
export const TASK_RUNNER_ROOT_CONFIG_LEGACY_RELATIVE_PATH = TASK_RUNNER_ROOT_CONFIG_FILENAME;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { LoggerWithScope } from "../shared/log";
|
|
3
|
-
import {
|
|
1
|
+
import { type RepoContextFailureReason, RepoManager } from "../repo/repo-manager";
|
|
2
|
+
import type { LoggerWithScope } from "../shared/log";
|
|
3
|
+
import { type BootstrapLocalTasksOptions, bootstrapLocalTasks } from "./local-task-registry";
|
|
4
4
|
import { ResultCode } from "./task.interface";
|
|
5
5
|
import type { TaskRepoContext } from "./task-repo-context";
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ export type ValidateTaskRepoAndParamsInput = {
|
|
|
15
15
|
taskTypeKey: string;
|
|
16
16
|
params: unknown;
|
|
17
17
|
/**
|
|
18
|
-
* When true, run {@link bootstrapLocalTasks} before resolve (CLI / Trigger /
|
|
18
|
+
* When true, run {@link bootstrapLocalTasks} before resolve (CLI / Trigger / postTaskWithValidation).
|
|
19
19
|
* Worker paths should omit — {@link TaskManager.registerTasks} already bootstrapped.
|
|
20
20
|
*/
|
|
21
21
|
bootstrapLocal?: boolean;
|
|
@@ -40,14 +40,12 @@ export type ValidateTaskRepoAndParamsSuccess = {
|
|
|
40
40
|
repoContext: TaskRepoContext;
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
-
export type ValidateTaskRepoAndParamsResult =
|
|
44
|
-
| ValidateTaskRepoAndParamsFailure
|
|
45
|
-
| ValidateTaskRepoAndParamsSuccess;
|
|
43
|
+
export type ValidateTaskRepoAndParamsResult = ValidateTaskRepoAndParamsFailure | ValidateTaskRepoAndParamsSuccess;
|
|
46
44
|
|
|
47
45
|
function validateTaskParams(
|
|
48
46
|
validator: TaskRepoContext["taskParamsValidator"],
|
|
49
47
|
taskParams: unknown,
|
|
50
|
-
logger: LoggerWithScope
|
|
48
|
+
logger: LoggerWithScope,
|
|
51
49
|
): boolean {
|
|
52
50
|
try {
|
|
53
51
|
return validator(taskParams) === true;
|
package/src/task/task.api.ts
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import { createTarget, getPossibleTarget, QueryFilter, updateTargetDetails, validateWithSchema, isOptimisticLockError, OPTIMISTIC_LOCK_FAILED_MESSAGE } from "../core.api";
|
|
2
|
-
import { generateResponse, type SupabaseResponse } from "../core.interface";
|
|
3
|
-
import { createApiLogger, logManager, type LoggerWithScope } from "../shared/log";
|
|
4
1
|
import { z } from "zod";
|
|
5
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
getTargetList,
|
|
4
|
+
isOptimisticLockError,
|
|
5
|
+
OPTIMISTIC_LOCK_ERROR_CODE,
|
|
6
|
+
OPTIMISTIC_LOCK_FAILED_MESSAGE,
|
|
7
|
+
type QueryFilter,
|
|
8
|
+
updateTargetDetails,
|
|
9
|
+
validateWithSchema,
|
|
10
|
+
} from "../core.api";
|
|
11
|
+
import { generateResponse, type SupabaseResponse } from "../core.interface";
|
|
12
|
+
import { createLogger, type LoggerWithScope } from "../shared/log";
|
|
13
|
+
import { getErrorMessage } from "../shared/utils/error.utils";
|
|
14
|
+
import { LOG_TOPIC_TASK } from "./task.constant";
|
|
15
|
+
import { CategoryTask, ResultCode, type Task, type TaskDetails, TaskStatus, TaskStatusAction } from "./task.interface";
|
|
6
16
|
|
|
7
17
|
const TASK_STATUS_FIELD = "details->>status" as const;
|
|
8
18
|
const TASK_NODE_ID_FIELD = "details->>nodeId" as const;
|
|
@@ -46,7 +56,7 @@ const taskIdSchema = z.string().trim().min(1);
|
|
|
46
56
|
const nodeIdSchema = z.string().trim().min(1);
|
|
47
57
|
/** Optional — orchestrator (e.g. TaskNode loop) passes its trace to correlate logs. */
|
|
48
58
|
const traceIdSchema = z.string().trim().min(1).optional();
|
|
49
|
-
const
|
|
59
|
+
const _traceParentIdSchema = z.string().trim().min(1).nullable().optional();
|
|
50
60
|
|
|
51
61
|
const patchChangeTaskStatusBaseSchema = {
|
|
52
62
|
id: taskIdSchema,
|
|
@@ -163,10 +173,10 @@ function logTaskTransition(
|
|
|
163
173
|
logger: LoggerWithScope,
|
|
164
174
|
action: TaskStatusAction | "patchTaskProgress" | "patchClaimTask",
|
|
165
175
|
task: Task,
|
|
166
|
-
data?: Record<string, unknown
|
|
176
|
+
data?: Record<string, unknown>,
|
|
167
177
|
): void {
|
|
168
|
-
logger.
|
|
169
|
-
topic:
|
|
178
|
+
logger.debug("任務狀態遷移成功", {
|
|
179
|
+
topic: LOG_TOPIC_TASK,
|
|
170
180
|
data: {
|
|
171
181
|
action,
|
|
172
182
|
taskId: task.id,
|
|
@@ -204,9 +214,9 @@ async function claimTaskById({
|
|
|
204
214
|
|
|
205
215
|
export const patchChangeTaskStatus = validateWithSchema(
|
|
206
216
|
patchChangeTaskStatusSchema,
|
|
207
|
-
"patchChangeTaskStatusSchema"
|
|
217
|
+
"patchChangeTaskStatusSchema",
|
|
208
218
|
)(async (params) => {
|
|
209
|
-
const logger =
|
|
219
|
+
const logger = createLogger({ module: "patchChangeTaskStatus", traceId: params.traceId });
|
|
210
220
|
const { id, action, extra } = params;
|
|
211
221
|
const updateExtraFn = extra == null ? undefined : () => extra;
|
|
212
222
|
|
|
@@ -308,9 +318,9 @@ export const patchChangeTaskStatus = validateWithSchema(
|
|
|
308
318
|
/** Update progress on a DOING task; only the owning node may write (see `lockOnDoingOwner`). */
|
|
309
319
|
export const patchTaskProgress = validateWithSchema(
|
|
310
320
|
patchTaskProgressSchema,
|
|
311
|
-
"patchTaskProgressSchema"
|
|
321
|
+
"patchTaskProgressSchema",
|
|
312
322
|
)(async ({ id, progress, nodeId, traceId }) => {
|
|
313
|
-
const logger =
|
|
323
|
+
const logger = createLogger({ module: "patchTaskProgress", traceId, labels: { nodeId } });
|
|
314
324
|
const data = await transitionTask({
|
|
315
325
|
id,
|
|
316
326
|
optimisticLockFilterList: lockOnDoingOwner(nodeId),
|
|
@@ -328,42 +338,68 @@ export const patchTaskProgress = validateWithSchema(
|
|
|
328
338
|
/**
|
|
329
339
|
* Discover and claim one TODO task for this node.
|
|
330
340
|
*
|
|
331
|
-
* Flow:
|
|
341
|
+
* Flow: oldest TODO in `availableTaskList` (FIFO by `created_at`) → {@link claimTaskById}.
|
|
332
342
|
* Equivalent to `patchChangeTaskStatus({ id, action: CLAIM, nodeId })` when `id` is already known.
|
|
333
343
|
*
|
|
334
344
|
* Returns `data: null` when no TODO task matches.
|
|
335
|
-
* Optimistic lock conflicts return `{ error
|
|
345
|
+
* Optimistic lock conflicts return `{ error, code: OPTIMISTIC_LOCK_ERROR_CODE }` (not thrown).
|
|
336
346
|
*/
|
|
337
347
|
export const patchClaimTask = validateWithSchema(
|
|
338
348
|
patchClaimTaskSchema,
|
|
339
|
-
"patchClaimTaskSchema"
|
|
349
|
+
"patchClaimTaskSchema",
|
|
340
350
|
)(async ({ nodeId, availableTaskList, traceId }): Promise<SupabaseResponse<Task | null>> => {
|
|
341
|
-
const logger =
|
|
351
|
+
const logger = createLogger({ module: "patchClaimTask", traceId, labels: { nodeId } });
|
|
342
352
|
|
|
353
|
+
let todoTask: Task;
|
|
343
354
|
try {
|
|
344
|
-
const { data:
|
|
355
|
+
const { data: taskCandidates } = await getTargetList<Task>({
|
|
356
|
+
category: CategoryTask.TASK,
|
|
345
357
|
filterList: [
|
|
346
|
-
{ field: "category", operator: "eq", value: CategoryTask.TASK },
|
|
347
358
|
{ field: TASK_STATUS_FIELD, operator: "eq", value: TaskStatus.TODO },
|
|
348
359
|
{ field: "value", operator: "in", value: availableTaskList },
|
|
349
360
|
],
|
|
361
|
+
limit: 1,
|
|
362
|
+
orderBy: { field: "created_at", ascending: true },
|
|
350
363
|
});
|
|
351
|
-
|
|
364
|
+
const possibleTask = taskCandidates?.[0] ?? null;
|
|
352
365
|
if (possibleTask == null) {
|
|
353
366
|
return generateResponse.success(null);
|
|
354
367
|
}
|
|
368
|
+
todoTask = possibleTask;
|
|
369
|
+
} catch (error) {
|
|
370
|
+
const message = getErrorMessage(error);
|
|
371
|
+
logger.error("獲取 TODO 任務失敗", { topic: LOG_TOPIC_TASK, data: { error: message, availableTaskList } });
|
|
372
|
+
return generateResponse.error(message) as SupabaseResponse<Task | null>;
|
|
373
|
+
}
|
|
355
374
|
|
|
356
|
-
|
|
375
|
+
const taskLogger = createLogger({
|
|
376
|
+
module: "patchClaimTask",
|
|
377
|
+
traceId,
|
|
378
|
+
traceParentId: todoTask.details.traceId,
|
|
379
|
+
labels: { nodeId },
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
try {
|
|
357
383
|
const data = await claimTaskById({ taskId: todoTask.id, nodeId });
|
|
358
|
-
logTaskTransition(
|
|
384
|
+
logTaskTransition(taskLogger, "patchClaimTask", data);
|
|
359
385
|
return generateResponse.success(data);
|
|
360
386
|
} catch (error) {
|
|
361
387
|
if (isOptimisticLockError(error)) {
|
|
362
|
-
|
|
363
|
-
|
|
388
|
+
taskLogger.debug("認領競爭失敗,任務已被其他節點認領", {
|
|
389
|
+
topic: LOG_TOPIC_TASK,
|
|
390
|
+
data: { taskId: todoTask.id, taskTypeKey: todoTask.value },
|
|
391
|
+
});
|
|
392
|
+
return generateResponse.error(
|
|
393
|
+
OPTIMISTIC_LOCK_FAILED_MESSAGE,
|
|
394
|
+
undefined,
|
|
395
|
+
OPTIMISTIC_LOCK_ERROR_CODE,
|
|
396
|
+
) as SupabaseResponse<Task | null>;
|
|
364
397
|
}
|
|
365
|
-
const message =
|
|
366
|
-
|
|
398
|
+
const message = getErrorMessage(error);
|
|
399
|
+
taskLogger.error("認領任務失敗", {
|
|
400
|
+
topic: LOG_TOPIC_TASK,
|
|
401
|
+
data: { error: message, taskId: todoTask.id, taskTypeKey: todoTask.value },
|
|
402
|
+
});
|
|
367
403
|
return generateResponse.error(message) as SupabaseResponse<Task | null>;
|
|
368
404
|
}
|
|
369
405
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Target } from "../core.interface";
|
|
1
|
+
import type { Target } from "../core.interface";
|
|
2
2
|
|
|
3
3
|
export enum CategoryTask {
|
|
4
4
|
TASK = "task",
|
|
@@ -60,11 +60,8 @@ export interface TaskDetails {
|
|
|
60
60
|
code: ResultCode;
|
|
61
61
|
errorMessage?: string;
|
|
62
62
|
data?: unknown;
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
// TODO loop condition combination
|
|
67
|
-
export interface TaskFlow extends Target {
|
|
68
|
-
|
|
63
|
+
};
|
|
69
64
|
}
|
|
70
65
|
|
|
66
|
+
// TODO loop condition combination
|
|
67
|
+
export interface TaskFlow extends Target {}
|