@tailor-platform/sdk 2.0.0-next.1 → 2.0.0-next.10

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 (471) hide show
  1. package/CHANGELOG.md +869 -2
  2. package/README.md +9 -9
  3. package/agent-skills/{tailor-sdk → tailor}/SKILL.md +3 -1
  4. package/dist/aigateway-DR4Kwuik.mjs +9 -0
  5. package/dist/aigateway-DR4Kwuik.mjs.map +1 -0
  6. package/dist/application-DArFTTJ9.mjs +3 -0
  7. package/dist/{application-DqS1yBg3.mjs → application-miwiXtB4.mjs} +1892 -1968
  8. package/dist/application-miwiXtB4.mjs.map +1 -0
  9. package/dist/authconnection-CZvi9ANm.mjs +9 -0
  10. package/dist/authconnection-CZvi9ANm.mjs.map +1 -0
  11. package/dist/brand-Eo4pLXPJ.mjs.map +1 -1
  12. package/dist/cli/cache/bundle-cache.d.mts +2 -0
  13. package/dist/cli/cache/store.d.mts +1 -0
  14. package/dist/cli/cache/types.d.mts +1 -0
  15. package/dist/cli/commands/api/api-call.d.mts +19 -0
  16. package/dist/cli/commands/api/index.d.mts +4 -0
  17. package/dist/cli/commands/deploy/aigateway.d.mts +5 -0
  18. package/dist/cli/commands/deploy/application.d.mts +7 -0
  19. package/dist/cli/commands/deploy/apply-phases.d.mts +14 -0
  20. package/dist/cli/commands/deploy/auth.d.mts +5 -0
  21. package/dist/cli/commands/deploy/deploy.d.mts +34 -0
  22. package/dist/cli/commands/deploy/executor.d.mts +7 -0
  23. package/dist/cli/commands/deploy/function-registry-types.d.mts +12 -0
  24. package/dist/cli/commands/deploy/function-registry.d.mts +7 -0
  25. package/dist/cli/commands/deploy/idp.d.mts +5 -0
  26. package/dist/cli/commands/deploy/resolver.d.mts +5 -0
  27. package/dist/cli/commands/deploy/secret-manager.d.mts +5 -0
  28. package/dist/cli/commands/deploy/staticwebsite.d.mts +5 -0
  29. package/dist/cli/commands/deploy/tailordb/index.d.mts +9 -0
  30. package/dist/cli/commands/deploy/types.d.mts +3 -0
  31. package/dist/cli/commands/deploy/workflow-execution-policy.d.mts +3 -0
  32. package/dist/cli/commands/deploy/workflow.d.mts +4 -0
  33. package/dist/cli/commands/executor/get.d.mts +28 -0
  34. package/dist/cli/commands/executor/jobs.d.mts +122 -0
  35. package/dist/cli/commands/executor/list.d.mts +18 -0
  36. package/dist/cli/commands/executor/transform.d.mts +42 -0
  37. package/dist/cli/commands/executor/trigger.d.mts +40 -0
  38. package/dist/cli/commands/executor/webhook.d.mts +21 -0
  39. package/dist/cli/commands/function/get.d.mts +17 -0
  40. package/dist/cli/commands/function/list.d.mts +21 -0
  41. package/dist/cli/commands/function/transform.d.mts +12 -0
  42. package/dist/cli/commands/generate/options.d.mts +6 -0
  43. package/dist/cli/commands/generate/seed/bundler.d.mts +26 -0
  44. package/dist/cli/commands/generate/service.d.mts +15 -0
  45. package/dist/cli/commands/machineuser/list.d.mts +26 -0
  46. package/dist/cli/commands/machineuser/token.d.mts +21 -0
  47. package/dist/cli/commands/oauth2client/get.d.mts +17 -0
  48. package/dist/cli/commands/oauth2client/list.d.mts +19 -0
  49. package/dist/cli/commands/oauth2client/transform.d.mts +21 -0
  50. package/dist/cli/commands/organization/folder/create.d.mts +17 -0
  51. package/dist/cli/commands/organization/folder/delete.d.mts +15 -0
  52. package/dist/cli/commands/organization/folder/get.d.mts +16 -0
  53. package/dist/cli/commands/organization/folder/list.d.mts +21 -0
  54. package/dist/cli/commands/organization/folder/update.d.mts +17 -0
  55. package/dist/cli/commands/organization/get.d.mts +15 -0
  56. package/dist/cli/commands/organization/list.d.mts +14 -0
  57. package/dist/cli/commands/organization/transform.d.mts +29 -0
  58. package/dist/cli/commands/organization/tree.d.mts +24 -0
  59. package/dist/cli/commands/organization/update.d.mts +16 -0
  60. package/dist/cli/commands/remove.d.mts +15 -0
  61. package/dist/cli/commands/show.d.mts +39 -0
  62. package/dist/cli/commands/staticwebsite/deploy.d.mts +19 -0
  63. package/dist/cli/commands/tailordb/migrate/bundler.d.mts +29 -0
  64. package/dist/cli/commands/tailordb/migrate/config.d.mts +18 -0
  65. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +246 -0
  66. package/dist/cli/commands/tailordb/migrate/generate.d.mts +16 -0
  67. package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +208 -0
  68. package/dist/cli/commands/tailordb/migrate/snapshot.d.mts +98 -0
  69. package/dist/cli/commands/tailordb/migrate/types.d.mts +7 -0
  70. package/dist/cli/commands/tailordb/truncate.d.mts +18 -0
  71. package/dist/cli/commands/workflow/executions.d.mts +74 -0
  72. package/dist/cli/commands/workflow/get.d.mts +30 -0
  73. package/dist/cli/commands/workflow/list.d.mts +18 -0
  74. package/dist/cli/commands/workflow/resume.d.mts +22 -0
  75. package/dist/cli/commands/workflow/start.d.mts +60 -0
  76. package/dist/cli/commands/workflow/status.d.mts +6 -0
  77. package/dist/cli/commands/workflow/transform.d.mts +34 -0
  78. package/dist/cli/commands/workflow/wait.d.mts +15 -0
  79. package/dist/cli/commands/workflow/waiter.d.mts +23 -0
  80. package/dist/cli/commands/workspace/app/health.d.mts +17 -0
  81. package/dist/cli/commands/workspace/app/list.d.mts +21 -0
  82. package/dist/cli/commands/workspace/app/transform.d.mts +20 -0
  83. package/dist/cli/commands/workspace/create.d.mts +27 -0
  84. package/dist/cli/commands/workspace/delete.d.mts +14 -0
  85. package/dist/cli/commands/workspace/get.d.mts +16 -0
  86. package/dist/cli/commands/workspace/list.d.mts +17 -0
  87. package/dist/cli/commands/workspace/restore.d.mts +14 -0
  88. package/dist/cli/commands/workspace/transform.d.mts +20 -0
  89. package/dist/cli/commands/workspace/user/invite.d.mts +21 -0
  90. package/dist/cli/commands/workspace/user/list.d.mts +21 -0
  91. package/dist/cli/commands/workspace/user/remove.d.mts +16 -0
  92. package/dist/cli/commands/workspace/user/transform.d.mts +9 -0
  93. package/dist/cli/commands/workspace/user/update.d.mts +21 -0
  94. package/dist/cli/index.mjs +12 -5481
  95. package/dist/cli/lib.d.mts +90 -21048
  96. package/dist/cli/lib.mjs +154 -12
  97. package/dist/cli/lib.mjs.map +1 -1
  98. package/dist/cli/main.d.mts +23 -0
  99. package/dist/cli/main.mjs +6583 -0
  100. package/dist/cli/main.mjs.map +1 -0
  101. package/dist/cli/query/index.d.mts +38 -0
  102. package/dist/cli/services/application.d.mts +12 -0
  103. package/dist/cli/services/auth/service.d.mts +3 -0
  104. package/dist/cli/services/executor/service.d.mts +1 -0
  105. package/dist/cli/services/http-adapter/bundler.d.mts +3 -0
  106. package/dist/cli/services/http-adapter/service.d.mts +2 -0
  107. package/dist/cli/services/resolver/service.d.mts +1 -0
  108. package/dist/cli/services/tailordb/service.d.mts +3 -0
  109. package/dist/cli/services/workflow/bundler.d.mts +2 -0
  110. package/dist/cli/services/workflow/service.d.mts +1 -0
  111. package/dist/cli/shared/args.d.mts +13 -0
  112. package/dist/cli/shared/client.d.mts +1273 -0
  113. package/dist/cli/shared/config-loader.d.mts +25 -0
  114. package/dist/cli/shared/context.d.mts +29 -0
  115. package/dist/cli/shared/error-json.d.mts +23 -0
  116. package/dist/cli/shared/readonly-guard.d.mts +25 -0
  117. package/dist/cli/shared/script-executor.d.mts +77 -0
  118. package/dist/cli/shared/seed-chunker.d.mts +45 -0
  119. package/dist/cli/shared/seed-context.d.mts +49 -0
  120. package/dist/cli/shared/tailordb-namespaces.d.mts +40 -0
  121. package/dist/cli/shared/type-generator.d.mts +19 -0
  122. package/dist/cli/shared/workspace-name.d.mts +1 -0
  123. package/dist/cli/ts-hook.d.mts +4 -0
  124. package/dist/cli/ts-hook.mjs +333 -0
  125. package/dist/completion/zsh-worker.zsh +1433 -1239
  126. package/dist/configure/config/index.d.mts +20 -0
  127. package/dist/configure/config/types.d.mts +111 -0
  128. package/dist/configure/index.d.mts +135 -8
  129. package/dist/configure/index.mjs +390 -36
  130. package/dist/configure/index.mjs.map +1 -1
  131. package/dist/configure/services/aigateway/index.d.mts +16 -0
  132. package/dist/configure/services/aigateway/types.d.mts +10 -0
  133. package/dist/configure/services/auth/index.d.mts +33 -0
  134. package/dist/configure/services/auth/types.d.mts +168 -0
  135. package/dist/configure/services/executor/executor.d.mts +70 -0
  136. package/dist/configure/services/executor/index.d.mts +9 -0
  137. package/dist/configure/services/executor/operation.d.mts +50 -0
  138. package/dist/configure/services/executor/trigger/event.d.mts +271 -0
  139. package/dist/configure/services/executor/trigger/index.d.mts +7 -0
  140. package/dist/configure/services/executor/trigger/schedule.d.mts +24 -0
  141. package/dist/configure/services/executor/trigger/webhook.d.mts +43 -0
  142. package/dist/configure/services/executor/types.d.mts +2 -0
  143. package/dist/configure/services/http-adapter/http-adapter.d.mts +124 -0
  144. package/dist/configure/services/http-adapter/index.d.mts +2 -0
  145. package/dist/configure/services/idp/index.d.mts +60 -0
  146. package/dist/configure/services/idp/permission.d.mts +64 -0
  147. package/dist/configure/services/idp/types.d.mts +23 -0
  148. package/dist/configure/services/index.d.mts +40 -0
  149. package/dist/configure/services/resolver/index.d.mts +6 -0
  150. package/dist/configure/services/resolver/permission.d.mts +64 -0
  151. package/dist/configure/services/resolver/resolver.d.mts +88 -0
  152. package/dist/configure/services/resolver/types.d.mts +5 -0
  153. package/dist/configure/services/secrets/index.d.mts +37 -0
  154. package/dist/configure/services/secrets/types.d.mts +10 -0
  155. package/dist/configure/services/staticwebsite/index.d.mts +18 -0
  156. package/dist/configure/services/staticwebsite/types.d.mts +10 -0
  157. package/dist/configure/services/tailordb/index.d.mts +4 -0
  158. package/dist/configure/services/tailordb/permission.d.mts +103 -0
  159. package/dist/configure/services/tailordb/schema.d.mts +486 -0
  160. package/dist/configure/services/tailordb/types.d.mts +198 -0
  161. package/dist/configure/services/workflow/execution-policy.d.mts +70 -0
  162. package/dist/configure/services/workflow/execution-policy.types.d.mts +103 -0
  163. package/dist/configure/services/workflow/index.d.mts +9 -0
  164. package/dist/configure/services/workflow/job.d.mts +83 -0
  165. package/dist/configure/services/workflow/types.d.mts +2 -0
  166. package/dist/configure/services/workflow/wait-point.d.mts +72 -0
  167. package/dist/configure/services/workflow/workflow.d.mts +56 -0
  168. package/dist/configure/types/aigateway-name.d.mts +12 -0
  169. package/dist/configure/types/connection-name.d.mts +12 -0
  170. package/dist/configure/types/field.d.mts +8 -0
  171. package/dist/configure/types/field.types.d.mts +70 -0
  172. package/dist/configure/types/idp-name.d.mts +12 -0
  173. package/dist/configure/types/index.d.mts +5 -0
  174. package/dist/configure/types/machine-user.d.mts +2 -0
  175. package/dist/configure/types/permission-operand.types.d.mts +20 -0
  176. package/dist/configure/types/type.d.mts +73 -0
  177. package/dist/{context-Bd266-ru.mjs → context-DYQVYWqZ.mjs} +4 -5
  178. package/dist/context-DYQVYWqZ.mjs.map +1 -0
  179. package/dist/{crashreport-BsjAkFWw.mjs → crashreport-B5LqCTfF.mjs} +10 -11
  180. package/dist/{crashreport-BsjAkFWw.mjs.map → crashreport-B5LqCTfF.mjs.map} +1 -1
  181. package/dist/{crashreport-pr6Rhvza.mjs → crashreport-eI7ty7ok.mjs} +1 -1
  182. package/dist/enum-constants-j9QBF0cB.mjs.map +1 -1
  183. package/dist/{errors-Dtf2WPaW.mjs → errors-D7583Zz7.mjs} +18 -2
  184. package/dist/errors-D7583Zz7.mjs.map +1 -0
  185. package/dist/{file-_oUZo76X.mjs → file-BUcmVIH2.mjs} +12 -22
  186. package/dist/file-BUcmVIH2.mjs.map +1 -0
  187. package/dist/{file-utils-DcyIPFQh.mjs → file-utils-yEiIS4nJ.mjs} +6 -6
  188. package/dist/file-utils-yEiIS4nJ.mjs.map +1 -0
  189. package/dist/{globals-Crz8o65k.mjs → globals-DQotNuwK.mjs} +33 -55
  190. package/dist/globals-DQotNuwK.mjs.map +1 -0
  191. package/dist/iconv-QWaZh0TT.mjs +38 -0
  192. package/dist/iconv-QWaZh0TT.mjs.map +1 -0
  193. package/dist/{idp-BDbK5gjm.mjs → idp-RA_swu-h.mjs} +12 -5
  194. package/dist/idp-RA_swu-h.mjs.map +1 -0
  195. package/dist/{interceptor-D-q1rvRl.mjs → interceptor-e33JtsC-.mjs} +2 -2
  196. package/dist/interceptor-e33JtsC-.mjs.map +1 -0
  197. package/dist/kysely/index.d.mts +5 -7
  198. package/dist/{kysely-type-DR8uzZTA.mjs → kysely-type-DqIRgDYR.mjs} +5 -4
  199. package/dist/kysely-type-DqIRgDYR.mjs.map +1 -0
  200. package/dist/logger-BtX0suGY.mjs +48 -0
  201. package/dist/logger-BtX0suGY.mjs.map +1 -0
  202. package/dist/logger-CXQq9YIp.mjs +317 -0
  203. package/dist/logger-CXQq9YIp.mjs.map +1 -0
  204. package/dist/parser/service/auth/index.d.mts +1 -0
  205. package/dist/parser/service/auth/schema.d.mts +3 -0
  206. package/dist/parser/service/http-adapter/index.d.mts +1 -0
  207. package/dist/parser/service/http-adapter/schema.d.mts +1 -0
  208. package/dist/parser/service/idp/types.d.mts +5 -0
  209. package/dist/parser/service/tailordb/type-source.d.mts +10 -0
  210. package/dist/parser/service/tailordb/types.d.mts +131 -0
  211. package/dist/platform-serialize-RoRtBS0v.mjs +46 -0
  212. package/dist/platform-serialize-RoRtBS0v.mjs.map +1 -0
  213. package/dist/plugin/builtin/enum-constants/index.d.mts +15 -1
  214. package/dist/plugin/builtin/file-utils/index.d.mts +15 -1
  215. package/dist/plugin/builtin/file-utils/index.mjs +1 -1
  216. package/dist/plugin/builtin/kysely-type/index.d.mts +15 -1
  217. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  218. package/dist/plugin/builtin/seed/index.d.mts +46 -2
  219. package/dist/plugin/builtin/seed/index.mjs +1 -1
  220. package/dist/plugin/builtin/seed/seed-type-processor.d.mts +19 -0
  221. package/dist/plugin/builtin/seed/types.d.mts +2 -0
  222. package/dist/plugin/get-generated-type.d.mts +16 -0
  223. package/dist/plugin/index.d.mts +3 -117
  224. package/dist/plugin/index.mjs +1 -1
  225. package/dist/plugin/index.mjs.map +1 -1
  226. package/dist/plugin/manager.d.mts +2 -0
  227. package/dist/plugin/types.d.mts +242 -0
  228. package/dist/plugin/with-context.d.mts +101 -0
  229. package/dist/{runtime-n9NCkjee.mjs → register-ts-hook-BAHMwxfG.mjs} +7812 -4094
  230. package/dist/register-ts-hook-BAHMwxfG.mjs.map +1 -0
  231. package/dist/{registry-DdsYlL_P.mjs → registry-BIGVUrMB.mjs} +12 -9
  232. package/dist/registry-BIGVUrMB.mjs.map +1 -0
  233. package/dist/{repl-editor-DmGr9zMw.mjs → repl-editor-BCozyiNq.mjs} +6 -5
  234. package/dist/{repl-editor-DmGr9zMw.mjs.map → repl-editor-BCozyiNq.mjs.map} +1 -1
  235. package/dist/runtime/aigateway.d.mts +25 -0
  236. package/dist/runtime/aigateway.mjs +3 -0
  237. package/dist/runtime/authconnection.d.mts +21 -2
  238. package/dist/runtime/authconnection.mjs +2 -2
  239. package/dist/runtime/context.d.mts +54 -2
  240. package/dist/runtime/context.mjs +2 -2
  241. package/dist/runtime/field-parse.d.mts +10 -0
  242. package/dist/runtime/file.d.mts +170 -2
  243. package/dist/runtime/file.mjs +2 -2
  244. package/dist/runtime/globals.d.mts +38 -20
  245. package/dist/runtime/iconv.d.mts +73 -2
  246. package/dist/runtime/iconv.mjs +2 -2
  247. package/dist/runtime/idp.d.mts +129 -2
  248. package/dist/runtime/idp.mjs +2 -2
  249. package/dist/runtime/index.d.mts +48 -9
  250. package/dist/runtime/index.mjs +10 -8
  251. package/dist/runtime/logger.d.mts +98 -0
  252. package/dist/runtime/logger.mjs +3 -0
  253. package/dist/runtime/secretmanager.d.mts +41 -2
  254. package/dist/runtime/secretmanager.mjs +2 -2
  255. package/dist/runtime/types.d.mts +25 -0
  256. package/dist/runtime/workflow.d.mts +124 -2
  257. package/dist/runtime/workflow.mjs +2 -2
  258. package/dist/{schema-BhkpP5Hw.mjs → schema--xYWRGfe.mjs} +288 -229
  259. package/dist/schema--xYWRGfe.mjs.map +1 -0
  260. package/dist/{secret-file-DBqZhjFQ.mjs → secret-file-C3J4Gy8r.mjs} +2 -2
  261. package/dist/{secret-file-DBqZhjFQ.mjs.map → secret-file-C3J4Gy8r.mjs.map} +1 -1
  262. package/dist/secretmanager-CYlpffsz.mjs +13 -0
  263. package/dist/secretmanager-CYlpffsz.mjs.map +1 -0
  264. package/dist/secretmanager-IY4UvinW.mjs +131 -0
  265. package/dist/secretmanager-IY4UvinW.mjs.map +1 -0
  266. package/dist/seed/index.d.mts +4 -4
  267. package/dist/seed-LUVr7jHL.mjs +444 -0
  268. package/dist/seed-LUVr7jHL.mjs.map +1 -0
  269. package/dist/{service-DU1mVzri.mjs → service-B5WynBHQ.mjs} +3 -3
  270. package/dist/{service-DU1mVzri.mjs.map → service-B5WynBHQ.mjs.map} +1 -1
  271. package/dist/service-BNtPsK9Q.mjs +837 -0
  272. package/dist/service-BNtPsK9Q.mjs.map +1 -0
  273. package/dist/service-D5jn05ZI.mjs +3 -0
  274. package/dist/service_pb-BwZRiNug.mjs +167 -0
  275. package/dist/service_pb-BwZRiNug.mjs.map +1 -0
  276. package/dist/service_pb-wRkxUta6.mjs +3 -0
  277. package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +203 -0
  278. package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +57 -0
  279. package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +315 -0
  280. package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +160 -0
  281. package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +2069 -0
  282. package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +865 -0
  283. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +111 -0
  284. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +68 -0
  285. package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +438 -0
  286. package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +563 -0
  287. package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +144 -0
  288. package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +450 -0
  289. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +191 -0
  290. package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +49 -0
  291. package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +406 -0
  292. package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +429 -0
  293. package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +72 -0
  294. package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +16 -0
  295. package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +308 -0
  296. package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +590 -0
  297. package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +329 -0
  298. package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +112 -0
  299. package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +345 -0
  300. package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +53 -0
  301. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +3575 -0
  302. package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +186 -0
  303. package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +28 -0
  304. package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +428 -0
  305. package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +89 -0
  306. package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +683 -0
  307. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +796 -0
  308. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +329 -0
  309. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +182 -0
  310. package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +861 -0
  311. package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +309 -0
  312. package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +2014 -0
  313. package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +482 -0
  314. package/dist/{telemetry-CdqJEzkj.mjs → telemetry-BRVdwh14.mjs} +3 -3
  315. package/dist/telemetry-BRVdwh14.mjs.map +1 -0
  316. package/dist/telemetry-CkbkeJxl.mjs +3 -0
  317. package/dist/test-env-key-D7UkZp99.mjs +75 -0
  318. package/dist/test-env-key-D7UkZp99.mjs.map +1 -0
  319. package/dist/types/aigateway.generated.d.mts +12 -0
  320. package/dist/types/app-config.generated.d.mts +4 -0
  321. package/dist/types/auth-connection.generated.d.mts +33 -0
  322. package/dist/types/auth.generated.d.mts +188 -0
  323. package/dist/types/executor.generated.d.mts +209 -0
  324. package/dist/types/helpers.d.mts +40 -0
  325. package/dist/types/http-adapter.generated.d.mts +28 -0
  326. package/dist/types/idp.generated.d.mts +626 -0
  327. package/dist/types/resolver.generated.d.mts +82 -0
  328. package/dist/types/secrets.generated.d.mts +14 -0
  329. package/dist/types/staticwebsite.generated.d.mts +14 -0
  330. package/dist/types/tailordb.generated.d.mts +468 -0
  331. package/dist/types/workflow.generated.d.mts +17 -0
  332. package/dist/user-agent-Bgsszb5I.mjs +28 -0
  333. package/dist/user-agent-Bgsszb5I.mjs.map +1 -0
  334. package/dist/utils/test/index.d.mts +6 -100
  335. package/dist/utils/test/index.mjs +60 -39
  336. package/dist/utils/test/index.mjs.map +1 -1
  337. package/dist/utils/test/mock.d.mts +86 -0
  338. package/dist/vitest/environment.d.mts +1 -2
  339. package/dist/vitest/environment.mjs +2 -2
  340. package/dist/vitest/environment.mjs.map +1 -1
  341. package/dist/vitest/index.d.mts +15 -429
  342. package/dist/vitest/index.mjs +1240 -31
  343. package/dist/vitest/index.mjs.map +1 -1
  344. package/dist/vitest/mock-kysely.d.mts +61 -0
  345. package/dist/vitest/mock.d.mts +10 -0
  346. package/dist/vitest/mocks/aigateway.d.mts +40 -0
  347. package/dist/vitest/mocks/authconnection.d.mts +38 -0
  348. package/dist/vitest/mocks/file.d.mts +58 -0
  349. package/dist/vitest/mocks/iconv.d.mts +51 -0
  350. package/dist/vitest/mocks/idp.d.mts +60 -0
  351. package/dist/vitest/mocks/logger.d.mts +45 -0
  352. package/dist/vitest/mocks/secretmanager.d.mts +44 -0
  353. package/dist/vitest/mocks/tailordb.d.mts +115 -0
  354. package/dist/vitest/mocks/workflow.d.mts +157 -0
  355. package/dist/vitest/setup.d.mts +1 -2
  356. package/dist/vitest/setup.mjs +2 -2
  357. package/dist/vitest/workflow-local.d.mts +41 -0
  358. package/dist/workflow-CsaQ9qK-.mjs +42 -0
  359. package/dist/workflow-CsaQ9qK-.mjs.map +1 -0
  360. package/dist/{client-z_oHGVNy.mjs → workspace_resource_pb-UGK1SSn_.mjs} +55 -619
  361. package/dist/workspace_resource_pb-UGK1SSn_.mjs.map +1 -0
  362. package/docs/cli/application.md +150 -250
  363. package/docs/cli/auth.md +51 -295
  364. package/docs/cli/completion.md +1 -25
  365. package/docs/cli/crashreport.md +3 -61
  366. package/docs/cli/executor.md +72 -183
  367. package/docs/cli/function.md +16 -132
  368. package/docs/cli/organization.md +11 -221
  369. package/docs/cli/plugin.md +29 -0
  370. package/docs/cli/query.md +2 -22
  371. package/docs/cli/secret.md +71 -251
  372. package/docs/cli/setup.md +138 -40
  373. package/docs/cli/skills.md +50 -39
  374. package/docs/cli/staticwebsite.md +32 -180
  375. package/docs/cli/tailordb.md +71 -427
  376. package/docs/cli/upgrade.md +2 -22
  377. package/docs/cli/user.md +78 -247
  378. package/docs/cli/workflow.md +150 -172
  379. package/docs/cli/workspace.md +167 -538
  380. package/docs/cli-reference.md +213 -96
  381. package/docs/configuration.md +40 -6
  382. package/docs/github-actions.md +72 -24
  383. package/docs/migration/v2.md +1316 -0
  384. package/docs/multi-environment.md +29 -7
  385. package/docs/plugin/custom.md +4 -4
  386. package/docs/plugin/index.md +8 -8
  387. package/docs/quickstart.md +8 -7
  388. package/docs/runtime.md +18 -9
  389. package/docs/services/aigateway.md +20 -2
  390. package/docs/services/auth.md +51 -59
  391. package/docs/services/executor.md +8 -3
  392. package/docs/services/http-adapter.md +16 -1
  393. package/docs/services/idp.md +55 -2
  394. package/docs/services/resolver.md +62 -8
  395. package/docs/services/secret.md +11 -11
  396. package/docs/services/staticwebsite.md +8 -2
  397. package/docs/services/tailordb-migration.md +43 -28
  398. package/docs/services/tailordb.md +200 -99
  399. package/docs/services/workflow.md +133 -55
  400. package/docs/testing.md +244 -143
  401. package/package.json +59 -46
  402. package/postinstall.mjs +4 -6
  403. package/dist/application-DB2r36Et.mjs +0 -3
  404. package/dist/application-DqS1yBg3.mjs.map +0 -1
  405. package/dist/authconnection-D2MhtTN5.mjs +0 -15
  406. package/dist/authconnection-D2MhtTN5.mjs.map +0 -1
  407. package/dist/authconnection-DvUQAjQS.d.mts +0 -39
  408. package/dist/cli/erd-viewer-assets/app.js +0 -1181
  409. package/dist/cli/erd-viewer-assets/index.html +0 -73
  410. package/dist/cli/erd-viewer-assets/serve.json +0 -13
  411. package/dist/cli/erd-viewer-assets/styles.css +0 -789
  412. package/dist/cli/index.d.mts +0 -5
  413. package/dist/cli/index.mjs.map +0 -1
  414. package/dist/client-Dbohmtkv.mjs +0 -3
  415. package/dist/client-z_oHGVNy.mjs.map +0 -1
  416. package/dist/context-Bd266-ru.mjs.map +0 -1
  417. package/dist/context-BuuIb8CC.d.mts +0 -68
  418. package/dist/errors-Dtf2WPaW.mjs.map +0 -1
  419. package/dist/field-DOsJCPFa.mjs +0 -22
  420. package/dist/field-DOsJCPFa.mjs.map +0 -1
  421. package/dist/file-BB8Vs9O_.d.mts +0 -250
  422. package/dist/file-_oUZo76X.mjs.map +0 -1
  423. package/dist/file-utils-DcyIPFQh.mjs.map +0 -1
  424. package/dist/globals-Crz8o65k.mjs.map +0 -1
  425. package/dist/http-adapter.generated-WgMnb7Sb.d.mts +0 -580
  426. package/dist/iconv-Co-TOPuH.d.mts +0 -122
  427. package/dist/iconv-D2vi8G36.mjs +0 -63
  428. package/dist/iconv-D2vi8G36.mjs.map +0 -1
  429. package/dist/idp-BDbK5gjm.mjs.map +0 -1
  430. package/dist/idp-DrhVrLmV.d.mts +0 -160
  431. package/dist/index-5vPyRu1y.d.mts +0 -18
  432. package/dist/index-B7AKc18V.d.mts +0 -47
  433. package/dist/index-BlpzXncY.d.mts +0 -1016
  434. package/dist/index-CK7u9isy.d.mts +0 -46
  435. package/dist/index-CNYe5lnW.d.mts +0 -18
  436. package/dist/index-DjUdWlzf.d.mts +0 -18
  437. package/dist/index-ZePLwxw7.d.mts +0 -208
  438. package/dist/interceptor-D-q1rvRl.mjs.map +0 -1
  439. package/dist/job-fuc3j1Ma.mjs +0 -53
  440. package/dist/job-fuc3j1Ma.mjs.map +0 -1
  441. package/dist/kysely-type-DR8uzZTA.mjs.map +0 -1
  442. package/dist/logger-CxF-Ex5d.mjs +0 -220
  443. package/dist/logger-CxF-Ex5d.mjs.map +0 -1
  444. package/dist/mock-BjFj5o1I.mjs +0 -804
  445. package/dist/mock-BjFj5o1I.mjs.map +0 -1
  446. package/dist/registry-DdsYlL_P.mjs.map +0 -1
  447. package/dist/rolldown-runtime-DXywRVcq.mjs +0 -20
  448. package/dist/runtime-n9NCkjee.mjs.map +0 -1
  449. package/dist/schema-BhkpP5Hw.mjs.map +0 -1
  450. package/dist/secretmanager-B3n4KHfm.d.mts +0 -55
  451. package/dist/secretmanager-BVxw3ih_.mjs +0 -24
  452. package/dist/secretmanager-BVxw3ih_.mjs.map +0 -1
  453. package/dist/seed-jf3008-h.mjs +0 -1160
  454. package/dist/seed-jf3008-h.mjs.map +0 -1
  455. package/dist/service-CCL8ruDf.mjs +0 -459
  456. package/dist/service-CCL8ruDf.mjs.map +0 -1
  457. package/dist/service-D6yonf2I.mjs +0 -3
  458. package/dist/telemetry-CdqJEzkj.mjs.map +0 -1
  459. package/dist/telemetry-ClwW5ohF.mjs +0 -3
  460. package/dist/test-env-key-D9kM6ETE.mjs +0 -49
  461. package/dist/test-env-key-D9kM6ETE.mjs.map +0 -1
  462. package/dist/types-B2RpYyA_.mjs +0 -371
  463. package/dist/types-B2RpYyA_.mjs.map +0 -1
  464. package/dist/types-ClhIrW_C.mjs +0 -4
  465. package/dist/types-DCUhgpyI.d.mts +0 -784
  466. package/dist/types-DhO_VEZd.d.mts +0 -574
  467. package/dist/types-DwDgacni.d.mts +0 -338
  468. package/dist/workflow-BbKvGLQg.d.mts +0 -96
  469. package/dist/workflow-DgemCAz3.mjs +0 -38
  470. package/dist/workflow-DgemCAz3.mjs.map +0 -1
  471. package/dist/workflow.generated-DtQwEo-x.d.mts +0 -671
