@tailor-platform/sdk 2.26.0 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/agent-skills/tailor/SKILL.md +4 -2
  3. package/dist/application-CgJLyJaF.mjs +200 -0
  4. package/dist/application-CgJLyJaF.mjs.map +1 -0
  5. package/dist/application-CvmKh5WT.mjs +1 -0
  6. package/dist/cli/commands/deploy/deploy.d.mts +2 -0
  7. package/dist/cli/commands/deploy/tailordb/migration-validation.d.mts +2 -1
  8. package/dist/cli/commands/executor/get.d.mts +2 -1
  9. package/dist/cli/commands/executor/jobs.d.mts +2 -1
  10. package/dist/cli/commands/executor/trigger.d.mts +2 -1
  11. package/dist/cli/commands/function/get.d.mts +2 -1
  12. package/dist/cli/commands/function/list.d.mts +2 -1
  13. package/dist/cli/commands/organization/folder/create.d.mts +2 -1
  14. package/dist/cli/commands/organization/folder/delete.d.mts +2 -1
  15. package/dist/cli/commands/organization/folder/get.d.mts +2 -1
  16. package/dist/cli/commands/organization/folder/list.d.mts +2 -1
  17. package/dist/cli/commands/organization/folder/update.d.mts +2 -1
  18. package/dist/cli/commands/organization/get.d.mts +2 -1
  19. package/dist/cli/commands/organization/tree.d.mts +2 -1
  20. package/dist/cli/commands/organization/update.d.mts +2 -1
  21. package/dist/cli/commands/show.d.mts +2 -1
  22. package/dist/cli/commands/tailordb/migrate/bundler.d.mts +4 -6
  23. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +8 -1
  24. package/dist/cli/commands/tailordb/migrate/remote-state.d.mts +1 -0
  25. package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +3 -1
  26. package/dist/cli/commands/workflow/executions.d.mts +2 -1
  27. package/dist/cli/commands/workflow/get.d.mts +2 -1
  28. package/dist/cli/commands/workflow/start.d.mts +2 -1
  29. package/dist/cli/commands/workspace/app/health.d.mts +2 -1
  30. package/dist/cli/commands/workspace/app/list.d.mts +2 -1
  31. package/dist/cli/commands/workspace/create.d.mts +5 -2
  32. package/dist/cli/commands/workspace/delete.d.mts +2 -1
  33. package/dist/cli/commands/workspace/get.d.mts +2 -1
  34. package/dist/cli/commands/workspace/restore.d.mts +2 -1
  35. package/dist/cli/commands/workspace/user/invite.d.mts +2 -1
  36. package/dist/cli/commands/workspace/user/list.d.mts +2 -1
  37. package/dist/cli/commands/workspace/user/remove.d.mts +2 -1
  38. package/dist/cli/commands/workspace/user/update.d.mts +2 -1
  39. package/dist/cli/lib.d.mts +3 -3
  40. package/dist/cli/lib.mjs +1 -1
  41. package/dist/cli/lib.mjs.map +1 -1
  42. package/dist/cli/main.d.mts +2 -0
  43. package/dist/cli/main.mjs +68 -55
  44. package/dist/cli/main.mjs.map +1 -1
  45. package/dist/cli/query/index.d.mts +2 -1
  46. package/dist/cli/shared/args.d.mts +4 -2
  47. package/dist/cli/shared/client.d.mts +6 -1
  48. package/dist/cli/shared/context.d.mts +2 -1
  49. package/dist/cli/shared/logger.d.mts +5 -2
  50. package/dist/cli/shared/readonly-guard.d.mts +2 -1
  51. package/dist/cli/shared/seed-context.d.mts +5 -0
  52. package/dist/cli/shared/type-generator.d.mts +2 -1
  53. package/dist/cli/shared/workspace-name.d.mts +2 -0
  54. package/dist/completion/zsh-worker.zsh +220 -19
  55. package/dist/configure/config/types.d.mts +34 -1
  56. package/dist/configure/index.d.mts +6 -6
  57. package/dist/configure/index.mjs +1 -1
  58. package/dist/configure/index.mjs.map +1 -1
  59. package/dist/configure/services/aigateway/types.d.mts +2 -1
  60. package/dist/configure/services/auth/types.d.mts +8 -2
  61. package/dist/configure/services/executor/executor.d.mts +2 -1
  62. package/dist/configure/services/executor/operation.d.mts +2 -1
  63. package/dist/configure/services/executor/trigger/event.d.mts +3 -2
  64. package/dist/configure/services/executor/trigger/schedule.d.mts +2 -1
  65. package/dist/configure/services/executor/trigger/webhook.d.mts +1 -1
  66. package/dist/configure/services/http-adapter/http-adapter.d.mts +2 -1
  67. package/dist/configure/services/idp/permission.d.mts +4 -3
  68. package/dist/configure/services/idp/types.d.mts +2 -1
  69. package/dist/configure/services/resolver/permission.d.mts +2 -1
  70. package/dist/configure/services/resolver/resolver.d.mts +3 -2
  71. package/dist/configure/services/secrets/types.d.mts +2 -1
  72. package/dist/configure/services/staticwebsite/types.d.mts +2 -1
  73. package/dist/configure/services/tailordb/permission.d.mts +2 -1
  74. package/dist/configure/services/tailordb/schema.d.mts +5 -4
  75. package/dist/configure/services/tailordb/types.d.mts +13 -2
  76. package/dist/configure/services/workflow/execution-policy.types.d.mts +2 -1
  77. package/dist/configure/services/workflow/job.d.mts +3 -2
  78. package/dist/configure/services/workflow/wait-point.d.mts +2 -1
  79. package/dist/configure/types/field.types.d.mts +50 -12
  80. package/dist/configure/types/permission-operand.types.d.mts +2 -1
  81. package/dist/configure/types/type.d.mts +3 -2
  82. package/dist/{crashreport-DFpRn-LS.mjs → crashreport-BAG8c7hB.mjs} +4 -4
  83. package/dist/{crashreport-DFpRn-LS.mjs.map → crashreport-BAG8c7hB.mjs.map} +1 -1
  84. package/dist/crashreport-BcXuocwI.mjs +1 -0
  85. package/dist/date-CgP7gMG_.mjs +2 -0
  86. package/dist/date-CgP7gMG_.mjs.map +1 -0
  87. package/dist/{secretmanager-5olfnI1b.mjs → date-representation-Cr7W7Pn2.mjs} +2 -2
  88. package/dist/date-representation-Cr7W7Pn2.mjs.map +1 -0
  89. package/dist/{errors-CpvSChyL.mjs → errors-D3qpNHR6.mjs} +2 -2
  90. package/dist/{errors-CpvSChyL.mjs.map → errors-D3qpNHR6.mjs.map} +1 -1
  91. package/dist/{field-parse-DhnFs9WG.mjs → field-parse-C41e3UAF.mjs} +2 -2
  92. package/dist/{field-parse-DhnFs9WG.mjs.map → field-parse-C41e3UAF.mjs.map} +1 -1
  93. package/dist/idp-G_ojPBB5.mjs.map +1 -1
  94. package/dist/kysely-type-BWMfV301.mjs +48 -0
  95. package/dist/kysely-type-BWMfV301.mjs.map +1 -0
  96. package/dist/logger-DuaT2zY3.mjs +9 -0
  97. package/dist/logger-DuaT2zY3.mjs.map +1 -0
  98. package/dist/{manager-8-JOvuLl.mjs → manager-Bk-7vkwd.mjs} +2 -2
  99. package/dist/{manager-8-JOvuLl.mjs.map → manager-Bk-7vkwd.mjs.map} +1 -1
  100. package/dist/migration-steps-C6F3zNdQ.mjs +3 -0
  101. package/dist/migration-steps-C6F3zNdQ.mjs.map +1 -0
  102. package/dist/package-json-D1BRkjtr.mjs +1 -0
  103. package/dist/parser/service/tailordb/types.d.mts +3 -1
  104. package/dist/plugin/builtin/enum-constants/index.d.mts +2 -1
  105. package/dist/plugin/builtin/file-utils/index.d.mts +2 -1
  106. package/dist/plugin/builtin/kysely-type/index.d.mts +2 -1
  107. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  108. package/dist/plugin/builtin/seed/index.d.mts +11 -1
  109. package/dist/plugin/builtin/seed/index.mjs +1 -1
  110. package/dist/plugin/index.mjs +1 -1
  111. package/dist/register-ts-hook-yxshv0LV.mjs +1013 -0
  112. package/dist/register-ts-hook-yxshv0LV.mjs.map +1 -0
  113. package/dist/runtime/aigateway.mjs +1 -1
  114. package/dist/runtime/authconnection.mjs +1 -1
  115. package/dist/runtime/context.d.mts +2 -1
  116. package/dist/runtime/context.mjs +1 -1
  117. package/dist/runtime/date.d.mts +2 -1
  118. package/dist/runtime/field-parse.d.mts +2 -1
  119. package/dist/runtime/file.d.mts +2 -1
  120. package/dist/runtime/file.mjs +1 -1
  121. package/dist/runtime/globals.d.mts +2 -1
  122. package/dist/runtime/iconv.mjs +1 -1
  123. package/dist/runtime/idp.d.mts +6 -0
  124. package/dist/runtime/idp.mjs +1 -1
  125. package/dist/runtime/index.mjs +1 -1
  126. package/dist/runtime/logger.mjs +1 -1
  127. package/dist/runtime/secretmanager.mjs +1 -1
  128. package/dist/runtime/types.d.mts +7 -1
  129. package/dist/runtime/workflow.d.mts +2 -1
  130. package/dist/runtime/workflow.mjs +1 -1
  131. package/dist/{schema-CRtAmDcl.mjs → schema-B6hJQWp6.mjs} +2 -2
  132. package/dist/schema-B6hJQWp6.mjs.map +1 -0
  133. package/dist/seed/index.d.mts +19 -4
  134. package/dist/seed/index.mjs +7 -9
  135. package/dist/seed/index.mjs.map +1 -1
  136. package/dist/seed-C3P_T_Eh.mjs.map +1 -1
  137. package/dist/service-CETr0AKY.mjs +7 -0
  138. package/dist/service-CETr0AKY.mjs.map +1 -0
  139. package/dist/service-DREWLYxD.mjs +1 -0
  140. package/dist/{service-DFmt9UJP.mjs → service-b1g22NN9.mjs} +2 -2
  141. package/dist/{service-DFmt9UJP.mjs.map → service-b1g22NN9.mjs.map} +1 -1
  142. package/dist/service_pb-Bbu2QSIr.mjs +2 -0
  143. package/dist/service_pb-Bbu2QSIr.mjs.map +1 -0
  144. package/dist/service_pb-urxAIYHT.mjs +1 -0
  145. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +53 -1
  146. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +33 -0
  147. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +0 -8
  148. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +18 -1
  149. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +4 -0
  150. package/dist/telemetry-DpkFGBmu.mjs +1 -0
  151. package/dist/{telemetry-Bklv9kQY.mjs → telemetry-Xk7J829P.mjs} +2 -2
  152. package/dist/{telemetry-Bklv9kQY.mjs.map → telemetry-Xk7J829P.mjs.map} +1 -1
  153. package/dist/types/field.generated.d.mts +2 -2
  154. package/dist/types/tailordb.generated.d.mts +2 -0
  155. package/dist/utils/test/index.mjs +1 -1
  156. package/dist/vitest/date-representation.d.mts +23 -0
  157. package/dist/vitest/index.d.mts +3 -1
  158. package/dist/vitest/index.mjs +1 -1
  159. package/dist/vitest/index.mjs.map +1 -1
  160. package/dist/vitest/migration-steps.d.mts +45 -0
  161. package/dist/vitest/mock-kysely.d.mts +2 -1
  162. package/dist/vitest/mocks/aigateway.d.mts +2 -1
  163. package/dist/vitest/mocks/authconnection.d.mts +2 -1
  164. package/dist/vitest/mocks/file.d.mts +2 -1
  165. package/dist/vitest/mocks/iconv.d.mts +2 -1
  166. package/dist/vitest/mocks/idp.d.mts +3 -1
  167. package/dist/vitest/mocks/logger.d.mts +2 -1
  168. package/dist/vitest/mocks/secretmanager.d.mts +2 -1
  169. package/dist/vitest/mocks/tailordb-pglite.d.mts +2 -1
  170. package/dist/vitest/mocks/tailordb.d.mts +2 -1
  171. package/dist/vitest/mocks/workflow.d.mts +3 -1
  172. package/dist/vitest/pglite-kysely.d.mts +2 -1
  173. package/dist/vitest/setup.d.mts +3 -1
  174. package/dist/vitest/setup.mjs +1 -1
  175. package/dist/vitest/setup.mjs.map +1 -1
  176. package/dist/vitest/workflow-local.d.mts +2 -1
  177. package/dist/{workspace_resource_pb-CxR_6fyN.mjs → workspace_resource_pb-CaoM2npP.mjs} +2 -2
  178. package/dist/workspace_resource_pb-CaoM2npP.mjs.map +1 -0
  179. package/docs/cli/application.md +37 -16
  180. package/docs/cli/data.md +105 -0
  181. package/docs/cli/function.md +2 -0
  182. package/docs/cli/secret.md +6 -6
  183. package/docs/cli/tailordb.md +18 -16
  184. package/docs/cli/user.md +37 -7
  185. package/docs/cli/workspace.md +10 -2
  186. package/docs/cli-reference.md +25 -3
  187. package/docs/configuration.md +28 -6
  188. package/docs/github-actions.md +212 -63
  189. package/docs/multi-environment.md +24 -0
  190. package/docs/plugin/custom.md +2 -1
  191. package/docs/services/auth.md +20 -0
  192. package/docs/services/executor.md +2 -2
  193. package/docs/services/idp.md +6 -1
  194. package/docs/services/resolver.md +3 -1
  195. package/docs/services/staticwebsite.md +5 -5
  196. package/docs/services/tailordb-migration.md +222 -41
  197. package/docs/services/tailordb.md +17 -4
  198. package/docs/testing.md +4 -0
  199. package/package.json +18 -18
  200. package/dist/application-ChqHuhZW.mjs +0 -1
  201. package/dist/application-DS0XKBtK.mjs +0 -200
  202. package/dist/application-DS0XKBtK.mjs.map +0 -1
  203. package/dist/crashreport-CBaRJl5h.mjs +0 -1
  204. package/dist/date-Dri6Yas-.mjs +0 -2
  205. package/dist/date-Dri6Yas-.mjs.map +0 -1
  206. package/dist/kysely-type-RDX59E1j.mjs +0 -48
  207. package/dist/kysely-type-RDX59E1j.mjs.map +0 -1
  208. package/dist/logger-Db-YRTwK.mjs +0 -9
  209. package/dist/logger-Db-YRTwK.mjs.map +0 -1
  210. package/dist/package-json-CmqhDJ__.mjs +0 -1
  211. package/dist/register-ts-hook-BuwkLuxC.mjs +0 -925
  212. package/dist/register-ts-hook-BuwkLuxC.mjs.map +0 -1
  213. package/dist/schema-CRtAmDcl.mjs.map +0 -1
  214. package/dist/secretmanager-5olfnI1b.mjs.map +0 -1
  215. package/dist/service-Bx-7Lz06.mjs +0 -1
  216. package/dist/service-CL1Bp4It.mjs +0 -7
  217. package/dist/service-CL1Bp4It.mjs.map +0 -1
  218. package/dist/service_pb-ZClWtj1X.mjs +0 -2
  219. package/dist/service_pb-ZClWtj1X.mjs.map +0 -1
  220. package/dist/service_pb-dB3RrGeh.mjs +0 -1
  221. package/dist/telemetry-DXHP3VVi.mjs +0 -1
  222. package/dist/workspace_resource_pb-CxR_6fyN.mjs.map +0 -1
@@ -64,4 +64,37 @@ export declare type ControlplaneActivityLog = Message<"tailor.v1.ControlplaneAct
64
64
  */
65
65
  operatedAt?: Timestamp;
66
66
  };
67
+ /**
68
+ * @generated from message tailor.v1.OrganizationActivityLog
69
+ */
70
+ export declare type OrganizationActivityLog = Message<"tailor.v1.OrganizationActivityLog"> & {
71
+ /**
72
+ * @generated from field: string idempotency_key = 1;
73
+ */
74
+ idempotencyKey: string;
75
+ /**
76
+ * @generated from field: string organization_id = 2;
77
+ */
78
+ organizationId: string;
79
+ /**
80
+ * @generated from field: string actor_id = 3;
81
+ */
82
+ actorId: string;
83
+ /**
84
+ * @generated from field: string resource = 4;
85
+ */
86
+ resource: string;
87
+ /**
88
+ * @generated from field: string action = 5;
89
+ */
90
+ action: string;
91
+ /**
92
+ * @generated from field: string identifier = 6;
93
+ */
94
+ identifier: string;
95
+ /**
96
+ * @generated from field: google.protobuf.Timestamp operated_at = 7;
97
+ */
98
+ operatedAt?: Timestamp;
99
+ };
67
100
  //#endregion
@@ -58,14 +58,6 @@ export declare type FunctionExecution = Message<"tailor.v1.FunctionExecution"> &
58
58
  * @generated from field: tailor.v1.FunctionExecution.Status status = 4;
59
59
  */
60
60
  status: FunctionExecution_Status;
