@tailor-platform/sdk 2.32.0 → 2.34.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 (356) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/ai/index.d.mts +1 -3
  3. package/dist/application-CwpOIOTt.mjs +1 -0
  4. package/dist/application-Nce5z46R.mjs +207 -0
  5. package/dist/application-Nce5z46R.mjs.map +1 -0
  6. package/dist/cli/cache/bundle-cache.d.mts +1 -0
  7. package/dist/cli/commands/api/api-call.d.mts +1 -3
  8. package/dist/cli/commands/deploy/aigateway.d.mts +1 -0
  9. package/dist/cli/commands/deploy/app-id-lock.d.mts +1 -3
  10. package/dist/cli/commands/deploy/application.d.mts +1 -0
  11. package/dist/cli/commands/deploy/auth.d.mts +1 -0
  12. package/dist/cli/commands/deploy/config-id-injector.d.mts +1 -3
  13. package/dist/cli/commands/deploy/confirm.d.mts +1 -0
  14. package/dist/cli/commands/deploy/deploy.d.mts +4 -3
  15. package/dist/cli/commands/deploy/executor.d.mts +1 -0
  16. package/dist/cli/commands/deploy/function-registry-types.d.mts +1 -3
  17. package/dist/cli/commands/deploy/function-registry.d.mts +1 -0
  18. package/dist/cli/commands/deploy/idp.d.mts +1 -0
  19. package/dist/cli/commands/deploy/owned-resource.d.mts +3 -0
  20. package/dist/cli/commands/deploy/resolver.d.mts +1 -0
  21. package/dist/cli/commands/deploy/secret-manager.d.mts +1 -0
  22. package/dist/cli/commands/deploy/staticwebsite.d.mts +2 -0
  23. package/dist/cli/commands/deploy/tailordb/plan.d.mts +1 -0
  24. package/dist/cli/commands/deploy/workflow-execution-policy.d.mts +2 -1
  25. package/dist/cli/commands/deploy/workflow.d.mts +1 -0
  26. package/dist/cli/commands/executor/get.d.mts +0 -2
  27. package/dist/cli/commands/executor/jobs.d.mts +0 -2
  28. package/dist/cli/commands/executor/list.d.mts +1 -3
  29. package/dist/cli/commands/executor/transform.d.mts +1 -3
  30. package/dist/cli/commands/executor/trigger.d.mts +0 -2
  31. package/dist/cli/commands/executor/webhook.d.mts +1 -3
  32. package/dist/cli/commands/function/get.d.mts +0 -2
  33. package/dist/cli/commands/function/list.d.mts +0 -2
  34. package/dist/cli/commands/function/transform.d.mts +1 -3
  35. package/dist/cli/commands/generate/options.d.mts +1 -3
  36. package/dist/cli/commands/generate/seed/bundler.d.mts +1 -3
  37. package/dist/cli/commands/generate/service.d.mts +1 -3
  38. package/dist/cli/commands/machineuser/list.d.mts +1 -3
  39. package/dist/cli/commands/machineuser/token.d.mts +1 -3
  40. package/dist/cli/commands/oauth2client/get.d.mts +1 -3
  41. package/dist/cli/commands/oauth2client/list.d.mts +1 -3
  42. package/dist/cli/commands/oauth2client/transform.d.mts +1 -3
  43. package/dist/cli/commands/organization/folder/create.d.mts +0 -2
  44. package/dist/cli/commands/organization/folder/delete.d.mts +0 -2
  45. package/dist/cli/commands/organization/folder/get.d.mts +0 -2
  46. package/dist/cli/commands/organization/folder/list.d.mts +0 -2
  47. package/dist/cli/commands/organization/folder/update.d.mts +0 -2
  48. package/dist/cli/commands/organization/get.d.mts +0 -2
  49. package/dist/cli/commands/organization/list.d.mts +1 -3
  50. package/dist/cli/commands/organization/transform.d.mts +1 -3
  51. package/dist/cli/commands/organization/tree.d.mts +0 -2
  52. package/dist/cli/commands/organization/update.d.mts +0 -2
  53. package/dist/cli/commands/remove.d.mts +1 -3
  54. package/dist/cli/commands/show.d.mts +0 -2
  55. package/dist/cli/commands/staticwebsite/deploy.d.mts +1 -3
  56. package/dist/cli/commands/tailordb/migrate/bundler.d.mts +1 -3
  57. package/dist/cli/commands/tailordb/migrate/config.d.mts +1 -3
  58. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +0 -2
  59. package/dist/cli/commands/tailordb/migrate/generate.d.mts +1 -3
  60. package/dist/cli/commands/tailordb/migrate/rename-detection.d.mts +1 -3
  61. package/dist/cli/commands/tailordb/migrate/snapshot-comparison.d.mts +1 -3
  62. package/dist/cli/commands/tailordb/migrate/snapshot-files.d.mts +1 -3
  63. package/dist/cli/commands/tailordb/migrate/snapshot-local.d.mts +1 -3
  64. package/dist/cli/commands/tailordb/migrate/snapshot-migrations.d.mts +1 -3
  65. package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +0 -2
  66. package/dist/cli/commands/tailordb/migrate/types.d.mts +1 -3
  67. package/dist/cli/commands/tailordb/truncate.d.mts +1 -3
  68. package/dist/cli/commands/workflow/executions.d.mts +0 -2
  69. package/dist/cli/commands/workflow/get.d.mts +0 -2
  70. package/dist/cli/commands/workflow/list.d.mts +1 -3
  71. package/dist/cli/commands/workflow/resume.d.mts +1 -3
  72. package/dist/cli/commands/workflow/start.d.mts +0 -2
  73. package/dist/cli/commands/workflow/status.d.mts +1 -3
  74. package/dist/cli/commands/workflow/transform.d.mts +1 -3
  75. package/dist/cli/commands/workflow/wait.d.mts +1 -3
  76. package/dist/cli/commands/workflow/waiter.d.mts +1 -3
  77. package/dist/cli/commands/workspace/app/health.d.mts +0 -2
  78. package/dist/cli/commands/workspace/app/list.d.mts +0 -2
  79. package/dist/cli/commands/workspace/app/transform.d.mts +1 -3
  80. package/dist/cli/commands/workspace/create.d.mts +0 -2
  81. package/dist/cli/commands/workspace/delete.d.mts +0 -2
  82. package/dist/cli/commands/workspace/expiry.d.mts +1 -3
  83. package/dist/cli/commands/workspace/get.d.mts +0 -2
  84. package/dist/cli/commands/workspace/list.d.mts +1 -3
  85. package/dist/cli/commands/workspace/restore.d.mts +0 -2
  86. package/dist/cli/commands/workspace/transform.d.mts +1 -3
  87. package/dist/cli/commands/workspace/user/invite.d.mts +0 -2
  88. package/dist/cli/commands/workspace/user/list.d.mts +0 -2
  89. package/dist/cli/commands/workspace/user/remove.d.mts +0 -2
  90. package/dist/cli/commands/workspace/user/transform.d.mts +1 -3
  91. package/dist/cli/commands/workspace/user/update.d.mts +0 -2
  92. package/dist/cli/lib.d.mts +1 -1
  93. package/dist/cli/lib.mjs +1 -1
  94. package/dist/cli/lib.mjs.map +1 -1
  95. package/dist/cli/main.d.mts +1 -3
  96. package/dist/cli/main.mjs +65 -50
  97. package/dist/cli/main.mjs.map +1 -1
  98. package/dist/cli/query/index.d.mts +0 -2
  99. package/dist/cli/services/application.d.mts +5 -4
  100. package/dist/cli/services/executor/service.d.mts +2 -2
  101. package/dist/cli/services/function-bundle.d.mts +7 -0
  102. package/dist/cli/services/http-adapter/bundler.d.mts +7 -1
  103. package/dist/cli/services/resolver/service.d.mts +2 -1
  104. package/dist/cli/services/workflow/bundler.d.mts +2 -3
  105. package/dist/cli/shared/args.d.mts +0 -2
  106. package/dist/cli/shared/beta.d.mts +1 -3
  107. package/dist/cli/shared/client.d.mts +56 -4
  108. package/dist/cli/shared/command.d.mts +2 -4
  109. package/dist/cli/shared/config-loader.d.mts +2 -4
  110. package/dist/cli/shared/config.d.mts +1 -3
  111. package/dist/cli/shared/context.d.mts +0 -2
  112. package/dist/cli/shared/error-diagnostics.d.mts +1 -3
  113. package/dist/cli/shared/error-json.d.mts +1 -3
  114. package/dist/cli/shared/function-execution.d.mts +1 -3
  115. package/dist/cli/shared/github-actions.d.mts +1 -3
  116. package/dist/cli/shared/logger.d.mts +7 -4
  117. package/dist/cli/shared/platform-bundle-plugin.d.mts +1 -0
  118. package/dist/cli/shared/prompt.d.mts +1 -3
  119. package/dist/cli/shared/readonly-guard.d.mts +0 -2
  120. package/dist/cli/shared/script-executor.d.mts +1 -3
  121. package/dist/cli/shared/seed-chunker.d.mts +1 -3
  122. package/dist/cli/shared/seed-context.d.mts +0 -2
  123. package/dist/cli/shared/sourcemap-sources.d.mts +1 -0
  124. package/dist/cli/shared/tailordb-namespaces.d.mts +1 -3
  125. package/dist/cli/shared/type-generator.d.mts +0 -2
  126. package/dist/cli/shared/workspace-name.d.mts +1 -3
  127. package/dist/cli/ts-hook.d.mts +0 -2
  128. package/dist/cli/ts-hook.mjs +0 -113
  129. package/dist/completion/zsh-worker.zsh +26 -6
  130. package/dist/configure/config/index.d.mts +2 -4
  131. package/dist/configure/config/types.d.mts +27 -4
  132. package/dist/configure/index.d.mts +7 -9
  133. package/dist/configure/index.mjs +1 -1
  134. package/dist/configure/services/aigateway/index.d.mts +0 -2
  135. package/dist/configure/services/aigateway/types.d.mts +0 -2
  136. package/dist/configure/services/auth/index.d.mts +0 -2
  137. package/dist/configure/services/auth/types.d.mts +0 -2
  138. package/dist/configure/services/executor/executor.d.mts +0 -2
  139. package/dist/configure/services/executor/operation.d.mts +0 -2
  140. package/dist/configure/services/executor/trigger/event.d.mts +0 -2
  141. package/dist/configure/services/executor/trigger/index.d.mts +0 -2
  142. package/dist/configure/services/executor/trigger/schedule.d.mts +0 -2
  143. package/dist/configure/services/executor/trigger/webhook.d.mts +1 -3
  144. package/dist/configure/services/http-adapter/http-adapter.d.mts +0 -2
  145. package/dist/configure/services/idp/index.d.mts +0 -2
  146. package/dist/configure/services/idp/permission.d.mts +0 -2
  147. package/dist/configure/services/idp/types.d.mts +0 -2
  148. package/dist/configure/services/index.d.mts +5 -5
  149. package/dist/configure/services/resolver/index.d.mts +1 -1
  150. package/dist/configure/services/resolver/permission.d.mts +0 -2
  151. package/dist/configure/services/resolver/resolver.d.mts +1 -3
  152. package/dist/configure/services/resolver/types.d.mts +1 -3
  153. package/dist/configure/services/secrets/index.d.mts +0 -2
  154. package/dist/configure/services/secrets/types.d.mts +0 -2
  155. package/dist/configure/services/staticwebsite/index.d.mts +6 -3
  156. package/dist/configure/services/staticwebsite/types.d.mts +0 -2
  157. package/dist/configure/services/tailordb/permission.d.mts +0 -2
  158. package/dist/configure/services/tailordb/schema.d.mts +0 -2
  159. package/dist/configure/services/tailordb/types.d.mts +0 -2
  160. package/dist/configure/services/workflow/execution-policy.d.mts +0 -2
  161. package/dist/configure/services/workflow/execution-policy.types.d.mts +0 -2
  162. package/dist/configure/services/workflow/job.d.mts +0 -2
  163. package/dist/configure/services/workflow/wait-point.d.mts +0 -2
  164. package/dist/configure/services/workflow/workflow.d.mts +0 -2
  165. package/dist/configure/types/aigateway-name.d.mts +1 -3
  166. package/dist/configure/types/auth-namespace-name.d.mts +1 -3
  167. package/dist/configure/types/connection-name.d.mts +1 -3
  168. package/dist/configure/types/field.d.mts +1 -3
  169. package/dist/configure/types/field.types.d.mts +0 -2
  170. package/dist/configure/types/idp-name.d.mts +1 -3
  171. package/dist/configure/types/permission-operand.types.d.mts +0 -2
  172. package/dist/configure/types/secret-vault-name.d.mts +1 -3
  173. package/dist/configure/types/type.d.mts +0 -2
  174. package/dist/{crashreport-BCIy33Cz.mjs → crashreport-DGU6lwiX.mjs} +2 -2
  175. package/dist/{crashreport-BCIy33Cz.mjs.map → crashreport-DGU6lwiX.mjs.map} +1 -1
  176. package/dist/crashreport-WsYAWARW.mjs +1 -0
  177. package/dist/{logger-RgtbhJ83.mjs → errors-BXmGBX-7.mjs} +6 -3
  178. package/dist/errors-BXmGBX-7.mjs.map +1 -0
  179. package/dist/field-parse-BQhUAbpM.mjs +2 -0
  180. package/dist/{field-parse-C41e3UAF.mjs.map → field-parse-BQhUAbpM.mjs.map} +1 -1
  181. package/dist/guards-CiFVxoXR.mjs +2 -0
  182. package/dist/guards-CiFVxoXR.mjs.map +1 -0
  183. package/dist/kysely/index.d.mts +0 -2
  184. package/dist/{kysely-type-CBwsdx16.mjs → kysely-type-DxyIWXc6.mjs} +3 -3
  185. package/dist/kysely-type-DxyIWXc6.mjs.map +1 -0
  186. package/dist/manager-B813m43t.mjs +2 -0
  187. package/dist/manager-B813m43t.mjs.map +1 -0
  188. package/dist/parser/service/idp/types.d.mts +1 -3
  189. package/dist/parser/service/tailordb/type-source.d.mts +1 -3
  190. package/dist/parser/service/tailordb/types.d.mts +0 -2
  191. package/dist/plugin/builtin/enum-constants/index.d.mts +0 -2
  192. package/dist/plugin/builtin/enum-constants/index.mjs +2 -2
  193. package/dist/plugin/builtin/enum-constants/index.mjs.map +1 -1
  194. package/dist/plugin/builtin/file-utils/index.d.mts +0 -2
  195. package/dist/plugin/builtin/kysely-type/index.d.mts +0 -2
  196. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  197. package/dist/plugin/builtin/seed/index.d.mts +0 -2
  198. package/dist/plugin/builtin/seed/seed-type-processor.d.mts +1 -3
  199. package/dist/plugin/get-generated-table.d.mts +1 -3
  200. package/dist/plugin/index.mjs +1 -1
  201. package/dist/plugin/types.d.mts +3 -2
  202. package/dist/plugin/with-context.d.mts +1 -3
  203. package/dist/register-ts-hook-CtWJL3EO.mjs +1054 -0
  204. package/dist/register-ts-hook-CtWJL3EO.mjs.map +1 -0
  205. package/dist/repl-editor-DkrCZmmg.mjs +2 -0
  206. package/dist/repl-editor-DkrCZmmg.mjs.map +1 -0
  207. package/dist/runtime/aigateway.d.mts +1 -3
  208. package/dist/runtime/authconnection.d.mts +1 -3
  209. package/dist/runtime/context.d.mts +0 -2
  210. package/dist/runtime/date.d.mts +0 -2
  211. package/dist/runtime/field-parse.d.mts +0 -2
  212. package/dist/runtime/file.d.mts +0 -2
  213. package/dist/runtime/globals.d.mts +0 -2
  214. package/dist/runtime/iconv.d.mts +1 -3
  215. package/dist/runtime/idp.d.mts +1 -3
  216. package/dist/runtime/index.d.mts +1 -3
  217. package/dist/runtime/index.mjs +1 -1
  218. package/dist/runtime/logger.d.mts +1 -3
  219. package/dist/runtime/secretmanager.d.mts +1 -3
  220. package/dist/runtime/temporal.d.mts +0 -2
  221. package/dist/runtime/types.d.mts +0 -2
  222. package/dist/runtime/workflow.d.mts +0 -2
  223. package/dist/{schema-B6hJQWp6.mjs → schema-BU1aIQ63.mjs} +2 -2
  224. package/dist/{schema-B6hJQWp6.mjs.map → schema-BU1aIQ63.mjs.map} +1 -1
  225. package/dist/secret-file-BxZ-J_Nz.mjs +2 -0
  226. package/dist/secret-file-BxZ-J_Nz.mjs.map +1 -0
  227. package/dist/seed/idp-user-password.d.mts +0 -2
  228. package/dist/seed/index.d.mts +0 -2
  229. package/dist/service-CaGmqg0r.mjs +2 -0
  230. package/dist/{service-9rwi_I4d.mjs.map → service-CaGmqg0r.mjs.map} +1 -1
  231. package/dist/service-DEq_hdht.mjs +1 -0
  232. package/dist/{service-9SBPNpK8.mjs → service-eeXdVrDK.mjs} +4 -4
  233. package/dist/service-eeXdVrDK.mjs.map +1 -0
  234. package/dist/service_pb-6EkMfdOb.mjs +2 -0
  235. package/dist/service_pb-6EkMfdOb.mjs.map +1 -0
  236. package/dist/service_pb-CsJKokDl.mjs +1 -0
  237. package/dist/shared/src/color.d.mts +1 -3
  238. package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +1 -3
  239. package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +1 -3
  240. package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +1 -3
  241. package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +1 -3
  242. package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +1 -3
  243. package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +1 -3
  244. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +1 -3
  245. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +1 -3
  246. package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +1 -3
  247. package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +1 -3
  248. package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +1 -3
  249. package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +1 -3
  250. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +1 -3
  251. package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +1 -3
  252. package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +1 -3
  253. package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +1 -3
  254. package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +6 -5
  255. package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +1 -3
  256. package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +1 -3
  257. package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +1 -3
  258. package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +1 -3
  259. package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +1 -3
  260. package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +1 -3
  261. package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +1 -3
  262. package/dist/tailor-proto/src/tailor/v1/security_pb.d.mts +211 -0
  263. package/dist/tailor-proto/src/tailor/v1/security_resource_pb.d.mts +299 -0
  264. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +201 -11
  265. package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +1 -3
  266. package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +1 -3
  267. package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +201 -3
  268. package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +88 -3
  269. package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +1 -3
  270. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +1 -3
  271. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +1 -3
  272. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +1 -3
  273. package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +1 -3
  274. package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +1 -3
  275. package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +1 -3
  276. package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +1 -3
  277. package/dist/types/aigateway.generated.d.mts +1 -3
  278. package/dist/types/app-config.generated.d.mts +1 -3
  279. package/dist/types/auth-connection.generated.d.mts +1 -3
  280. package/dist/types/auth.generated.d.mts +1 -3
  281. package/dist/types/executor.generated.d.mts +1 -3
  282. package/dist/types/field.generated.d.mts +1 -3
  283. package/dist/types/helpers.d.mts +1 -3
  284. package/dist/types/http-adapter.generated.d.mts +1 -3
  285. package/dist/types/idp.generated.d.mts +1 -3
  286. package/dist/types/resolver.generated.d.mts +1 -3
  287. package/dist/types/secrets.generated.d.mts +1 -3
  288. package/dist/types/staticwebsite.generated.d.mts +10 -4
  289. package/dist/types/tailordb.generated.d.mts +1 -3
  290. package/dist/types/workflow.generated.d.mts +1 -3
  291. package/dist/utils/test/index.d.mts +1 -3
  292. package/dist/utils/test/index.mjs +1 -1
  293. package/dist/vitest/date-representation.d.mts +1 -3
  294. package/dist/vitest/environment.d.mts +0 -2
  295. package/dist/vitest/index.d.mts +2 -4
  296. package/dist/vitest/index.mjs +1 -1
  297. package/dist/vitest/index.mjs.map +1 -1
  298. package/dist/vitest/migration-steps.d.mts +1 -3
  299. package/dist/vitest/mock-kysely.d.mts +0 -2
  300. package/dist/vitest/mocks/aigateway.d.mts +0 -2
  301. package/dist/vitest/mocks/authconnection.d.mts +0 -2
  302. package/dist/vitest/mocks/file.d.mts +0 -2
  303. package/dist/vitest/mocks/iconv.d.mts +0 -2
  304. package/dist/vitest/mocks/idp.d.mts +0 -2
  305. package/dist/vitest/mocks/logger.d.mts +0 -2
  306. package/dist/vitest/mocks/secretmanager.d.mts +0 -2
  307. package/dist/vitest/mocks/tailordb-pglite.d.mts +0 -2
  308. package/dist/vitest/mocks/tailordb.d.mts +0 -2
  309. package/dist/vitest/mocks/workflow.d.mts +0 -2
  310. package/dist/vitest/pglite-kysely.d.mts +19 -2
  311. package/dist/vitest/pglite-temporal.d.mts +1 -3
  312. package/dist/vitest/setup.d.mts +0 -2
  313. package/dist/vitest/workflow-local.d.mts +0 -2
  314. package/dist/{workspace_resource_pb-CaoM2npP.mjs → workspace_resource_pb-C4CkoYww.mjs} +2 -2
  315. package/dist/workspace_resource_pb-C4CkoYww.mjs.map +1 -0
  316. package/docs/cli/application.md +2 -1
  317. package/docs/cli/tailordb.md +1 -1
  318. package/docs/cli/user.md +5 -5
  319. package/docs/cli/workspace.md +1 -1
  320. package/docs/cli-reference.md +26 -25
  321. package/docs/configuration.md +13 -2
  322. package/docs/github-actions.md +33 -10
  323. package/docs/plugin/custom.md +34 -0
  324. package/docs/plugin/index.md +1 -0
  325. package/docs/services/secret.md +6 -0
  326. package/docs/services/staticwebsite.md +31 -1
  327. package/docs/services/tailordb/index.md +19 -0
  328. package/docs/services/tailordb/migration.md +35 -12
  329. package/docs/testing.md +2 -2
  330. package/package.json +16 -16
  331. package/dist/application-C2bPmmbh.mjs +0 -1
  332. package/dist/application-D0xNJbag.mjs +0 -199
  333. package/dist/application-D0xNJbag.mjs.map +0 -1
  334. package/dist/crashreport-IN6H7GX3.mjs +0 -1
  335. package/dist/errors-BOF68LJ5.mjs +0 -5
  336. package/dist/errors-BOF68LJ5.mjs.map +0 -1
  337. package/dist/field-parse-C41e3UAF.mjs +0 -2
  338. package/dist/guards-yDXyKC9F.mjs +0 -2
  339. package/dist/guards-yDXyKC9F.mjs.map +0 -1
  340. package/dist/kysely-type-CBwsdx16.mjs.map +0 -1
  341. package/dist/logger-RgtbhJ83.mjs.map +0 -1
  342. package/dist/manager-Bk-7vkwd.mjs +0 -2
  343. package/dist/manager-Bk-7vkwd.mjs.map +0 -1
  344. package/dist/register-ts-hook-_dHIREtU.mjs +0 -1050
  345. package/dist/register-ts-hook-_dHIREtU.mjs.map +0 -1
  346. package/dist/repl-editor-DGJBfIt1.mjs +0 -2
  347. package/dist/repl-editor-DGJBfIt1.mjs.map +0 -1
  348. package/dist/secret-file-C9wp_FCX.mjs +0 -2
  349. package/dist/secret-file-C9wp_FCX.mjs.map +0 -1
  350. package/dist/service-9SBPNpK8.mjs.map +0 -1
  351. package/dist/service-9rwi_I4d.mjs +0 -2
  352. package/dist/service-Ca1WwyIt.mjs +0 -1
  353. package/dist/service_pb-Bbu2QSIr.mjs +0 -2
  354. package/dist/service_pb-Bbu2QSIr.mjs.map +0 -1
  355. package/dist/service_pb-urxAIYHT.mjs +0 -1
  356. package/dist/workspace_resource_pb-CaoM2npP.mjs.map +0 -1