@@ -1,191 +1,236 @@
1
- import { t as mapAllowedValues } from "./field-DOsJCPFa.mjs";
2
1
  import { t as brandValue } from "./brand-Eo4pLXPJ.mjs";
3
2
  import { cloneDeep } from "es-toolkit";
4
3
 
5
- //#region src/configure/services/tailordb/schema.ts
6
- function isRelationSelfConfig(config) {
7
- return config.toward.type === "self";
8
- }
4
+ //#region src/runtime/field-parse.ts
9
5
  const regex = {
10
6
  uuid: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
11
7
  date: /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})$/,
12
- time: /^(?<hour>\d{2}):(?<minute>\d{2})$/,
13
- datetime: /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})T(?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2})(.(?<millisec>\d{3}))?Z$/,
8
+ time: /^(?<hour>[01]\d|2[0-3]):(?<minute>[0-5]\d)$/,
9
+ datetime: /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})[Tt](?<hour>[01]\d|2[0-3]):(?<minute>[0-5]\d):(?<second>[0-5]\d|60)(\.(?<fraction>\d+))?(?<offset>[Zz]|[+-](?:[01]\d|2[0-3]):[0-5]\d)$/,
14
10
  decimal: /^-?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/
15
11
  };
16
- /**
17
- * Creates a new TailorDBField instance.
18
- * @param type - Field type
19
- * @param options - Field options
20
- * @param fields - Nested fields for object-like types
21
- * @param values - Allowed values for enum-like fields
22
- * @returns A new TailorDBField
23
- */
24
- function createTailorDBField(type, options, fields, values) {
25
- const _metadata = { required: true };
26
- let _rawRelation;
27
- if (options) {
28
- if (options.optional === true) _metadata.required = false;
29
- if (options.array === true) _metadata.array = true;
30
- }
31
- if (values) _metadata.allowedValues = mapAllowedValues(values);
32
- /**
33
- * Validate a single value (not an array element)
34
- * Used internally for array element validation
35
- * @param args - Value, context data, and user
36
- * @returns Array of validation issues
37
- */
38
- function validateValue(args) {
39
- const { value, data, user, pathArray } = args;
40
- const issues = [];
41
- switch (type) {
42
- case "string":
43
- if (typeof value !== "string") issues.push({
44
- message: `Expected a string: received ${String(value)}`,
45
- path: pathArray.length > 0 ? pathArray : void 0
46
- });
47
- break;
48
- case "integer":
49
- if (typeof value !== "number" || !Number.isInteger(value)) issues.push({
50
- message: `Expected an integer: received ${String(value)}`,
51
- path: pathArray.length > 0 ? pathArray : void 0
52
- });
53
- break;
54
- case "float":
55
- if (typeof value !== "number" || !Number.isFinite(value)) issues.push({
56
- message: `Expected a number: received ${String(value)}`,
57
- path: pathArray.length > 0 ? pathArray : void 0
58
- });
59
- break;
60
- case "boolean":
61
- if (typeof value !== "boolean") issues.push({
62
- message: `Expected a boolean: received ${String(value)}`,
63
- path: pathArray.length > 0 ? pathArray : void 0
64
- });
65
- break;
66
- case "uuid":
67
- if (typeof value !== "string" || !regex.uuid.test(value)) issues.push({
68
- message: `Expected a valid UUID: received ${String(value)}`,
69
- path: pathArray.length > 0 ? pathArray : void 0
70
- });
71
- break;
72
- case "date":
73
- if (typeof value !== "string" || !regex.date.test(value)) issues.push({
74
- message: `Expected to match "yyyy-MM-dd" format: received ${String(value)}`,
75
- path: pathArray.length > 0 ? pathArray : void 0
76
- });
77
- break;
78
- case "datetime":
79
- if (typeof value !== "string" || !regex.datetime.test(value)) issues.push({
80
- message: `Expected to match ISO format: received ${String(value)}`,
81
- path: pathArray.length > 0 ? pathArray : void 0
82
- });
83
- break;
84
- case "time":
85
- if (typeof value !== "string" || !regex.time.test(value)) issues.push({
86
- message: `Expected to match "HH:mm" format: received ${String(value)}`,
87
- path: pathArray.length > 0 ? pathArray : void 0
88
- });
89
- break;
90
- case "decimal":
91
- if (typeof value !== "string" || !regex.decimal.test(value)) issues.push({
92
- message: `Expected a decimal string: received ${String(value)}`,
93
- path: pathArray.length > 0 ? pathArray : void 0
12
+ function validateBaseValue(args) {
13
+ const { field, value, pathArray, issues } = args;
14
+ const path = pathArray.length > 0 ? pathArray : void 0;
15
+ const initialIssueCount = issues.length;
16
+ switch (field.type) {
17
+ case "string":
18
+ if (typeof value !== "string") issues.push({
19
+ message: `Expected a string: received ${String(value)}`,
20
+ path
21
+ });
22
+ break;
23
+ case "integer":
24
+ if (typeof value !== "number" || !Number.isInteger(value)) issues.push({
25
+ message: `Expected an integer: received ${String(value)}`,
26
+ path
27
+ });
28
+ break;
29
+ case "float":
30
+ if (typeof value !== "number" || !Number.isFinite(value)) issues.push({
31
+ message: `Expected a number: received ${String(value)}`,
32
+ path
33
+ });
34
+ break;
35
+ case "boolean":
36
+ if (typeof value !== "boolean") issues.push({
37
+ message: `Expected a boolean: received ${String(value)}`,
38
+ path
39
+ });
40
+ break;
41
+ case "uuid":
42
+ if (typeof value !== "string" || !regex.uuid.test(value)) issues.push({
43
+ message: `Expected a valid UUID: received ${String(value)}`,
44
+ path
45
+ });
46
+ break;
47
+ case "date":
48
+ if (typeof value !== "string" || !regex.date.test(value)) issues.push({
49
+ message: `Expected to match "yyyy-MM-dd" format: received ${String(value)}`,
50
+ path
51
+ });
52
+ break;
53
+ case "datetime":
54
+ if (typeof value !== "string" || !regex.datetime.test(value)) issues.push({
55
+ message: `Expected to match ISO format: received ${String(value)}`,
56
+ path
57
+ });
58
+ break;
59
+ case "time":
60
+ if (typeof value !== "string" || !regex.time.test(value)) issues.push({
61
+ message: `Expected to match "HH:mm" format: received ${String(value)}`,
62
+ path
63
+ });
64
+ break;
65
+ case "decimal":
66
+ if (typeof value !== "string" || !regex.decimal.test(value)) issues.push({
67
+ message: `Expected a decimal string: received ${String(value)}`,
68
+ path
69
+ });
70
+ break;
71
+ case "enum":
72
+ if (field._metadata.allowedValues) {
73
+ const allowedValues = field._metadata.allowedValues.map((v) => v.value);
74
+ if (typeof value !== "string" || !allowedValues.includes(value)) issues.push({
75
+ message: `Must be one of [${allowedValues.join(", ")}]: received ${String(value)}`,
76
+ path
94
77
  });
95
- break;
96
- case "enum":
97
- if (field._metadata.allowedValues) {
98
- const allowedValues = field._metadata.allowedValues.map((v) => v.value);
99
- if (typeof value !== "string" || !allowedValues.includes(value)) issues.push({
100
- message: `Must be one of [${allowedValues.join(", ")}]: received ${String(value)}`,
101
- path: pathArray.length > 0 ? pathArray : void 0
102
- });
103
- }
104
- break;
105
- case "nested":
106
- if (typeof value !== "object" || value === null || Array.isArray(value) || value instanceof Date) issues.push({
78
+ }
79
+ break;
80
+ case "nested": {
81
+ if (typeof value !== "object" || value === null || Array.isArray(value) || value instanceof Date) {
82
+ issues.push({
107
83
  message: `Expected an object: received ${String(value)}`,
108
- path: pathArray.length > 0 ? pathArray : void 0
84
+ path
109
85
  });
110
- else if (Object.keys(field.fields).length > 0) for (const [fieldName, nestedField] of Object.entries(field.fields)) {
111
- const fieldValue = value[fieldName];
112
- const result = nestedField._parseInternal({
113
- value: fieldValue,
114
- data,
115
- user,
116
- pathArray: pathArray.concat(fieldName)
117
- });
118
- if (result.issues) issues.push(...result.issues);
119
- }
120
- break;
121
- }
122
- const validateFns = field._metadata.validate;
123
- if (validateFns && validateFns.length > 0) for (const validateInput of validateFns) {
124
- const { fn, message } = typeof validateInput === "function" ? {
125
- fn: validateInput,
126
- message: "Validation failed"
127
- } : {
128
- fn: validateInput[0],
129
- message: validateInput[1]
130
- };
131
- if (!fn({
132
- value,
133
- data,
134
- user
135
- })) issues.push({
136
- message,
137
- path: pathArray.length > 0 ? pathArray : void 0
138
- });
86
+ return false;
87
+ }
88
+ let nestedBaseValid = true;
89
+ for (const [fieldName, nestedField] of Object.entries(field.fields)) {
90
+ const fieldValue = value[fieldName];
91
+ if (!validateBaseField({
92
+ ...args,
93
+ field: nestedField,
94
+ value: fieldValue,
95
+ pathArray: pathArray.concat(fieldName)
96
+ })) nestedBaseValid = false;
97
+ }
98
+ return nestedBaseValid;
139
99
  }
140
- return issues;
141
100
  }
142
- /**
143
- * Internal parse method that tracks field path for nested validation
144
- * @param args - Parse arguments
145
- * @returns Parse result with value or issues
146
- */
147
- function parseInternal(args) {
148
- const { value, data, user, pathArray } = args;
149
- const issues = [];
150
- const isNullOrUndefined = value === null || value === void 0;
151
- if (field._metadata.required && isNullOrUndefined) {
101
+ return issues.length === initialIssueCount;
102
+ }
103
+ function validateCustomValue(args, validateFns) {
104
+ const { value, pathArray, issues } = args;
105
+ const path = pathArray.length > 0 ? pathArray : void 0;
106
+ for (const fn of validateFns) {
107
+ const result = fn({ value });
108
+ if (typeof result === "string") issues.push({
109
+ message: result,
110
+ path
111
+ });
112
+ }
113
+ }
114
+ function validateBaseField(args) {
115
+ const { field, value, pathArray, issues } = args;
116
+ const path = pathArray.length > 0 ? pathArray : void 0;
117
+ const isNullOrUndefined = value === null || value === void 0;
118
+ if (field._metadata.required && isNullOrUndefined) {
119
+ issues.push({
120
+ message: "Required field is missing",
121
+ path
122
+ });
123
+ return false;
124
+ }
125
+ if (!field._metadata.required && isNullOrUndefined) return true;
126
+ let baseValid = true;
127
+ if (field._metadata.array) {
128
+ if (!Array.isArray(value)) {
152
129
  issues.push({
153
- message: "Required field is missing",
154
- path: pathArray.length > 0 ? pathArray : void 0
130
+ message: "Expected an array",
131
+ path
155
132
  });
156
- return { issues };
133
+ return false;
157
134
  }
158
- if (!field._metadata.required && isNullOrUndefined) return { value: value ?? null };
159
- if (field._metadata.array) {
160
- if (!Array.isArray(value)) {
161
- issues.push({
162
- message: "Expected an array",
163
- path: pathArray.length > 0 ? pathArray : void 0
164
- });
165
- return { issues };
166
- }
167
- for (let i = 0; i < value.length; i++) {
168
- const elementValue = value[i];
169
- const elementIssues = validateValue({
170
- value: elementValue,
171
- data,
172
- user,
173
- pathArray: pathArray.concat(`[${i}]`)
174
- });
175
- if (elementIssues.length > 0) issues.push(...elementIssues);
176
- }
177
- if (issues.length > 0) return { issues };
178
- return { value };
135
+ for (let i = 0; i < value.length; i++) if (!validateBaseValue({
136
+ ...args,
137
+ value: value[i],
138
+ pathArray: pathArray.concat(`[${i}]`)
139
+ })) baseValid = false;
140
+ } else baseValid = validateBaseValue(args);
141
+ return baseValid;
142
+ }
143
+ function validateCustomField(args) {
144
+ const { field, value, pathArray } = args;
145
+ if (value === null || value === void 0) return;
146
+ if (field.type === "nested") {
147
+ const records = field._metadata.array ? value : [value];
148
+ for (let i = 0; i < records.length; i++) {
149
+ const record = records[i];
150
+ const recordPath = field._metadata.array ? pathArray.concat(`[${i}]`) : pathArray;
151
+ for (const [fieldName, nestedField] of Object.entries(field.fields)) validateCustomField({
152
+ ...args,
153
+ field: nestedField,
154
+ value: record[fieldName],
155
+ pathArray: recordPath.concat(fieldName)
156
+ });
179
157
  }
180
- const valueIssues = validateValue({
158
+ }
159
+ const validateFns = field._metadata.validate;
160
+ if (validateFns?.length) validateCustomValue(args, validateFns);
161
+ }
162
+ function parseInternal(args) {
163
+ const { value } = args;
164
+ const issues = [];
165
+ const validationArgs = {
166
+ ...args,
167
+ issues
168
+ };
169
+ if (validateBaseField(validationArgs)) validateCustomField(validationArgs);
170
+ if (issues.length > 0) return { issues };
171
+ return { value: value ?? null };
172
+ }
173
+ /**
174
+ * Validate a value against a record of input fields, treating the record as a
175
+ * single required object — the same code path deployed functions run via
176
+ * `t.object(fields).parse(...)`, so local validation matches platform behavior.
177
+ * @param args - Input field definitions plus the value, context data, and user
178
+ * @returns Validation result
179
+ */
180
+ function parseInputFields(args) {
181
+ const { fields, ...parseArgs } = args;
182
+ return parseInternal({
183
+ ...parseArgs,
184
+ field: {
185
+ type: "nested",
186
+ fields,
187
+ _metadata: { required: true }
188
+ },
189
+ pathArray: []
190
+ });
191
+ }
192
+
193
+ //#endregion
194
+ //#region src/configure/types/field.ts
195
+ /**
196
+ * Normalize allowed values into EnumValue objects with descriptions.
197
+ * @param values - Allowed values as strings or EnumValue objects
198
+ * @returns Normalized allowed values
199
+ */
200
+ function mapAllowedValues(values) {
201
+ return values.map((value) => {
202
+ if (typeof value === "string") return {
181
203
  value,
182
- data,
183
- user,
184
- pathArray
204
+ description: ""
205
+ };
206
+ return {
207
+ ...value,
208
+ description: value.description ?? ""
209
+ };
210
+ });
211
+ }
212
+
213
+ //#endregion
214
+ //#region src/configure/services/tailordb/schema.ts
215
+ function isRelationSelfConfig(config) {
216
+ return config.toward.type === "self";
217
+ }
218
+ function createTailorDBField(type, options, fields, values) {
219
+ return createTailorDBFieldRuntime(type, options, fields, values);
220
+ }
221
+ function createTailorDBFieldRuntime(type, options, fields, values) {
222
+ const _metadata = { required: true };
223
+ let _rawRelation;
224
+ if (options) {
225
+ if (options.optional === true) _metadata.required = false;
226
+ if (options.array === true) _metadata.array = true;
227
+ }
228
+ if (values) _metadata.allowedValues = mapAllowedValues(values);
229
+ function parseInternal$1(args) {
230
+ return parseInternal({
231
+ ...args,
232
+ field
185
233
  });
186
- issues.push(...valueIssues);
187
- if (issues.length > 0) return { issues };
188
- return { value };
189
234
  }
190
235
  function cloneWith(metadataUpdates) {
191
236
  const cloned = field.clone();
@@ -210,19 +255,20 @@ function createTailorDBField(type, options, fields, values) {
210
255
  description(description) {
211
256
  return cloneWith({ description });
212
257
  },
213
- typeName: ((typeName) => cloneWith({ typeName })),
258
+ typeName(typeName) {
259
+ return cloneWith({ typeName });
260
+ },
214
261
  validate(...validateInputs) {
215
262
  return cloneWith({ validate: validateInputs });
216
263
  },
217
264
  parse(args) {
218
- return parseInternal({
265
+ return parseInternal$1({
219
266
  value: args.value,
220
267
  data: args.data,
221
- user: args.user,
268
+ invoker: args.invoker,
222
269
  pathArray: []
223
270
  });
224
271
  },
225
- _parseInternal: parseInternal,
226
272
  relation(config) {
227
273
  const cloned = field.clone();
228
274
  const targetType = isRelationSelfConfig(config) ? "self" : config.toward.type.name;
@@ -249,6 +295,9 @@ function createTailorDBField(type, options, fields, values) {
249
295
  vector() {
250
296
  return cloneWith({ vector: true });
251
297
  },
298
+ default(value) {
299
+ return cloneWith({ default: value });
300
+ },
252
301
  hooks(hooks) {
253
302
  return cloneWith({ hooks });
254
303
  },
@@ -256,22 +305,20 @@ function createTailorDBField(type, options, fields, values) {
256
305
  return cloneWith({ serial: config });
257
306
  },
258
307
  clone(cloneOptions) {
308
+ if (this._metadata.validate?.length && cloneOptions?.array !== void 0 && cloneOptions.array !== (this._metadata.array === true)) throw new Error("Cannot change the array option on a field with custom validation");
259
309
  let clonedFields = fields;
260
310
  if (fields) {
261
311
  const cloned = {};
262
312
  for (const [key, field] of Object.entries(fields)) cloned[key] = field.clone();
263
313
  clonedFields = cloned;
264
314
  }
265
- const clonedField = createTailorDBField(type, options, clonedFields, values);
315
+ const clonedField = createTailorDBFieldRuntime(type, options, clonedFields, values);
266
316
  Object.assign(clonedField._metadata, cloneDeep(this._metadata));
267
317
  if (cloneOptions) {
268
318
  if (cloneOptions.optional !== void 0) clonedField._metadata.required = !cloneOptions.optional;
269
319
  if (cloneOptions.array !== void 0) clonedField._metadata.array = cloneOptions.array;
270
320
  }
271
- if (_rawRelation) {
272
- const clonedRawRelation = cloneDeep(_rawRelation);
273
- clonedField._setRawRelation(clonedRawRelation);
274
- }
321
+ if (_rawRelation) clonedField._setRawRelation(cloneDeep(_rawRelation));
275
322
  return clonedField;
276
323
  },
277
324
  _setRawRelation(relation) {
@@ -360,7 +407,7 @@ function date(options) {
360
407
  }
361
408
  /**
362
409
  * Create a datetime field (date and time).
363
- * Format: ISO 8601 "yyyy-MM-ddTHH:mm:ssZ"
410
+ * Format: ISO 8601, such as "yyyy-MM-ddTHH:mm:ssZ" or "yyyy-MM-ddTHH:mm:ss+09:00"
364
411
  * @param options - Field configuration options
365
412
  * @returns A datetime field
366
413
  * @example db.datetime()
@@ -416,6 +463,16 @@ function createTailorDBType(name, fields, options) {
416
463
  const _permissions = {};
417
464
  let _files = {};
418
465
  const _plugins = [];
466
+ let _typeHook;
467
+ let _typeValidate;
468
+ const _definedMethods = /* @__PURE__ */ new Set();
469
+ if (options.description !== void 0) _definedMethods.add("description");
470
+ function runMethodOnce(method, action) {
471
+ if (_definedMethods.has(method)) throw new Error(`.${method}() has already been set`);
472
+ const result = action();
473
+ _definedMethods.add(method);
474
+ return result;
475
+ }
419
476
  if (options.pluralForm) {
420
477
  if (name === options.pluralForm) throw new Error(`The name and the plural form must be different. name=${name}`);
421
478
  _settings.pluralForm = options.pluralForm;
@@ -441,61 +498,64 @@ function createTailorDBType(name, fields, options) {
441
498
  settings: _settings,
442
499
  permissions: _permissions,
443
500
  files: _files,
444
- ...Object.keys(indexes).length > 0 && { indexes }
501
+ ...Object.keys(indexes).length > 0 && { indexes },
502
+ ..._typeHook && { typeHook: _typeHook },
503
+ ..._typeValidate && { typeValidate: _typeValidate }
445
504
  };
446
505
  },
447
- hooks(hooks) {
448
- Object.entries(hooks).forEach(([fieldName, fieldHooks]) => {
449
- const field = this.fields[fieldName];
450
- if (field === void 0) throw new Error(`field not found: ${fieldName}`);
451
- this.fields[fieldName] = field.hooks(fieldHooks);
506
+ hooks(hook) {
507
+ return runMethodOnce("hooks", () => {
508
+ _typeHook = hook;
509
+ return this;
452
510
  });
453
- return this;
454
511
  },
455
- validate(validators) {
456
- Object.entries(validators).forEach(([fieldName, fieldValidators]) => {
457
- const field = this.fields[fieldName];
458
- const validators = fieldValidators;
459
- const isValidateConfig = (v) => {
460
- return Array.isArray(v) && v.length === 2 && typeof v[1] === "string";
461
- };
462
- let updatedField;
463
- if (Array.isArray(validators)) if (isValidateConfig(validators)) updatedField = field.validate(validators);
464
- else updatedField = field.validate(...validators);
465
- else updatedField = field.validate(validators);
466
- this.fields[fieldName] = updatedField;
512
+ validate(fn) {
513
+ return runMethodOnce("validate", () => {
514
+ _typeValidate = fn;
515
+ return this;
467
516
  });
468
- return this;
469
517
  },
470
518
  features(features) {
471
- _settings = {
472
- ..._settings,
473
- ...features
474
- };
475
- return this;
519
+ return runMethodOnce("features", () => {
520
+ _settings = {
521
+ ..._settings,
522
+ ...features
523
+ };
524
+ return this;
525
+ });
476
526
  },
477
527
  indexes(...indexes) {
478
- _indexes = indexes;
479
- return this;
528
+ return runMethodOnce("indexes", () => {
529
+ _indexes = indexes;
530
+ return this;
531
+ });
480
532
  },
481
533
  files(files) {
482
- _files = files;
483
- return this;
534
+ return runMethodOnce("files", () => {
535
+ _files = files;
536
+ return this;
537
+ });
484
538
  },
485
539
  permission(permission) {
486
- const ret = this;
487
- _permissions.record = permission;
488
- return ret;
540
+ return runMethodOnce("permission", () => {
541
+ const ret = this;
542
+ _permissions.record = permission;
543
+ return ret;
544
+ });
489
545
  },
490
546
  gqlPermission(permission) {
491
- const ret = this;
492
- _permissions.gql = permission;
493
- return ret;
547
+ return runMethodOnce("gqlPermission", () => {
548
+ const ret = this;
549
+ _permissions.gql = permission;
550
+ return ret;
551
+ });
494
552
  },
495
553
  description(description) {
496
- _description = description;
497
- this._description = description;
498
- return this;
554
+ return runMethodOnce("description", () => {
555
+ _description = description;
556
+ this._description = description;
557
+ return this;
558
+ });
499
559
  },
500
560
  pickFields(keys, options) {
501
561
  const result = {};
@@ -525,7 +585,7 @@ function createTailorDBType(name, fields, options) {
525
585
  }, "tailordb-type");
526
586
  }
527
587
  const idField = uuid();
528
- function dbType(name, fieldsOrDescription, fields) {
588
+ function dbTable(name, fieldsOrDescription, fields) {
529
589
  const typeName = Array.isArray(name) ? name[0] : name;
530
590
  const pluralForm = Array.isArray(name) ? name[1] : void 0;
531
591
  let description;
@@ -542,9 +602,9 @@ function dbType(name, fieldsOrDescription, fields) {
542
602
  description
543
603
  });
544
604
  }
545
- /** TailorDB schema builder utilities for defining types and fields. */
605
+ /** TailorDB schema builder utilities for defining tables and fields. */
546
606
  const db = {
547
- type: dbType,
607
+ table: dbTable,
548
608
  uuid,
549
609
  string,
550
610
  bool,
@@ -558,23 +618,22 @@ const db = {
558
618
  object,
559
619
  fields: {
560
620
  /**
561
- * Creates standard timestamp fields (createdAt, updatedAt) with auto-hooks.
562
- * createdAt is set on create, updatedAt is set on update.
563
- * A user-specified createdAt is respected when provided (e.g. seeding historical
564
- * records); the current time is used only when the value is omitted.
621
+ * Creates standard timestamp fields (createdAt, updatedAt) with automatic defaults.
622
+ * Both fields default to the current time on create. updatedAt is also refreshed on update.
623
+ * User-specified values are respected when provided (e.g. seeding historical records).
565
624
  * @returns An object with createdAt and updatedAt fields
566
625
  * @example
567
- * const model = db.type("Model", {
626
+ * const model = db.table("Model", {
568
627
  * name: db.string(),
569
628
  * ...db.fields.timestamps(),
570
629
  * });
571
630
  */
572
631
  timestamps: () => ({
573
- createdAt: datetime().hooks({ create: ({ value }) => value ?? /* @__PURE__ */ new Date() }).description("Record creation timestamp"),
574
- updatedAt: datetime({ optional: true }).hooks({ update: () => /* @__PURE__ */ new Date() }).description("Record last update timestamp")
632
+ createdAt: datetime().default("now").description("Record creation timestamp"),
633
+ updatedAt: datetime().default("now").hooks({ update: ({ input, now }) => input ?? now }).description("Record update timestamp")
575
634
  }) }
576
635
  };
577
636
 
578
637
  //#endregion
579
- export { db as t };
580
- //# sourceMappingURL=schema-BhkpP5Hw.mjs.map
638
+ export { parseInternal as i, mapAllowedValues as n, parseInputFields as r, db as t };
639
+ //# sourceMappingURL=schema--xYWRGfe.mjs.map