61
- /**
62
- * Deprecated: use log_entries instead. Only populated in GetFunctionExecution,
63
- * not in ListFunctionExecutions.
64
- *
65
- * @generated from field: string logs = 5 [deprecated = true];
66
- * @deprecated
67
- */
68
- logs: string;
69
61
  /**
70
62
  * @generated from field: google.protobuf.Timestamp started_at = 6;
71
63
  */
@@ -7,7 +7,7 @@ import { CreateStateflowServiceRequestSchema, CreateStateflowServiceResponseSche
7
7
  import { CreateExecutorExecutorRequestSchema, CreateExecutorExecutorResponseSchema, DeleteExecutorExecutorRequestSchema, DeleteExecutorExecutorResponseSchema, GetExecutorExecutorRequestSchema, GetExecutorExecutorResponseSchema, GetExecutorIncomingWebhookRequestSchema, GetExecutorIncomingWebhookResponseSchema, GetExecutorJobRequestSchema, GetExecutorJobResponseSchema, ListExecutorExecutorsRequestSchema, ListExecutorExecutorsResponseSchema, ListExecutorIncomingWebhooksRequestSchema, ListExecutorIncomingWebhooksResponseSchema, ListExecutorJobAttemptsRequestSchema, ListExecutorJobAttemptsResponseSchema, ListExecutorJobsRequestSchema, ListExecutorJobsResponseSchema, TriggerExecutorRequestSchema, TriggerExecutorResponseSchema, UpdateExecutorExecutorRequestSchema, UpdateExecutorExecutorResponseSchema } from "./executor_pb.mjs";
8
8
  import { CreateSecretManagerSecretRequestSchema, CreateSecretManagerSecretResponseSchema, CreateSecretManagerVaultRequestSchema, CreateSecretManagerVaultResponseSchema, DeleteSecretManagerSecretRequestSchema, DeleteSecretManagerSecretResponseSchema, DeleteSecretManagerVaultRequestSchema, DeleteSecretManagerVaultResponseSchema, GetSecretManagerSecretRequestSchema, GetSecretManagerSecretResponseSchema, GetSecretManagerVaultRequestSchema, GetSecretManagerVaultResponseSchema, ListSecretManagerSecretsRequestSchema, ListSecretManagerSecretsResponseSchema, ListSecretManagerVaultsRequestSchema, ListSecretManagerVaultsResponseSchema, UpdateSecretManagerSecretRequestSchema, UpdateSecretManagerSecretResponseSchema } from "./secret_manager_pb.mjs";
9
9
  import { CreateAuthConnectionRequestSchema, CreateAuthConnectionResponseSchema, CreateAuthHookRequestSchema, CreateAuthHookResponseSchema, CreateAuthIDPConfigRequestSchema, CreateAuthIDPConfigResponseSchema, CreateAuthMachineUserRequestSchema, CreateAuthMachineUserResponseSchema, CreateAuthOAuth2ClientRequestSchema, CreateAuthOAuth2ClientResponseSchema, CreateAuthSCIMConfigRequestSchema, CreateAuthSCIMConfigResponseSchema, CreateAuthSCIMResourceRequestSchema, CreateAuthSCIMResourceResponseSchema, CreateAuthServiceRequestSchema, CreateAuthServiceResponseSchema, CreateControlplaneMachineUserRequestSchema, CreateControlplaneMachineUserResponseSchema, CreatePersonalAccessTokenRequestSchema, CreatePersonalAccessTokenResponseSchema, CreateTenantConfigRequestSchema, CreateTenantConfigResponseSchema, CreateUserProfileConfigRequestSchema, CreateUserProfileConfigResponseSchema, DeleteAuthConnectionRequestSchema, DeleteAuthConnectionResponseSchema, DeleteAuthHookRequestSchema, DeleteAuthHookResponseSchema, DeleteAuthIDPConfigRequestSchema, DeleteAuthIDPConfigResponseSchema, DeleteAuthMachineUserRequestSchema, DeleteAuthMachineUserResponseSchema, DeleteAuthOAuth2ClientRequestSchema, DeleteAuthOAuth2ClientResponseSchema, DeleteAuthSCIMConfigRequestSchema, DeleteAuthSCIMConfigResponseSchema, DeleteAuthSCIMResourceRequestSchema, DeleteAuthSCIMResourceResponseSchema, DeleteAuthServiceRequestSchema, DeleteAuthServiceResponseSchema, DeleteControlplaneMachineUserRequestSchema, DeleteControlplaneMachineUserResponseSchema, DeletePersonalAccessTokenRequestSchema, DeletePersonalAccessTokenResponseSchema, DeleteTenantConfigRequestSchema, DeleteTenantConfigResponseSchema, DeleteUserProfileConfigRequestSchema, DeleteUserProfileConfigResponseSchema, ExchangeAuthConnectionAuthorizationCodeRequestSchema, ExchangeAuthConnectionAuthorizationCodeResponseSchema, GetAuthHookRequestSchema, GetAuthHookResponseSchema, GetAuthIDPConfigRequestSchema, GetAuthIDPConfigResponseSchema, GetAuthMachineUserRequestSchema, GetAuthMachineUserResponseSchema, GetAuthOAuth2ClientRequestSchema, GetAuthOAuth2ClientResponseSchema, GetAuthSCIMConfigRequestSchema, GetAuthSCIMConfigResponseSchema, GetAuthSCIMResourceRequestSchema, GetAuthSCIMResourceResponseSchema, GetAuthSCIMResourcesRequestSchema, GetAuthSCIMResourcesResponseSchema, GetAuthServiceRequestSchema, GetAuthServiceResponseSchema, GetControlplaneMachineUserByNameRequestSchema, GetControlplaneMachineUserByNameResponseSchema, GetControlplaneMachineUserRequestSchema, GetControlplaneMachineUserResponseSchema, GetTenantConfigRequestSchema, GetTenantConfigResponseSchema, GetUserProfileConfigRequestSchema, GetUserProfileConfigResponseSchema, ListAuthConnectionsRequestSchema, ListAuthConnectionsResponseSchema, ListAuthIDPConfigsRequestSchema, ListAuthIDPConfigsResponseSchema, ListAuthMachineUsersRequestSchema, ListAuthMachineUsersResponseSchema, ListAuthOAuth2ClientsRequestSchema, ListAuthOAuth2ClientsResponseSchema, ListAuthServicesRequestSchema, ListAuthServicesResponseSchema, ListControlplaneMachineUsersRequestSchema, ListControlplaneMachineUsersResponseSchema, ListPersonalAccessTokensRequestSchema, ListPersonalAccessTokensResponseSchema, RegisterAuthConnectionSessionRequestSchema, RegisterAuthConnectionSessionResponseSchema, RevokeAuthConnectionRequestSchema, RevokeAuthConnectionResponseSchema, UpdateAuthConnectionRequestSchema, UpdateAuthConnectionResponseSchema, UpdateAuthHookRequestSchema, UpdateAuthHookResponseSchema, UpdateAuthIDPConfigRequestSchema, UpdateAuthIDPConfigResponseSchema, UpdateAuthMachineUserRequestSchema, UpdateAuthMachineUserResponseSchema, UpdateAuthOAuth2ClientRequestSchema, UpdateAuthOAuth2ClientResponseSchema, UpdateAuthSCIMConfigRequestSchema, UpdateAuthSCIMConfigResponseSchema, UpdateAuthSCIMResourceRequestSchema, UpdateAuthSCIMResourceResponseSchema, UpdateAuthServiceRequestSchema, UpdateAuthServiceResponseSchema, UpdateControlplaneMachineUserRequestSchema, UpdateControlplaneMachineUserResponseSchema, UpdateTenantConfigRequestSchema, UpdateTenantConfigResponseSchema, UpdateUserProfileConfigRequestSchema, UpdateUserProfileConfigResponseSchema } from "./auth_pb.mjs";
10
- import { ListControlplaneActivityLogsRequestSchema, ListControlplaneActivityLogsResponseSchema, ListDataplaneEventsRequestSchema, ListDataplaneEventsResponseSchema } from "./events_pb.mjs";
10
+ import { ListControlplaneActivityLogsRequestSchema, ListControlplaneActivityLogsResponseSchema, ListDataplaneEventsRequestSchema, ListDataplaneEventsResponseSchema, ListOrganizationActivityLogsRequestSchema, ListOrganizationActivityLogsResponseSchema } from "./events_pb.mjs";
11
11
  import { CancelJobFunctionExecutionRequestSchema, CancelJobFunctionExecutionResponseSchema, ExecScriptRequestSchema, ExecScriptResponseSchema, GetFunctionExecutionRequestSchema, GetFunctionExecutionResponseSchema, ListFunctionExecutionsRequestSchema, ListFunctionExecutionsResponseSchema, StartJobFunctionRequestSchema, StartJobFunctionResponseSchema, TestExecScriptRequestSchema, TestExecScriptResponseSchema } from "./function_pb.mjs";
12
12
  import { CreateFunctionRegistryRequestSchema, CreateFunctionRegistryResponseSchema, DeleteFunctionRegistryRequestSchema, DeleteFunctionRegistryResponseSchema, DownloadFunctionRegistryScriptRequestSchema, DownloadFunctionRegistryScriptResponseSchema, GetFunctionRegistryRequestSchema, GetFunctionRegistryResponseSchema, ListFunctionRegistriesRequestSchema, ListFunctionRegistriesResponseSchema, UpdateFunctionRegistryRequestSchema, UpdateFunctionRegistryResponseSchema } from "./function_registry_pb.mjs";
13
13
  import { ListMeterAITokenUsagesRequestSchema, ListMeterAITokenUsagesResponseSchema, ListMeterEventCountsRequestSchema, ListMeterEventCountsResponseSchema, ListMeterExecutionCountsRequestSchema, ListMeterExecutionCountsResponseSchema, ListMeterRequestCountsRequestSchema, ListMeterRequestCountsResponseSchema } from "./meter_pb.mjs";
@@ -2508,6 +2508,23 @@ export declare const OperatorService: GenService<{
2508
2508
  input: typeof ListControlplaneActivityLogsRequestSchema;
2509
2509
  output: typeof ListControlplaneActivityLogsResponseSchema;
2510
2510
  };
2511
+ /**
2512
+ * ListOrganizationActivityLogs lists controlplane activity logs of organization-level resources
2513
+ * (organization, folders, teams, access controls, workspace placement) in a given organization.
2514
+ *
2515
+ * [Errors]
2516
+ * - Unauthenticated: token is missing, expired, or invalid
2517
+ * - InvalidArgument: request is invalid
2518
+ * - PermissionDenied: caller does not have permission on the organization
2519
+ * - NotFound: organization does not exist or can not be accessed
2520
+ *
2521
+ * @generated from rpc tailor.v1.OperatorService.ListOrganizationActivityLogs
2522
+ */
2523
+ listOrganizationActivityLogs: {
2524
+ methodKind: "unary";
2525
+ input: typeof ListOrganizationActivityLogsRequestSchema;
2526
+ output: typeof ListOrganizationActivityLogsResponseSchema;
2527
+ };
2511
2528
  /**
2512
2529
  * Function ---------------------------------------------------------
2513
2530
  * ExecScript executes specified JavaScript code in which I/O operations are allowed and returns the result.
@@ -380,6 +380,10 @@ export declare type TailorDBType_Serial = Message<"tailor.v1.TailorDBType.Serial
380
380
  * @generated from field: optional string format = 3;
381
381
  */
382
382
  format?: string;
383
+ /**
384
+ * @generated from field: bool gapless = 4;
385
+ */
386
+ gapless: boolean;
383
387
  };
