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