@tailor-platform/sdk 2.0.0-next.2 → 2.0.0-next.3
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/CHANGELOG.md +466 -10
- package/README.md +9 -9
- package/agent-skills/{tailor-sdk → tailor}/SKILL.md +3 -1
- package/dist/aigateway-B3oZZE6v.mjs +15 -0
- package/dist/aigateway-B3oZZE6v.mjs.map +1 -0
- package/dist/application-D2hSK1ZL.mjs +3 -0
- package/dist/application-eHp9jXld.mjs +6393 -0
- package/dist/application-eHp9jXld.mjs.map +1 -0
- package/dist/{authconnection-D2MhtTN5.mjs → authconnection-BGQM8FZI.mjs} +2 -2
- package/dist/authconnection-BGQM8FZI.mjs.map +1 -0
- package/dist/cli/cache/bundle-cache.d.mts +1 -0
- package/dist/cli/cache/store.d.mts +1 -0
- package/dist/cli/cache/types.d.mts +1 -0
- package/dist/cli/commands/api/api-call.d.mts +19 -0
- package/dist/cli/commands/api/index.d.mts +3 -0
- package/dist/cli/commands/deploy/aigateway.d.mts +1 -0
- package/dist/cli/commands/deploy/application.d.mts +1 -0
- package/dist/cli/commands/deploy/apply-phases.d.mts +1 -0
- package/dist/cli/commands/deploy/auth.d.mts +1 -0
- package/dist/cli/commands/deploy/deploy.d.mts +24 -0
- package/dist/cli/commands/deploy/executor.d.mts +1 -0
- package/dist/cli/commands/deploy/function-registry-types.d.mts +12 -0
- package/dist/cli/commands/deploy/function-registry.d.mts +2 -0
- package/dist/cli/commands/deploy/idp.d.mts +1 -0
- package/dist/cli/commands/deploy/resolver.d.mts +1 -0
- package/dist/cli/commands/deploy/secret-manager.d.mts +1 -0
- package/dist/cli/commands/deploy/staticwebsite.d.mts +1 -0
- package/dist/cli/commands/deploy/tailordb/index.d.mts +1 -0
- package/dist/cli/commands/deploy/types.d.mts +1 -0
- package/dist/cli/commands/deploy/workflow.d.mts +1 -0
- package/dist/cli/commands/executor/get.d.mts +29 -0
- package/dist/cli/commands/executor/jobs.d.mts +123 -0
- package/dist/cli/commands/executor/list.d.mts +19 -0
- package/dist/cli/commands/executor/transform.d.mts +41 -0
- package/dist/cli/commands/executor/trigger.d.mts +41 -0
- package/dist/cli/commands/executor/webhook.d.mts +22 -0
- package/dist/cli/commands/function/get.d.mts +18 -0
- package/dist/cli/commands/function/list.d.mts +22 -0
- package/dist/cli/commands/function/transform.d.mts +11 -0
- package/dist/cli/commands/generate/options.d.mts +7 -0
- package/dist/cli/commands/generate/seed/bundler.d.mts +26 -0
- package/dist/cli/commands/generate/service.d.mts +11 -0
- package/dist/cli/commands/machineuser/list.d.mts +27 -0
- package/dist/cli/commands/machineuser/token.d.mts +22 -0
- package/dist/cli/commands/oauth2client/get.d.mts +18 -0
- package/dist/cli/commands/oauth2client/list.d.mts +20 -0
- package/dist/cli/commands/oauth2client/transform.d.mts +20 -0
- package/dist/cli/commands/organization/folder/create.d.mts +18 -0
- package/dist/cli/commands/organization/folder/delete.d.mts +16 -0
- package/dist/cli/commands/organization/folder/get.d.mts +17 -0
- package/dist/cli/commands/organization/folder/list.d.mts +22 -0
- package/dist/cli/commands/organization/folder/update.d.mts +18 -0
- package/dist/cli/commands/organization/get.d.mts +16 -0
- package/dist/cli/commands/organization/list.d.mts +15 -0
- package/dist/cli/commands/organization/transform.d.mts +27 -0
- package/dist/cli/commands/organization/tree.d.mts +25 -0
- package/dist/cli/commands/organization/update.d.mts +17 -0
- package/dist/cli/commands/remove.d.mts +16 -0
- package/dist/cli/commands/show.d.mts +34 -0
- package/dist/cli/commands/tailordb/migrate/bundler.d.mts +28 -0
- package/dist/cli/commands/tailordb/migrate/config.d.mts +19 -0
- package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +223 -0
- package/dist/cli/commands/tailordb/migrate/generate.d.mts +17 -0
- package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +202 -0
- package/dist/cli/commands/tailordb/migrate/snapshot.d.mts +98 -0
- package/dist/cli/commands/tailordb/migrate/types.d.mts +7 -0
- package/dist/cli/commands/tailordb/truncate.d.mts +19 -0
- package/dist/cli/commands/workflow/executions.d.mts +75 -0
- package/dist/cli/commands/workflow/get.d.mts +29 -0
- package/dist/cli/commands/workflow/list.d.mts +19 -0
- package/dist/cli/commands/workflow/resume.d.mts +23 -0
- package/dist/cli/commands/workflow/start.d.mts +61 -0
- package/dist/cli/commands/workflow/status.d.mts +5 -0
- package/dist/cli/commands/workflow/transform.d.mts +33 -0
- package/dist/cli/commands/workflow/wait.d.mts +16 -0
- package/dist/cli/commands/workflow/waiter.d.mts +23 -0
- package/dist/cli/commands/workspace/app/health.d.mts +18 -0
- package/dist/cli/commands/workspace/app/list.d.mts +22 -0
- package/dist/cli/commands/workspace/app/transform.d.mts +18 -0
- package/dist/cli/commands/workspace/create.d.mts +25 -0
- package/dist/cli/commands/workspace/delete.d.mts +15 -0
- package/dist/cli/commands/workspace/get.d.mts +17 -0
- package/dist/cli/commands/workspace/list.d.mts +17 -0
- package/dist/cli/commands/workspace/restore.d.mts +15 -0
- package/dist/cli/commands/workspace/transform.d.mts +16 -0
- package/dist/cli/commands/workspace/user/invite.d.mts +22 -0
- package/dist/cli/commands/workspace/user/list.d.mts +22 -0
- package/dist/cli/commands/workspace/user/remove.d.mts +17 -0
- package/dist/cli/commands/workspace/user/transform.d.mts +8 -0
- package/dist/cli/commands/workspace/user/update.d.mts +22 -0
- package/dist/cli/erd-viewer-assets/app.js +279 -36
- package/dist/cli/erd-viewer-assets/index.html +4 -0
- package/dist/cli/erd-viewer-assets/styles.css +252 -5
- package/dist/cli/index.d.mts +18 -3
- package/dist/cli/index.mjs +2136 -519
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.d.mts +81 -21107
- package/dist/cli/lib.mjs +6 -9
- package/dist/cli/lib.mjs.map +1 -1
- package/dist/cli/query/index.d.mts +35 -0
- package/dist/cli/services/application.d.mts +1 -0
- package/dist/cli/services/auth/service.d.mts +1 -0
- package/dist/cli/services/executor/service.d.mts +1 -0
- package/dist/cli/services/http-adapter/bundler.d.mts +1 -0
- package/dist/cli/services/http-adapter/service.d.mts +1 -0
- package/dist/cli/services/resolver/service.d.mts +1 -0
- package/dist/cli/services/tailordb/service.d.mts +1 -0
- package/dist/cli/services/workflow/bundler.d.mts +1 -0
- package/dist/cli/services/workflow/service.d.mts +1 -0
- package/dist/cli/shared/args.d.mts +13 -0
- package/dist/cli/shared/client.d.mts +1273 -0
- package/dist/cli/shared/config-loader.d.mts +26 -0
- package/dist/cli/shared/context.d.mts +28 -0
- package/dist/cli/shared/script-executor.d.mts +75 -0
- package/dist/cli/shared/seed-chunker.d.mts +46 -0
- package/dist/cli/shared/trigger-context.d.mts +1 -0
- package/dist/cli/shared/type-generator.d.mts +20 -0
- package/dist/cli/ts-hook.d.mts +4 -0
- package/dist/cli/ts-hook.mjs +303 -0
- package/dist/completion/zsh-worker.zsh +1523 -1123
- package/dist/configure/config/index.d.mts +21 -0
- package/dist/configure/config/types.d.mts +103 -0
- package/dist/configure/index.d.mts +122 -9
- package/dist/configure/index.mjs +24 -21
- package/dist/configure/index.mjs.map +1 -1
- package/dist/configure/services/aigateway/index.d.mts +17 -0
- package/dist/configure/services/aigateway/types.d.mts +11 -0
- package/dist/configure/services/auth/index.d.mts +34 -0
- package/dist/configure/services/auth/types.d.mts +172 -0
- package/dist/configure/services/executor/executor.d.mts +81 -0
- package/dist/configure/services/executor/index.d.mts +8 -0
- package/dist/configure/services/executor/operation.d.mts +45 -0
- package/dist/configure/services/executor/trigger/event.d.mts +272 -0
- package/dist/configure/services/executor/trigger/index.d.mts +8 -0
- package/dist/configure/services/executor/trigger/schedule.d.mts +25 -0
- package/dist/configure/services/executor/trigger/webhook.d.mts +44 -0
- package/dist/configure/services/executor/types.d.mts +2 -0
- package/dist/configure/services/http-adapter/http-adapter.d.mts +125 -0
- package/dist/configure/services/http-adapter/index.d.mts +2 -0
- package/dist/configure/services/idp/index.d.mts +64 -0
- package/dist/configure/services/idp/permission.d.mts +80 -0
- package/dist/configure/services/idp/types.d.mts +20 -0
- package/dist/configure/services/index.d.mts +32 -0
- package/dist/configure/services/resolver/index.d.mts +5 -0
- package/dist/configure/services/resolver/resolver.d.mts +75 -0
- package/dist/configure/services/resolver/types.d.mts +6 -0
- package/dist/configure/services/secrets/index.d.mts +38 -0
- package/dist/configure/services/secrets/types.d.mts +11 -0
- package/dist/configure/services/staticwebsite/index.d.mts +19 -0
- package/dist/configure/services/staticwebsite/types.d.mts +11 -0
- package/dist/configure/services/tailordb/index.d.mts +4 -0
- package/dist/configure/services/tailordb/permission.d.mts +119 -0
- package/dist/configure/services/tailordb/schema.d.mts +456 -0
- package/dist/configure/services/tailordb/types.d.mts +149 -0
- package/dist/configure/services/workflow/index.d.mts +6 -0
- package/dist/configure/services/workflow/job.d.mts +79 -0
- package/dist/configure/services/workflow/types.d.mts +2 -0
- package/dist/configure/services/workflow/wait-point.d.mts +73 -0
- package/dist/configure/services/workflow/workflow.d.mts +54 -0
- package/dist/configure/types/aigateway-name.d.mts +12 -0
- package/dist/configure/types/connection-name.d.mts +12 -0
- package/dist/configure/types/field-runtime.d.mts +17 -0
- package/dist/configure/types/field.d.mts +9 -0
- package/dist/configure/types/field.types.d.mts +109 -0
- package/dist/configure/types/idp-name.d.mts +12 -0
- package/dist/configure/types/index.d.mts +4 -0
- package/dist/configure/types/machine-user.d.mts +2 -0
- package/dist/configure/types/type.d.mts +82 -0
- package/dist/context-Bd266-ru.mjs.map +1 -1
- package/dist/{crashreport-DFq-vsU0.mjs → crashreport-Cg-pqRJV.mjs} +6 -6
- package/dist/{crashreport-DFq-vsU0.mjs.map → crashreport-Cg-pqRJV.mjs.map} +1 -1
- package/dist/{crashreport-BMWcxeSE.mjs → crashreport-D3RjuSYb.mjs} +1 -1
- package/dist/enum-constants-j9QBF0cB.mjs.map +1 -1
- package/dist/{errors-Dtf2WPaW.mjs → errors-118wUDRr.mjs} +2 -2
- package/dist/errors-118wUDRr.mjs.map +1 -0
- package/dist/field-runtime-CAnh_oow.mjs +183 -0
- package/dist/field-runtime-CAnh_oow.mjs.map +1 -0
- package/dist/file-utils-CYZnO1pX.mjs.map +1 -1
- package/dist/{globals-Cf0sxIt8.mjs → globals-DhwZj0RB.mjs} +4 -46
- package/dist/globals-DhwZj0RB.mjs.map +1 -0
- package/dist/{idp-BDbK5gjm.mjs → idp-Bx25ZBdN.mjs} +9 -1
- package/dist/idp-Bx25ZBdN.mjs.map +1 -0
- package/dist/{interceptor-D-q1rvRl.mjs → interceptor-e33JtsC-.mjs} +2 -2
- package/dist/interceptor-e33JtsC-.mjs.map +1 -0
- package/dist/kysely/index.d.mts +2 -3
- package/dist/{kysely-type-DR8uzZTA.mjs → kysely-type-5eAChaHO.mjs} +4 -2
- package/dist/kysely-type-5eAChaHO.mjs.map +1 -0
- package/dist/{logger-CxF-Ex5d.mjs → logger-BEiZZ3qT.mjs} +3 -3
- package/dist/{logger-CxF-Ex5d.mjs.map → logger-BEiZZ3qT.mjs.map} +1 -1
- package/dist/parser/service/auth/index.d.mts +1 -0
- package/dist/parser/service/auth/schema.d.mts +1 -0
- package/dist/parser/service/http-adapter/index.d.mts +1 -0
- package/dist/parser/service/http-adapter/schema.d.mts +1 -0
- package/dist/parser/service/idp/types.d.mts +4 -0
- package/dist/parser/service/tailordb/types.d.mts +126 -0
- package/dist/platform-serialize-RoRtBS0v.mjs +46 -0
- package/dist/platform-serialize-RoRtBS0v.mjs.map +1 -0
- package/dist/plugin/builtin/enum-constants/index.d.mts +16 -1
- package/dist/plugin/builtin/file-utils/index.d.mts +16 -1
- package/dist/plugin/builtin/kysely-type/index.d.mts +16 -1
- package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
- package/dist/plugin/builtin/seed/index.d.mts +45 -1
- package/dist/plugin/builtin/seed/index.mjs +1 -1
- package/dist/plugin/get-generated-type.d.mts +17 -0
- package/dist/plugin/index.d.mts +3 -118
- package/dist/plugin/index.mjs +1 -1
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/plugin/manager.d.mts +1 -0
- package/dist/plugin/types.d.mts +243 -0
- package/dist/plugin/with-context.d.mts +102 -0
- package/dist/{runtime-CY4JvrDj.mjs → register-ts-hook-ZpBacA07.mjs} +3426 -2041
- package/dist/register-ts-hook-ZpBacA07.mjs.map +1 -0
- package/dist/registry-DH4m7eYo.mjs.map +1 -1
- package/dist/{repl-editor-DmGr9zMw.mjs → repl-editor-BCozyiNq.mjs} +6 -5
- package/dist/{repl-editor-DmGr9zMw.mjs.map → repl-editor-BCozyiNq.mjs.map} +1 -1
- package/dist/runtime/aigateway.d.mts +35 -0
- package/dist/runtime/aigateway.mjs +3 -0
- package/dist/runtime/authconnection.d.mts +31 -2
- package/dist/runtime/authconnection.mjs +1 -1
- package/dist/runtime/context.d.mts +46 -2
- package/dist/runtime/file.d.mts +210 -2
- package/dist/runtime/globals.d.mts +31 -19
- package/dist/runtime/iconv.d.mts +121 -2
- package/dist/runtime/idp.d.mts +186 -2
- package/dist/runtime/idp.mjs +1 -1
- package/dist/runtime/index.d.mts +47 -9
- package/dist/runtime/index.mjs +5 -4
- package/dist/runtime/secretmanager.d.mts +54 -2
- package/dist/{types-BZ7QKVE8.d.mts → runtime/types.d.mts} +4 -5
- package/dist/runtime/workflow.d.mts +112 -2
- package/dist/runtime/workflow.mjs +2 -2
- package/dist/{schema-Dtw9Orye.mjs → schema-89dYxNC2.mjs} +17 -182
- package/dist/schema-89dYxNC2.mjs.map +1 -0
- package/dist/{secret-file-VSVGy1V0.mjs → secret-file-aoNXJmKa.mjs} +3 -3
- package/dist/secret-file-aoNXJmKa.mjs.map +1 -0
- package/dist/secretmanager-Bd45j7an.mjs +98 -0
- package/dist/secretmanager-Bd45j7an.mjs.map +1 -0
- package/dist/seed/index.d.mts +1 -2
- package/dist/{seed-izIEyP3z.mjs → seed-CRSQJI_z.mjs} +14 -3
- package/dist/seed-CRSQJI_z.mjs.map +1 -0
- package/dist/service-CkIwEctX.mjs +3 -0
- package/dist/{service-DU1mVzri2.mjs → service-DeZeYa06.mjs} +3 -3
- package/dist/service-DeZeYa06.mjs.map +1 -0
- package/dist/{service-DjyqbCaJ.mjs → service-ufH7sS8o.mjs} +396 -58
- package/dist/service-ufH7sS8o.mjs.map +1 -0
- package/dist/service_pb-CIrhGwHk.mjs +988 -0
- package/dist/service_pb-CIrhGwHk.mjs.map +1 -0
- package/dist/service_pb-DjwIn4jO.mjs +3 -0
- package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +204 -0
- package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +58 -0
- package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +316 -0
- package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +161 -0
- package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +2070 -0
- package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +861 -0
- package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +112 -0
- package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +69 -0
- package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +439 -0
- package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +564 -0
- package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +145 -0
- package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +451 -0
- package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +192 -0
- package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +50 -0
- package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +407 -0
- package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +430 -0
- package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +73 -0
- package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +17 -0
- package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +309 -0
- package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +591 -0
- package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +330 -0
- package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +113 -0
- package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +346 -0
- package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +54 -0
- package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +3576 -0
- package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +187 -0
- package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +29 -0
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +429 -0
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +90 -0
- package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +684 -0
- package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +797 -0
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +330 -0
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +183 -0
- package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +842 -0
- package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +276 -0
- package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +2015 -0
- package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +483 -0
- package/dist/{telemetry-CdqJEzkj.mjs → telemetry-BRVdwh14.mjs} +3 -3
- package/dist/telemetry-BRVdwh14.mjs.map +1 -0
- package/dist/telemetry-CkbkeJxl.mjs +3 -0
- package/dist/types/aigateway.generated.d.mts +9 -0
- package/dist/types/app-config.generated.d.mts +4 -0
- package/dist/types/auth-connection.generated.d.mts +20 -0
- package/dist/types/auth.generated.d.mts +145 -0
- package/dist/types/executor.generated.d.mts +177 -0
- package/dist/types/helpers.d.mts +39 -0
- package/dist/types/http-adapter.generated.d.mts +17 -0
- package/dist/{workflow.generated-ClEjBYhm.d.mts → types/idp.generated.d.mts} +98 -185
- package/dist/types/resolver.generated.d.mts +39 -0
- package/dist/types/secrets.generated.d.mts +14 -0
- package/dist/types/staticwebsite.generated.d.mts +10 -0
- package/dist/{types-CdcQh4Z2.d.mts → types/tailordb.generated.d.mts} +2 -287
- package/dist/types/workflow.generated.d.mts +12 -0
- package/dist/types-C-lQ4se3.mjs +4 -0
- package/dist/types-CXF2OYdR.mjs +199 -0
- package/dist/types-CXF2OYdR.mjs.map +1 -0
- package/dist/utils/test/index.d.mts +5 -89
- package/dist/utils/test/index.mjs.map +1 -1
- package/dist/utils/test/mock.d.mts +87 -0
- package/dist/vitest/environment.d.mts +1 -2
- package/dist/vitest/environment.mjs +2 -2
- package/dist/vitest/environment.mjs.map +1 -1
- package/dist/vitest/index.d.mts +12 -428
- package/dist/vitest/index.mjs +739 -8
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/mock-kysely.d.mts +62 -0
- package/dist/vitest/mock.d.mts +9 -0
- package/dist/vitest/mocks/aigateway.d.mts +30 -0
- package/dist/vitest/mocks/authconnection.d.mts +28 -0
- package/dist/vitest/mocks/file.d.mts +41 -0
- package/dist/vitest/mocks/iconv.d.mts +27 -0
- package/dist/vitest/mocks/idp.d.mts +44 -0
- package/dist/vitest/mocks/secretmanager.d.mts +33 -0
- package/dist/vitest/mocks/tailordb.d.mts +71 -0
- package/dist/vitest/mocks/workflow.d.mts +115 -0
- package/dist/vitest/setup.d.mts +1 -2
- package/dist/vitest/setup.mjs +2 -2
- package/dist/vitest/workflow-local.d.mts +40 -0
- package/dist/{workflow-BOmaZwwG.mjs → workflow-Bo59B75H.mjs} +9 -2
- package/dist/workflow-Bo59B75H.mjs.map +1 -0
- package/docs/cli/application.md +98 -250
- package/docs/cli/auth.md +48 -292
- package/docs/cli/completion.md +1 -25
- package/docs/cli/crashreport.md +3 -61
- package/docs/cli/executor.md +23 -187
- package/docs/cli/function.md +14 -130
- package/docs/cli/organization.md +11 -221
- package/docs/cli/plugin.md +29 -0
- package/docs/cli/query.md +2 -22
- package/docs/cli/secret.md +71 -251
- package/docs/cli/setup.md +137 -41
- package/docs/cli/skills.md +50 -39
- package/docs/cli/staticwebsite.md +32 -180
- package/docs/cli/tailordb.md +97 -323
- package/docs/cli/upgrade.md +2 -22
- package/docs/cli/user.md +78 -247
- package/docs/cli/workflow.md +44 -203
- package/docs/cli/workspace.md +165 -538
- package/docs/cli-reference.md +167 -67
- package/docs/configuration.md +10 -4
- package/docs/github-actions.md +46 -19
- package/docs/migration/v2.md +286 -26
- package/docs/multi-environment.md +29 -7
- package/docs/plugin/index.md +6 -6
- package/docs/quickstart.md +8 -7
- package/docs/runtime.md +5 -1
- package/docs/services/aigateway.md +18 -2
- package/docs/services/auth.md +32 -40
- package/docs/services/http-adapter.md +16 -1
- package/docs/services/idp.md +55 -2
- package/docs/services/resolver.md +1 -1
- package/docs/services/secret.md +11 -11
- package/docs/services/staticwebsite.md +8 -2
- package/docs/services/tailordb-migration.md +24 -22
- package/docs/services/tailordb.md +25 -2
- package/docs/services/workflow.md +14 -14
- package/docs/testing.md +49 -3
- package/package.json +42 -31
- package/postinstall.mjs +4 -6
- package/dist/application-Dtqap5jM.mjs +0 -3
- package/dist/application-XuMWK4eq.mjs +0 -7257
- package/dist/application-XuMWK4eq.mjs.map +0 -1
- package/dist/authconnection-D2MhtTN5.mjs.map +0 -1
- package/dist/authconnection-DvUQAjQS.d.mts +0 -39
- package/dist/context-C2lEi9uw.d.mts +0 -47
- package/dist/errors-Dtf2WPaW.mjs.map +0 -1
- package/dist/field-DOsJCPFa.mjs +0 -22
- package/dist/field-DOsJCPFa.mjs.map +0 -1
- package/dist/file-Dq3NIt_F.d.mts +0 -211
- package/dist/globals-Cf0sxIt8.mjs.map +0 -1
- package/dist/http-adapter.generated-DFsXDdm5.d.mts +0 -581
- package/dist/iconv-Co-TOPuH.d.mts +0 -122
- package/dist/idp-BDbK5gjm.mjs.map +0 -1
- package/dist/idp-DrhVrLmV.d.mts +0 -160
- package/dist/index-BI-_j9Z3.d.mts +0 -1013
- package/dist/index-C4JirJH8.d.mts +0 -18
- package/dist/index-CZfWhr0a.d.mts +0 -18
- package/dist/index-Cg8VKAdN.d.mts +0 -46
- package/dist/index-DYRjoLXD.d.mts +0 -47
- package/dist/index-lFpcjHPU.d.mts +0 -201
- package/dist/index-nW7hE6oE.d.mts +0 -18
- package/dist/interceptor-D-q1rvRl.mjs.map +0 -1
- package/dist/kysely-type-DR8uzZTA.mjs.map +0 -1
- package/dist/mock-FPxmnt-y.mjs +0 -759
- package/dist/mock-FPxmnt-y.mjs.map +0 -1
- package/dist/runtime-CY4JvrDj.mjs.map +0 -1
- package/dist/schema-Dtw9Orye.mjs.map +0 -1
- package/dist/secret-file-VSVGy1V0.mjs.map +0 -1
- package/dist/secretmanager-B3n4KHfm.d.mts +0 -55
- package/dist/seed-izIEyP3z.mjs.map +0 -1
- package/dist/service-DCqIWibD.mjs +0 -3
- package/dist/service-DU1mVzri2.mjs.map +0 -1
- package/dist/service-DjyqbCaJ.mjs.map +0 -1
- package/dist/telemetry-CdqJEzkj.mjs.map +0 -1
- package/dist/telemetry-ClwW5ohF.mjs +0 -3
- package/dist/types-74etvaxy.mjs +0 -4
- package/dist/types-BDRml5C3.d.mts +0 -574
- package/dist/types-BQijbo4m.mjs +0 -371
- package/dist/types-BQijbo4m.mjs.map +0 -1
- package/dist/types-BX4q6Mo6.d.mts +0 -339
- package/dist/workflow-BOmaZwwG.mjs.map +0 -1
- package/dist/workflow-BVy4XWjS.d.mts +0 -101
package/dist/vitest/index.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { i as getRegisteredJob, t as TRIGGER_DEFAULT } from "../registry-DH4m7eYo.mjs";
|
|
2
2
|
import { a as writeWorkflowTestEnv, n as clearWorkflowTestEnv, r as readWorkflowTestEnv, t as buildJobContext } from "../test-env-key-D7UkZp99.mjs";
|
|
3
3
|
import { t as assertDefined } from "../assert-DBxo8jPo.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { t as platformSerialize } from "../platform-serialize-RoRtBS0v.mjs";
|
|
5
|
+
import { i as withDispose, n as tailorRoot, r as tailordbRoot, t as mockSecretmanager } from "../secretmanager-Bd45j7an.mjs";
|
|
6
6
|
import { builtinModules } from "node:module";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
8
|
import { dirname, isAbsolute, matchesGlob, relative, resolve } from "node:path";
|
|
9
9
|
import { ColumnNode, InsertQueryNode, Kysely, PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler, PrimitiveValueListNode, ReferenceNode, UpdateQueryNode, ValueListNode, ValueNode, ValuesNode } from "kysely";
|
|
10
|
+
import { vi } from "vitest";
|
|
10
11
|
|
|
11
12
|
//#region src/vitest/blocked-modules.ts
|
|
12
13
|
/**
|
|
@@ -52,7 +53,8 @@ function isBlockedModule(specifier) {
|
|
|
52
53
|
* @returns Error message with optional suggestion for the Web Standard API alternative
|
|
53
54
|
*/
|
|
54
55
|
function getBlockedMessage(specifier) {
|
|
55
|
-
const
|
|
56
|
+
const bare = specifier.startsWith("node:") ? specifier.slice(5) : specifier;
|
|
57
|
+
const suggestion = SUGGESTIONS[bare];
|
|
56
58
|
const base = `"${specifier}" is not available in the Tailor Platform runtime.`;
|
|
57
59
|
return suggestion ? `${base} ${suggestion}` : base;
|
|
58
60
|
}
|
|
@@ -60,12 +62,12 @@ function getBlockedMessage(specifier) {
|
|
|
60
62
|
//#endregion
|
|
61
63
|
//#region src/vitest/plugin.ts
|
|
62
64
|
const DEFAULT_TEST_INCLUDE = ["**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"];
|
|
63
|
-
const IMPORT_LIKE_TYPES = new Set([
|
|
65
|
+
const IMPORT_LIKE_TYPES = /* @__PURE__ */ new Set([
|
|
64
66
|
"ImportDeclaration",
|
|
65
67
|
"ExportNamedDeclaration",
|
|
66
68
|
"ExportAllDeclaration"
|
|
67
69
|
]);
|
|
68
|
-
const UNSAFE_BINDING_NAMES = new Set([
|
|
70
|
+
const UNSAFE_BINDING_NAMES = /* @__PURE__ */ new Set([
|
|
69
71
|
"break",
|
|
70
72
|
"case",
|
|
71
73
|
"catch",
|
|
@@ -185,7 +187,7 @@ function createBlockPlugin() {
|
|
|
185
187
|
const testConfig = config.test;
|
|
186
188
|
const root = testConfig?.root ?? config.root;
|
|
187
189
|
const toAbsolutePaths = (value, baseRoot) => (Array.isArray(value) ? value : value ? [value] : []).map((f) => resolve(baseRoot, f));
|
|
188
|
-
const exemptHostFiles = new Set([...toAbsolutePaths(testConfig?.setupFiles, root), ...toAbsolutePaths(testConfig?.globalSetup, root)]);
|
|
190
|
+
const exemptHostFiles = /* @__PURE__ */ new Set([...toAbsolutePaths(testConfig?.setupFiles, root), ...toAbsolutePaths(testConfig?.globalSetup, root)]);
|
|
189
191
|
const includePairs = [{
|
|
190
192
|
root,
|
|
191
193
|
patterns: testConfig?.include ?? DEFAULT_TEST_INCLUDE
|
|
@@ -291,6 +293,731 @@ function createEnvironmentPlugin(options) {
|
|
|
291
293
|
};
|
|
292
294
|
}
|
|
293
295
|
|
|
296
|
+
//#endregion
|
|
297
|
+
//#region src/vitest/mocks/aigateway.ts
|
|
298
|
+
/**
|
|
299
|
+
* Acquire a disposable mock for `tailor.aigateway`. Restored on dispose.
|
|
300
|
+
* @returns Disposable AI Gateway mock control object
|
|
301
|
+
* @example
|
|
302
|
+
* ```typescript
|
|
303
|
+
* import { mockAigateway } from "@tailor-platform/sdk/vitest";
|
|
304
|
+
*
|
|
305
|
+
* test("resolves an AI Gateway URL", async () => {
|
|
306
|
+
* using aigateway = mockAigateway();
|
|
307
|
+
* aigateway.setUrls({ "my-aigateway": "https://my-aigateway.example.com" });
|
|
308
|
+
* // …
|
|
309
|
+
* });
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
function mockAigateway() {
|
|
313
|
+
const root = tailorRoot();
|
|
314
|
+
const prev = root.aigateway;
|
|
315
|
+
let urls = {};
|
|
316
|
+
const get = vi.fn(async (name) => {
|
|
317
|
+
const url = urls[name];
|
|
318
|
+
if (url === void 0) throw new Error(`No AI Gateway registered for "${name}". Acquire mockAigateway() and call setUrls(...).`);
|
|
319
|
+
return { url };
|
|
320
|
+
});
|
|
321
|
+
root.aigateway = { get };
|
|
322
|
+
return withDispose({
|
|
323
|
+
/** The `get` `vi.fn`. */
|
|
324
|
+
get,
|
|
325
|
+
setUrls(value) {
|
|
326
|
+
urls = value;
|
|
327
|
+
},
|
|
328
|
+
get calls() {
|
|
329
|
+
return get.mock.calls.map(([name]) => ({ name }));
|
|
330
|
+
},
|
|
331
|
+
reset() {
|
|
332
|
+
urls = {};
|
|
333
|
+
get.mockClear();
|
|
334
|
+
}
|
|
335
|
+
}, () => {
|
|
336
|
+
root.aigateway = prev;
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
//#endregion
|
|
341
|
+
//#region src/vitest/mocks/authconnection.ts
|
|
342
|
+
/**
|
|
343
|
+
* Acquire a disposable mock for `tailor.authconnection`. Restored on dispose.
|
|
344
|
+
* @returns Disposable AuthConnection mock control object
|
|
345
|
+
* @example
|
|
346
|
+
* ```typescript
|
|
347
|
+
* import { mockAuthconnection } from "@tailor-platform/sdk/vitest";
|
|
348
|
+
*
|
|
349
|
+
* test("returns configured token", async () => {
|
|
350
|
+
* using ac = mockAuthconnection();
|
|
351
|
+
* ac.setTokens({ google: { access_token: "ya29.xxx" } });
|
|
352
|
+
* // …
|
|
353
|
+
* });
|
|
354
|
+
* ```
|
|
355
|
+
*/
|
|
356
|
+
function mockAuthconnection() {
|
|
357
|
+
const root = tailorRoot();
|
|
358
|
+
const prev = root.authconnection;
|
|
359
|
+
let tokens = {};
|
|
360
|
+
const getConnectionToken = vi.fn(async (connectionName) => tokens[connectionName] ?? { access_token: "mock-token" });
|
|
361
|
+
root.authconnection = { getConnectionToken };
|
|
362
|
+
return withDispose({
|
|
363
|
+
/** The `getConnectionToken` `vi.fn`. */
|
|
364
|
+
getConnectionToken,
|
|
365
|
+
setTokens(value) {
|
|
366
|
+
tokens = value;
|
|
367
|
+
},
|
|
368
|
+
get calls() {
|
|
369
|
+
return getConnectionToken.mock.calls.map(([connectionName]) => ({ connectionName }));
|
|
370
|
+
},
|
|
371
|
+
reset() {
|
|
372
|
+
tokens = {};
|
|
373
|
+
getConnectionToken.mockClear();
|
|
374
|
+
}
|
|
375
|
+
}, () => {
|
|
376
|
+
root.authconnection = prev;
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
//#endregion
|
|
381
|
+
//#region src/vitest/mocks/file.ts
|
|
382
|
+
const FILE_DEFAULTS = {
|
|
383
|
+
upload: { metadata: {
|
|
384
|
+
fileSize: 0,
|
|
385
|
+
sha256sum: ""
|
|
386
|
+
} },
|
|
387
|
+
download: {
|
|
388
|
+
data: /* @__PURE__ */ new Uint8Array(),
|
|
389
|
+
metadata: {
|
|
390
|
+
contentType: "",
|
|
391
|
+
fileSize: 0,
|
|
392
|
+
sha256sum: "",
|
|
393
|
+
lastUploadedAt: ""
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
downloadAsBase64: {
|
|
397
|
+
data: "",
|
|
398
|
+
metadata: {
|
|
399
|
+
contentType: "",
|
|
400
|
+
fileSize: 0,
|
|
401
|
+
sha256sum: "",
|
|
402
|
+
lastUploadedAt: ""
|
|
403
|
+
}
|
|
404
|
+
},
|
|
405
|
+
delete: void 0,
|
|
406
|
+
getMetadata: {
|
|
407
|
+
contentType: "",
|
|
408
|
+
fileSize: 0,
|
|
409
|
+
sha256sum: "",
|
|
410
|
+
urlPath: ""
|
|
411
|
+
},
|
|
412
|
+
downloadStream: null,
|
|
413
|
+
uploadStream: { metadata: {
|
|
414
|
+
fileSize: 0,
|
|
415
|
+
sha256sum: ""
|
|
416
|
+
} }
|
|
417
|
+
};
|
|
418
|
+
/**
|
|
419
|
+
* Acquire a disposable mock for `tailordb.file`. Restored on dispose.
|
|
420
|
+
* @returns Disposable File mock control object
|
|
421
|
+
* @example
|
|
422
|
+
* ```typescript
|
|
423
|
+
* import { mockFile } from "@tailor-platform/sdk/vitest";
|
|
424
|
+
*
|
|
425
|
+
* test("mock file download", async () => {
|
|
426
|
+
* using file = mockFile();
|
|
427
|
+
* file.enqueueResult({ data: new Uint8Array([1, 2, 3]), metadata: { ... } });
|
|
428
|
+
* // …
|
|
429
|
+
* });
|
|
430
|
+
* ```
|
|
431
|
+
*/
|
|
432
|
+
function mockFile() {
|
|
433
|
+
const root = tailordbRoot();
|
|
434
|
+
const prev = root.file;
|
|
435
|
+
const queue = [];
|
|
436
|
+
let resolver = () => null;
|
|
437
|
+
const calls = [];
|
|
438
|
+
function handle(method, namespace, typeName, fieldName, recordId) {
|
|
439
|
+
const call = {
|
|
440
|
+
method,
|
|
441
|
+
namespace,
|
|
442
|
+
typeName,
|
|
443
|
+
fieldName,
|
|
444
|
+
recordId
|
|
445
|
+
};
|
|
446
|
+
calls.push(call);
|
|
447
|
+
if (queue.length > 0) return queue.shift();
|
|
448
|
+
const resolved = resolver(method, call);
|
|
449
|
+
if (resolved != null) return resolved;
|
|
450
|
+
const fallback = FILE_DEFAULTS[method];
|
|
451
|
+
return fallback === void 0 ? void 0 : structuredClone(fallback);
|
|
452
|
+
}
|
|
453
|
+
root.file = {
|
|
454
|
+
async upload(namespace, typeName, fieldName, recordId) {
|
|
455
|
+
return handle("upload", namespace, typeName, fieldName, recordId);
|
|
456
|
+
},
|
|
457
|
+
async download(namespace, typeName, fieldName, recordId) {
|
|
458
|
+
return handle("download", namespace, typeName, fieldName, recordId);
|
|
459
|
+
},
|
|
460
|
+
async downloadAsBase64(namespace, typeName, fieldName, recordId) {
|
|
461
|
+
return handle("downloadAsBase64", namespace, typeName, fieldName, recordId);
|
|
462
|
+
},
|
|
463
|
+
async delete(namespace, typeName, fieldName, recordId) {
|
|
464
|
+
handle("delete", namespace, typeName, fieldName, recordId);
|
|
465
|
+
},
|
|
466
|
+
async getMetadata(namespace, typeName, fieldName, recordId) {
|
|
467
|
+
return handle("getMetadata", namespace, typeName, fieldName, recordId);
|
|
468
|
+
},
|
|
469
|
+
async downloadStream(namespace, typeName, fieldName, recordId) {
|
|
470
|
+
const resolved = handle("downloadStream", namespace, typeName, fieldName, recordId);
|
|
471
|
+
if (resolved != null) return resolved;
|
|
472
|
+
return {
|
|
473
|
+
body: new ReadableStream({ start(c) {
|
|
474
|
+
c.close();
|
|
475
|
+
} }),
|
|
476
|
+
metadata: {
|
|
477
|
+
contentType: "",
|
|
478
|
+
fileSize: 0,
|
|
479
|
+
sha256sum: "",
|
|
480
|
+
lastUploadedAt: ""
|
|
481
|
+
}
|
|
482
|
+
};
|
|
483
|
+
},
|
|
484
|
+
async uploadStream(namespace, typeName, fieldName, recordId) {
|
|
485
|
+
return handle("uploadStream", namespace, typeName, fieldName, recordId);
|
|
486
|
+
}
|
|
487
|
+
};
|
|
488
|
+
return withDispose({
|
|
489
|
+
setResolver(value) {
|
|
490
|
+
resolver = value;
|
|
491
|
+
},
|
|
492
|
+
/**
|
|
493
|
+
* Enqueue a single result for the next `tailordb.file` call (FIFO; falls
|
|
494
|
+
* back to `setResolver` when exhausted).
|
|
495
|
+
* @param result - Result to return from the next file call
|
|
496
|
+
*/
|
|
497
|
+
enqueueResult(result) {
|
|
498
|
+
queue.push(result);
|
|
499
|
+
},
|
|
500
|
+
/**
|
|
501
|
+
* Enqueue results for multiple subsequent `tailordb.file` calls.
|
|
502
|
+
* @param results - Results to enqueue, one per upcoming call
|
|
503
|
+
*/
|
|
504
|
+
enqueueResults(...results) {
|
|
505
|
+
queue.push(...results);
|
|
506
|
+
},
|
|
507
|
+
get calls() {
|
|
508
|
+
return calls;
|
|
509
|
+
},
|
|
510
|
+
reset() {
|
|
511
|
+
queue.length = 0;
|
|
512
|
+
resolver = () => null;
|
|
513
|
+
calls.length = 0;
|
|
514
|
+
}
|
|
515
|
+
}, () => {
|
|
516
|
+
root.file = prev;
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
//#endregion
|
|
521
|
+
//#region src/vitest/mocks/iconv.ts
|
|
522
|
+
function isUtf8(encoding) {
|
|
523
|
+
return encoding === "UTF8" || encoding === "UTF-8";
|
|
524
|
+
}
|
|
525
|
+
function defaultIconvResult(method, args) {
|
|
526
|
+
switch (method) {
|
|
527
|
+
case "convert":
|
|
528
|
+
case "convertBuffer": return isUtf8(args[2]) ? "" : /* @__PURE__ */ new Uint8Array();
|
|
529
|
+
case "decode": return "";
|
|
530
|
+
case "encode": return isUtf8(args[1]) ? "" : /* @__PURE__ */ new Uint8Array();
|
|
531
|
+
case "encodings": return [];
|
|
532
|
+
default: return;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Acquire a disposable mock for `tailor.iconv`. Restored on dispose.
|
|
537
|
+
* @returns Disposable Iconv mock control object
|
|
538
|
+
* @example
|
|
539
|
+
* ```typescript
|
|
540
|
+
* import { mockIconv } from "@tailor-platform/sdk/vitest";
|
|
541
|
+
*
|
|
542
|
+
* test("mock encoding conversion", () => {
|
|
543
|
+
* using iconv = mockIconv();
|
|
544
|
+
* iconv.setResolver((method) => (method === "decode" ? "decoded-text" : null));
|
|
545
|
+
* // …
|
|
546
|
+
* });
|
|
547
|
+
* ```
|
|
548
|
+
*/
|
|
549
|
+
function mockIconv() {
|
|
550
|
+
const root = tailorRoot();
|
|
551
|
+
const prev = root.iconv;
|
|
552
|
+
let resolver = null;
|
|
553
|
+
const calls = [];
|
|
554
|
+
function handle(method, args) {
|
|
555
|
+
calls.push({
|
|
556
|
+
method,
|
|
557
|
+
args: [...args]
|
|
558
|
+
});
|
|
559
|
+
if (resolver) {
|
|
560
|
+
const result = resolver(method, args);
|
|
561
|
+
if (result != null) return result;
|
|
562
|
+
}
|
|
563
|
+
return defaultIconvResult(method, args);
|
|
564
|
+
}
|
|
565
|
+
class MockIconv {
|
|
566
|
+
#fromEncoding;
|
|
567
|
+
#toEncoding;
|
|
568
|
+
constructor(fromEncoding, toEncoding) {
|
|
569
|
+
this.#fromEncoding = fromEncoding;
|
|
570
|
+
this.#toEncoding = toEncoding;
|
|
571
|
+
}
|
|
572
|
+
convert(input) {
|
|
573
|
+
return handle("convert", [
|
|
574
|
+
input,
|
|
575
|
+
this.#fromEncoding,
|
|
576
|
+
this.#toEncoding
|
|
577
|
+
]);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
root.iconv = {
|
|
581
|
+
convert: (str, from, to) => handle("convert", [
|
|
582
|
+
str,
|
|
583
|
+
from,
|
|
584
|
+
to
|
|
585
|
+
]),
|
|
586
|
+
convertBuffer: (buf, from, to) => handle("convertBuffer", [
|
|
587
|
+
buf,
|
|
588
|
+
from,
|
|
589
|
+
to
|
|
590
|
+
]),
|
|
591
|
+
decode: (buf, encoding) => handle("decode", [buf, encoding]),
|
|
592
|
+
encode: (str, encoding) => handle("encode", [str, encoding]),
|
|
593
|
+
encodings: () => handle("encodings", []),
|
|
594
|
+
Iconv: MockIconv
|
|
595
|
+
};
|
|
596
|
+
return withDispose({
|
|
597
|
+
setResolver(value) {
|
|
598
|
+
resolver = value;
|
|
599
|
+
},
|
|
600
|
+
get calls() {
|
|
601
|
+
return calls;
|
|
602
|
+
},
|
|
603
|
+
reset() {
|
|
604
|
+
resolver = null;
|
|
605
|
+
calls.length = 0;
|
|
606
|
+
}
|
|
607
|
+
}, () => {
|
|
608
|
+
root.iconv = prev;
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
//#endregion
|
|
613
|
+
//#region src/vitest/mocks/idp.ts
|
|
614
|
+
const IDP_DEFAULTS = {
|
|
615
|
+
users: {
|
|
616
|
+
users: [],
|
|
617
|
+
nextPageToken: null,
|
|
618
|
+
totalCount: 0
|
|
619
|
+
},
|
|
620
|
+
user: {
|
|
621
|
+
id: "mock-id",
|
|
622
|
+
name: "mock-user",
|
|
623
|
+
disabled: false,
|
|
624
|
+
mfaEnrolled: false,
|
|
625
|
+
mfaFactorIds: []
|
|
626
|
+
},
|
|
627
|
+
userByName: {
|
|
628
|
+
id: "mock-id",
|
|
629
|
+
name: "mock-user",
|
|
630
|
+
disabled: false,
|
|
631
|
+
mfaEnrolled: false,
|
|
632
|
+
mfaFactorIds: []
|
|
633
|
+
},
|
|
634
|
+
createUser: {
|
|
635
|
+
id: "mock-id",
|
|
636
|
+
name: "mock-user",
|
|
637
|
+
disabled: false,
|
|
638
|
+
mfaEnrolled: false,
|
|
639
|
+
mfaFactorIds: []
|
|
640
|
+
},
|
|
641
|
+
updateUser: {
|
|
642
|
+
id: "mock-id",
|
|
643
|
+
name: "mock-user",
|
|
644
|
+
disabled: false,
|
|
645
|
+
mfaEnrolled: false,
|
|
646
|
+
mfaFactorIds: []
|
|
647
|
+
},
|
|
648
|
+
deleteUser: true,
|
|
649
|
+
sendPasswordResetEmail: true,
|
|
650
|
+
unenrollMfa: true
|
|
651
|
+
};
|
|
652
|
+
/**
|
|
653
|
+
* Acquire a disposable mock for `tailor.idp`. Restored on dispose.
|
|
654
|
+
* @returns Disposable IDP mock control object
|
|
655
|
+
* @example
|
|
656
|
+
* ```typescript
|
|
657
|
+
* import { mockIdp } from "@tailor-platform/sdk/vitest";
|
|
658
|
+
*
|
|
659
|
+
* test("resolver-based", async () => {
|
|
660
|
+
* using idp = mockIdp();
|
|
661
|
+
* idp.setResolver((method) =>
|
|
662
|
+
* method === "user" ? { id: "u-1", name: "alice", disabled: false } : null,
|
|
663
|
+
* );
|
|
664
|
+
* // …
|
|
665
|
+
* });
|
|
666
|
+
* ```
|
|
667
|
+
*/
|
|
668
|
+
function mockIdp() {
|
|
669
|
+
const root = tailorRoot();
|
|
670
|
+
const prev = root.idp;
|
|
671
|
+
const queue = [];
|
|
672
|
+
let resolver = () => null;
|
|
673
|
+
const calls = [];
|
|
674
|
+
function handle(method, args, namespace) {
|
|
675
|
+
calls.push({
|
|
676
|
+
method,
|
|
677
|
+
args,
|
|
678
|
+
namespace
|
|
679
|
+
});
|
|
680
|
+
if (queue.length > 0) return queue.shift();
|
|
681
|
+
const resolved = resolver(method, args, namespace);
|
|
682
|
+
if (resolved != null) return resolved;
|
|
683
|
+
const fallback = IDP_DEFAULTS[method];
|
|
684
|
+
return fallback === void 0 ? void 0 : structuredClone(fallback);
|
|
685
|
+
}
|
|
686
|
+
const Client = vi.fn(function(config) {
|
|
687
|
+
const namespace = config.namespace;
|
|
688
|
+
this.users = async (options) => handle("users", [options], namespace);
|
|
689
|
+
this.user = async (userId) => handle("user", [userId], namespace);
|
|
690
|
+
this.userByName = async (name) => handle("userByName", [name], namespace);
|
|
691
|
+
this.createUser = async (input) => handle("createUser", [input], namespace);
|
|
692
|
+
this.updateUser = async (input) => handle("updateUser", [input], namespace);
|
|
693
|
+
this.deleteUser = async (userId) => handle("deleteUser", [userId], namespace);
|
|
694
|
+
this.sendPasswordResetEmail = async (input) => handle("sendPasswordResetEmail", [input], namespace);
|
|
695
|
+
this.unenrollMfa = async (input) => handle("unenrollMfa", [input], namespace);
|
|
696
|
+
});
|
|
697
|
+
root.idp = { Client };
|
|
698
|
+
return withDispose({
|
|
699
|
+
/** The mock IDP `Client` constructor (`vi.fn`). */
|
|
700
|
+
Client,
|
|
701
|
+
setResolver(value) {
|
|
702
|
+
resolver = value;
|
|
703
|
+
},
|
|
704
|
+
/**
|
|
705
|
+
* Enqueue a single result for the next IDP call (FIFO; falls back to
|
|
706
|
+
* `setResolver` when exhausted).
|
|
707
|
+
* @param result - Result to return from the next IDP call
|
|
708
|
+
*/
|
|
709
|
+
enqueueResult(result) {
|
|
710
|
+
queue.push(result);
|
|
711
|
+
},
|
|
712
|
+
/**
|
|
713
|
+
* Enqueue results for multiple subsequent IDP calls.
|
|
714
|
+
* @param results - Results to enqueue, one per upcoming call
|
|
715
|
+
*/
|
|
716
|
+
enqueueResults(...results) {
|
|
717
|
+
queue.push(...results);
|
|
718
|
+
},
|
|
719
|
+
get calls() {
|
|
720
|
+
return calls;
|
|
721
|
+
},
|
|
722
|
+
reset() {
|
|
723
|
+
queue.length = 0;
|
|
724
|
+
resolver = () => null;
|
|
725
|
+
calls.length = 0;
|
|
726
|
+
}
|
|
727
|
+
}, () => {
|
|
728
|
+
root.idp = prev;
|
|
729
|
+
});
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
//#endregion
|
|
733
|
+
//#region src/vitest/mocks/tailordb.ts
|
|
734
|
+
var MockQueryResult = class {
|
|
735
|
+
command;
|
|
736
|
+
rowCount;
|
|
737
|
+
rows;
|
|
738
|
+
constructor(rows) {
|
|
739
|
+
this.command = "";
|
|
740
|
+
this.rowCount = rows.length;
|
|
741
|
+
this.rows = rows;
|
|
742
|
+
}
|
|
743
|
+
};
|
|
744
|
+
/**
|
|
745
|
+
* Acquire a disposable mock for TailorDB operations. Installs a mock
|
|
746
|
+
* `tailordb.Client` whose `queryObject` is a shared `vi.fn()` (so query
|
|
747
|
+
* responses can be staged before the client is constructed). Restored on
|
|
748
|
+
* dispose.
|
|
749
|
+
* @returns Disposable TailorDB mock control object
|
|
750
|
+
* @example
|
|
751
|
+
* ```typescript
|
|
752
|
+
* import { mockTailordb } from "@tailor-platform/sdk/vitest";
|
|
753
|
+
*
|
|
754
|
+
* test("order-based", async () => {
|
|
755
|
+
* using db = mockTailordb();
|
|
756
|
+
* db.enqueueResults([], [{ age: 30 }], []); // BEGIN / SELECT / COMMIT
|
|
757
|
+
* // …
|
|
758
|
+
* expect(db.queryObject).toHaveBeenCalledTimes(3);
|
|
759
|
+
* expect(db.Client).toHaveBeenCalledWith({ namespace: "tailordb" });
|
|
760
|
+
* });
|
|
761
|
+
* ```
|
|
762
|
+
*/
|
|
763
|
+
function mockTailordb() {
|
|
764
|
+
const root = tailordbRoot();
|
|
765
|
+
const prevClient = root.Client;
|
|
766
|
+
const queryObject = vi.fn(async (_query, _params = []) => new MockQueryResult([]));
|
|
767
|
+
const connect = vi.fn(async () => {});
|
|
768
|
+
const createdClients = [];
|
|
769
|
+
const Client = vi.fn(function(config) {
|
|
770
|
+
const record = {
|
|
771
|
+
namespace: config?.namespace,
|
|
772
|
+
ended: false
|
|
773
|
+
};
|
|
774
|
+
createdClients.push(record);
|
|
775
|
+
this.connect = connect;
|
|
776
|
+
this.end = vi.fn(async () => {
|
|
777
|
+
record.ended = true;
|
|
778
|
+
});
|
|
779
|
+
this.queryObject = queryObject;
|
|
780
|
+
this.createTransaction = (name) => {
|
|
781
|
+
if (!name) throw new Error("Transaction name must be a non-empty string");
|
|
782
|
+
return {
|
|
783
|
+
begin: async () => {},
|
|
784
|
+
commit: async () => {},
|
|
785
|
+
rollback: async () => {},
|
|
786
|
+
queryObject
|
|
787
|
+
};
|
|
788
|
+
};
|
|
789
|
+
});
|
|
790
|
+
root.Client = Client;
|
|
791
|
+
return withDispose({
|
|
792
|
+
/** The mock `tailordb.Client` constructor (`vi.fn`). */
|
|
793
|
+
Client,
|
|
794
|
+
/** The shared `queryObject` `vi.fn` used by every client and transaction. */
|
|
795
|
+
queryObject,
|
|
796
|
+
/**
|
|
797
|
+
* Set a fallback query resolver. Called when the enqueue queue is empty.
|
|
798
|
+
* @param resolver - Function that returns rows for a given query and params
|
|
799
|
+
*/
|
|
800
|
+
setQueryResolver(resolver) {
|
|
801
|
+
queryObject.mockImplementation(async (query, params = []) => new MockQueryResult(resolver(query, params) ?? []));
|
|
802
|
+
},
|
|
803
|
+
/**
|
|
804
|
+
* Enqueue rows for the next `queryObject` call (FIFO; takes priority over
|
|
805
|
+
* `setQueryResolver`). Call with no arguments for an empty result.
|
|
806
|
+
* @param rows - Row objects to return from the next `queryObject` call
|
|
807
|
+
*/
|
|
808
|
+
enqueueResult(...rows) {
|
|
809
|
+
queryObject.mockImplementationOnce(async () => new MockQueryResult(rows));
|
|
810
|
+
},
|
|
811
|
+
/**
|
|
812
|
+
* Enqueue rows for multiple subsequent `queryObject` calls (FIFO).
|
|
813
|
+
* @param rowsList - Rows arrays, one per upcoming query
|
|
814
|
+
*/
|
|
815
|
+
enqueueResults(...rowsList) {
|
|
816
|
+
for (const rows of rowsList) queryObject.mockImplementationOnce(async () => new MockQueryResult(rows));
|
|
817
|
+
},
|
|
818
|
+
/**
|
|
819
|
+
* All queries executed via `queryObject`, in order, derived from the vi.fn
|
|
820
|
+
* call records.
|
|
821
|
+
* @returns Executed queries array
|
|
822
|
+
*/
|
|
823
|
+
get executedQueries() {
|
|
824
|
+
return queryObject.mock.calls.map(([query, params]) => ({
|
|
825
|
+
query,
|
|
826
|
+
params: params ?? []
|
|
827
|
+
}));
|
|
828
|
+
},
|
|
829
|
+
/**
|
|
830
|
+
* All TailorDB clients created, with their namespace and end state.
|
|
831
|
+
* @returns Created clients array
|
|
832
|
+
*/
|
|
833
|
+
get createdClients() {
|
|
834
|
+
return createdClients;
|
|
835
|
+
},
|
|
836
|
+
/** Reset query responses and recorded calls (keeps the mock installed). */
|
|
837
|
+
reset() {
|
|
838
|
+
queryObject.mockReset();
|
|
839
|
+
queryObject.mockImplementation(async () => new MockQueryResult([]));
|
|
840
|
+
connect.mockClear();
|
|
841
|
+
Client.mockClear();
|
|
842
|
+
createdClients.length = 0;
|
|
843
|
+
}
|
|
844
|
+
}, () => {
|
|
845
|
+
root.Client = prevClient;
|
|
846
|
+
});
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
//#endregion
|
|
850
|
+
//#region src/vitest/mocks/workflow.ts
|
|
851
|
+
/**
|
|
852
|
+
* Acquire a disposable mock for workflow operations (`tailor.workflow`).
|
|
853
|
+
* Restored on dispose.
|
|
854
|
+
* @returns Disposable workflow mock control object
|
|
855
|
+
* @example
|
|
856
|
+
* ```typescript
|
|
857
|
+
* import { mockWorkflow } from "@tailor-platform/sdk/vitest";
|
|
858
|
+
*
|
|
859
|
+
* test("job handler", async () => {
|
|
860
|
+
* using wf = mockWorkflow();
|
|
861
|
+
* wf.setJobHandler((name) => (name === "validate" ? { valid: true } : null));
|
|
862
|
+
* await runWorkflowUnderTest(); // calls tailor.workflow.triggerJobFunction("validate", {})
|
|
863
|
+
* expect(wf.triggerJobFunction).toHaveBeenCalledWith("validate", {});
|
|
864
|
+
* });
|
|
865
|
+
* ```
|
|
866
|
+
*/
|
|
867
|
+
function mockWorkflow() {
|
|
868
|
+
const root = tailorRoot();
|
|
869
|
+
const prev = root.workflow;
|
|
870
|
+
const defaultTriggerJob = (jobName, _args) => {
|
|
871
|
+
throw new Error(`No workflow job mock for "${jobName}". Call mockWorkflow().setJobHandler(...) or enqueueResult(...), or use runWorkflowLocally() for local workflow execution.`);
|
|
872
|
+
};
|
|
873
|
+
const defaultTriggerWorkflow = async (_workflowName, _args, _options) => {
|
|
874
|
+
return TRIGGER_DEFAULT;
|
|
875
|
+
};
|
|
876
|
+
const defaultResumeWorkflow = async (executionId) => executionId;
|
|
877
|
+
const triggerJobFunction = vi.fn(defaultTriggerJob);
|
|
878
|
+
const triggerWorkflow = vi.fn(defaultTriggerWorkflow);
|
|
879
|
+
const resumeWorkflow = vi.fn(defaultResumeWorkflow);
|
|
880
|
+
const wait = vi.fn((_key, _payload) => null);
|
|
881
|
+
const resolve = vi.fn(async (_executionId, _key, _callback) => {});
|
|
882
|
+
const installedTriggerJobFunction = (jobName, args) => {
|
|
883
|
+
const out = triggerJobFunction(jobName, platformSerialize(args));
|
|
884
|
+
return out instanceof Promise ? out.then((v) => platformSerialize(v)) : platformSerialize(out);
|
|
885
|
+
};
|
|
886
|
+
root.workflow = {
|
|
887
|
+
triggerJobFunction: installedTriggerJobFunction,
|
|
888
|
+
triggerWorkflow: (...call) => call.length >= 3 ? triggerWorkflow(call[0], platformSerialize(call[1]), call[2]) : triggerWorkflow(call[0], platformSerialize(call[1])),
|
|
889
|
+
resumeWorkflow: (executionId) => resumeWorkflow(executionId),
|
|
890
|
+
wait: (key, payload) => wait(key, platformSerialize(payload)),
|
|
891
|
+
resolve: (executionId, key, callback) => resolve(executionId, key, (payload) => {
|
|
892
|
+
const out = callback(payload);
|
|
893
|
+
return out instanceof Promise ? out.then((v) => platformSerialize(v)) : platformSerialize(out);
|
|
894
|
+
})
|
|
895
|
+
};
|
|
896
|
+
return withDispose({
|
|
897
|
+
/** The `triggerJobFunction` `vi.fn`. */
|
|
898
|
+
triggerJobFunction,
|
|
899
|
+
/** The `triggerWorkflow` `vi.fn`. */
|
|
900
|
+
triggerWorkflow,
|
|
901
|
+
/** The `resumeWorkflow` `vi.fn`. */
|
|
902
|
+
resumeWorkflow,
|
|
903
|
+
/** The `wait` `vi.fn`. */
|
|
904
|
+
wait,
|
|
905
|
+
/** The `resolve` `vi.fn`. */
|
|
906
|
+
resolve,
|
|
907
|
+
/**
|
|
908
|
+
* Set a fallback job handler. Called when the enqueue queue is empty.
|
|
909
|
+
* @param handler - Function returning a result for a job name and args
|
|
910
|
+
*/
|
|
911
|
+
setJobHandler(handler) {
|
|
912
|
+
triggerJobFunction.mockImplementation((name, args) => handler(name, args));
|
|
913
|
+
},
|
|
914
|
+
/**
|
|
915
|
+
* Enqueue a single result for the next `triggerJobFunction` call (FIFO;
|
|
916
|
+
* takes priority over `setJobHandler`).
|
|
917
|
+
* @param result - Result to return from the next call
|
|
918
|
+
*/
|
|
919
|
+
enqueueResult(result) {
|
|
920
|
+
triggerJobFunction.mockImplementationOnce(() => result);
|
|
921
|
+
},
|
|
922
|
+
/**
|
|
923
|
+
* Enqueue results for multiple subsequent `triggerJobFunction` calls (FIFO).
|
|
924
|
+
* @param results - Results to enqueue, one per upcoming call
|
|
925
|
+
*/
|
|
926
|
+
enqueueResults(...results) {
|
|
927
|
+
for (const result of results) triggerJobFunction.mockImplementationOnce(() => result);
|
|
928
|
+
},
|
|
929
|
+
/**
|
|
930
|
+
* All jobs triggered via `triggerJobFunction`, in order.
|
|
931
|
+
* @returns Triggered jobs array
|
|
932
|
+
*/
|
|
933
|
+
get triggeredJobs() {
|
|
934
|
+
return triggerJobFunction.mock.calls.map(([jobName, args]) => ({
|
|
935
|
+
jobName,
|
|
936
|
+
args
|
|
937
|
+
}));
|
|
938
|
+
},
|
|
939
|
+
/**
|
|
940
|
+
* Configure what `triggerWorkflow` returns. Pass a string (same id every
|
|
941
|
+
* call) or `(name, args, options) => string`. Default: a placeholder UUID.
|
|
942
|
+
* @param handler - Static execution ID or a function returning one
|
|
943
|
+
*/
|
|
944
|
+
setTriggerHandler(handler) {
|
|
945
|
+
triggerWorkflow.mockImplementation(typeof handler === "function" ? async (name, args, options) => handler(name, args, options) : async () => handler);
|
|
946
|
+
},
|
|
947
|
+
/**
|
|
948
|
+
* Configure what `resumeWorkflow` returns. Pass a string (same id every
|
|
949
|
+
* call) or `(executionId) => string`. Default: echoes the input executionId.
|
|
950
|
+
* @param handler - Static execution ID or a function returning one
|
|
951
|
+
*/
|
|
952
|
+
setResumeHandler(handler) {
|
|
953
|
+
resumeWorkflow.mockImplementation(typeof handler === "function" ? async (executionId) => handler(executionId) : async () => handler);
|
|
954
|
+
},
|
|
955
|
+
/**
|
|
956
|
+
* Configure what `wait` returns. Pass `(key, payload) => unknown` or any
|
|
957
|
+
* other value to return it for every call. Default: `null`.
|
|
958
|
+
* @param handler - Static value or a function returning one
|
|
959
|
+
*/
|
|
960
|
+
setWaitHandler: ((handler) => {
|
|
961
|
+
wait.mockImplementation(typeof handler === "function" ? (key, payload) => handler(key, payload) : () => handler);
|
|
962
|
+
}),
|
|
963
|
+
/**
|
|
964
|
+
* Set the `env` passed to job bodies invoked via `createWorkflowJob().trigger()`.
|
|
965
|
+
* Cleared on dispose / reset.
|
|
966
|
+
* @param env - Env passed to job bodies.
|
|
967
|
+
*/
|
|
968
|
+
setEnv(env) {
|
|
969
|
+
writeWorkflowTestEnv({ ...env });
|
|
970
|
+
},
|
|
971
|
+
/**
|
|
972
|
+
* Configure how `resolve` runs the user-supplied callback. Default: callback
|
|
973
|
+
* is not invoked (records the call only).
|
|
974
|
+
* @param handler - Function invoked per `resolve` call
|
|
975
|
+
*/
|
|
976
|
+
setResolveHandler(handler) {
|
|
977
|
+
resolve.mockImplementation(async (executionId, key, callback) => {
|
|
978
|
+
await handler(executionId, key, callback);
|
|
979
|
+
});
|
|
980
|
+
},
|
|
981
|
+
/**
|
|
982
|
+
* `wait` calls reshaped as `{ key, payload }` for assertions.
|
|
983
|
+
* @returns Wait call records
|
|
984
|
+
*/
|
|
985
|
+
get waitCalls() {
|
|
986
|
+
return wait.mock.calls.map(([key, payload]) => ({
|
|
987
|
+
key,
|
|
988
|
+
payload
|
|
989
|
+
}));
|
|
990
|
+
},
|
|
991
|
+
/**
|
|
992
|
+
* `resolve` calls reshaped as `{ executionId, key }` for assertions.
|
|
993
|
+
* @returns Resolve call records
|
|
994
|
+
*/
|
|
995
|
+
get resolveCalls() {
|
|
996
|
+
return resolve.mock.calls.map(([executionId, key]) => ({
|
|
997
|
+
executionId,
|
|
998
|
+
key
|
|
999
|
+
}));
|
|
1000
|
+
},
|
|
1001
|
+
/** Reset all workflow responses and recorded calls (keeps the mock installed). */
|
|
1002
|
+
reset() {
|
|
1003
|
+
triggerJobFunction.mockReset();
|
|
1004
|
+
triggerJobFunction.mockImplementation(defaultTriggerJob);
|
|
1005
|
+
triggerWorkflow.mockReset();
|
|
1006
|
+
triggerWorkflow.mockImplementation(defaultTriggerWorkflow);
|
|
1007
|
+
resumeWorkflow.mockReset();
|
|
1008
|
+
resumeWorkflow.mockImplementation(defaultResumeWorkflow);
|
|
1009
|
+
wait.mockReset();
|
|
1010
|
+
wait.mockImplementation(() => null);
|
|
1011
|
+
resolve.mockReset();
|
|
1012
|
+
resolve.mockImplementation(async () => {});
|
|
1013
|
+
clearWorkflowTestEnv();
|
|
1014
|
+
}
|
|
1015
|
+
}, () => {
|
|
1016
|
+
root.workflow = prev;
|
|
1017
|
+
clearWorkflowTestEnv();
|
|
1018
|
+
});
|
|
1019
|
+
}
|
|
1020
|
+
|
|
294
1021
|
//#endregion
|
|
295
1022
|
//#region src/vitest/workflow-local.ts
|
|
296
1023
|
var PendingTrigger = class {
|
|
@@ -404,6 +1131,10 @@ function createLocalWorkflowRuntime(previous, triggerJobFunction) {
|
|
|
404
1131
|
platformSerialize(args);
|
|
405
1132
|
return TRIGGER_DEFAULT;
|
|
406
1133
|
},
|
|
1134
|
+
resumeWorkflow: async (executionId) => {
|
|
1135
|
+
if (previous) return await previous.resumeWorkflow(executionId);
|
|
1136
|
+
return executionId;
|
|
1137
|
+
},
|
|
407
1138
|
wait: (key, payload) => {
|
|
408
1139
|
if (previous) return previous.wait(key, payload);
|
|
409
1140
|
throw new Error(`No wait handler for "${key}". Acquire mockWorkflow() and call setWaitHandler(...).`);
|
|
@@ -608,7 +1339,7 @@ function createKyselyMock() {
|
|
|
608
1339
|
*
|
|
609
1340
|
* 3. **Platform API mocks** (environment) — All platform APIs are auto-injected with
|
|
610
1341
|
* control objects: `mockTailordb`, `mockWorkflow`, `mockSecretmanager`,
|
|
611
|
-
* `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv`. Each
|
|
1342
|
+
* `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv`, `mockAigateway`. Each
|
|
612
1343
|
* provides response configuration, call recording, and reset.
|
|
613
1344
|
*
|
|
614
1345
|
* 4. **Environment resolution** — Rewrites `environment: "tailor-runtime"` to the
|
|
@@ -646,5 +1377,5 @@ function tailorRuntime(options) {
|
|
|
646
1377
|
}
|
|
647
1378
|
|
|
648
1379
|
//#endregion
|
|
649
|
-
export { createKyselyMock, mockAuthconnection, mockFile, mockIconv, mockIdp, mockSecretmanager, mockTailordb, mockWorkflow, runWorkflowLocally, tailorRuntime };
|
|
1380
|
+
export { createKyselyMock, mockAigateway, mockAuthconnection, mockFile, mockIconv, mockIdp, mockSecretmanager, mockTailordb, mockWorkflow, runWorkflowLocally, tailorRuntime };
|
|
650
1381
|
//# sourceMappingURL=index.mjs.map
|