384
388
  /**
385
389
  * @generated from message tailor.v1.TailorDBType.ValidateConfig
@@ -0,0 +1 @@
1
+ export{t as initTelemetry,n as shutdownTelemetry}from"./telemetry-Xk7J829P.mjs";
@@ -1,2 +1,2 @@
1
- import{SpanStatusCode as e,trace as t}from"@opentelemetry/api";function parseTelemetryConfig(){let e=process.env.OTEL_EXPORTER_OTLP_ENDPOINT??``;return{enabled:e.length>0,endpoint:e}}let n,r=!1,i;async function initTelemetry(){if(r||(r=!0,n=parseTelemetryConfig(),!n.enabled))return;let[{NodeTracerProvider:e,BatchSpanProcessor:t},{OTLPTraceExporter:a},{resourceFromAttributes:o},{ATTR_SERVICE_NAME:s,ATTR_SERVICE_VERSION:c},{readPackageJson:l}]=await Promise.all([import(`@opentelemetry/sdk-trace-node`),import(`@opentelemetry/exporter-trace-otlp-proto`),import(`@opentelemetry/resources`),import(`@opentelemetry/semantic-conventions`),import(`./package-json-CmqhDJ__.mjs`)]),u=(await l()).version??`unknown`;i=new e({resource:o({[s]:`tailor`,[c]:u}),spanProcessors:[new t(new a({url:`${n.endpoint}/v1/traces`}))]}),i.register()}async function shutdownTelemetry(){i&&await i.shutdown()}async function withSpan(n,r){return t.getTracer(`tailor`).startActiveSpan(n,async t=>{try{let n=await r(t);return t.setStatus({code:e.OK}),n}catch(n){throw t.setStatus({code:e.ERROR}),n instanceof Error&&t.recordException(n),n}finally{t.end()}})}export{shutdownTelemetry as n,withSpan as r,initTelemetry as t};
2
- //# sourceMappingURL=telemetry-Bklv9kQY.mjs.map
1
+ import{SpanStatusCode as e,trace as t}from"@opentelemetry/api";function parseTelemetryConfig(){let e=process.env.OTEL_EXPORTER_OTLP_ENDPOINT??``;return{enabled:e.length>0,endpoint:e}}let n,r=!1,i;async function initTelemetry(){if(r||(r=!0,n=parseTelemetryConfig(),!n.enabled))return;let[{NodeTracerProvider:e,BatchSpanProcessor:t},{OTLPTraceExporter:a},{resourceFromAttributes:o},{ATTR_SERVICE_NAME:s,ATTR_SERVICE_VERSION:c},{readPackageJson:l}]=await Promise.all([import(`@opentelemetry/sdk-trace-node`),import(`@opentelemetry/exporter-trace-otlp-proto`),import(`@opentelemetry/resources`),import(`@opentelemetry/semantic-conventions`),import(`./package-json-D1BRkjtr.mjs`)]),u=(await l()).version??`unknown`;i=new e({resource:o({[s]:`tailor`,[c]:u}),spanProcessors:[new t(new a({url:`${n.endpoint}/v1/traces`}))]}),i.register()}async function shutdownTelemetry(){i&&await i.shutdown()}async function withSpan(n,r){return t.getTracer(`tailor`).startActiveSpan(n,async t=>{try{let n=await r(t);return t.setStatus({code:e.OK}),n}catch(n){throw t.setStatus({code:e.ERROR}),n instanceof Error&&t.recordException(n),n}finally{t.end()}})}export{shutdownTelemetry as n,withSpan as r,initTelemetry as t};
2
+ //# sourceMappingURL=telemetry-Xk7J829P.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry-Bklv9kQY.mjs","names":["endpoint","_config","_initialized","_provider","version","readPackageJson","NodeTracerProvider","resourceFromAttributes","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","BatchSpanProcessor","OTLPTraceExporter","trace","name","result","fn","span","SpanStatusCode","error"],"sources":["../src/cli/telemetry/config.ts","../src/cli/telemetry/index.ts"],"sourcesContent":["/**\n * Telemetry configuration parsed from standard OpenTelemetry environment variables.\n * Tracing is enabled when OTEL_EXPORTER_OTLP_ENDPOINT is set.\n */\nexport interface TelemetryConfig {\n readonly enabled: boolean;\n readonly endpoint: string;\n}\n\n/**\n * Parse telemetry configuration from standard OpenTelemetry environment variables.\n * Tracing is enabled when OTEL_EXPORTER_OTLP_ENDPOINT is set.\n * @returns Telemetry configuration\n */\nexport function parseTelemetryConfig(): TelemetryConfig {\n const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? \"\";\n const enabled = endpoint.length > 0;\n\n return {\n enabled,\n endpoint,\n };\n}\n","import { trace, SpanStatusCode, type Span } from \"@opentelemetry/api\";\nimport { parseTelemetryConfig, type TelemetryConfig } from \"./config\";\n\nlet _config: TelemetryConfig | undefined;\nlet _initialized = false;\nlet _provider: { register: () => void; shutdown: () => Promise<void> } | undefined;\n\n/**\n * Check whether telemetry is currently enabled.\n * @returns true if telemetry has been initialized and is enabled\n */\nexport function isTelemetryEnabled(): boolean {\n return _config?.enabled ?? false;\n}\n\n/**\n * Initialize telemetry if OTEL_EXPORTER_OTLP_ENDPOINT is set.\n * When disabled, this is a no-op with zero overhead beyond reading env vars.\n * @returns Promise that resolves when initialization completes\n */\nexport async function initTelemetry(): Promise<void> {\n if (_initialized) return;\n _initialized = true;\n\n _config = parseTelemetryConfig();\n if (!_config.enabled) return;\n\n // Dynamic imports - only loaded when tracing is enabled\n const [\n { NodeTracerProvider, BatchSpanProcessor },\n { OTLPTraceExporter },\n { resourceFromAttributes },\n { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION },\n { readPackageJson },\n ] = await Promise.all([\n import(\"@opentelemetry/sdk-trace-node\"),\n import(\"@opentelemetry/exporter-trace-otlp-proto\"),\n import(\"@opentelemetry/resources\"),\n import(\"@opentelemetry/semantic-conventions\"),\n import(\"#/cli/shared/package-json\"),\n ]);\n\n const packageJson = await readPackageJson();\n const version = packageJson.version ?? \"unknown\";\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: \"tailor\",\n [ATTR_SERVICE_VERSION]: version,\n });\n\n const exporter = new OTLPTraceExporter({\n url: `${_config.endpoint}/v1/traces`,\n });\n\n _provider = new NodeTracerProvider({\n resource,\n spanProcessors: [new BatchSpanProcessor(exporter)],\n });\n\n _provider.register();\n}\n\n/**\n * Shutdown the telemetry provider, flushing all pending spans.\n * Must be called before process exit to ensure traces are exported.\n * @returns Promise that resolves when shutdown completes\n */\nexport async function shutdownTelemetry(): Promise<void> {\n if (!_provider) return;\n await _provider.shutdown();\n}\n\n/**\n * Execute a function within a new span. Records exceptions and sets span status.\n * When no TracerProvider is registered, the OTel API automatically provides\n * noop spans with zero overhead.\n * @param name - Span name\n * @param fn - Function to execute within the span\n * @returns Result of fn\n */\nexport async function withSpan<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n const tracer = trace.getTracer(\"tailor\");\n\n return tracer.startActiveSpan(name, async (span) => {\n try {\n const result = await fn(span);\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (error) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n if (error instanceof Error) {\n span.recordException(error);\n }\n throw error;\n } finally {\n span.end();\n }\n });\n}\n"],"mappings":"+DAcA,SAAgB,sBAAwC,CACtD,IAAMA,EAAW,QAAQ,IAAI,6BAA+B,GAG5D,MAAO,CACL,QAHcA,EAAS,OAAS,EAIhC,UACF,CACF,CCnBA,IAAIC,EACAC,EAAe,GACfC,EAeJ,eAAsB,eAA+B,CAKnD,GAJID,IACJ,EAAe,GAEf,EAAU,qBAAqB,EAC3B,CAACD,EAAQ,SAAS,OAGtB,GAAM,CACJ,CAAE,qBAAoB,sBACtB,CAAE,qBACF,CAAE,0BACF,CAAE,oBAAmB,wBACrB,CAAE,oBACA,MAAM,QAAQ,IAAI,CACpB,OAAO,iCACP,OAAO,4CACP,OAAO,4BACP,OAAO,uCACP,OAAO,8BACT,CAAC,EAGKG,GAAU,MADUC,EAAgB,EAAA,CACd,SAAW,UAWvC,EAAY,IAAIC,EAAmB,CACjC,SAVeC,EAAuB,EACrCC,GAAoB,UACpBC,GAAuBL,CAC1B,CAOS,EACP,eAAgB,CAAC,IAAIM,EAAmB,IANrBC,EAAkB,CACrC,IAAK,GAAGV,EAAQ,SAAS,WAC3B,CAIiD,CAAC,CAAC,CACnD,CAAC,EAEDE,EAAU,SAAS,CACrB,CAOA,eAAsB,mBAAmC,CAClDA,GACL,MAAMA,EAAU,SAAS,CAC3B,CAUA,eAAsB,SAAY,EAAc,EAA4C,CAG1F,OAFeS,EAAM,UAAU,QAEnB,CAAC,CAAC,gBAAgBC,EAAM,KAAO,IAAS,CAClD,GAAI,CACF,IAAMC,EAAS,MAAMC,EAAGC,CAAI,EAE5B,OADAA,EAAK,UAAU,CAAE,KAAMC,EAAe,EAAG,CAAC,EACnCH,CACT,OAASI,EAAO,CAKd,MAJAF,EAAK,UAAU,CAAE,KAAMC,EAAe,KAAM,CAAC,EACzCC,aAAiB,OACnBF,EAAK,gBAAgBE,CAAK,EAEtBA,CACR,QAAU,CACRF,EAAK,IAAI,CACX,CACF,CAAC,CACH"}
1
+ {"version":3,"file":"telemetry-Xk7J829P.mjs","names":["endpoint","_config","_initialized","_provider","version","readPackageJson","NodeTracerProvider","resourceFromAttributes","ATTR_SERVICE_NAME","ATTR_SERVICE_VERSION","BatchSpanProcessor","OTLPTraceExporter","trace","name","result","fn","span","SpanStatusCode","error"],"sources":["../src/cli/telemetry/config.ts","../src/cli/telemetry/index.ts"],"sourcesContent":["/**\n * Telemetry configuration parsed from standard OpenTelemetry environment variables.\n * Tracing is enabled when OTEL_EXPORTER_OTLP_ENDPOINT is set.\n */\nexport interface TelemetryConfig {\n readonly enabled: boolean;\n readonly endpoint: string;\n}\n\n/**\n * Parse telemetry configuration from standard OpenTelemetry environment variables.\n * Tracing is enabled when OTEL_EXPORTER_OTLP_ENDPOINT is set.\n * @returns Telemetry configuration\n */\nexport function parseTelemetryConfig(): TelemetryConfig {\n const endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? \"\";\n const enabled = endpoint.length > 0;\n\n return {\n enabled,\n endpoint,\n };\n}\n","import { trace, SpanStatusCode, type Span } from \"@opentelemetry/api\";\nimport { parseTelemetryConfig, type TelemetryConfig } from \"./config\";\n\nlet _config: TelemetryConfig | undefined;\nlet _initialized = false;\nlet _provider: { register: () => void; shutdown: () => Promise<void> } | undefined;\n\n/**\n * Check whether telemetry is currently enabled.\n * @returns true if telemetry has been initialized and is enabled\n */\nexport function isTelemetryEnabled(): boolean {\n return _config?.enabled ?? false;\n}\n\n/**\n * Initialize telemetry if OTEL_EXPORTER_OTLP_ENDPOINT is set.\n * When disabled, this is a no-op with zero overhead beyond reading env vars.\n * @returns Promise that resolves when initialization completes\n */\nexport async function initTelemetry(): Promise<void> {\n if (_initialized) return;\n _initialized = true;\n\n _config = parseTelemetryConfig();\n if (!_config.enabled) return;\n\n // Dynamic imports - only loaded when tracing is enabled\n const [\n { NodeTracerProvider, BatchSpanProcessor },\n { OTLPTraceExporter },\n { resourceFromAttributes },\n { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION },\n { readPackageJson },\n ] = await Promise.all([\n import(\"@opentelemetry/sdk-trace-node\"),\n import(\"@opentelemetry/exporter-trace-otlp-proto\"),\n import(\"@opentelemetry/resources\"),\n import(\"@opentelemetry/semantic-conventions\"),\n import(\"#/cli/shared/package-json\"),\n ]);\n\n const packageJson = await readPackageJson();\n const version = packageJson.version ?? \"unknown\";\n\n const resource = resourceFromAttributes({\n [ATTR_SERVICE_NAME]: \"tailor\",\n [ATTR_SERVICE_VERSION]: version,\n });\n\n const exporter = new OTLPTraceExporter({\n url: `${_config.endpoint}/v1/traces`,\n });\n\n _provider = new NodeTracerProvider({\n resource,\n spanProcessors: [new BatchSpanProcessor(exporter)],\n });\n\n _provider.register();\n}\n\n/**\n * Shutdown the telemetry provider, flushing all pending spans.\n * Must be called before process exit to ensure traces are exported.\n * @returns Promise that resolves when shutdown completes\n */\nexport async function shutdownTelemetry(): Promise<void> {\n if (!_provider) return;\n await _provider.shutdown();\n}\n\n/**\n * Execute a function within a new span. Records exceptions and sets span status.\n * When no TracerProvider is registered, the OTel API automatically provides\n * noop spans with zero overhead.\n * @param name - Span name\n * @param fn - Function to execute within the span\n * @returns Result of fn\n */\nexport async function withSpan<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n const tracer = trace.getTracer(\"tailor\");\n\n return tracer.startActiveSpan(name, async (span) => {\n try {\n const result = await fn(span);\n span.setStatus({ code: SpanStatusCode.OK });\n return result;\n } catch (error) {\n span.setStatus({ code: SpanStatusCode.ERROR });\n if (error instanceof Error) {\n span.recordException(error);\n }\n throw error;\n } finally {\n span.end();\n }\n });\n}\n"],"mappings":"+DAcA,SAAgB,sBAAwC,CACtD,IAAMA,EAAW,QAAQ,IAAI,6BAA+B,GAG5D,MAAO,CACL,QAHcA,EAAS,OAAS,EAIhC,UACF,CACF,CCnBA,IAAIC,EACAC,EAAe,GACfC,EAeJ,eAAsB,eAA+B,CAKnD,GAJID,IACJ,EAAe,GAEf,EAAU,qBAAqB,EAC3B,CAACD,EAAQ,SAAS,OAGtB,GAAM,CACJ,CAAE,qBAAoB,sBACtB,CAAE,qBACF,CAAE,0BACF,CAAE,oBAAmB,wBACrB,CAAE,oBACA,MAAM,QAAQ,IAAI,CACpB,OAAO,iCACP,OAAO,4CACP,OAAO,4BACP,OAAO,uCACP,OAAO,8BACT,CAAC,EAGKG,GAAU,MADUC,EAAgB,EAAA,CACd,SAAW,UAWvC,EAAY,IAAIC,EAAmB,CACjC,SAVeC,EAAuB,EACrCC,GAAoB,UACpBC,GAAuBL,CAC1B,CAOS,EACP,eAAgB,CAAC,IAAIM,EAAmB,IANrBC,EAAkB,CACrC,IAAK,GAAGV,EAAQ,SAAS,WAC3B,CAIiD,CAAC,CAAC,CACnD,CAAC,EAEDE,EAAU,SAAS,CACrB,CAOA,eAAsB,mBAAmC,CAClDA,GACL,MAAMA,EAAU,SAAS,CAC3B,CAUA,eAAsB,SAAY,EAAc,EAA4C,CAG1F,OAFeS,EAAM,UAAU,QAEnB,CAAC,CAAC,gBAAgBC,EAAM,KAAO,IAAS,CAClD,GAAI,CACF,IAAMC,EAAS,MAAMC,EAAGC,CAAI,EAE5B,OADAA,EAAK,UAAU,CAAE,KAAMC,EAAe,EAAG,CAAC,EACnCH,CACT,OAASI,EAAO,CAKd,MAJAF,EAAK,UAAU,CAAE,KAAMC,EAAe,KAAM,CAAC,EACzCC,aAAiB,OACnBF,EAAK,gBAAgBE,CAAK,EAEtBA,CACR,QAAU,CACRF,EAAK,IAAI,CACX,CACF,CAAC,CACH"}
@@ -4,8 +4,8 @@ export type TailorField = {
4
4
  type: "string" | "boolean" | "uuid" | "integer" | "float" | "decimal" | "enum" | "date" | "datetime" | "time" | "nested";
5
5
  /** Field metadata configuration */
6
6
  metadata: {
7
- /** Date value representation */
8
- as?: "string" | "date" | "temporal" | undefined;
7
+ /** Date value representation; "default" follows defaultDateRepresentation */
8
+ as?: "string" | "date" | "temporal" | "default" | undefined;
9
9
  /** Whether the field is required */
10
10
  required?: boolean | undefined;
11
11
  /** Whether the field is an array */
@@ -62,6 +62,8 @@ export type DBFieldMetadata = {
62
62
  maxValue?: number | undefined;
63
63
  /** Format string for serial value (string type only) */
64
64
  format?: string | undefined;
65
+ /** Number records without gaps */
66
+ gapless?: boolean | undefined;
65
67
  } | undefined;
66
68
  /** Decimal scale (number of digits after decimal point, 0-12) */
67
69
  scale?: number | undefined;
@@ -1,2 +1,2 @@
1
- import{t as e}from"../../field-parse-DhnFs9WG.mjs";function setField(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0})}function createTailorDBHook(t){return(n,r=/* @__PURE__ */ new Date)=>{let i=n&&typeof n==`object`?n:void 0,a=Object.entries(t.fields).reduce((t,[n,a])=>{let o=a,s=i&&Object.hasOwn(i,n)?i[n]:void 0,c;if(n===`id`)c=s??crypto.randomUUID();else if(o.type===`nested`){let t=createTailorDBHook({fields:o.fields});c=o.metadata.array?Array.isArray(s)?s.map(n=>e(n)?t(n,r):n):s:e(s)?t(s,r):s}else o.metadata.hooks?.create?(c=o.metadata.hooks.create({input:s,invoker:null,now:r}),c instanceof Date&&(c=c.toISOString())):c=s;if(c==null&&o.metadata.default!==void 0){let e=o.type===`datetime`||o.type===`date`||o.type===`time`;c=o.metadata.default===`now`&&e?r.toISOString():o.metadata.default}return setField(t,n,c),t},{});if(t.metadata?.typeHook?.create){let{id:e,...n}=a,i=t.metadata.typeHook.create({input:n,invoker:null,now:r});if(i&&typeof i==`object`)for(let[e,t]of Object.entries(i))setField(a,e,t instanceof Date?t.toISOString():t)}return a}}function typeLevelIssues(e,t){let n=e?.metadata?.typeValidate;if(!n)return[];let{id:r,...i}=t,a=[];return n({newRecord:i,oldRecord:null,invoker:null},(e,t)=>{a.push({message:t,path:[e]})}),a}function undeclaredFieldMessage(e){return`Field "${e}" is not declared by the table. Remove it from the row, or add it to the table definition and run \`tailor generate\`.`}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function collectUndeclaredFieldIssues(e,t,n,r){if(isRecord(e))for(let i of Object.keys(e)){if(!Object.hasOwn(t,i)){r.push({message:undeclaredFieldMessage(i),path:n.concat(i)});continue}let a=t[i];if(a?.type!==`nested`)continue;let o=e[i],s=a.fields;a.metadata.array?Array.isArray(o)&&o.forEach((e,t)=>{collectUndeclaredFieldIssues(e,s,n.concat(i,`[${t}]`),r)}):collectUndeclaredFieldIssues(o,s,n.concat(i),r)}}function createStandardSchema(e,t,n){let validateHooked=t=>{let r=typeLevelIssues(n,t);if(r.length>0)return{issues:r};let i=e.parse({value:t,data:t,invoker:null});return i.issues?i:{value:t}};return{"~standard":{version:1,vendor:`@tailor-platform/sdk`,validate:e=>{let r=t(e),i=[];n&&collectUndeclaredFieldIssues(e,n.fields,[],i);let a=validateHooked(r),o=[...i,...a.issues??[]];return o.length>0?{issues:o}:a}}}}export{createStandardSchema,createTailorDBHook};
1
+ import{t as e}from"../../field-parse-C41e3UAF.mjs";function setField(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0})}function createTailorDBHook(t){return(n,r=/* @__PURE__ */ new Date)=>{let i=n&&typeof n==`object`?n:void 0,a=Object.entries(t.fields).reduce((t,[n,a])=>{let o=a,s=i&&Object.hasOwn(i,n)?i[n]:void 0,c;if(n===`id`)c=s??crypto.randomUUID();else if(o.type===`nested`){let t=createTailorDBHook({fields:o.fields});c=o.metadata.array?Array.isArray(s)?s.map(n=>e(n)?t(n,r):n):s:e(s)?t(s,r):s}else o.metadata.hooks?.create?(c=o.metadata.hooks.create({input:s,invoker:null,now:r}),c instanceof Date&&(c=c.toISOString())):c=s;if(c==null&&o.metadata.default!==void 0){let e=o.type===`datetime`||o.type===`date`||o.type===`time`;c=o.metadata.default===`now`&&e?r.toISOString():o.metadata.default}return setField(t,n,c),t},{});if(t.metadata?.typeHook?.create){let{id:e,...n}=a,i=t.metadata.typeHook.create({input:n,invoker:null,now:r});if(i&&typeof i==`object`)for(let[e,t]of Object.entries(i))setField(a,e,t instanceof Date?t.toISOString():t)}return a}}function typeLevelIssues(e,t){let n=e?.metadata?.typeValidate;if(!n)return[];let{id:r,...i}=t,a=[];return n({newRecord:i,oldRecord:null,invoker:null},(e,t)=>{a.push({message:t,path:[e]})}),a}function undeclaredFieldMessage(e){return`Field "${e}" is not declared by the table. Remove it from the row, or add it to the table definition and run \`tailor generate\`.`}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function collectUndeclaredFieldIssues(e,t,n,r){if(isRecord(e))for(let i of Object.keys(e)){if(!Object.hasOwn(t,i)){r.push({message:undeclaredFieldMessage(i),path:n.concat(i)});continue}let a=t[i];if(a?.type!==`nested`)continue;let o=e[i],s=a.fields;a.metadata.array?Array.isArray(o)&&o.forEach((e,t)=>{collectUndeclaredFieldIssues(e,s,n.concat(i,`[${t}]`),r)}):collectUndeclaredFieldIssues(o,s,n.concat(i),r)}}function createStandardSchema(e,t,n){let validateHooked=t=>{let r=typeLevelIssues(n,t);if(r.length>0)return{issues:r};let i=e.parse({value:t,data:t,invoker:null});return i.issues?i:{value:t}};return{"~standard":{version:1,vendor:`@tailor-platform/sdk`,validate:e=>{let r=t(e),i=[];n&&collectUndeclaredFieldIssues(e,n.fields,[],i);let a=validateHooked(r),o=[...i,...a.issues??[]];return o.length>0?{issues:o}:a}}}}export{createStandardSchema,createTailorDBHook};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,23 @@
1
+ import { DateRepresentationOption } from "../configure/types/field.types.mjs";
2
+ import { EffectiveDateDefault } from "../runtime/types.mjs";
3
+ //#region src/vitest/date-representation.d.ts
4
+ /**
5
+ * Expose the date default to `t` date fields in this worker, the way the
6
+ * define plugin folds it into deployed bundles.
7
+ * @param dateDefault - The representation `t` date fields without `as` follow
8
+ * @returns A function that restores the previous value
9
+ */
10
+ export declare function applyDateDefault(dateDefault: EffectiveDateDefault): () => void;
11
+ /**
12
+ * Give `t.date()`, `t.datetime()`, and `t.time()` fields that omit `as` the
13
+ * given representation for the rest of this test worker, as if the code under
14
+ * test were bundled under that `defaultDateRepresentation`; `"string"` is the
15
+ * representation of a project that leaves the setting unset. Generated
16
+ * migration tests call it with the representation recorded in the migration's
17
+ * `diff.json`, so a later change to `tailor.config.ts` does not alter what the
18
+ * test exercises.
19
+ * @param representation - The representation to apply, as `as` names it
20
+ * @returns A function that restores the previous representation
21
+ */
22
+ export declare function applyDateRepresentation(representation: DateRepresentationOption): () => void;
23
+ //#endregion
@@ -12,7 +12,9 @@ import { PGliteField } from "./pglite-temporal.mjs";
12
12
  import { CreateKyselyPGliteOptions, PGliteClient, PGliteQueryResult, Unmigrated, createKyselyPGlite } from "./pglite-kysely.mjs";