@@ -2,7 +2,6 @@ import { Namespace, Script } from "./resource_pb.mjs";
2
2
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
3
3
  import { Message } from "@bufbuild/protobuf";
4
4
  import { Value } from "@bufbuild/protobuf/wkt";
5
- //#region ../tailor-proto/src/tailor/v1/tailordb_resource_pb.d.ts
6
5
  /**
7
6
  * @generated from message tailor.v1.TailorDBService
8
7
  */
@@ -795,5 +794,4 @@ export declare enum TailorDBGQLPermission_Permit {
795
794
  * @generated from enum value: PERMIT_DENY = 2;
796
795
  */
797
796
  DENY = 2
798
- }
799
- //#endregion
797
+ }
@@ -2,7 +2,6 @@ import { PageDirection } from "./resource_pb.mjs";
2
2
  import { OTLPExporter, ResourceAttributesConfig } from "./telemetryrouter_resource_pb.mjs";
3
3
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
4
4
  import { Message } from "@bufbuild/protobuf";
5
- //#region ../tailor-proto/src/tailor/v1/telemetryrouter_pb.d.ts
6
5
  /**
7
6
  * @generated from message tailor.v1.CreateOTLPExporterRequest
8
7
  */
@@ -324,5 +323,4 @@ export declare type DeleteResourceAttributesConfigResponse = Message<"tailor.v1.
324
323
  * Describes the message tailor.v1.DeleteResourceAttributesConfigResponse.
325
324
  * Use `create(DeleteResourceAttributesConfigResponseSchema)` to create a new message.
326
325
  */
327
- export declare const DeleteResourceAttributesConfigResponseSchema: GenMessage<DeleteResourceAttributesConfigResponse>;
328
- //#endregion
326
+ export declare const DeleteResourceAttributesConfigResponseSchema: GenMessage<DeleteResourceAttributesConfigResponse>;
@@ -2,7 +2,6 @@ import { SecretValue } from "./secret_manager_resource_pb.mjs";
2
2
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
3
3
  import { Message } from "@bufbuild/protobuf";
4
4
  import { Timestamp } from "@bufbuild/protobuf/wkt";
5
- //#region ../tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.ts
6
5
  /**
7
6
  * @generated from message tailor.v1.OTLPExporter
8
7
  */
@@ -202,5 +201,4 @@ export declare enum OTLPExporterProtocol {
202
201
  * @generated from enum value: OTLP_EXPORTER_PROTOCOL_HTTP = 2;
203
202
  */
204
203
  OTLP_EXPORTER_PROTOCOL_HTTP = 2
205
- }
206
- //#endregion
204
+ }
@@ -3,7 +3,6 @@ import { AuthInvoker } from "./auth_resource_pb.mjs";
3
3
  import { ConcurrencyPolicy, RetryPolicy, Workflow, WorkflowExecution, WorkflowExecution_Status, WorkflowJobFunction, WorkflowJobFunctionExecutionPolicy, WorkflowJobFunctionSummary } from "./workflow_resource_pb.mjs";