13
13
  import { ExecutedPGliteQuery, MockTailordbPGliteOptions, mockTailordbWithPGlite } from "./mocks/tailordb-pglite.mjs";
14
14
  import { RunWorkflowLocallyOptions, runWorkflowLocally } from "./workflow-local.mjs";
15
+ import { applyDateRepresentation } from "./date-representation.mjs";
15
16
  import { ExecutedQuery, KyselyMock, createKyselyMock } from "./mock-kysely.mjs";
17
+ import { MigrationStepError, RunMigrationStepsOptions, RunnableMigrationStep, runMigrationSteps } from "./migration-steps.mjs";
16
18
  import { Plugin } from "vitest/config";
17
19
  //#region src/vitest/index.d.ts
18
20
  /**
@@ -73,4 +75,4 @@ export declare function tailorRuntime(options?: {
73
75
  config?: string;
74
76
  }): Plugin[];
75
77
  //#endregion
76
- export { type CreateKyselyPGliteOptions, type ExecutedPGliteQuery, type ExecutedQuery, type KyselyMock, type MockAigatewayOptions, type MockAuthconnectionOptions, type MockFileOptions, type MockIconvOptions, type MockIdpOptions, type MockLoggerOptions, type MockSecretmanagerOptions, type MockTailordbOptions, type MockTailordbPGliteOptions, type PGliteClient, type PGliteField, type PGliteQueryResult, type QueryBehavior, type QueryMatch, type QueryMatcher, type RunWorkflowLocallyOptions, type Unmigrated, createKyselyMock, createKyselyPGlite, mockAigateway, mockAuthconnection, mockFile, mockIconv, mockIdp, mockLogger, mockSecretmanager, mockTailordb, mockTailordbWithPGlite, mockWorkflow, runWorkflowLocally };
78
+ export { type CreateKyselyPGliteOptions, type ExecutedPGliteQuery, type ExecutedQuery, type KyselyMock, MigrationStepError, type MockAigatewayOptions, type MockAuthconnectionOptions, type MockFileOptions, type MockIconvOptions, type MockIdpOptions, type MockLoggerOptions, type MockSecretmanagerOptions, type MockTailordbOptions, type MockTailordbPGliteOptions, type PGliteClient, type PGliteField, type PGliteQueryResult, type QueryBehavior, type QueryMatch, type QueryMatcher, type RunMigrationStepsOptions, type RunWorkflowLocallyOptions, type RunnableMigrationStep, type Unmigrated, applyDateRepresentation, createKyselyMock, createKyselyPGlite, mockAigateway, mockAuthconnection, mockFile, mockIconv, mockIdp, mockLogger, mockSecretmanager, mockTailordb, mockTailordbWithPGlite, mockWorkflow, runMigrationSteps, runWorkflowLocally };
@@ -1,2 +1,2 @@
1
- import{i as e,t}from"../registry-BijIDRVA.mjs";import{a as n,c as r,i,o as a,s as o,u as s}from"../wait-point-invoker-eiP-IIux.mjs";import{t as c}from"../assert-WeXvmG4j.mjs";import{n as l,r as u}from"../node-builtins-DYfhPBnz.mjs";import{t as d}from"../platform-serialize-DkiTdHOt.mjs";import{i as f,n as p,r as m,t as h}from"../secretmanager-5olfnI1b.mjs";import{createRequire as g}from"node:module";import{isEqual as _}from"es-toolkit";import{fileURLToPath as v}from"node:url";import{ColumnNode as y,CompiledQuery as b,InsertQueryNode as x,Kysely as S,PostgresAdapter as C,PostgresIntrospector as w,PostgresQueryCompiler as T,PrimitiveValueListNode as E,ReferenceNode as D,UpdateQueryNode as O,ValueListNode as k,ValueNode as A,ValuesNode as j}from"kysely";import{dirname as M,isAbsolute as N,matchesGlob as P,relative as F,resolve as I}from"node:path";import{vi as L}from"vitest";function isBlockedModule(e){return u(e)}function getBlockedMessage(e){return l(e)}const R=[`**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}`],z=/* @__PURE__ */ new Set([`ImportDeclaration`,`ExportNamedDeclaration`,`ExportAllDeclaration`]),B=/* @__PURE__ */ new Set(/* @__PURE__ */ `break.case.catch.class.const.continue.debugger.default.delete.do.else.enum.export.extends.false.finally.for.function.if.import.in.instanceof.new.null.return.super.switch.this.throw.true.try.typeof.var.void.while.with.yield.let.static.implements.interface.package.private.protected.public.await.arguments.eval`.split(`.`)),V=/^[A-Za-z_$]/,H=/^[A-Za-z0-9_$]*$/;function isSafeBindingName(e){if(B.has(e)||e.length===0)return!1;let t=e[0];return t!==void 0&&V.test(t)&&H.test(e.slice(1))}function buildBlockedReplacement(e,t){let n=JSON.stringify(t),r=`throw new Error(${n});`,i=`(() => { throw new Error(${n}); })()`;if(e.type===`ExportNamedDeclaration`){let t=e.specifiers??[],n=[];for(let e of t){let t=e.exported?.name;if(typeof t==`string`){if(t==="default"){n.push(`export default ${i};`);continue}if(!isSafeBindingName(t))return r;n.push(`export const ${t} = ${i};`)}}return n.length>0?n.join(` `):r}if(e.type===`ExportAllDeclaration`){let t=e.exported?.name;return typeof t==`string`&&isSafeBindingName(t)?`export const ${t} = ${i};`:r}return r}const toFileList=e=>Array.isArray(e)?e:e?[e]:[];let U;function supportsDefaultProjectInheritance(){if(U===void 0)try{let{version:e}=g(import.meta.url)(`vitest/package.json`);U=Number.parseInt(e,10)>=5}catch{U=!1}return U}function createBlockPlugin(){let isTestFile=()=>!1,isUserSourceFile=()=>!1;return{name:`tailor-runtime-block-node`,configResolved(e){let t=e.test,n=t?.root??e.root,toAbsolutePaths=(e,t)=>toFileList(e).map(e=>I(t,e)),r=/* @__PURE__ */ new Set([...toAbsolutePaths(t?.setupFiles,n),...toAbsolutePaths(t?.globalSetup,n)]),i=[{root:n,patterns:t?.include??R}];for(let e of t?.projects??[]){let t=e.test;if(!t)continue;let a=t.root??n;for(let e of toAbsolutePaths(t.setupFiles,a))r.add(e);for(let e of toAbsolutePaths(t.globalSetup,a))r.add(e);i.push({root:a,patterns:t.include??R})}isTestFile=e=>r.has(e)?!0:i.some(({root:t,patterns:n})=>{let r=N(e)?F(t,e):e;return n.some(e=>P(r,e))}),isUserSourceFile=e=>{if(!N(e))return!1;let t=F(n,e);return t!==``&&!t.startsWith(`..`)&&!N(t)}},transform(e,t){let n=t.search(/[?#]/),r=n===-1?t:t.slice(0,n);if(isTestFile(r)||r.includes(`node_modules`)||!isUserSourceFile(r))return;let i;try{i=this.parse(e)}catch{return}let a=[];for(let e of i.body){if(!z.has(e.type))continue;let t=e.source?.value;typeof t==`string`&&isBlockedModule(t)&&a.push({start:e.start,end:e.end,replacement:buildBlockedReplacement(e,getBlockedMessage(t))})}if(a.length===0)return;let o=e;for(let e of a.toSorted((e,t)=>t.start-e.start))o=o.slice(0,e.start)+e.replacement+o.slice(e.end);return{code:o,map:null}}}}function setConfigEnv(e,t){e.env={...e.env,__TAILOR_RUNTIME_CONFIG:t}}function createEnvironmentPlugin(e){let t=M(v(import.meta.url)),n=I(t,`environment.mjs`),r=I(t,`setup.mjs`),selectsTailorRuntime=e=>e===`tailor-runtime`||e===n;return{name:`tailor-runtime-environment`,config(t){let i=t.test,a=!!i&&selectsTailorRuntime(i.environment);if(i&&a&&(i.environment=n),i?.projects)for(let o of i.projects){if(typeof o==`string`)continue;let i=o.test??={};if(!(i.environment===void 0&&a&&(o.extends===!0||o.extends===void 0&&supportsDefaultProjectInheritance()))&&!selectsTailorRuntime(i.environment)){e?.config&&setConfigEnv(i,``);continue}i.environment=n;let s=toFileList(i.setupFiles);if(s.includes(r)||(i.setupFiles=[...s,r]),e?.config){let n=o.root??i.root??t.root??process.cwd();setConfigEnv(i,I(n,e.config))}}if(e?.config&&i){let n=i.root??t.root??process.cwd();setConfigEnv(i,a?I(n,e.config):``)}let o=toFileList(i?.setupFiles);return i&&typeof i.setupFiles==`string`&&(i.setupFiles=o),!a||o.includes(r)?{}:{test:{setupFiles:[r]}}}}}function mockAigateway(e={}){let t=p(),n=t.aigateway,r={...e.urls};async function defaultGet(e){let t=r[e];if(t===void 0)throw Error(`No AI Gateway registered for "${e}". Acquire mockAigateway() and call setUrls(...).`);return{url:t}}let i=L.fn(defaultGet);return t.aigateway={get:i},f({get:i,setUrls(e){r=e},setUrl(e,t){r={...r,[e]:t}},get calls(){return i.mock.calls.map(([e])=>({name:e}))},clear(){i.mockClear()},reset(){r={},i.mockReset(),i.mockImplementation(defaultGet)}},()=>{t.aigateway=n})}function mockAuthconnection(e={}){let t=p(),n=t.authconnection,r={...e.tokens};async function defaultGetConnectionToken(t){let n=r[t];if(n)return n;if(e.onUnhandled===`error`)throw Error(`No AuthConnection token configured for "${t}"`);return{access_token:`mock-token`}}let i=L.fn(defaultGetConnectionToken);return t.authconnection={getConnectionToken:i},f({getConnectionToken:i,setTokens(e){r=e},setToken(e,t){r={...r,[e]:t}},get calls(){return i.mock.calls.map(([e])=>({connectionName:e}))},clear(){i.mockClear()},reset(){r={},i.mockReset(),i.mockImplementation(defaultGetConnectionToken)}},()=>{t.authconnection=n})}const W=[`upload`,`download`,`downloadAsBase64`,`delete`,`getMetadata`,`downloadStream`,`uploadStream`],G={upload:{metadata:{fileSize:0,sha256sum:``}},download:{data:/* @__PURE__ */ new Uint8Array,metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}},downloadAsBase64:{data:``,metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}},getMetadata:{contentType:``,fileSize:0,sha256sum:``,urlPath:``},downloadStream:null,uploadStream:{metadata:{fileSize:0,sha256sum:``}}};function mockFile(e={}){let t=m(),n=t.file,{onUnhandled:r=`fallback`}=e,i=[],a=[],resolver=()=>null;function handle(e,t,n,a,o){if(i.length>0)return i.shift();let s=resolver(e,{method:e,namespace:t,tableName:n,fieldName:a,recordId:o});if(s!=null)return s;if(r===`error`)throw Error(`No File mock configured for "${e}"`);let c=G[e];return c===void 0?void 0:structuredClone(c)}let o=L.fn(async(...e)=>{let[t,n,r,i]=e;return handle(`upload`,t,n,r,i)}),s=L.fn(async(...e)=>handle(`download`,...e)),c=L.fn(async(...e)=>handle(`downloadAsBase64`,...e)),l=L.fn(async(...e)=>{handle(`delete`,...e)}),u=L.fn(async(...e)=>handle(`getMetadata`,...e)),d=L.fn(async(...e)=>handle(`downloadStream`,...e)??{body:new ReadableStream({start(e){e.close()}}),metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}}),p=L.fn(async(...e)=>{let[t,n,r,i]=e;return handle(`uploadStream`,t,n,r,i)}),h={upload:o,download:s,downloadAsBase64:c,delete:l,getMetadata:u,downloadStream:d,uploadStream:p};function track(e,t){return function(...n){return a.push({method:e,namespace:n[0],tableName:n[1],fieldName:n[2],recordId:n[3]}),t.apply(this,n)}}t.file={upload:track(`upload`,o),download:track(`download`,s),downloadAsBase64:track(`downloadAsBase64`,c),delete:track(`delete`,l),getMetadata:track(`getMetadata`,u),downloadStream:track(`downloadStream`,d),uploadStream:track(`uploadStream`,p)};function allMocks(){return W.map(e=>h[e])}let g={...h,setResolver(e){resolver=e},enqueueResult(e){i.push(e)},enqueueResults(...e){i.push(...e)},get calls(){return a},clear(){a.length=0;for(let e of allMocks())e.mockClear()},reset(){i.length=0,a.length=0,resolver=()=>null;for(let e of allMocks())e.mockReset()}};return f(g,()=>{t.file=n})}function isUtf8(e){return e===`UTF8`||e===`UTF-8`}function defaultIconvResult(e,t){switch(e){case`convert`:case`convertBuffer`:return isUtf8(t[2])?``:/* @__PURE__ */ new Uint8Array;case`decode`:return``;case`encode`:return isUtf8(t[1])?``:/* @__PURE__ */ new Uint8Array;case`encodings`:return[]}}function mockIconv(e={}){let t=p(),n=t.iconv,r=null,i=[];function resolve(t,n){if(r){let e=r(t,n);if(e!=null)return e}if(e.onUnhandled===`error`)throw Error(`No Iconv mock behavior configured for "${t}"`);return defaultIconvResult(t,n)}function defaultConvert(e,t,n){return resolve(`convert`,[e,t,n])}function defaultConvertBuffer(e,t,n){return resolve(`convertBuffer`,[e,t,n])}function defaultDecode(e,t){return resolve(`decode`,[e,t])}function defaultEncode(e,t){return resolve(`encode`,[e,t])}function defaultEncodings(){return resolve(`encodings`,[])}let a=L.fn(defaultConvert),o=L.fn(defaultConvertBuffer),s=L.fn(defaultDecode),c=L.fn(defaultEncode),l=L.fn(defaultEncodings);function track(e,t){return function(...n){return i.push({method:e,args:[...n]}),t.apply(this,n)}}let u=track(`convert`,a),d=track(`convertBuffer`,o),m=track(`decode`,s),h=track(`encode`,c),g=track(`encodings`,l);class MockIconv{#e;#t;constructor(e,t){this.#e=e,this.#t=t}convert(e){return u.call(this,e,this.#e,this.#t)}}t.iconv={convert:u,convertBuffer:d,decode:m,encode:h,encodings:g,Iconv:MockIconv};function clear(){i.length=0,a.mockClear(),o.mockClear(),s.mockClear(),c.mockClear(),l.mockClear()}return f({convert:a,convertBuffer:o,decode:s,encode:c,encodings:l,setResolver(e){r=e},get calls(){return i},clear,reset(){r=null,i.length=0,a.mockReset(),a.mockImplementation(defaultConvert),o.mockReset(),o.mockImplementation(defaultConvertBuffer),s.mockReset(),s.mockImplementation(defaultDecode),c.mockReset(),c.mockImplementation(defaultEncode),l.mockReset(),l.mockImplementation(defaultEncodings)}},()=>{t.iconv=n})}const K=[`users`,`user`,`userByName`,`createUser`,`updateUser`,`deleteUser`,`sendPasswordResetEmail`,`unenrollMfa`],q={id:`mock-id`,name:`mock-user`,disabled:!1,mfaEnrolled:!1,mfaFactorIds:[]},J={users:{users:[],nextPageToken:null,totalCount:0},user:q,userByName:q,createUser:q,updateUser:q,deleteUser:!0,sendPasswordResetEmail:!0,unenrollMfa:!0};function mockIdp(e={}){let t=p(),n=t.idp,{onUnhandled:r=`fallback`}=e,i=[],a=[],resolver=()=>null,o=/* @__PURE__ */ new Map;function compatibilityArgs(e,t){return e===`users`&&t.length===0?[void 0]:t}function handle(e,t,n){if(i.length>0)return i.shift();let a=resolver(e,compatibilityArgs(e,t),n);if(a!=null)return a;if(r===`error`)throw Error(`No IdP mock configured for "${n}.${e}"`);return structuredClone(J[e])}function createNamespaceMocks(e){return{users:L.fn(async(...t)=>handle(`users`,t,e)),user:L.fn(async(...t)=>handle(`user`,t,e)),userByName:L.fn(async(...t)=>handle(`userByName`,t,e)),createUser:L.fn(async(...t)=>handle(`createUser`,t,e)),updateUser:L.fn(async(...t)=>handle(`updateUser`,t,e)),deleteUser:L.fn(async(...t)=>handle(`deleteUser`,t,e)),sendPasswordResetEmail:L.fn(async(...t)=>handle(`sendPasswordResetEmail`,t,e)),unenrollMfa:L.fn(async(...t)=>handle(`unenrollMfa`,t,e))}}function namespace(e){let t=o.get(e);if(t)return t;let n=createNamespaceMocks(e);return o.set(e,n),n}function track(e,t,n){return function(...r){return a.push({method:e,args:[...compatibilityArgs(e,r)],namespace:n}),t.apply(this,r)}}let defaultClient=function(e){let t=namespace(e.namespace);this.users=track(`users`,t.users,e.namespace),this.user=track(`user`,t.user,e.namespace),this.userByName=track(`userByName`,t.userByName,e.namespace),this.createUser=track(`createUser`,t.createUser,e.namespace),this.updateUser=track(`updateUser`,t.updateUser,e.namespace),this.deleteUser=track(`deleteUser`,t.deleteUser,e.namespace),this.sendPasswordResetEmail=track(`sendPasswordResetEmail`,t.sendPasswordResetEmail,e.namespace),this.unenrollMfa=track(`unenrollMfa`,t.unenrollMfa,e.namespace)},s=L.fn(defaultClient);t.idp={Client:s};function allMocks(){return[...o.values()].flatMap(e=>K.map(t=>e[t]))}return f({Client:s,namespace,setResolver(e){resolver=e},enqueueResult(e){i.push(e)},enqueueResults(...e){i.push(...e)},get calls(){return a},clear(){a.length=0,s.mockClear();for(let e of allMocks())e.mockClear()},reset(){i.length=0,a.length=0,resolver=()=>null,s.mockReset(),s.mockImplementation(defaultClient);for(let e of allMocks())e.mockReset()}},()=>{t.idp=n})}function mockLogger(e={}){let t=p(),n=t.logger,r=L.fn((e,t)=>{}),i=L.fn((e,t)=>{}),a=L.fn((e,t)=>{}),o=L.fn((e,t)=>{}),s=L.fn(e=>{});t.logger={debug:r,info:i,warn:a,error:o,setAttributes:s};let c={debug:r,info:i,warn:a,error:o};return f({debug:r,info:i,warn:a,error:o,setAttributes:s,get calls(){return Object.entries(c).flatMap(([e,t])=>t.mock.calls.map((n,r)=>({order:t.mock.invocationCallOrder[r]??0,call:{severity:e,message:n[0],attributes:n[1]}}))).toSorted((e,t)=>e.order-t.order).map(e=>e.call)},clear(){r.mockClear(),i.mockClear(),a.mockClear(),o.mockClear(),s.mockClear()},reset(){r.mockReset(),i.mockReset(),a.mockReset(),o.mockReset(),s.mockReset()}},()=>{t.logger=n})}function testRegex(e,t){let n=e.lastIndex;e.lastIndex=0;try{return e.test(t)}finally{e.lastIndex=n}}var MockQueryResult=class{command;rowCount;rows;constructor(e){this.command=``,this.rowCount=e.length,this.rows=e}};function mockTailordb(e={}){let t=m(),n=t.Client,r=[],i;function matchesQuery(e,t,n){if(typeof e==`function`)return e(t,n);if(typeof e==`string`)return t===e;if(e instanceof RegExp)return testRegex(e,t);let r;if(r=typeof e.sql==`string`?t===e.sql:testRegex(e.sql,t),!r||e.params===void 0)return r;if(typeof e.params==`function`)return e.params(n);let i=e.params;return n.length===i.length&&n.every((e,t)=>_(e,i[t]))}function queryResponse(e){if(e.type===`error`)throw e.error;return new MockQueryResult(e.rows)}async function defaultQuery(t,n=[]){for(let e=r.length-1;e>=0;--e){let i=r[e];if(!i||!matchesQuery(i.matcher,t,n))continue;let a=i.once.shift();if(a)return queryResponse(a);if(i.fallback)return queryResponse(i.fallback)}if(i)return new MockQueryResult(i(t,n)??[]);if(e.onUnhandled===`error`)throw Error(`No TailorDB query behavior matched: ${t}`);return new MockQueryResult([])}let a=L.fn(defaultQuery),defaultConnect=async()=>{},o=L.fn(defaultConnect),s=[];function enqueueRowsList(e){for(let t of e)a.mockImplementationOnce(async()=>new MockQueryResult(t))}let defaultClient=function(e){let t={namespace:e?.namespace,ended:!1};s.push(t),this.connect=o,this.end=L.fn(async()=>{t.ended=!0}),this.queryObject=a,this.createTransaction=e=>{if(!e)throw Error(`Transaction name must be a non-empty string`);return{begin:async()=>{},commit:async()=>{},rollback:async()=>{},queryObject:a}}},c=L.fn(defaultClient);return t.Client=c,f({Client:c,queryObject:a,setQueryResolver(e){i=e,a.mockImplementation(defaultQuery)},onQuery(e){let t={matcher:e,once:[]};r.push(t);let n={returnsRows(e){return t.fallback={type:`rows`,rows:e},n},returnsRowsOnce(e){return t.once.push({type:`rows`,rows:e}),n},rejects(e){return t.fallback={type:`error`,error:e},n},rejectsOnce(e){return t.once.push({type:`error`,error:e}),n}};return n},enqueueResult(...e){enqueueRowsList([e])},enqueueResults(...e){enqueueRowsList(e)},enqueueRows(...e){enqueueRowsList(e)},get executedQueries(){return a.mock.calls.map(([e,t])=>({query:e,params:t??[]}))},get createdClients(){return s},clear(){a.mockClear(),o.mockClear(),c.mockClear(),s.length=0},reset(){a.mockReset(),a.mockImplementation(defaultQuery),o.mockReset(),o.mockImplementation(defaultConnect),c.mockReset(),c.mockImplementation(defaultClient),s.length=0,r.length=0,i=void 0}},()=>{t.Client=n})}const Y=/* @__PURE__ */ new WeakMap,X=/* @__PURE__ */ new WeakMap,Z=/* @__PURE__ */ new WeakMap;function replaceProcedure(e,t,n){let r=Z.get(n)??n,i=L.fn(function(...e){return Reflect.apply(r,this,e)});Z.set(i,r);let a=e;return a[t]=i,{mock:i,scoped:{mockClear:()=>i.mockClear(),mockReset:()=>i.mockReset(),restore:()=>{a[t]===i&&(a[t]=n)}}}}function replaceStart(e){return replaceProcedure(e,`start`,e.start)}function mockWorkflow(){let e=p(),a=e.workflow,c=r(),l=/* @__PURE__ */ new Map,u=/* @__PURE__ */ new Map,m=/* @__PURE__ */ new Map,h=/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Set,installKeyDispatcher=e=>{let t=h.get(e);if(t)return t;let n=i(e);if(!n)throw Error(`waitPointWith expects a wait point definition created by createWaitPoint or createWaitPoints.`);let r=n,a=n.wait,o=n.resolve,s=Y.get(a)??a,c=X.get(o)??o,l={perKey:/* @__PURE__ */ new Map,originalWait:(e,t)=>s.call(n,e,t),originalResolve:(e,t,r)=>c.call(n,e,t,r)},dispatchWait=(e,t)=>{let n=l.perKey.get(e);return n?t===void 0?n.wait():n.wait(t):l.originalWait(e,t)},dispatchResolve=async(e,t,n)=>{let r=l.perKey.get(e);if(!r)return l.originalResolve(e,t,n);await r.resolve(t,n)};Y.set(dispatchWait,s),X.set(dispatchResolve,c),r.wait=dispatchWait,r.resolve=dispatchResolve;let eachSpy=e=>{for(let t of l.perKey.values()){let n=t;e(n.wait),e(n.resolve)}};return g.add({mockClear:()=>eachSpy(e=>e.mockClear()),mockReset:()=>eachSpy(e=>e.mockReset()),restore:()=>{r.wait=a,r.resolve=o,h.delete(e)}}),h.set(e,l),l},defaultExecJob=(e,t,n)=>{throw Error(`No workflow job mock for "${e}". Call mockWorkflow().setJobHandler(...) or enqueueResult(...), or use runWorkflowLocally() for local workflow execution.`)},defaultStartWorkflow=async(e,n,r)=>t,defaultResumeWorkflowExecution=async e=>e,_=L.fn(defaultExecJob),v=L.fn(defaultStartWorkflow),y=L.fn(defaultResumeWorkflowExecution),b=L.fn((e,t)=>null),x=L.fn(async(e,t,n)=>{});return e.workflow={execJobFunction:(...e)=>{let t=e.length>=3?_(e[0],d(e[1]),e[2]):_(e[0],d(e[1]));return t instanceof Promise?t.then(e=>d(e)):d(t)},startWorkflow:(...e)=>e.length>=3?v(e[0],d(e[1]),e[2]):v(e[0],d(e[1])),resumeWorkflowExecution:e=>y(e),wait:(e,t)=>b(e,d(t)),resolve:(e,t,n)=>x(e,t,e=>{let t=n(e);return t instanceof Promise?t.then(e=>d(e)):d(t)})},f({execJobFunction:_,startWorkflow:v,resumeWorkflowExecution:y,wait:b,resolve:x,job(e){let t=l.get(e);if(t)return t;let{mock:n,scoped:r}=replaceStart(e);return g.add(r),l.set(e,n),n},workflow(e){let t=u.get(e);if(t)return t;let{mock:n,scoped:r}=replaceStart(e);return u.set(e,n),g.add(r),n},waitPoint(e){let t=m.get(e);if(t)return t;let n=replaceProcedure(e,`wait`,e.wait),r=replaceProcedure(e,`resolve`,e.resolve),i=n.mock,a=r.mock;g.add(n.scoped),g.add(r.scoped);let o={wait:i,resolve:a,setResolvePayload(e){a.mockImplementation(async(t,n)=>{let r=await n(d(e));d(r)})}};return m.set(e,o),o},waitPointWith(e,t){let r=n(e.with(t));if(r===void 0)throw Error(`waitPointWith expects a wait point declared with $params. Use waitPoint() for a wait point with a fixed key.`);let i=installKeyDispatcher(e),a=i.perKey.get(r);if(a)return a;let o=L.fn(e=>Promise.resolve(i.originalWait(r,e))),s=L.fn((e,t)=>i.originalResolve(r,e,t)),c={wait:o,resolve:s,setResolvePayload(e){s.mockImplementation(async(t,n)=>{let r=await n(d(e));d(r)})}};return i.perKey.set(r,c),c},setJobHandler(e){_.mockImplementation((t,n,r)=>e(t,n,r))},enqueueResult(e){_.mockImplementationOnce(()=>e)},enqueueResults(...e){for(let t of e)_.mockImplementationOnce(()=>t)},get startedJobs(){return _.mock.calls.map(([e,t,n])=>({jobName:e,args:t,...n!==void 0&&{options:n}}))},setStartHandler(e){v.mockImplementation(typeof e==`function`?async(t,n,r)=>e(t,n,r):async()=>e)},setResumeHandler(e){y.mockImplementation(typeof e==`function`?async t=>e(t):async()=>e)},setWaitHandler:e=>{b.mockImplementation(typeof e==`function`?(t,n)=>e(t,n):()=>e)},setEnv(e){s({...e})},setResolveHandler(e){x.mockImplementation(async(t,n,r)=>{await e(t,n,r)})},get waitCalls(){return b.mock.calls.map(([e,t])=>({key:e,payload:t}))},get resolveCalls(){return x.mock.calls.map(([e,t])=>({executionId:e,key:t}))},clear(){_.mockClear(),v.mockClear(),y.mockClear(),b.mockClear(),x.mockClear();for(let e of g)e.mockClear()},reset(){_.mockReset(),_.mockImplementation(defaultExecJob),v.mockReset(),v.mockImplementation(defaultStartWorkflow),y.mockReset(),y.mockImplementation(defaultResumeWorkflowExecution),b.mockReset(),b.mockImplementation(()=>null),x.mockReset(),x.mockImplementation(async()=>{});for(let e of g)e.mockReset();o()}},()=>{for(let e of g)e.restore();e.workflow=a,c===void 0?o():s(c)})}const toPlainDate=(e,t)=>e instanceof Date?new t.PlainDate(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate()):typeof e==`string`?t.PlainDate.from(e):e,toInstant=(e,t)=>e instanceof Date?t.Instant.fromEpochMilliseconds(e.getTime()):typeof e==`string`?t.Instant.fromEpochMilliseconds(t.Instant.from(e).epochMilliseconds):e,toPlainTime=(e,t)=>typeof e==`string`?t.PlainTime.from(e).round({smallestUnit:`minute`,roundingMode:`trunc`}):e;function parseArrayLiteral(e){let t=e.slice(1,-1);return t===``?[]:t.split(`,`).map(e=>e===`NULL`?null:e.startsWith(`"`)?e.slice(1,-1):e)}const eachElement=e=>(t,n)=>{let r=typeof t==`string`&&t.startsWith(`{`)?parseArrayLiteral(t):t;return Array.isArray(r)?r.map(t=>t===null?null:e(t,n)):r},Q={1082:toPlainDate,1184:toInstant,1083:toPlainTime,1182:eachElement(toPlainDate),1185:eachElement(toInstant),1183:eachElement(toPlainTime)};function hostTemporal(){return globalThis.Temporal}function serializeValue(e,t){if(e instanceof t.PlainDate)return e.toString({calendarName:`never`});if(e instanceof t.PlainTime)return`${String(e.hour).padStart(2,`0`)}:${String(e.minute).padStart(2,`0`)}`;if(e instanceof t.Instant)return t.Instant.fromEpochMilliseconds(e.epochMilliseconds).toString();if(Array.isArray(e))return e.map(e=>serializeValue(e,t));if(typeof e==`object`&&e){let n=Object.getPrototypeOf(e);if(n===Object.prototype||n===null)return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,serializeValue(n,t)]))}return e}function serializeTemporalParams(e){let t=hostTemporal();return t?e.map(e=>serializeValue(e,t)):[...e]}function deserializeTemporalRows(e,t=[]){let n=t.flatMap(({name:e,dataTypeID:t})=>{let n=Q[t];return n?[{name:e,convert:n}]:[]});if(n.length===0)return e;let r=hostTemporal();if(!r)throw ReferenceError(`Temporal is unavailable. Use the SDK tailor-runtime Vitest environment to read Temporal values from PGlite.`);return e.map(e=>{let t={...e};for(let{name:e,convert:i}of n)t[e]=i(t[e],r);return t})}var TransactionLock=class{#e=null;#t=[];holds(e){return this.#e===e}async acquire(e){for(;this.#e!==null;)await new Promise(e=>this.#t.push(e));this.#e=e}release(e){this.#e===e&&(this.#e=null,this.#t.shift()?.())}};const $=/^\s*(?:begin|start\s+transaction)\b/i,ee=/^\s*(?:commit\b|rollback\b(?!(?:\s+(?:work|transaction))?\s+to\b))/i;function toQueryObjectResult(e,t){return{command:e.command??(e.affectedRows?`UPDATE`:`SELECT`),rowCount:e.rowCount??(e.affectedRows||e.rows.length),rows:t?deserializeTemporalRows(e.rows,e.fields):e.rows}}function mockTailordbWithPGlite(e){let t=m(),n=t.Client,r=[],i=[],a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set,assertNoOpenTransaction=e=>{if(o.size>0)throw Error(`mockTailordbWithPGlite: ${e}() cannot run while a transaction is open; commit, roll back, or end() its client first`)},defaultClient=function(t){let n=t?.namespace,s=t?.temporal??!1,c=n!==void 0&&Object.hasOwn(e.namespaces,n)?e.namespaces[n]:void 0;if(n===void 0||!c)throw Error(`mockTailordbWithPGlite: no PGlite instance registered for namespace "${n}"`);let l=a.get(c)??new TransactionLock;a.set(c,l);let u={namespace:n,ended:!1};i.push(u);let d=this,run=async(e,t)=>(r.push({namespace:n,query:e,params:t??[]}),toQueryObjectResult(await c.query(e,serializeTemporalParams(t??[])),s)),throwEnded=()=>{throw Error(`mockTailordbWithPGlite: query after end() on this client`)},acquire=async()=>{await l.acquire(d),u.ended&&(l.release(d),throwEnded())},queryObject=async(e,t)=>{if(u.ended&&throwEnded(),$.test(e)){if(l.holds(d))throw Error(`mockTailordbWithPGlite: transaction already open on this client — run nested statements on the transaction callback's trx`);await acquire();try{let n=await run(e,t);return o.add(u),n}catch(e){throw l.release(d),e}}if(ee.test(e)){if(l.holds(d))try{return await run(e,t)}finally{o.delete(u),l.release(d)}await acquire();try{return await run(e,t)}finally{l.release(d)}}if(l.holds(d))return await run(e,t);await acquire();try{return await run(e,t)}finally{l.release(d)}};this.connect=async()=>{},this.end=async()=>{if(u.ended=!0,l.holds(d))try{await run(`rollback`)}finally{o.delete(u),l.release(d)}},this.queryObject=queryObject,this.createTransaction=e=>{if(!e)throw Error(`Transaction name must be a non-empty string`);return{begin:()=>queryObject(`begin`),commit:()=>queryObject(`commit`),rollback:()=>queryObject(`rollback`),queryObject}}},s=L.fn(defaultClient);return t.Client=s,f({Client:s,get executedQueries(){return r},get createdClients(){return i},clear(){assertNoOpenTransaction(`clear`),s.mockClear(),r.length=0,i.length=0},reset(){assertNoOpenTransaction(`reset`),s.mockReset(),s.mockImplementation(defaultClient),r.length=0,i.length=0}},()=>{t.Client=n})}var PendingStart=class{jobName;args;constructor(e,t){this.jobName=e,this.args=t}};async function runWorkflowLocally(e,t,n){let i=globalThis,a=i.tailor,c=r(),l=c!==void 0,u=createLocalJobRunner();n?.env!==void 0&&s({...n.env}),i.tailor={...a,workflow:createLocalWorkflowRuntime(a?.workflow,u.execJobFunction)};try{return await u.runJob(e.mainJob.name,t)}finally{a?i.tailor=a:delete i.tailor,n?.env!==void 0&&(l?s(c):o())}}function createLocalJobRunner(){let t,execJobFunction=(e,n)=>{if(!t)throw Error(`Cannot start workflow job "${e}" outside runWorkflowLocally() job execution.`);if(t.pending)throw t.pending;let r=d(n),i=t.cursor;t.cursor+=1;let a=t.records[i];if(a){if(assertSameStart(a,e,r),a.status===`rejected`)throw a.error;return d(a.result)}let o=new PendingStart(e,r);throw t.pending=o,o},runJob=async(n,r)=>{let i=e(n);if(!i)return null;let o=[];for(;;){let e={records:o,cursor:0},s=t;t=e;try{let t=await i(d(r),a());if(e.pending){await settlePendingStart(o,e.pending,runJob);continue}if(e.cursor!==o.length)throw Error(`Workflow job start sequence changed while replaying "${n}". Expected ${o.length} start(s), but replay reached ${e.cursor}.`);return d(t)}catch(t){let n=t instanceof PendingStart?t:e.pending;if(n){await settlePendingStart(o,n,runJob);continue}throw t}finally{t=s}}};return{runJob,execJobFunction}}async function settlePendingStart(e,t,n){try{e.push({jobName:t.jobName,args:t.args,status:`fulfilled`,result:await n(t.jobName,t.args)})}catch(n){e.push({jobName:t.jobName,args:t.args,status:`rejected`,error:n})}}function assertSameStart(e,t,n){if(e.jobName!==t||JSON.stringify(e.args)!==JSON.stringify(n))throw Error(`Workflow job start sequence changed while replaying. Expected ${e.jobName}(${JSON.stringify(e.args)}), but got ${t}(${JSON.stringify(n)}).`)}function createLocalWorkflowRuntime(e,n){return{execJobFunction:n,startWorkflow:async(n,r,i)=>e?await e.startWorkflow(n,r,i):(d(r),t),resumeWorkflowExecution:async t=>e?await e.resumeWorkflowExecution(t):t,wait:(t,n)=>{if(e)return e.wait(t,n);throw Error(`No wait handler for "${t}". Acquire mockWorkflow() and call setWaitHandler(...).`)},resolve:async(t,n,r)=>{if(e){await e.resolve(t,n,r);return}throw Error(`No resolve handler. Acquire mockWorkflow() and call setResolveHandler(...).`)}}}function unwrapValue(e){return A.is(e)?e.value:e}function insertRows(e){if(!x.is(e))throw Error(`insertRows: expected InsertQueryNode, got ${e.kind}`);let t=e.columns,n=e.values;if(t===void 0||n===void 0||!j.is(n))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);return n.values.map(e=>{if(!E.is(e)&&!k.is(e))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);let n=E.is(e)?e.values:e.values.map(unwrapValue),r={};return t.forEach((e,t)=>{r[e.column.name]=n[t]}),r})}function insertValues(e){let t=insertRows(e);if(t.length!==1)throw Error(`insertValues: query inserts ${t.length} rows; use insertRows() for multi-row inserts`);return c(t[0],`insertValues: first row missing`)}function updateValues(e){if(!O.is(e))throw Error(`updateValues: expected UpdateQueryNode, got ${e.kind}`);if(e.updates===void 0)throw Error(`updateValues: unsupported update shape; inspect query.node instead`);let t={};for(let n of e.updates){let e=n.column,r=y.is(e)?e.column.name:D.is(e)&&y.is(e.column)?e.column.column.name:void 0;if(r===void 0)throw Error(`updateValues: unsupported update shape; inspect query.node instead`);t[r]=unwrapValue(n.value)}return t}function toExecutedQuery(e){let t=e.query;return{kind:t.kind,sql:e.sql,parameters:e.parameters,node:t,insertRows:()=>insertRows(t),insertValues:()=>insertValues(t),updateValues:()=>updateValues(t)}}function toStagedResult(e){return Array.isArray(e)?{rows:e,numAffectedRows:void 0}:{rows:e.rows??[],numAffectedRows:e.numAffectedRows===void 0?void 0:BigInt(e.numAffectedRows)}}var MockState=class{executed=[];queue=[];resolver;enqueue(...e){this.queue.push(...e)}setResolver(e){this.resolver=e}next(e){let t=this.resolver?.(e);if(t!==void 0)return toStagedResult(t);let n=this.queue.shift();return n===void 0?{rows:[],numAffectedRows:void 0}:toStagedResult(n)}reset(){this.executed.length=0,this.queue.length=0,this.resolver=void 0}},MockConnection=class{state;constructor(e){this.state=e}async executeQuery(e){let t=toExecutedQuery(e);this.state.executed.push(t);let{rows:n,numAffectedRows:r}=this.state.next(t);return{rows:n,numAffectedRows:r??BigInt(n.length)}}streamQuery(){throw Error(`createKyselyMock: streaming is not supported`)}},MockDriver=class{state;constructor(e){this.state=e}async init(){}async acquireConnection(){return new MockConnection(this.state)}async beginTransaction(){}async commitTransaction(){}async rollbackTransaction(){}async releaseConnection(){}async destroy(){}};function byKind(e,t){return e.executed.filter(e=>e.kind===t)}function createKyselyMock(){let e=new MockState,t=new S({dialect:{createDriver:()=>new MockDriver(e),createQueryCompiler:()=>new T,createAdapter:()=>new C,createIntrospector:e=>new w(e)}});return{db:t,get executedQueries(){return e.executed},get selects(){return byKind(e,`SelectQueryNode`)},get inserts(){return byKind(e,`InsertQueryNode`)},get updates(){return byKind(e,`UpdateQueryNode`)},get deletes(){return byKind(e,`DeleteQueryNode`)},enqueueResult:t=>e.enqueue(t),enqueueResults:(...t)=>e.enqueue(...t),setQueryResolver:t=>e.setResolver(t),withTx:e=>t.transaction().execute(e),reset:()=>e.reset(),[Symbol.dispose]:()=>e.reset()}}var PGliteConnection=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async executeQuery(e){let t=await this.#e.query(e.sql,serializeTemporalParams(e.parameters));return{rows:this.#t?deserializeTemporalRows(t.rows,t.fields):t.rows,numAffectedRows:BigInt(t.affectedRows??0)}}streamQuery(){throw Error(`createKyselyPGlite: streaming is not supported`)}},PGliteDriver=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async init(){}async acquireConnection(){return new PGliteConnection(this.#e,this.#t)}async beginTransaction(e,t){let n=t.isolationLevel?[`start transaction`,`isolation level ${t.isolationLevel}`]:[`begin`];t.accessMode&&n.push(t.accessMode),await e.executeQuery(b.raw(n.join(` `)))}async commitTransaction(e){await e.executeQuery(b.raw(`commit`))}async rollbackTransaction(e){await e.executeQuery(b.raw(`rollback`))}async releaseConnection(){}async destroy(){await this.#e.close()}};function createKyselyPGlite(e,t={}){let n=t.temporal??!1;return new S({dialect:{createAdapter:()=>new C,createDriver:()=>new PGliteDriver(e,n),createIntrospector:e=>new w(e),createQueryCompiler:()=>new T}})}function tailorRuntime(e){return[createBlockPlugin(),createEnvironmentPlugin(e)]}export{createKyselyMock,createKyselyPGlite,mockAigateway,mockAuthconnection,mockFile,mockIconv,mockIdp,mockLogger,h as mockSecretmanager,mockTailordb,mockTailordbWithPGlite,mockWorkflow,runWorkflowLocally,tailorRuntime};
1
+ import{i as e,t}from"../registry-BijIDRVA.mjs";import{a as n,c as r,i,o as a,s as o,u as s}from"../wait-point-invoker-eiP-IIux.mjs";import{t as c}from"../assert-WeXvmG4j.mjs";import{n as l,r as u}from"../node-builtins-DYfhPBnz.mjs";import{n as d,r as f}from"../migration-steps-C6F3zNdQ.mjs";import{t as p}from"../platform-serialize-DkiTdHOt.mjs";import{a as m,i as h,n as g,o as _,r as v}from"../date-representation-Cr7W7Pn2.mjs";import*as y from"node:module";import{createRequire as b}from"node:module";import{isEqual as x}from"es-toolkit";import{existsSync as S}from"node:fs";import{fileURLToPath as C,pathToFileURL as w}from"node:url";import{ColumnNode as T,CompiledQuery as E,InsertQueryNode as D,Kysely as O,PostgresAdapter as k,PostgresIntrospector as A,PostgresQueryCompiler as j,PrimitiveValueListNode as M,ReferenceNode as N,UpdateQueryNode as ee,ValueListNode as te,ValueNode as ne,ValuesNode as P}from"kysely";import{dirname as F,isAbsolute as I,matchesGlob as re,relative as L,resolve as R}from"node:path";import{vi as z}from"vitest";function isBlockedModule(e){return u(e)}function getBlockedMessage(e){return l(e)}function dateDefaultFromConfig(e){let t=e&&typeof e==`object`?e.default:void 0,n=t&&typeof t==`object`?t.defaultDateRepresentation:void 0;if(n===void 0)return`legacy`;if(n===`temporal`||n===`date`)return n;throw Error(`defaultDateRepresentation must be "temporal", "date", or omitted, but tailor.config.ts sets ${JSON.stringify(n)}.`)}let B=Promise.resolve();function serialize(e){let t=B.then(e,e);return B=t.catch(()=>void 0),t}async function importLikeCli(e){let t=w(e).href,n=f();try{if(`Bun`in globalThis||`Deno`in globalThis)return await import(t);let{resolveSync:e,loadSync:n}=await import(w(R(F(C(import.meta.url)),`../cli/ts-hook.mjs`)).href),r=y.registerHooks({resolve:e,load:n});try{return await import(t)}finally{r.deregister?.()}}finally{n()}}function isSourceParseError(e){return typeof e==`object`&&!!e&&e.code===`InvalidSyntax`}function describeError(e){return e instanceof Error?e.message:String(e)}async function loadDateDefaultFromConfig(e){if(!S(e))throw Error(`tailor-runtime: tailor.config.ts not found at ${e}. Check the \`config\` option of tailorRuntime().`);let t;try{t=await serialize(()=>importLikeCli(e))}catch(t){if(isSourceParseError(t))throw Error(`tailor-runtime could not parse ${e}: ${describeError(t)}`,{cause:t});return console.warn(`tailor-runtime could not load ${e} to read defaultDateRepresentation; t date fields use string values in this run. If the config sets "temporal" or "date", tests disagree with tailor.d.ts until the error is fixed: ${describeError(t)}`),`legacy`}return dateDefaultFromConfig(t)}const V=[`**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}`],H=/* @__PURE__ */ new Set([`ImportDeclaration`,`ExportNamedDeclaration`,`ExportAllDeclaration`]),U=/* @__PURE__ */ new Set(/* @__PURE__ */ `break.case.catch.class.const.continue.debugger.default.delete.do.else.enum.export.extends.false.finally.for.function.if.import.in.instanceof.new.null.return.super.switch.this.throw.true.try.typeof.var.void.while.with.yield.let.static.implements.interface.package.private.protected.public.await.arguments.eval`.split(`.`)),W=/^[A-Za-z_$]/,G=/^[A-Za-z0-9_$]*$/;function isSafeBindingName(e){if(U.has(e)||e.length===0)return!1;let t=e[0];return t!==void 0&&W.test(t)&&G.test(e.slice(1))}function buildBlockedReplacement(e,t){let n=JSON.stringify(t),r=`throw new Error(${n});`,i=`(() => { throw new Error(${n}); })()`;if(e.type===`ExportNamedDeclaration`){let t=e.specifiers??[],n=[];for(let e of t){let t=e.exported?.name;if(typeof t==`string`){if(t==="default")n.push(`export default ${i};`);else{if(!isSafeBindingName(t))return r;n.push(`export const ${t} = ${i};`)}}}return n.length>0?n.join(` `):r}if(e.type===`ExportAllDeclaration`){let t=e.exported?.name;return typeof t==`string`&&isSafeBindingName(t)?`export const ${t} = ${i};`:r}return r}const toFileList=e=>Array.isArray(e)?e:e?[e]:[];let K;function supportsDefaultProjectInheritance(){if(K===void 0)try{let{version:e}=b(import.meta.url)(`vitest/package.json`);K=Number.parseInt(e,10)>=5}catch{K=!1}return K}function createBlockPlugin(){let isTestFile=()=>!1,isUserSourceFile=()=>!1;return{name:`tailor-runtime-block-node`,configResolved(e){let t=e.test,n=t?.root??e.root,toAbsolutePaths=(e,t)=>toFileList(e).map(e=>R(t,e)),r=/* @__PURE__ */ new Set([...toAbsolutePaths(t?.setupFiles,n),...toAbsolutePaths(t?.globalSetup,n)]),i=[{root:n,patterns:t?.include??V}];for(let e of t?.projects??[]){let t=e.test;if(!t)continue;let a=t.root??n;for(let e of toAbsolutePaths(t.setupFiles,a))r.add(e);for(let e of toAbsolutePaths(t.globalSetup,a))r.add(e);i.push({root:a,patterns:t.include??V})}isTestFile=e=>r.has(e)?!0:i.some(({root:t,patterns:n})=>{let r=I(e)?L(t,e):e;return n.some(e=>re(r,e))}),isUserSourceFile=e=>{if(!I(e))return!1;let t=L(n,e);return t!==``&&!t.startsWith(`..`)&&!I(t)}},transform(e,t){let n=t.search(/[?#]/),r=n===-1?t:t.slice(0,n);if(isTestFile(r)||r.includes(`node_modules`)||!isUserSourceFile(r))return;let i;try{i=this.parse(e)}catch{return}let a=[];for(let e of i.body){if(!H.has(e.type))continue;let t=e.source?.value;typeof t==`string`&&isBlockedModule(t)&&a.push({start:e.start,end:e.end,replacement:buildBlockedReplacement(e,getBlockedMessage(t))})}if(a.length===0)return;let o=e;for(let e of a.toSorted((e,t)=>t.start-e.start))o=o.slice(0,e.start)+e.replacement+o.slice(e.end);return{code:o,map:null}}}}function setConfigEnv(e,t,n){e.env={...e.env,__TAILOR_RUNTIME_CONFIG:t,__TAILOR_RUNTIME_DATE_DEFAULT:n}}function createEnvironmentPlugin(e,t=loadDateDefaultFromConfig){let n=F(C(import.meta.url)),r=R(n,`environment.mjs`),i=R(n,`setup.mjs`),a=/* @__PURE__ */ new Map,dateDefaultOf=e=>{let n=a.get(e);return n||(n=t(e),a.set(e,n)),n},selectsTailorRuntime=e=>e===`tailor-runtime`||e===r;return{name:`tailor-runtime-environment`,async config(t){let n=t.test,a=!!n&&selectsTailorRuntime(n.environment);if(n&&a&&(n.environment=r),n?.projects)for(let o of n.projects){if(typeof o==`string`)continue;let n=o.test??={};if(!(n.environment===void 0&&a&&(o.extends===!0||o.extends===void 0&&supportsDefaultProjectInheritance()))&&!selectsTailorRuntime(n.environment)){e?.config&&setConfigEnv(n,``,``);continue}n.environment=r;let s=toFileList(n.setupFiles);if(s.includes(i)||(n.setupFiles=[...s,i]),e?.config){let r=o.root??n.root??t.root??process.cwd(),i=R(r,e.config);setConfigEnv(n,i,await dateDefaultOf(i))}}if(e?.config&&n){let r=n.root??t.root??process.cwd(),i=a?R(r,e.config):``;setConfigEnv(n,i,i?await dateDefaultOf(i):``)}let o=toFileList(n?.setupFiles);return n&&typeof n.setupFiles==`string`&&(n.setupFiles=o),!a||o.includes(i)?{}:{test:{setupFiles:[i]}}}}}function mockAigateway(e={}){let t=h(),n=t.aigateway,r={...e.urls};async function defaultGet(e){let t=r[e];if(t===void 0)throw Error(`No AI Gateway registered for "${e}". Acquire mockAigateway() and call setUrls(...).`);return{url:t}}let i=z.fn(defaultGet);return t.aigateway={get:i},_({get:i,setUrls(e){r=e},setUrl(e,t){r={...r,[e]:t}},get calls(){return i.mock.calls.map(([e])=>({name:e}))},clear(){i.mockClear()},reset(){r={},i.mockReset(),i.mockImplementation(defaultGet)}},()=>{t.aigateway=n})}function mockAuthconnection(e={}){let t=h(),n=t.authconnection,r={...e.tokens};async function defaultGetConnectionToken(t){let n=r[t];if(n)return n;if(e.onUnhandled===`error`)throw Error(`No AuthConnection token configured for "${t}"`);return{access_token:`mock-token`}}let i=z.fn(defaultGetConnectionToken);return t.authconnection={getConnectionToken:i},_({getConnectionToken:i,setTokens(e){r=e},setToken(e,t){r={...r,[e]:t}},get calls(){return i.mock.calls.map(([e])=>({connectionName:e}))},clear(){i.mockClear()},reset(){r={},i.mockReset(),i.mockImplementation(defaultGetConnectionToken)}},()=>{t.authconnection=n})}const q=[`upload`,`download`,`downloadAsBase64`,`delete`,`getMetadata`,`downloadStream`,`uploadStream`],J={upload:{metadata:{fileSize:0,sha256sum:``}},download:{data:/* @__PURE__ */ new Uint8Array,metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}},downloadAsBase64:{data:``,metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}},getMetadata:{contentType:``,fileSize:0,sha256sum:``,urlPath:``},downloadStream:null,uploadStream:{metadata:{fileSize:0,sha256sum:``}}};function mockFile(e={}){let t=m(),n=t.file,{onUnhandled:r=`fallback`}=e,i=[],a=[],resolver=()=>null;function handle(e,t,n,a,o){if(i.length>0)return i.shift();let s=resolver(e,{method:e,namespace:t,tableName:n,fieldName:a,recordId:o});if(s!=null)return s;if(r===`error`)throw Error(`No File mock configured for "${e}"`);let c=J[e];return c===void 0?void 0:structuredClone(c)}let o=z.fn(async(...e)=>{let[t,n,r,i]=e;return handle(`upload`,t,n,r,i)}),s=z.fn(async(...e)=>handle(`download`,...e)),c=z.fn(async(...e)=>handle(`downloadAsBase64`,...e)),l=z.fn(async(...e)=>{handle(`delete`,...e)}),u=z.fn(async(...e)=>handle(`getMetadata`,...e)),d=z.fn(async(...e)=>handle(`downloadStream`,...e)??{body:new ReadableStream({start(e){e.close()}}),metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}}),f=z.fn(async(...e)=>{let[t,n,r,i]=e;return handle(`uploadStream`,t,n,r,i)}),p={upload:o,download:s,downloadAsBase64:c,delete:l,getMetadata:u,downloadStream:d,uploadStream:f};function track(e,t){return function(...n){return a.push({method:e,namespace:n[0],tableName:n[1],fieldName:n[2],recordId:n[3]}),t.apply(this,n)}}t.file={upload:track(`upload`,o),download:track(`download`,s),downloadAsBase64:track(`downloadAsBase64`,c),delete:track(`delete`,l),getMetadata:track(`getMetadata`,u),downloadStream:track(`downloadStream`,d),uploadStream:track(`uploadStream`,f)};function allMocks(){return q.map(e=>p[e])}let h={...p,setResolver(e){resolver=e},enqueueResult(e){i.push(e)},enqueueResults(...e){i.push(...e)},get calls(){return a},clear(){a.length=0;for(let e of allMocks())e.mockClear()},reset(){i.length=0,a.length=0,resolver=()=>null;for(let e of allMocks())e.mockReset()}};return _(h,()=>{t.file=n})}function isUtf8(e){return e===`UTF8`||e===`UTF-8`}function defaultIconvResult(e,t){switch(e){case`convert`:case`convertBuffer`:return isUtf8(t[2])?``:/* @__PURE__ */ new Uint8Array;case`decode`:return``;case`encode`:return isUtf8(t[1])?``:/* @__PURE__ */ new Uint8Array;case`encodings`:return[]}}function mockIconv(e={}){let t=h(),n=t.iconv,r=null,i=[];function resolve(t,n){if(r){let e=r(t,n);if(e!=null)return e}if(e.onUnhandled===`error`)throw Error(`No Iconv mock behavior configured for "${t}"`);return defaultIconvResult(t,n)}function defaultConvert(e,t,n){return resolve(`convert`,[e,t,n])}function defaultConvertBuffer(e,t,n){return resolve(`convertBuffer`,[e,t,n])}function defaultDecode(e,t){return resolve(`decode`,[e,t])}function defaultEncode(e,t){return resolve(`encode`,[e,t])}function defaultEncodings(){return resolve(`encodings`,[])}let a=z.fn(defaultConvert),o=z.fn(defaultConvertBuffer),s=z.fn(defaultDecode),c=z.fn(defaultEncode),l=z.fn(defaultEncodings);function track(e,t){return function(...n){return i.push({method:e,args:[...n]}),t.apply(this,n)}}let u=track(`convert`,a),d=track(`convertBuffer`,o),f=track(`decode`,s),p=track(`encode`,c),m=track(`encodings`,l);class MockIconv{#e;#t;constructor(e,t){this.#e=e,this.#t=t}convert(e){return u.call(this,e,this.#e,this.#t)}}t.iconv={convert:u,convertBuffer:d,decode:f,encode:p,encodings:m,Iconv:MockIconv};function clear(){i.length=0,a.mockClear(),o.mockClear(),s.mockClear(),c.mockClear(),l.mockClear()}return _({convert:a,convertBuffer:o,decode:s,encode:c,encodings:l,setResolver(e){r=e},get calls(){return i},clear,reset(){r=null,i.length=0,a.mockReset(),a.mockImplementation(defaultConvert),o.mockReset(),o.mockImplementation(defaultConvertBuffer),s.mockReset(),s.mockImplementation(defaultDecode),c.mockReset(),c.mockImplementation(defaultEncode),l.mockReset(),l.mockImplementation(defaultEncodings)}},()=>{t.iconv=n})}const Y=[`users`,`user`,`userByName`,`createUser`,`updateUser`,`deleteUser`,`sendPasswordResetEmail`,`unenrollMfa`],X={id:`mock-id`,name:`mock-user`,disabled:!1,mfaEnrolled:!1,mfaFactorIds:[],passwordUpdatedAt:null},ie={users:{users:[],nextPageToken:null,totalCount:0},user:X,userByName:X,createUser:X,updateUser:X,deleteUser:!0,sendPasswordResetEmail:!0,unenrollMfa:!0};function mockIdp(e={}){let t=h(),n=t.idp,{onUnhandled:r=`fallback`}=e,i=[],a=[],resolver=()=>null,o=/* @__PURE__ */ new Map;function compatibilityArgs(e,t){return e===`users`&&t.length===0?[void 0]:t}function handle(e,t,n){if(i.length>0)return i.shift();let a=resolver(e,compatibilityArgs(e,t),n);if(a!=null)return a;if(r===`error`)throw Error(`No IdP mock configured for "${n}.${e}"`);return structuredClone(ie[e])}function createNamespaceMocks(e){return{users:z.fn(async(...t)=>handle(`users`,t,e)),user:z.fn(async(...t)=>handle(`user`,t,e)),userByName:z.fn(async(...t)=>handle(`userByName`,t,e)),createUser:z.fn(async(...t)=>handle(`createUser`,t,e)),updateUser:z.fn(async(...t)=>handle(`updateUser`,t,e)),deleteUser:z.fn(async(...t)=>handle(`deleteUser`,t,e)),sendPasswordResetEmail:z.fn(async(...t)=>handle(`sendPasswordResetEmail`,t,e)),unenrollMfa:z.fn(async(...t)=>handle(`unenrollMfa`,t,e))}}function namespace(e){let t=o.get(e);if(t)return t;let n=createNamespaceMocks(e);return o.set(e,n),n}function track(e,t,n){return function(...r){return a.push({method:e,args:[...compatibilityArgs(e,r)],namespace:n}),t.apply(this,r)}}let defaultClient=function(e){let t=namespace(e.namespace);this.users=track(`users`,t.users,e.namespace),this.user=track(`user`,t.user,e.namespace),this.userByName=track(`userByName`,t.userByName,e.namespace),this.createUser=track(`createUser`,t.createUser,e.namespace),this.updateUser=track(`updateUser`,t.updateUser,e.namespace),this.deleteUser=track(`deleteUser`,t.deleteUser,e.namespace),this.sendPasswordResetEmail=track(`sendPasswordResetEmail`,t.sendPasswordResetEmail,e.namespace),this.unenrollMfa=track(`unenrollMfa`,t.unenrollMfa,e.namespace)},s=z.fn(defaultClient);t.idp={Client:s};function allMocks(){return[...o.values()].flatMap(e=>Y.map(t=>e[t]))}return _({Client:s,namespace,setResolver(e){resolver=e},enqueueResult(e){i.push(e)},enqueueResults(...e){i.push(...e)},get calls(){return a},clear(){a.length=0,s.mockClear();for(let e of allMocks())e.mockClear()},reset(){i.length=0,a.length=0,resolver=()=>null,s.mockReset(),s.mockImplementation(defaultClient);for(let e of allMocks())e.mockReset()}},()=>{t.idp=n})}function mockLogger(e={}){let t=h(),n=t.logger,r=z.fn((e,t)=>{}),i=z.fn((e,t)=>{}),a=z.fn((e,t)=>{}),o=z.fn((e,t)=>{}),s=z.fn(e=>{});t.logger={debug:r,info:i,warn:a,error:o,setAttributes:s};let c={debug:r,info:i,warn:a,error:o};return _({debug:r,info:i,warn:a,error:o,setAttributes:s,get calls(){return Object.entries(c).flatMap(([e,t])=>t.mock.calls.map((n,r)=>({order:t.mock.invocationCallOrder[r]??0,call:{severity:e,message:n[0],attributes:n[1]}}))).toSorted((e,t)=>e.order-t.order).map(e=>e.call)},clear(){r.mockClear(),i.mockClear(),a.mockClear(),o.mockClear(),s.mockClear()},reset(){r.mockReset(),i.mockReset(),a.mockReset(),o.mockReset(),s.mockReset()}},()=>{t.logger=n})}function testRegex(e,t){let n=e.lastIndex;e.lastIndex=0;try{return e.test(t)}finally{e.lastIndex=n}}var MockQueryResult=class{command;rowCount;rows;constructor(e){this.command=``,this.rowCount=e.length,this.rows=e}};function mockTailordb(e={}){let t=m(),n=t.Client,r=[],i;function matchesQuery(e,t,n){if(typeof e==`function`)return e(t,n);if(typeof e==`string`)return t===e;if(e instanceof RegExp)return testRegex(e,t);let r;if(r=typeof e.sql==`string`?t===e.sql:testRegex(e.sql,t),!r||e.params===void 0)return r;if(typeof e.params==`function`)return e.params(n);let i=e.params;return n.length===i.length&&n.every((e,t)=>x(e,i[t]))}function queryResponse(e){if(e.type===`error`)throw e.error;return new MockQueryResult(e.rows)}async function defaultQuery(t,n=[]){for(let e=r.length-1;e>=0;--e){let i=r[e];if(!i||!matchesQuery(i.matcher,t,n))continue;let a=i.once.shift();if(a)return queryResponse(a);if(i.fallback)return queryResponse(i.fallback)}if(i)return new MockQueryResult(i(t,n)??[]);if(e.onUnhandled===`error`)throw Error(`No TailorDB query behavior matched: ${t}`);return new MockQueryResult([])}let a=z.fn(defaultQuery),defaultConnect=async()=>{},o=z.fn(defaultConnect),s=[];function enqueueRowsList(e){for(let t of e)a.mockImplementationOnce(async()=>new MockQueryResult(t))}let defaultClient=function(e){let t={namespace:e?.namespace,ended:!1};s.push(t),this.connect=o,this.end=z.fn(async()=>{t.ended=!0}),this.queryObject=a,this.createTransaction=e=>{if(!e)throw Error(`Transaction name must be a non-empty string`);return{begin:async()=>{},commit:async()=>{},rollback:async()=>{},queryObject:a}}},c=z.fn(defaultClient);return t.Client=c,_({Client:c,queryObject:a,setQueryResolver(e){i=e,a.mockImplementation(defaultQuery)},onQuery(e){let t={matcher:e,once:[]};r.push(t);let n={returnsRows(e){return t.fallback={type:`rows`,rows:e},n},returnsRowsOnce(e){return t.once.push({type:`rows`,rows:e}),n},rejects(e){return t.fallback={type:`error`,error:e},n},rejectsOnce(e){return t.once.push({type:`error`,error:e}),n}};return n},enqueueResult(...e){enqueueRowsList([e])},enqueueResults(...e){enqueueRowsList(e)},enqueueRows(...e){enqueueRowsList(e)},get executedQueries(){return a.mock.calls.map(([e,t])=>({query:e,params:t??[]}))},get createdClients(){return s},clear(){a.mockClear(),o.mockClear(),c.mockClear(),s.length=0},reset(){a.mockReset(),a.mockImplementation(defaultQuery),o.mockReset(),o.mockImplementation(defaultConnect),c.mockReset(),c.mockImplementation(defaultClient),s.length=0,r.length=0,i=void 0}},()=>{t.Client=n})}const Z=/* @__PURE__ */ new WeakMap,Q=/* @__PURE__ */ new WeakMap,$=/* @__PURE__ */ new WeakMap;function replaceProcedure(e,t,n){let r=$.get(n)??n,i=z.fn(function(...e){return Reflect.apply(r,this,e)});$.set(i,r);let a=e;return a[t]=i,{mock:i,scoped:{mockClear:()=>i.mockClear(),mockReset:()=>i.mockReset(),restore:()=>{a[t]===i&&(a[t]=n)}}}}function replaceStart(e){return replaceProcedure(e,`start`,e.start)}function mockWorkflow(){let e=h(),a=e.workflow,c=r(),l=/* @__PURE__ */ new Map,u=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Map,f=/* @__PURE__ */ new Map,m=/* @__PURE__ */ new Set,installKeyDispatcher=e=>{let t=f.get(e);if(t)return t;let n=i(e);if(!n)throw Error(`waitPointWith expects a wait point definition created by createWaitPoint or createWaitPoints.`);let r=n,a=n.wait,o=n.resolve,s=Z.get(a)??a,c=Q.get(o)??o,l={perKey:/* @__PURE__ */ new Map,originalWait:(e,t)=>s.call(n,e,t),originalResolve:(e,t,r)=>c.call(n,e,t,r)},dispatchWait=(e,t)=>{let n=l.perKey.get(e);return n?t===void 0?n.wait():n.wait(t):l.originalWait(e,t)},dispatchResolve=async(e,t,n)=>{let r=l.perKey.get(e);if(!r)return l.originalResolve(e,t,n);await r.resolve(t,n)};Z.set(dispatchWait,s),Q.set(dispatchResolve,c),r.wait=dispatchWait,r.resolve=dispatchResolve;let eachSpy=e=>{for(let t of l.perKey.values()){let n=t;e(n.wait),e(n.resolve)}};return m.add({mockClear:()=>eachSpy(e=>e.mockClear()),mockReset:()=>eachSpy(e=>e.mockReset()),restore:()=>{r.wait=a,r.resolve=o,f.delete(e)}}),f.set(e,l),l},defaultExecJob=(e,t,n)=>{throw Error(`No workflow job mock for "${e}". Call mockWorkflow().setJobHandler(...) or enqueueResult(...), or use runWorkflowLocally() for local workflow execution.`)},defaultStartWorkflow=async(e,n,r)=>t,defaultResumeWorkflowExecution=async e=>e,g=z.fn(defaultExecJob),v=z.fn(defaultStartWorkflow),y=z.fn(defaultResumeWorkflowExecution),b=z.fn((e,t)=>null),x=z.fn(async(e,t,n)=>{});return e.workflow={execJobFunction:(...e)=>{let t=e.length>=3?g(e[0],p(e[1]),e[2]):g(e[0],p(e[1]));return t instanceof Promise?t.then(e=>p(e)):p(t)},startWorkflow:(...e)=>e.length>=3?v(e[0],p(e[1]),e[2]):v(e[0],p(e[1])),resumeWorkflowExecution:e=>y(e),wait:(e,t)=>b(e,p(t)),resolve:(e,t,n)=>x(e,t,e=>{let t=n(e);return t instanceof Promise?t.then(e=>p(e)):p(t)})},_({execJobFunction:g,startWorkflow:v,resumeWorkflowExecution:y,wait:b,resolve:x,job(e){let t=l.get(e);if(t)return t;let{mock:n,scoped:r}=replaceStart(e);return m.add(r),l.set(e,n),n},workflow(e){let t=u.get(e);if(t)return t;let{mock:n,scoped:r}=replaceStart(e);return u.set(e,n),m.add(r),n},waitPoint(e){let t=d.get(e);if(t)return t;let n=replaceProcedure(e,`wait`,e.wait),r=replaceProcedure(e,`resolve`,e.resolve),i=n.mock,a=r.mock;m.add(n.scoped),m.add(r.scoped);let o={wait:i,resolve:a,setResolvePayload(e){a.mockImplementation(async(t,n)=>{let r=await n(p(e));p(r)})}};return d.set(e,o),o},waitPointWith(e,t){let r=n(e.with(t));if(r===void 0)throw Error(`waitPointWith expects a wait point declared with $params. Use waitPoint() for a wait point with a fixed key.`);let i=installKeyDispatcher(e),a=i.perKey.get(r);if(a)return a;let o=z.fn(e=>Promise.resolve(i.originalWait(r,e))),s=z.fn((e,t)=>i.originalResolve(r,e,t)),c={wait:o,resolve:s,setResolvePayload(e){s.mockImplementation(async(t,n)=>{let r=await n(p(e));p(r)})}};return i.perKey.set(r,c),c},setJobHandler(e){g.mockImplementation((t,n,r)=>e(t,n,r))},enqueueResult(e){g.mockImplementationOnce(()=>e)},enqueueResults(...e){for(let t of e)g.mockImplementationOnce(()=>t)},get startedJobs(){return g.mock.calls.map(([e,t,n])=>({jobName:e,args:t,...n!==void 0&&{options:n}}))},setStartHandler(e){v.mockImplementation(typeof e==`function`?async(t,n,r)=>e(t,n,r):async()=>e)},setResumeHandler(e){y.mockImplementation(typeof e==`function`?async t=>e(t):async()=>e)},setWaitHandler:e=>{b.mockImplementation(typeof e==`function`?(t,n)=>e(t,n):()=>e)},setEnv(e){s({...e})},setResolveHandler(e){x.mockImplementation(async(t,n,r)=>{await e(t,n,r)})},get waitCalls(){return b.mock.calls.map(([e,t])=>({key:e,payload:t}))},get resolveCalls(){return x.mock.calls.map(([e,t])=>({executionId:e,key:t}))},clear(){g.mockClear(),v.mockClear(),y.mockClear(),b.mockClear(),x.mockClear();for(let e of m)e.mockClear()},reset(){g.mockReset(),g.mockImplementation(defaultExecJob),v.mockReset(),v.mockImplementation(defaultStartWorkflow),y.mockReset(),y.mockImplementation(defaultResumeWorkflowExecution),b.mockReset(),b.mockImplementation(()=>null),x.mockReset(),x.mockImplementation(async()=>{});for(let e of m)e.mockReset();o()}},()=>{for(let e of m)e.restore();e.workflow=a,c===void 0?o():s(c)})}const toPlainDate=(e,t)=>e instanceof Date?new t.PlainDate(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate()):typeof e==`string`?t.PlainDate.from(e):e,toInstant=(e,t)=>e instanceof Date?t.Instant.fromEpochMilliseconds(e.getTime()):typeof e==`string`?t.Instant.fromEpochMilliseconds(t.Instant.from(e).epochMilliseconds):e,toPlainTime=(e,t)=>typeof e==`string`?t.PlainTime.from(e).round({smallestUnit:`minute`,roundingMode:`trunc`}):e;function parseArrayLiteral(e){let t=e.slice(1,-1);return t===``?[]:t.split(`,`).map(e=>e===`NULL`?null:e.startsWith(`"`)?e.slice(1,-1):e)}const eachElement=e=>(t,n)=>{let r=typeof t==`string`&&t.startsWith(`{`)?parseArrayLiteral(t):t;return Array.isArray(r)?r.map(t=>t===null?null:e(t,n)):r},ae={1082:toPlainDate,1184:toInstant,1083:toPlainTime,1182:eachElement(toPlainDate),1185:eachElement(toInstant),1183:eachElement(toPlainTime)};function hostTemporal(){return globalThis.Temporal}function serializeValue(e,t){if(e instanceof t.PlainDate)return e.toString({calendarName:`never`});if(e instanceof t.PlainTime)return`${String(e.hour).padStart(2,`0`)}:${String(e.minute).padStart(2,`0`)}`;if(e instanceof t.Instant)return t.Instant.fromEpochMilliseconds(e.epochMilliseconds).toString();if(Array.isArray(e))return e.map(e=>serializeValue(e,t));if(typeof e==`object`&&e){let n=Object.getPrototypeOf(e);if(n===Object.prototype||n===null)return Object.fromEntries(Object.entries(e).map(([e,n])=>[e,serializeValue(n,t)]))}return e}function serializeTemporalParams(e){let t=hostTemporal();return t?e.map(e=>serializeValue(e,t)):[...e]}function deserializeTemporalRows(e,t=[]){let n=t.flatMap(({name:e,dataTypeID:t})=>{let n=ae[t];return n?[{name:e,convert:n}]:[]});if(n.length===0)return e;let r=hostTemporal();if(!r)throw ReferenceError(`Temporal is unavailable. Use the SDK tailor-runtime Vitest environment to read Temporal values from PGlite.`);return e.map(e=>{let t={...e};for(let{name:e,convert:i}of n)t[e]=i(t[e],r);return t})}var TransactionLock=class{#e=null;#t=[];holds(e){return this.#e===e}async acquire(e){for(;this.#e!==null;)await new Promise(e=>this.#t.push(e));this.#e=e}release(e){this.#e===e&&(this.#e=null,this.#t.shift()?.())}};const oe=/^\s*(?:begin|start\s+transaction)\b/i,se=/^\s*(?:commit\b|rollback\b(?!(?:\s+(?:work|transaction))?\s+to\b))/i;function toQueryObjectResult(e,t){return{command:e.command??(e.affectedRows?`UPDATE`:`SELECT`),rowCount:e.rowCount??(e.affectedRows||e.rows.length),rows:t?deserializeTemporalRows(e.rows,e.fields):e.rows}}function mockTailordbWithPGlite(e){let t=m(),n=t.Client,r=[],i=[],a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set,assertNoOpenTransaction=e=>{if(o.size>0)throw Error(`mockTailordbWithPGlite: ${e}() cannot run while a transaction is open; commit, roll back, or end() its client first`)},defaultClient=function(t){let n=t?.namespace,s=t?.temporal??!1,c=n!==void 0&&Object.hasOwn(e.namespaces,n)?e.namespaces[n]:void 0;if(n===void 0||!c)throw Error(`mockTailordbWithPGlite: no PGlite instance registered for namespace "${n}"`);let l=a.get(c)??new TransactionLock;a.set(c,l);let u={namespace:n,ended:!1};i.push(u);let d=this,run=async(e,t)=>(r.push({namespace:n,query:e,params:t??[]}),toQueryObjectResult(await c.query(e,serializeTemporalParams(t??[])),s)),throwEnded=()=>{throw Error(`mockTailordbWithPGlite: query after end() on this client`)},acquire=async()=>{await l.acquire(d),u.ended&&(l.release(d),throwEnded())},queryObject=async(e,t)=>{if(u.ended&&throwEnded(),oe.test(e)){if(l.holds(d))throw Error(`mockTailordbWithPGlite: transaction already open on this client — run nested statements on the transaction callback's trx`);await acquire();try{let n=await run(e,t);return o.add(u),n}catch(e){throw l.release(d),e}}if(se.test(e)){if(l.holds(d))try{return await run(e,t)}finally{o.delete(u),l.release(d)}await acquire();try{return await run(e,t)}finally{l.release(d)}}if(l.holds(d))return await run(e,t);await acquire();try{return await run(e,t)}finally{l.release(d)}};this.connect=async()=>{},this.end=async()=>{if(u.ended=!0,l.holds(d))try{await run(`rollback`)}finally{o.delete(u),l.release(d)}},this.queryObject=queryObject,this.createTransaction=e=>{if(!e)throw Error(`Transaction name must be a non-empty string`);return{begin:()=>queryObject(`begin`),commit:()=>queryObject(`commit`),rollback:()=>queryObject(`rollback`),queryObject}}},s=z.fn(defaultClient);return t.Client=s,_({Client:s,get executedQueries(){return r},get createdClients(){return i},clear(){assertNoOpenTransaction(`clear`),s.mockClear(),r.length=0,i.length=0},reset(){assertNoOpenTransaction(`reset`),s.mockReset(),s.mockImplementation(defaultClient),r.length=0,i.length=0}},()=>{t.Client=n})}var PendingStart=class{jobName;args;constructor(e,t){this.jobName=e,this.args=t}};async function runWorkflowLocally(e,t,n){let i=globalThis,a=i.tailor,c=r(),l=c!==void 0,u=createLocalJobRunner();n?.env!==void 0&&s({...n.env}),i.tailor={...a,workflow:createLocalWorkflowRuntime(a?.workflow,u.execJobFunction)};try{return await u.runJob(e.mainJob.name,t)}finally{a?i.tailor=a:delete i.tailor,n?.env!==void 0&&(l?s(c):o())}}function createLocalJobRunner(){let t,execJobFunction=(e,n)=>{if(!t)throw Error(`Cannot start workflow job "${e}" outside runWorkflowLocally() job execution.`);if(t.pending)throw t.pending;let r=p(n),i=t.cursor;t.cursor+=1;let a=t.records[i];if(a){if(assertSameStart(a,e,r),a.status===`rejected`)throw a.error;return p(a.result)}let o=new PendingStart(e,r);throw t.pending=o,o},runJob=async(n,r)=>{let i=e(n);if(!i)return null;let o=[];for(;;){let e={records:o,cursor:0},s=t;t=e;try{let t=await i(p(r),a());if(e.pending){await settlePendingStart(o,e.pending,runJob);continue}if(e.cursor!==o.length)throw Error(`Workflow job start sequence changed while replaying "${n}". Expected ${o.length} start(s), but replay reached ${e.cursor}.`);return p(t)}catch(t){let n=t instanceof PendingStart?t:e.pending;if(n){await settlePendingStart(o,n,runJob);continue}throw t}finally{t=s}}};return{runJob,execJobFunction}}async function settlePendingStart(e,t,n){try{e.push({jobName:t.jobName,args:t.args,status:`fulfilled`,result:await n(t.jobName,t.args)})}catch(n){e.push({jobName:t.jobName,args:t.args,status:`rejected`,error:n})}}function assertSameStart(e,t,n){if(e.jobName!==t||JSON.stringify(e.args)!==JSON.stringify(n))throw Error(`Workflow job start sequence changed while replaying. Expected ${e.jobName}(${JSON.stringify(e.args)}), but got ${t}(${JSON.stringify(n)}).`)}function createLocalWorkflowRuntime(e,n){return{execJobFunction:n,startWorkflow:async(n,r,i)=>e?await e.startWorkflow(n,r,i):(p(r),t),resumeWorkflowExecution:async t=>e?await e.resumeWorkflowExecution(t):t,wait:(t,n)=>{if(e)return e.wait(t,n);throw Error(`No wait handler for "${t}". Acquire mockWorkflow() and call setWaitHandler(...).`)},resolve:async(t,n,r)=>{if(e)await e.resolve(t,n,r);else throw Error(`No resolve handler. Acquire mockWorkflow() and call setResolveHandler(...).`)}}}function unwrapValue(e){return ne.is(e)?e.value:e}function insertRows(e){if(!D.is(e))throw Error(`insertRows: expected InsertQueryNode, got ${e.kind}`);let t=e.columns,n=e.values;if(t===void 0||n===void 0||!P.is(n))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);return n.values.map(e=>{if(!M.is(e)&&!te.is(e))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);let n=M.is(e)?e.values:e.values.map(unwrapValue),r={};return t.forEach((e,t)=>{r[e.column.name]=n[t]}),r})}function insertValues(e){let t=insertRows(e);if(t.length!==1)throw Error(`insertValues: query inserts ${t.length} rows; use insertRows() for multi-row inserts`);return c(t[0],`insertValues: first row missing`)}function updateValues(e){if(!ee.is(e))throw Error(`updateValues: expected UpdateQueryNode, got ${e.kind}`);if(e.updates===void 0)throw Error(`updateValues: unsupported update shape; inspect query.node instead`);let t={};for(let n of e.updates){let e=n.column,r=T.is(e)?e.column.name:N.is(e)&&T.is(e.column)?e.column.column.name:void 0;if(r===void 0)throw Error(`updateValues: unsupported update shape; inspect query.node instead`);t[r]=unwrapValue(n.value)}return t}function toExecutedQuery(e){let t=e.query;return{kind:t.kind,sql:e.sql,parameters:e.parameters,node:t,insertRows:()=>insertRows(t),insertValues:()=>insertValues(t),updateValues:()=>updateValues(t)}}function toStagedResult(e){return Array.isArray(e)?{rows:e,numAffectedRows:void 0}:{rows:e.rows??[],numAffectedRows:e.numAffectedRows===void 0?void 0:BigInt(e.numAffectedRows)}}var MockState=class{executed=[];queue=[];resolver;enqueue(...e){this.queue.push(...e)}setResolver(e){this.resolver=e}next(e){let t=this.resolver?.(e);if(t!==void 0)return toStagedResult(t);let n=this.queue.shift();return n===void 0?{rows:[],numAffectedRows:void 0}:toStagedResult(n)}reset(){this.executed.length=0,this.queue.length=0,this.resolver=void 0}},MockConnection=class{state;constructor(e){this.state=e}async executeQuery(e){let t=toExecutedQuery(e);this.state.executed.push(t);let{rows:n,numAffectedRows:r}=this.state.next(t);return{rows:n,numAffectedRows:r??BigInt(n.length)}}streamQuery(){throw Error(`createKyselyMock: streaming is not supported`)}},MockDriver=class{state;constructor(e){this.state=e}async init(){}async acquireConnection(){return new MockConnection(this.state)}async beginTransaction(){}async commitTransaction(){}async rollbackTransaction(){}async releaseConnection(){}async destroy(){}};function byKind(e,t){return e.executed.filter(e=>e.kind===t)}function createKyselyMock(){let e=new MockState,t=new O({dialect:{createDriver:()=>new MockDriver(e),createQueryCompiler:()=>new j,createAdapter:()=>new k,createIntrospector:e=>new A(e)}});return{db:t,get executedQueries(){return e.executed},get selects(){return byKind(e,`SelectQueryNode`)},get inserts(){return byKind(e,`InsertQueryNode`)},get updates(){return byKind(e,`UpdateQueryNode`)},get deletes(){return byKind(e,`DeleteQueryNode`)},enqueueResult:t=>e.enqueue(t),enqueueResults:(...t)=>e.enqueue(...t),setQueryResolver:t=>e.setResolver(t),withTx:e=>t.transaction().execute(e),reset:()=>e.reset(),[Symbol.dispose]:()=>e.reset()}}var PGliteConnection=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async executeQuery(e){let t=await this.#e.query(e.sql,serializeTemporalParams(e.parameters));return{rows:this.#t?deserializeTemporalRows(t.rows,t.fields):t.rows,numAffectedRows:BigInt(t.affectedRows??0)}}streamQuery(){throw Error(`createKyselyPGlite: streaming is not supported`)}},PGliteDriver=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async init(){}async acquireConnection(){return new PGliteConnection(this.#e,this.#t)}async beginTransaction(e,t){let n=t.isolationLevel?[`start transaction`,`isolation level ${t.isolationLevel}`]:[`begin`];t.accessMode&&n.push(t.accessMode),await e.executeQuery(E.raw(n.join(` `)))}async commitTransaction(e){await e.executeQuery(E.raw(`commit`))}async rollbackTransaction(e){await e.executeQuery(E.raw(`rollback`))}async releaseConnection(){}async destroy(){await this.#e.close()}};function createKyselyPGlite(e,t={}){let n=t.temporal??!1;return new O({dialect:{createAdapter:()=>new k,createDriver:()=>new PGliteDriver(e,n),createIntrospector:e=>new A(e),createQueryCompiler:()=>new j}})}var MigrationStepError=class extends Error{step;completedSteps;constructor(e,t,n){super(`Migration step "${e}" failed: ${n instanceof Error?n.message:String(n)}`,{cause:n}),this.name=`MigrationStepError`,this.step=e,this.completedSteps=t}};async function runMigrationSteps(e,t){let n=d(Object.entries(e).map(([e,t])=>({name:e,dependsOn:t.dependsOn??[]}))),r=[];for(let i of n){let n=c(e[i],`Migration step "${i}" is not defined.`),a={env:structuredClone(t.env??{})};try{await t.transaction(e=>n.run(e,a))}catch(e){throw new MigrationStepError(i,[...r],e)}r.push(i)}return r}function tailorRuntime(e){return[createBlockPlugin(),createEnvironmentPlugin(e)]}export{MigrationStepError,g as applyDateRepresentation,createKyselyMock,createKyselyPGlite,mockAigateway,mockAuthconnection,mockFile,mockIconv,mockIdp,mockLogger,v as mockSecretmanager,mockTailordb,mockTailordbWithPGlite,mockWorkflow,runMigrationSteps,runWorkflowLocally,tailorRuntime};
2
2
  //# sourceMappingURL=index.mjs.map