4
4
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
5
5
  import { Message } from "@bufbuild/protobuf";
6
- //#region ../tailor-proto/src/tailor/v1/workflow_pb.d.ts
7
6
  /**
8
7
  * @generated from message tailor.v1.CreateWorkflowRequest
9
8
  */
@@ -1004,5 +1003,4 @@ export declare type ListWorkflowJobFunctionExecutionPoliciesResponse = Message<"
1004
1003
  * Describes the message tailor.v1.ListWorkflowJobFunctionExecutionPoliciesResponse.
1005
1004
  * Use `create(ListWorkflowJobFunctionExecutionPoliciesResponseSchema)` to create a new message.
1006
1005
  */
1007
- export declare const ListWorkflowJobFunctionExecutionPoliciesResponseSchema: GenMessage<ListWorkflowJobFunctionExecutionPoliciesResponse>;
1008
- //#endregion
1006
+ export declare const ListWorkflowJobFunctionExecutionPoliciesResponseSchema: GenMessage<ListWorkflowJobFunctionExecutionPoliciesResponse>;
@@ -1,7 +1,6 @@
1
1
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
2
2
  import { Message } from "@bufbuild/protobuf";
3
3
  import { Duration, Timestamp } from "@bufbuild/protobuf/wkt";
4
- //#region ../tailor-proto/src/tailor/v1/workflow_resource_pb.d.ts
5
4
  /**
6
5
  * @generated from message tailor.v1.WorkflowJobFunction
7
6
  */
@@ -442,5 +441,4 @@ export declare enum WorkflowExecution_Status {
442
441
  * @generated from enum value: STATUS_CANCELED = 8;
443
442
  */
444
443
  CANCELED = 8
445
- }
446
- //#endregion
444
+ }
@@ -3,7 +3,6 @@ import { Folder, FolderAccess, FolderRole, Organization, OrganizationAccess, Org
3
3
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
4
4
  import { Message } from "@bufbuild/protobuf";
5
5
  import { FieldMask, Timestamp } from "@bufbuild/protobuf/wkt";
6
- //#region ../tailor-proto/src/tailor/v1/workspace_pb.d.ts
7
6
  /**
8
7
  * @generated from message tailor.v1.ListAvailableWorkspaceRegionsRequest
9
8
  */
@@ -2016,5 +2015,4 @@ export declare type GetPlatformAccountPlanResponse = Message<"tailor.v1.GetPlatf
2016
2015
  * Describes the message tailor.v1.GetPlatformAccountPlanResponse.
2017
2016
  * Use `create(GetPlatformAccountPlanResponseSchema)` to create a new message.
2018
2017
  */
2019
- export declare const GetPlatformAccountPlanResponseSchema: GenMessage<GetPlatformAccountPlanResponse>;
2020
- //#endregion
2018
+ export declare const GetPlatformAccountPlanResponseSchema: GenMessage<GetPlatformAccountPlanResponse>;
@@ -1,7 +1,6 @@
1
1
  import { GenMessage } from "@bufbuild/protobuf/codegenv2";
2
2
  import { Message } from "@bufbuild/protobuf";
3
3
  import { Timestamp } from "@bufbuild/protobuf/wkt";
4
- //#region ../tailor-proto/src/tailor/v1/workspace_resource_pb.d.ts
5
4
  /**
6
5
  * @generated from message tailor.v1.Organization
7
6
  */
@@ -477,5 +476,4 @@ export declare enum PlatformAccountPlanType {
477
476
  * @generated from enum value: PLATFORM_ACCOUNT_PLAN_TYPE_BASIC = 2;
478
477
  */
479
478
  BASIC = 2
480
- }
481
- //#endregion
479
+ }
@@ -1,4 +1,3 @@
1
- //#region src/types/aigateway.generated.d.ts
2
1
  export type AIGateway = {
3
2
  /** AI Gateway name */
4
3
  name: string;
@@ -7,5 +6,4 @@ export type AIGateway = {
7
6
  /** Allowed CORS origins for browser-based clients. Each entry is `*`, `http(s)://*`, `http(s)://*.example.com`, or `http(s)://app.example.com`, optionally with `:port`. Empty list disables cross-origin access. */
8
7
  cors?: string[] | undefined;
9
8
  };
10
- export type AIGatewayInput = AIGateway;
11
- //#endregion
9
+ export type AIGatewayInput = AIGateway;
@@ -1,3 +1 @@
1
- //#region src/types/app-config.generated.d.ts
2
- export type LogLevelEnum = "DEBUG" | "INFO" | "WARN" | "ERROR" | "SILENT";
3
- //#endregion
1
+ export type LogLevelEnum = "DEBUG" | "INFO" | "WARN" | "ERROR" | "SILENT";
@@ -1,4 +1,3 @@
1
- //#region src/types/auth-connection.generated.d.ts
2
1
  export type AuthConnectionOAuth2Config = {
3
2
  /** OAuth2 provider URL */
4
3
  providerUrl: string;
@@ -28,5 +27,4 @@ export type AuthConnectionConfig = {
28
27
  authUrl?: string | undefined;
29
28
  /** OAuth2 token endpoint override */
30
29
  tokenUrl?: string | undefined;
31
- };
32
- //#endregion
30
+ };
@@ -1,4 +1,3 @@
1
- //#region src/types/auth.generated.d.ts
2
1
  export type OIDC = {
3
2
  /** Identity provider name */
4
3
  name: string;
@@ -165,5 +164,4 @@ export type TenantProvider = {
165
164
  type: string;
166
165
  /** Field used as the tenant signature */
167
166
  signatureField: string;
168
- };
169
- //#endregion
167
+ };
@@ -1,5 +1,4 @@
1
1
  import { JsonValue } from "./helpers.mjs";
2
- //#region src/types/executor.generated.d.ts
3
2
  export type TailorDBTrigger = {
4
3
  /** TailorDB record event trigger */
5
4
  kind: "tailordb";
@@ -226,5 +225,4 @@ export type Executor = {
226
225
  operation: Operation;
227
226
  /** Executor description */
228
227
  description?: string | undefined;
229
- };
230
- //#endregion
228
+ };
@@ -1,4 +1,3 @@
1
- //#region src/types/field.generated.d.ts
2
1
  export type TailorField = {
3
2
  /** Field data type */
4
3
  type: "string" | "boolean" | "uuid" | "integer" | "float" | "decimal" | "enum" | "date" | "datetime" | "time" | "nested";
@@ -36,5 +35,4 @@ export type TailorField = {
36
35
  fields: {
37
36
  [x: string]: TailorField;
38
37
  };
39
- };
40
- //#endregion
38
+ };
@@ -1,5 +1,4 @@
1
1
  import { Temporal } from "temporal-spec";
2
- //#region src/types/helpers.d.ts
3
2
  export type Prettify<T> = { [K in keyof T as string extends K ? never : K]: T[K]; } & {};
4
3
  export type TypeLevelError<Message extends string> = {
5
4
  readonly $error: Message;
@@ -47,5 +46,4 @@ export type JsonValue = string | number | boolean | null | JsonValue[] | {
47
46
  */
48
47
  export type JsonCompatible<T> = T extends string | number | boolean | null | undefined ? T : T extends readonly (infer U)[] ? JsonCompatible<U>[] : T extends Function ? never : T extends object ? T extends {
49
48
  toJSON: () => unknown;
50
- } ? never : { [K in keyof T]: JsonCompatible<T[K]>; } : never;
51
- //#endregion
49
+ } ? never : { [K in keyof T]: JsonCompatible<T[K]>; } : never;
@@ -1,4 +1,3 @@
1
- //#region src/types/http-adapter.generated.d.ts
2
1
  export type HttpAdapterConfigInput = {
3
2
  /** Unique adapter name within the domain */
4
3
  name: string;
@@ -23,5 +22,4 @@ export type HttpAdapterConfigInput = {
23
22
  priority?: number | undefined;
24
23
  /** Function that transforms GraphQL response to HTTP response */
25
24
  output?: Function | undefined;
26
- };
27
- //#endregion
25
+ };
@@ -1,4 +1,3 @@
1
- //#region src/types/idp.generated.d.ts
2
1
  /**
3
2
  * Configuration for GraphQL operations on IdP users.
4
3
  * All operations are enabled by default (undefined or true = enabled, false = disabled).
@@ -621,5 +620,4 @@ export type IdPInput = {
621
620
  emailConfig?: IdPEmailConfig;
622
621
  /** Per-operation permission policies for IdP users */
623
622
  permission?: IdPPermission;
624
- };
625
- //#endregion
623
+ };
@@ -1,5 +1,4 @@
1
1
  import { TailorField } from "./field.generated.mjs";
2
- //#region src/types/resolver.generated.d.ts
3
2
  /**
4
3
  * GraphQL operation type
5
4
  */
@@ -44,5 +43,4 @@ export type Resolver = {
44
43
  description?: string | undefined;
45
44
  }[] | undefined;
46
45
  };
47
- export type ResolverInput = Resolver;
48
- //#endregion
46
+ export type ResolverInput = Resolver;
@@ -1,4 +1,3 @@
1
- //#region src/types/secrets.generated.d.ts
2
1
  export type Secrets = {
3
2
  vaults: {
4
3
  [x: string]: {
@@ -9,5 +8,4 @@ export type Secrets = {
9
8
  ignoreNullishValues: boolean;
10
9
  };
11
10
  };
12
- export type SecretsInput = Secrets;
13
- //#endregion
11
+ export type SecretsInput = Secrets;
@@ -1,4 +1,3 @@
1
- //#region src/types/staticwebsite.generated.d.ts
2
1
  export type StaticWebsite = {
3
2
  /** Static website name */
4
3
  name: string;
@@ -7,7 +6,14 @@ export type StaticWebsite = {
7
6
  /** IP addresses allowed to access the website */
8
7
  allowedIpAddresses?: string[] | undefined;
9
8
  /** Custom domains for the static website */
10
- customDomains?: string[] | undefined;
9
+ customDomains?: (string | {
10
+ /** Custom domain to move to another workspace */
11
+ domain: string;
12
+ /** Where the domain should move */
13
+ transferTo: {
14
+ /** Workspace that receives the domain */
15
+ workspaceId: string;
16
+ };
17
+ })[] | undefined;
11
18
  };
12
- export type StaticWebsiteInput = StaticWebsite;
13
- //#endregion
19
+ export type StaticWebsiteInput = StaticWebsite;
@@ -1,4 +1,3 @@
1
- //#region src/types/tailordb.generated.d.ts
2
1
  /**
3
2
  * Configuration for GraphQL operations on a TailorDB table.
4
3
  * All operations are enabled by default (undefined or true = enabled, false = disabled).
@@ -465,5 +464,4 @@ export type TailorDBServiceConfigInput = {
465
464
  /** Enable read queries - get, list, aggregation (default: true) */
466
465
  read?: boolean | undefined;
467
466
  } | undefined;
468
- };
469
- //#endregion
467
+ };
@@ -1,4 +1,3 @@
1
- //#region src/types/workflow.generated.d.ts
2
1
  export type RetryPolicy = {
3
2
  /** Maximum number of retries (1-10) */
4
3
  maxRetries: number;
@@ -12,5 +11,4 @@ export type RetryPolicy = {
12
11
  export type ConcurrencyPolicy = {
13
12
  /** Maximum number of concurrent executions (1-1000) */
14
13
  maxConcurrentExecutions: number;
15
- };
16
- //#endregion
14
+ };
@@ -2,7 +2,6 @@ import { TailorDBType } from "../../configure/services/tailordb/schema.mjs";
2
2
  import { TailorField } from "../../configure/types/type.mjs";
3
3
  import { output } from "../../configure/index.mjs";
4
4
  import { StandardSchemaV1 } from "@standard-schema/spec";
5
- //#region src/utils/test/index.d.ts
6
5
  /**
7
6
  * Creates a hook function that processes TailorDB table fields
8
7
  * - Uses existing id from data if provided, otherwise generates UUID for id fields
@@ -37,5 +36,4 @@ export declare function createStandardSchema<T = Record<string, unknown>>(schema
37
36
  readonly vendor: "@tailor-platform/sdk";
38
37
  readonly validate: (value: unknown) => StandardSchemaV1.Result<T>;
39
38
  };
40
- };
41
- //#endregion
39
+ };
@@ -1,2 +1,2 @@
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};
1
+ import{t as e}from"../../field-parse-BQhUAbpM.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
@@ -1,6 +1,5 @@
1
1
  import { DateRepresentationOption } from "../configure/types/field.types.mjs";
2
2
  import { EffectiveDateDefault } from "../runtime/types.mjs";
3
- //#region src/vitest/date-representation.d.ts
4
3
  /**
5
4
  * Expose the date default to `t` date fields in this worker, the way the
6
5
  * define plugin folds it into deployed bundles.
@@ -19,5 +18,4 @@ export declare function applyDateDefault(dateDefault: EffectiveDateDefault): ()
19
18
  * @param representation - The representation to apply, as `as` names it
20
19
  * @returns A function that restores the previous representation
21
20
  */
22
- export declare function applyDateRepresentation(representation: DateRepresentationOption): () => void;
23
- //#endregion
21
+ export declare function applyDateRepresentation(representation: DateRepresentationOption): () => void;
@@ -1,4 +1,3 @@
1
- //#region src/vitest/environment.d.ts
2
1
  declare const _default: {
3
2
  name: string;
4
3
  viteEnvironment: string;
@@ -6,5 +5,4 @@ declare const _default: {
6
5
  teardown(global: typeof globalThis): void;
7
6
  }>;
8
7
  };
9
- //#endregion
10
8
  export { _default as default };
@@ -9,14 +9,13 @@ import { MockTailordbOptions, QueryBehavior, QueryMatch, QueryMatcher, mockTailo
9
9
  import { mockWorkflow } from "./mocks/workflow.mjs";
10
10
  import "./mock.mjs";
11
11
  import { PGliteField } from "./pglite-temporal.mjs";
12
- import { CreateKyselyPGliteOptions, PGliteClient, PGliteQueryResult, Unmigrated, createKyselyPGlite } from "./pglite-kysely.mjs";
12
+ import { CreateKyselyPGliteOptions, PGliteClient, PGliteQueryResult, Unmigrated, createKyselyPGlite, prepareFixtures } 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
15
  import { applyDateRepresentation } from "./date-representation.mjs";
16
16
  import { ExecutedQuery, KyselyMock, createKyselyMock } from "./mock-kysely.mjs";
17
17
  import { MigrationStepError, RunMigrationStepsOptions, RunnableMigrationStep, runMigrationSteps } from "./migration-steps.mjs";
18
18
  import { Plugin } from "vitest/config";
19
- //#region src/vitest/index.d.ts
20
19
  /**
21
20
  * Creates Vitest plugins that emulate the Tailor Platform function runtime environment.
22
21
  *
@@ -74,5 +73,4 @@ import { Plugin } from "vitest/config";
74
73
  export declare function tailorRuntime(options?: {
75
74
  config?: string;
76
75
  }): Plugin[];
77
- //#endregion
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 };
76
+ 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, prepareFixtures, 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{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};
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 ee,Kysely as D,PostgresAdapter as O,PostgresIntrospector as k,PostgresQueryCompiler as A,PrimitiveValueListNode as j,ReferenceNode as te,UpdateQueryNode as ne,ValueListNode as re,ValueNode as ie,ValuesNode as ae}from"kysely";import{dirname as M,isAbsolute as N,matchesGlob as oe,relative as P,resolve as F}from"node:path";import{vi as I}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 L=Promise.resolve();function serialize(e){let t=L.then(e,e);return L=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(F(M(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 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};`);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 U;function supportsDefaultProjectInheritance(){if(U===void 0)try{let{version:e}=b(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=>F(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)?P(t,e):e;return n.some(e=>oe(r,e))}),isUserSourceFile=e=>{if(!N(e))return!1;let t=P(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,n){e.env={...e.env,__TAILOR_RUNTIME_CONFIG:t,__TAILOR_RUNTIME_DATE_DEFAULT:n}}function createEnvironmentPlugin(e,t=loadDateDefaultFromConfig){let n=M(C(import.meta.url)),r=F(n,`environment.mjs`),i=F(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=F(r,e.config);setConfigEnv(n,i,await dateDefaultOf(i))}}if(e?.config&&n){let r=n.root??t.root??process.cwd(),i=a?F(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=I.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=I.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 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=I.fn(async(...e)=>{let[t,n,r,i]=e;return handle(`upload`,t,n,r,i)}),s=I.fn(async(...e)=>handle(`download`,...e)),c=I.fn(async(...e)=>handle(`downloadAsBase64`,...e)),l=I.fn(async(...e)=>{handle(`delete`,...e)}),u=I.fn(async(...e)=>handle(`getMetadata`,...e)),d=I.fn(async(...e)=>handle(`downloadStream`,...e)??{body:new ReadableStream({start(e){e.close()}}),metadata:{contentType:``,fileSize:0,sha256sum:``,lastUploadedAt:``}}),f=I.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 W.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=I.fn(defaultConvert),o=I.fn(defaultConvertBuffer),s=I.fn(defaultDecode),c=I.fn(defaultEncode),l=I.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 K=[`users`,`user`,`userByName`,`createUser`,`updateUser`,`deleteUser`,`sendPasswordResetEmail`,`unenrollMfa`],q={id:`mock-id`,name:`mock-user`,disabled:!1,mfaEnrolled:!1,mfaFactorIds:[],passwordUpdatedAt:null},se={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=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(se[e])}function createNamespaceMocks(e){return{users:I.fn(async(...t)=>handle(`users`,t,e)),user:I.fn(async(...t)=>handle(`user`,t,e)),userByName:I.fn(async(...t)=>handle(`userByName`,t,e)),createUser:I.fn(async(...t)=>handle(`createUser`,t,e)),updateUser:I.fn(async(...t)=>handle(`updateUser`,t,e)),deleteUser:I.fn(async(...t)=>handle(`deleteUser`,t,e)),sendPasswordResetEmail:I.fn(async(...t)=>handle(`sendPasswordResetEmail`,t,e)),unenrollMfa:I.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=I.fn(defaultClient);t.idp={Client:s};function allMocks(){return[...o.values()].flatMap(e=>K.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=I.fn((e,t)=>{}),i=I.fn((e,t)=>{}),a=I.fn((e,t)=>{}),o=I.fn((e,t)=>{}),s=I.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=I.fn(defaultQuery),defaultConnect=async()=>{},o=I.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=I.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=I.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 J=/* @__PURE__ */ new WeakMap,Y=/* @__PURE__ */ new WeakMap,X=/* @__PURE__ */ new WeakMap;function replaceProcedure(e,t,n){let r=X.get(n)??n,i=I.fn(function(...e){return Reflect.apply(r,this,e)});X.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=J.get(a)??a,c=Y.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)};J.set(dispatchWait,s),Y.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=I.fn(defaultExecJob),v=I.fn(defaultStartWorkflow),y=I.fn(defaultResumeWorkflowExecution),b=I.fn((e,t)=>null),x=I.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=I.fn(e=>Promise.resolve(i.originalWait(r,e))),s=I.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},Z={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=Z[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 ce=/^\s*(?:begin|start\s+transaction)\b/i,le=/^\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(),ce.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(le.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=I.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 ie.is(e)?e.value:e}function insertRows(e){if(!ee.is(e))throw Error(`insertRows: expected InsertQueryNode, got ${e.kind}`);let t=e.columns,n=e.values;if(t===void 0||n===void 0||!ae.is(n))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);return n.values.map(e=>{if(!j.is(e)&&!re.is(e))throw Error(`insertRows: unsupported insert shape; inspect query.node instead`);let n=j.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(!ne.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:te.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 D({dialect:{createDriver:()=>new MockDriver(e),createQueryCompiler:()=>new A,createAdapter:()=>new O,createIntrospector:e=>new k(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 D({dialect:{createAdapter:()=>new O,createDriver:()=>new PGliteDriver(e,n),createIntrospector:e=>new k(e),createQueryCompiler:()=>new A}})}const Q=`session_replication_role`,$=/* @__PURE__ */ new WeakMap;function setReplicationRole(e,t){return e.query(`SELECT set_config($1, $2, false)`,[Q,t])}async function uncheckRelations(e){let t=(await e.query(`SHOW ${Q}`)).rows[0]?.[Q];return await setReplicationRole(e,`replica`),typeof t==`string`?t:`origin`}async function prepareFixtures(e,t){let n=$.get(e)??{active:0,previous:uncheckRelations(e)};n.active+=1,$.set(e,n);let r;try{return r=await n.previous,await t()}finally{--n.active,n.active===0&&($.delete(e),r!==void 0&&await setReplicationRole(e,r))}}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,prepareFixtures,runMigrationSteps,runWorkflowLocally,tailorRuntime};
2
2
  //# sourceMappingURL=index.mjs.map