@tailor-platform/sdk 2.26.0 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CHANGELOG.md +144 -0
  2. package/agent-skills/tailor/SKILL.md +4 -2
  3. package/dist/application-CgJLyJaF.mjs +200 -0
  4. package/dist/application-CgJLyJaF.mjs.map +1 -0
  5. package/dist/application-CvmKh5WT.mjs +1 -0
  6. package/dist/cli/commands/deploy/deploy.d.mts +2 -0
  7. package/dist/cli/commands/deploy/tailordb/migration-validation.d.mts +2 -1
  8. package/dist/cli/commands/executor/get.d.mts +2 -1
  9. package/dist/cli/commands/executor/jobs.d.mts +2 -1
  10. package/dist/cli/commands/executor/trigger.d.mts +2 -1
  11. package/dist/cli/commands/function/get.d.mts +2 -1
  12. package/dist/cli/commands/function/list.d.mts +2 -1
  13. package/dist/cli/commands/organization/folder/create.d.mts +2 -1
  14. package/dist/cli/commands/organization/folder/delete.d.mts +2 -1
  15. package/dist/cli/commands/organization/folder/get.d.mts +2 -1
  16. package/dist/cli/commands/organization/folder/list.d.mts +2 -1
  17. package/dist/cli/commands/organization/folder/update.d.mts +2 -1
  18. package/dist/cli/commands/organization/get.d.mts +2 -1
  19. package/dist/cli/commands/organization/tree.d.mts +2 -1
  20. package/dist/cli/commands/organization/update.d.mts +2 -1
  21. package/dist/cli/commands/show.d.mts +2 -1
  22. package/dist/cli/commands/tailordb/migrate/bundler.d.mts +4 -6
  23. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +8 -1
  24. package/dist/cli/commands/tailordb/migrate/remote-state.d.mts +1 -0
  25. package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +3 -1
  26. package/dist/cli/commands/workflow/executions.d.mts +2 -1
  27. package/dist/cli/commands/workflow/get.d.mts +2 -1
  28. package/dist/cli/commands/workflow/start.d.mts +2 -1
  29. package/dist/cli/commands/workspace/app/health.d.mts +2 -1
  30. package/dist/cli/commands/workspace/app/list.d.mts +2 -1
  31. package/dist/cli/commands/workspace/create.d.mts +5 -2
  32. package/dist/cli/commands/workspace/delete.d.mts +2 -1
  33. package/dist/cli/commands/workspace/get.d.mts +2 -1
  34. package/dist/cli/commands/workspace/restore.d.mts +2 -1
  35. package/dist/cli/commands/workspace/user/invite.d.mts +2 -1
  36. package/dist/cli/commands/workspace/user/list.d.mts +2 -1
  37. package/dist/cli/commands/workspace/user/remove.d.mts +2 -1
  38. package/dist/cli/commands/workspace/user/update.d.mts +2 -1
  39. package/dist/cli/lib.d.mts +3 -3
  40. package/dist/cli/lib.mjs +1 -1
  41. package/dist/cli/lib.mjs.map +1 -1
  42. package/dist/cli/main.d.mts +2 -0
  43. package/dist/cli/main.mjs +68 -55
  44. package/dist/cli/main.mjs.map +1 -1
  45. package/dist/cli/query/index.d.mts +2 -1
  46. package/dist/cli/shared/args.d.mts +4 -2
  47. package/dist/cli/shared/client.d.mts +6 -1
  48. package/dist/cli/shared/context.d.mts +2 -1
  49. package/dist/cli/shared/logger.d.mts +5 -2
  50. package/dist/cli/shared/readonly-guard.d.mts +2 -1
  51. package/dist/cli/shared/seed-context.d.mts +5 -0
  52. package/dist/cli/shared/type-generator.d.mts +2 -1
  53. package/dist/cli/shared/workspace-name.d.mts +2 -0
  54. package/dist/completion/zsh-worker.zsh +220 -19
  55. package/dist/configure/config/types.d.mts +34 -1
  56. package/dist/configure/index.d.mts +6 -6
  57. package/dist/configure/index.mjs +1 -1
  58. package/dist/configure/index.mjs.map +1 -1
  59. package/dist/configure/services/aigateway/types.d.mts +2 -1
  60. package/dist/configure/services/auth/types.d.mts +8 -2
  61. package/dist/configure/services/executor/executor.d.mts +2 -1
  62. package/dist/configure/services/executor/operation.d.mts +2 -1
  63. package/dist/configure/services/executor/trigger/event.d.mts +3 -2
  64. package/dist/configure/services/executor/trigger/schedule.d.mts +2 -1
  65. package/dist/configure/services/executor/trigger/webhook.d.mts +1 -1
  66. package/dist/configure/services/http-adapter/http-adapter.d.mts +2 -1
  67. package/dist/configure/services/idp/permission.d.mts +4 -3
  68. package/dist/configure/services/idp/types.d.mts +2 -1
  69. package/dist/configure/services/resolver/permission.d.mts +2 -1
  70. package/dist/configure/services/resolver/resolver.d.mts +3 -2
  71. package/dist/configure/services/secrets/types.d.mts +2 -1
  72. package/dist/configure/services/staticwebsite/types.d.mts +2 -1
  73. package/dist/configure/services/tailordb/permission.d.mts +2 -1
  74. package/dist/configure/services/tailordb/schema.d.mts +5 -4
  75. package/dist/configure/services/tailordb/types.d.mts +13 -2
  76. package/dist/configure/services/workflow/execution-policy.types.d.mts +2 -1
  77. package/dist/configure/services/workflow/job.d.mts +3 -2
  78. package/dist/configure/services/workflow/wait-point.d.mts +2 -1
  79. package/dist/configure/types/field.types.d.mts +50 -12
  80. package/dist/configure/types/permission-operand.types.d.mts +2 -1
  81. package/dist/configure/types/type.d.mts +3 -2
  82. package/dist/{crashreport-DFpRn-LS.mjs → crashreport-BAG8c7hB.mjs} +4 -4
  83. package/dist/{crashreport-DFpRn-LS.mjs.map → crashreport-BAG8c7hB.mjs.map} +1 -1
  84. package/dist/crashreport-BcXuocwI.mjs +1 -0
  85. package/dist/date-CgP7gMG_.mjs +2 -0
  86. package/dist/date-CgP7gMG_.mjs.map +1 -0
  87. package/dist/{secretmanager-5olfnI1b.mjs → date-representation-Cr7W7Pn2.mjs} +2 -2
  88. package/dist/date-representation-Cr7W7Pn2.mjs.map +1 -0
  89. package/dist/{errors-CpvSChyL.mjs → errors-D3qpNHR6.mjs} +2 -2
  90. package/dist/{errors-CpvSChyL.mjs.map → errors-D3qpNHR6.mjs.map} +1 -1
  91. package/dist/{field-parse-DhnFs9WG.mjs → field-parse-C41e3UAF.mjs} +2 -2
  92. package/dist/{field-parse-DhnFs9WG.mjs.map → field-parse-C41e3UAF.mjs.map} +1 -1
  93. package/dist/idp-G_ojPBB5.mjs.map +1 -1
  94. package/dist/kysely-type-BWMfV301.mjs +48 -0
  95. package/dist/kysely-type-BWMfV301.mjs.map +1 -0
  96. package/dist/logger-DuaT2zY3.mjs +9 -0
  97. package/dist/logger-DuaT2zY3.mjs.map +1 -0
  98. package/dist/{manager-8-JOvuLl.mjs → manager-Bk-7vkwd.mjs} +2 -2
  99. package/dist/{manager-8-JOvuLl.mjs.map → manager-Bk-7vkwd.mjs.map} +1 -1
  100. package/dist/migration-steps-C6F3zNdQ.mjs +3 -0
  101. package/dist/migration-steps-C6F3zNdQ.mjs.map +1 -0
  102. package/dist/package-json-D1BRkjtr.mjs +1 -0
  103. package/dist/parser/service/tailordb/types.d.mts +3 -1
  104. package/dist/plugin/builtin/enum-constants/index.d.mts +2 -1
  105. package/dist/plugin/builtin/file-utils/index.d.mts +2 -1
  106. package/dist/plugin/builtin/kysely-type/index.d.mts +2 -1
  107. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  108. package/dist/plugin/builtin/seed/index.d.mts +11 -1
  109. package/dist/plugin/builtin/seed/index.mjs +1 -1
  110. package/dist/plugin/index.mjs +1 -1
  111. package/dist/register-ts-hook-yxshv0LV.mjs +1013 -0
  112. package/dist/register-ts-hook-yxshv0LV.mjs.map +1 -0
  113. package/dist/runtime/aigateway.mjs +1 -1
  114. package/dist/runtime/authconnection.mjs +1 -1
  115. package/dist/runtime/context.d.mts +2 -1
  116. package/dist/runtime/context.mjs +1 -1
  117. package/dist/runtime/date.d.mts +2 -1
  118. package/dist/runtime/field-parse.d.mts +2 -1
  119. package/dist/runtime/file.d.mts +2 -1
  120. package/dist/runtime/file.mjs +1 -1
  121. package/dist/runtime/globals.d.mts +2 -1
  122. package/dist/runtime/iconv.mjs +1 -1
  123. package/dist/runtime/idp.d.mts +6 -0
  124. package/dist/runtime/idp.mjs +1 -1
  125. package/dist/runtime/index.mjs +1 -1
  126. package/dist/runtime/logger.mjs +1 -1
  127. package/dist/runtime/secretmanager.mjs +1 -1
  128. package/dist/runtime/types.d.mts +7 -1
  129. package/dist/runtime/workflow.d.mts +2 -1
  130. package/dist/runtime/workflow.mjs +1 -1
  131. package/dist/{schema-CRtAmDcl.mjs → schema-B6hJQWp6.mjs} +2 -2
  132. package/dist/schema-B6hJQWp6.mjs.map +1 -0
  133. package/dist/seed/index.d.mts +19 -4
  134. package/dist/seed/index.mjs +7 -9
  135. package/dist/seed/index.mjs.map +1 -1
  136. package/dist/seed-C3P_T_Eh.mjs.map +1 -1
  137. package/dist/service-CETr0AKY.mjs +7 -0
  138. package/dist/service-CETr0AKY.mjs.map +1 -0
  139. package/dist/service-DREWLYxD.mjs +1 -0
  140. package/dist/{service-DFmt9UJP.mjs → service-b1g22NN9.mjs} +2 -2
  141. package/dist/{service-DFmt9UJP.mjs.map → service-b1g22NN9.mjs.map} +1 -1
  142. package/dist/service_pb-Bbu2QSIr.mjs +2 -0
  143. package/dist/service_pb-Bbu2QSIr.mjs.map +1 -0
  144. package/dist/service_pb-urxAIYHT.mjs +1 -0
  145. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +53 -1
  146. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +33 -0
  147. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +0 -8
  148. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +18 -1
  149. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +4 -0
  150. package/dist/telemetry-DpkFGBmu.mjs +1 -0
  151. package/dist/{telemetry-Bklv9kQY.mjs → telemetry-Xk7J829P.mjs} +2 -2
  152. package/dist/{telemetry-Bklv9kQY.mjs.map → telemetry-Xk7J829P.mjs.map} +1 -1
  153. package/dist/types/field.generated.d.mts +2 -2
  154. package/dist/types/tailordb.generated.d.mts +2 -0
  155. package/dist/utils/test/index.mjs +1 -1
  156. package/dist/vitest/date-representation.d.mts +23 -0
  157. package/dist/vitest/index.d.mts +3 -1
  158. package/dist/vitest/index.mjs +1 -1
  159. package/dist/vitest/index.mjs.map +1 -1
  160. package/dist/vitest/migration-steps.d.mts +45 -0
  161. package/dist/vitest/mock-kysely.d.mts +2 -1
  162. package/dist/vitest/mocks/aigateway.d.mts +2 -1
  163. package/dist/vitest/mocks/authconnection.d.mts +2 -1
  164. package/dist/vitest/mocks/file.d.mts +2 -1
  165. package/dist/vitest/mocks/iconv.d.mts +2 -1
  166. package/dist/vitest/mocks/idp.d.mts +3 -1
  167. package/dist/vitest/mocks/logger.d.mts +2 -1
  168. package/dist/vitest/mocks/secretmanager.d.mts +2 -1
  169. package/dist/vitest/mocks/tailordb-pglite.d.mts +2 -1
  170. package/dist/vitest/mocks/tailordb.d.mts +2 -1
  171. package/dist/vitest/mocks/workflow.d.mts +3 -1
  172. package/dist/vitest/pglite-kysely.d.mts +2 -1
  173. package/dist/vitest/setup.d.mts +3 -1
  174. package/dist/vitest/setup.mjs +1 -1
  175. package/dist/vitest/setup.mjs.map +1 -1
  176. package/dist/vitest/workflow-local.d.mts +2 -1
  177. package/dist/{workspace_resource_pb-CxR_6fyN.mjs → workspace_resource_pb-CaoM2npP.mjs} +2 -2
  178. package/dist/workspace_resource_pb-CaoM2npP.mjs.map +1 -0
  179. package/docs/cli/application.md +37 -16
  180. package/docs/cli/data.md +105 -0
  181. package/docs/cli/function.md +2 -0
  182. package/docs/cli/secret.md +6 -6
  183. package/docs/cli/tailordb.md +18 -16
  184. package/docs/cli/user.md +37 -7
  185. package/docs/cli/workspace.md +10 -2
  186. package/docs/cli-reference.md +25 -3
  187. package/docs/configuration.md +28 -6
  188. package/docs/github-actions.md +212 -63
  189. package/docs/multi-environment.md +24 -0
  190. package/docs/plugin/custom.md +2 -1
  191. package/docs/services/auth.md +20 -0
  192. package/docs/services/executor.md +2 -2
  193. package/docs/services/idp.md +6 -1
  194. package/docs/services/resolver.md +3 -1
  195. package/docs/services/staticwebsite.md +5 -5
  196. package/docs/services/tailordb-migration.md +222 -41
  197. package/docs/services/tailordb.md +17 -4
  198. package/docs/testing.md +4 -0
  199. package/package.json +18 -18
  200. package/dist/application-ChqHuhZW.mjs +0 -1
  201. package/dist/application-DS0XKBtK.mjs +0 -200
  202. package/dist/application-DS0XKBtK.mjs.map +0 -1
  203. package/dist/crashreport-CBaRJl5h.mjs +0 -1
  204. package/dist/date-Dri6Yas-.mjs +0 -2
  205. package/dist/date-Dri6Yas-.mjs.map +0 -1
  206. package/dist/kysely-type-RDX59E1j.mjs +0 -48
  207. package/dist/kysely-type-RDX59E1j.mjs.map +0 -1
  208. package/dist/logger-Db-YRTwK.mjs +0 -9
  209. package/dist/logger-Db-YRTwK.mjs.map +0 -1
  210. package/dist/package-json-CmqhDJ__.mjs +0 -1
  211. package/dist/register-ts-hook-BuwkLuxC.mjs +0 -925
  212. package/dist/register-ts-hook-BuwkLuxC.mjs.map +0 -1
  213. package/dist/schema-CRtAmDcl.mjs.map +0 -1
  214. package/dist/secretmanager-5olfnI1b.mjs.map +0 -1
  215. package/dist/service-Bx-7Lz06.mjs +0 -1
  216. package/dist/service-CL1Bp4It.mjs +0 -7
  217. package/dist/service-CL1Bp4It.mjs.map +0 -1
  218. package/dist/service_pb-ZClWtj1X.mjs +0 -2
  219. package/dist/service_pb-ZClWtj1X.mjs.map +0 -1
  220. package/dist/service_pb-dB3RrGeh.mjs +0 -1
  221. package/dist/telemetry-DXHP3VVi.mjs +0 -1
  222. package/dist/workspace_resource_pb-CxR_6fyN.mjs.map +0 -1
@@ -0,0 +1,45 @@
1
+ //#region src/vitest/migration-steps.d.ts
2
+ /**
3
+ * Run a multi-step migration script's `steps` in tests the way `tailor deploy`
4
+ * does: in dependency order, each step in its own transaction.
5
+ */
6
+ /** A step as declared in a migration script's `steps`. */
7
+ export interface RunnableMigrationStep<Trx, Context> {
8
+ /** Steps that must complete before this one starts. */
9
+ readonly dependsOn?: readonly string[];
10
+ /** The step body; it receives its own transaction. */
11
+ run: (trx: Trx, context: Context) => Promise<unknown>;
12
+ }
13
+ export interface RunMigrationStepsOptions<Trx, Context extends {
14
+ env: unknown;
15
+ }> {
16
+ /**
17
+ * Run one step inside a transaction, e.g.
18
+ * `(run) => db.transaction().execute(run)` for a PGlite-backed Kysely, or
19
+ * `(run) => mock.withTx(run)` for `createKyselyMock`.
20
+ */
21
+ transaction: (run: (trx: Trx) => Promise<unknown>) => Promise<unknown>;
22
+ /** Values passed as `env` to every step; defaults to `{}`. */
23
+ env?: Context["env"];
24
+ }
25
+ /** Thrown by {@link runMigrationSteps} when a step fails. */
26
+ export declare class MigrationStepError extends Error {
27
+ /** The step that failed. */
28
+ readonly step: string;
29
+ /** Steps that committed before the failure, in execution order. */
30
+ readonly completedSteps: string[];
31
+ constructor(step: string, completedSteps: string[], cause: unknown);
32
+ }
33
+ /**
34
+ * Run a migration script's `steps` in the order `tailor deploy` runs them,
35
+ * committing each step separately, so a test can observe what a failure in a
36
+ * later step leaves behind.
37
+ * @param steps - The script's exported `steps`
38
+ * @param options - Transaction runner and env
39
+ * @returns Names of the steps that ran, in execution order
40
+ * @throws {MigrationStepError} When a step fails; earlier steps stay committed
41
+ */
42
+ export declare function runMigrationSteps<Trx, Context extends {
43
+ env: unknown;
44
+ }>(steps: Readonly<Record<string, RunnableMigrationStep<Trx, Context>>>, options: RunMigrationStepsOptions<Trx, Context>): Promise<string[]>;
45
+ //#endregion
@@ -57,4 +57,5 @@ export interface KyselyMock<DB> {
57
57
  * @returns A {@link KyselyMock} with the mock `db`, recorded queries, and result staging.
58
58
  */
59
59
  export declare function createKyselyMock<DB = Record<string, never>>(): KyselyMock<DB>;
60
- //#endregion
60
+ //#endregion
61
+ export {};
@@ -36,4 +36,5 @@ export declare function mockAigateway(options?: MockAigatewayOptions): {
36
36
  clear(): void;
37
37
  reset(): void;
38
38
  } & Disposable;
39
- //#endregion
39
+ //#endregion
40
+ export {};
@@ -34,4 +34,5 @@ export declare function mockAuthconnection(options?: MockAuthconnectionOptions):
34
34
  clear(): void;
35
35
  reset(): void;
36
36
  } & Disposable;
37
- //#endregion
37
+ //#endregion
38
+ export {};
@@ -54,4 +54,5 @@ export declare function mockFile(options?: MockFileOptions): {
54
54
  uploadStream: Mock<(namespace: string, tableName: string, fieldName: string, recordId: string, readableStream: ReadableStream<Uint8Array | ArrayBuffer>, options?: FileUploadStreamOptions) => Promise<FileUploadResponse>>;
55
55
  upload: Mock<(namespace: string, tableName: string, fieldName: string, recordId: string, data: string | FileUploadBytes, options?: Omit<FileUploadOptions, "encoding">) => Promise<FileUploadResponse>>;
56
56
  } & Disposable;
57
- //#endregion
57
+ //#endregion
58
+ export {};
@@ -47,4 +47,5 @@ export declare function mockIconv(options?: MockIconvOptions): {
47
47
  clear: () => void;
48
48
  reset(): void;
49
49
  } & Disposable;
50
- //#endregion
50
+ //#endregion
51
+ export {};
@@ -30,6 +30,7 @@ type IdpNamespaceMocks = { [Method in IdpMethod]: Mock<IdpClientInstance[Method]
30
30
  * disabled: false,
31
31
  * mfaEnrolled: false,
32
32
  * mfaFactorIds: [],
33
+ * passwordUpdatedAt: null,
33
34
  * });
34
35
  * // …
35
36
  * });
@@ -56,4 +57,5 @@ export declare function mockIdp(options?: MockIdpOptions): {
56
57
  clear(): void;
57
58
  reset(): void;
58
59
  } & Disposable;
59
- //#endregion
60
+ //#endregion
61
+ export {};
@@ -41,4 +41,5 @@ export declare function mockLogger(_options?: MockLoggerOptions): {
41
41
  clear(): void;
42
42
  reset(): void;
43
43
  } & Disposable;
44
- //#endregion
44
+ //#endregion
45
+ export {};
@@ -40,4 +40,5 @@ export declare function mockSecretmanager(options?: MockSecretmanagerOptions): {
40
40
  clear(): void;
41
41
  reset(): void;
42
42
  } & Disposable;
43
- //#endregion
43
+ //#endregion
44
+ export {};
@@ -86,4 +86,5 @@ export declare function mockTailordbWithPGlite(options: MockTailordbPGliteOption
86
86
  */
87
87
  reset(): void;
88
88
  } & Disposable;
89
- //#endregion
89
+ //#endregion
90
+ export {};
@@ -111,4 +111,5 @@ export declare function mockTailordb(options?: MockTailordbOptions): {
111
111
  /** Reset query responses and recorded calls (keeps the mock installed). */
112
112
  reset(): void;
113
113
  } & Disposable;
114
- //#endregion
114
+ //#endregion
115
+ export {};
@@ -23,6 +23,7 @@ type WaitPayload<Payload> = [Payload] extends [undefined] ? undefined : Payload;
23
23
  /**
24
24
  * Acquire a disposable mock for workflow operations (`tailor.workflow`).
25
25
  * Restored on dispose.
26
+
26
27
  * @returns Disposable workflow mock control object
27
28
  * @example
28
29
  * ```typescript
@@ -156,4 +157,5 @@ export declare function mockWorkflow(): {
156
157
  /** Reset all workflow responses and recorded calls (keeps the mock installed). */
157
158
  reset(): void;
158
159
  } & Disposable;
159
- //#endregion
160
+ //#endregion
161
+ export {};
@@ -82,4 +82,5 @@ export interface CreateKyselyPGliteOptions {
82
82
  * ```
83
83
  */
84
84
  export declare function createKyselyPGlite<DB = Record<string, never>>(client: PGliteClient, options?: CreateKyselyPGliteOptions): Kysely<DB>;
85
- //#endregion
85
+ //#endregion
86
+ export {};
@@ -1,3 +1,4 @@
1
+ import { applyDateDefault } from "./date-representation.mjs";
1
2
  //#region src/vitest/setup.d.ts
2
3
  /**
3
4
  * Extract a vault store from a secrets-shaped value.
@@ -21,4 +22,5 @@ export declare function extractVaultStore(secrets: unknown): Record<string, Reco
21
22
  * @returns Vault store keyed by vault name, or null if unavailable
22
23
  */
23
24
  export declare function loadSecretsFromConfig(configPath: string): Promise<Record<string, Record<string, string>> | null>;
24
- //#endregion
25
+ //#endregion
26
+ export { applyDateDefault };
@@ -1,2 +1,2 @@
1
- import{t as e}from"../globals-BCmGX05J.mjs";import{t}from"../secretmanager-5olfnI1b.mjs";import{pathToFileURL as n}from"node:url";import{beforeAll as r}from"vitest";function isTailorRuntime(){return e in globalThis}function extractVaultStore(e){if(!e||typeof e!=`object`)return null;let t=`vaults`in e&&typeof e.vaults==`object`&&e.vaults!==null?e.vaults:e,n={};for(let[e,r]of Object.entries(t))typeof r==`object`&&r&&(n[e]={...r});return Object.keys(n).length>0?n:null}async function loadSecretsFromConfig(e){try{let t=await import(n(e).href);return extractVaultStore(t.default?.secrets??t.secrets)}catch{return null}}r(async()=>{if(!isTailorRuntime())return;let e=process.env.__TAILOR_RUNTIME_CONFIG;if(!e)return;let n=await loadSecretsFromConfig(e);n&&t().setSecrets(n)});export{extractVaultStore,loadSecretsFromConfig};
1
+ import{t as e}from"../globals-BCmGX05J.mjs";import{r as t,t as n}from"../date-representation-Cr7W7Pn2.mjs";import{pathToFileURL as r}from"node:url";import{afterAll as i,beforeAll as a}from"vitest";function isTailorRuntime(){return e in globalThis}function extractVaultStore(e){if(!e||typeof e!=`object`)return null;let t=`vaults`in e&&typeof e.vaults==`object`&&e.vaults!==null?e.vaults:e,n={};for(let[e,r]of Object.entries(t))typeof r==`object`&&r&&(n[e]={...r});return Object.keys(n).length>0?n:null}async function loadSecretsFromConfig(e){try{let t=await import(r(e).href);return extractVaultStore(t.default?.secrets??t.secrets)}catch{return null}}const o=isTailorRuntime()?process.env.__TAILOR_RUNTIME_DATE_DEFAULT:void 0,s=o===`temporal`||o===`date`||o===`legacy`?n(o):void 0;i(()=>s?.()),a(async()=>{if(!isTailorRuntime())return;let e=process.env.__TAILOR_RUNTIME_CONFIG;if(!e)return;let n=await loadSecretsFromConfig(e);n&&t().setSecrets(n)});export{n as applyDateDefault,extractVaultStore,loadSecretsFromConfig};
2
2
  //# sourceMappingURL=setup.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.mjs","names":["RUNTIME_FLAG_KEY","secrets","source","store","vaultName","vaultData","config","pathToFileURL","configPath","beforeAll","mockSecretmanager"],"sources":["../../src/vitest/setup.ts"],"sourcesContent":["/**\n * Vitest setup file that seeds the SecretManager mock from `tailor.config.ts`.\n *\n * This file is auto-injected by tailorRuntime() but only activates when\n * the tailor-runtime environment is active (detected via __tailorRuntimeActive,\n * a flag set by injectMocks() during environment setup).\n */\nimport { pathToFileURL } from \"node:url\";\nimport { beforeAll } from \"vitest\";\nimport { RUNTIME_FLAG_KEY, mockSecretmanager } from \"./mock\";\n\nfunction isTailorRuntime(): boolean {\n return RUNTIME_FLAG_KEY in globalThis;\n}\n\n/**\n * Extract a vault store from a secrets-shaped value.\n *\n * `defineSecretManager()` returns `{ vaults, options, get, getAll }` (get/getAll\n * are non-enumerable). When that shape is present, the actual vaults live\n * under `.vaults`. Otherwise fall back to treating the object itself as the\n * vault map (for plain object configs).\n * @param secrets - Value from `appConfig.secrets` or `config.secrets`\n * @returns Vault store, or null if the value is unusable\n */\nexport function extractVaultStore(secrets: unknown): Record<string, Record<string, string>> | null {\n if (!secrets || typeof secrets !== \"object\") return null;\n\n const source =\n \"vaults\" in secrets &&\n typeof (secrets as { vaults?: unknown }).vaults === \"object\" &&\n (secrets as { vaults?: unknown }).vaults !== null\n ? (secrets as { vaults: Record<string, unknown> }).vaults\n : (secrets as Record<string, unknown>);\n\n const store: Record<string, Record<string, string>> = {};\n for (const [vaultName, vaultData] of Object.entries(source)) {\n if (typeof vaultData === \"object\" && vaultData !== null) {\n store[vaultName] = { ...(vaultData as Record<string, string>) };\n }\n }\n return Object.keys(store).length > 0 ? store : null;\n}\n\n/**\n * Load and parse secrets from a tailor.config.ts file.\n *\n * Returns a vault store on success, or `null` on any failure (missing config,\n * import failure, missing/invalid secrets shape). Errors are swallowed so a\n * misconfigured project still boots — the user can set secrets manually via\n * `mockSecretmanager().setSecrets()`.\n * @param configPath - Absolute path to tailor.config.ts\n * @returns Vault store keyed by vault name, or null if unavailable\n */\nexport async function loadSecretsFromConfig(\n configPath: string,\n): Promise<Record<string, Record<string, string>> | null> {\n try {\n // Convert to file URL so absolute Windows paths (e.g. \"C:\\...\") parse as\n // valid ESM specifiers.\n const config = await import(pathToFileURL(configPath).href);\n const appConfig = config.default;\n const secrets = appConfig?.secrets ?? config.secrets;\n return extractVaultStore(secrets);\n } catch {\n return null;\n }\n}\n\n// Load secrets from tailor.config.ts if config path is provided via env var\nbeforeAll(async () => {\n if (!isTailorRuntime()) return;\n const configPath = process.env.__TAILOR_RUNTIME_CONFIG;\n if (!configPath) return;\n\n const store = await loadSecretsFromConfig(configPath);\n if (store) {\n // Acquire without `using`: this is a one-time global seed that must persist\n // across tests, so we deliberately do not dispose (which would reset it).\n mockSecretmanager().setSecrets(store);\n }\n});\n"],"mappings":"qKAWA,SAAS,iBAA2B,CAClC,OAAOA,KAAoB,UAC7B,CAYA,SAAgB,kBAAkB,EAAiE,CACjG,GAAI,CAACC,GAAW,OAAOA,GAAY,SAAU,OAAO,KAEpD,IAAMC,EACJ,WAAYD,GACZ,OAAQA,EAAiC,QAAW,UACnDA,EAAiC,SAAW,KACxCA,EAAgD,OAChDA,EAEDE,EAAgD,CAAC,EACvD,IAAK,GAAM,CAACC,EAAWC,KAAc,OAAO,QAAQH,CAAM,EACpD,OAAOG,GAAc,UAAYA,IACnC,EAAMD,GAAa,CAAE,GAAIC,CAAqC,GAGlE,OAAO,OAAO,KAAKF,CAAK,CAAC,CAAC,OAAS,EAAIA,EAAQ,IACjD,CAYA,eAAsB,sBACpB,EACwD,CACxD,GAAI,CAGF,IAAMG,EAAS,MAAM,OAAOC,EAAcC,CAAU,CAAC,CAAC,MAGtD,OAAO,kBAFWF,EAAO,SACE,SAAWA,EAAO,OACb,CAClC,MAAQ,CACN,OAAO,IACT,CACF,CAGAG,EAAU,SAAY,CACpB,GAAI,CAAC,gBAAgB,EAAG,OACxB,IAAMD,EAAa,QAAQ,IAAI,wBAC/B,GAAI,CAACA,EAAY,OAEjB,IAAML,EAAQ,MAAM,sBAAsBK,CAAU,EAChDL,GAGFO,EAAkB,CAAC,CAAC,WAAWP,CAAK,CAExC,CAAC"}
1
+ {"version":3,"file":"setup.mjs","names":["RUNTIME_FLAG_KEY","mockSecretmanager","applyDateDefault","secrets","source","store","vaultName","vaultData","config","pathToFileURL","configPath","configuredDateDefault","restoreDateDefault","afterAll","beforeAll"],"sources":["../../src/vitest/setup.ts"],"sourcesContent":["/**\n * Vitest setup file that seeds the SecretManager mock from `tailor.config.ts`\n * and applies the date default the plugin read from it.\n *\n * This file is auto-injected by tailorRuntime() but only activates when\n * the tailor-runtime environment is active (detected via __tailorRuntimeActive,\n * a flag set by injectMocks() during environment setup).\n */\nimport { pathToFileURL } from \"node:url\";\nimport { afterAll, beforeAll } from \"vitest\";\nimport { applyDateDefault } from \"./date-representation\";\nimport { RUNTIME_FLAG_KEY, mockSecretmanager } from \"./mock\";\n\nexport { applyDateDefault };\n\nfunction isTailorRuntime(): boolean {\n return RUNTIME_FLAG_KEY in globalThis;\n}\n\n/**\n * Extract a vault store from a secrets-shaped value.\n *\n * `defineSecretManager()` returns `{ vaults, options, get, getAll }` (get/getAll\n * are non-enumerable). When that shape is present, the actual vaults live\n * under `.vaults`. Otherwise fall back to treating the object itself as the\n * vault map (for plain object configs).\n * @param secrets - Value from `appConfig.secrets` or `config.secrets`\n * @returns Vault store, or null if the value is unusable\n */\nexport function extractVaultStore(secrets: unknown): Record<string, Record<string, string>> | null {\n if (!secrets || typeof secrets !== \"object\") return null;\n\n const source =\n \"vaults\" in secrets &&\n typeof (secrets as { vaults?: unknown }).vaults === \"object\" &&\n (secrets as { vaults?: unknown }).vaults !== null\n ? (secrets as { vaults: Record<string, unknown> }).vaults\n : (secrets as Record<string, unknown>);\n\n const store: Record<string, Record<string, string>> = {};\n for (const [vaultName, vaultData] of Object.entries(source)) {\n if (typeof vaultData === \"object\" && vaultData !== null) {\n store[vaultName] = { ...(vaultData as Record<string, string>) };\n }\n }\n return Object.keys(store).length > 0 ? store : null;\n}\n\n/**\n * Load and parse secrets from a tailor.config.ts file.\n *\n * Returns a vault store on success, or `null` on any failure (missing config,\n * import failure, missing/invalid secrets shape). Errors are swallowed so a\n * misconfigured project still boots — the user can set secrets manually via\n * `mockSecretmanager().setSecrets()`.\n * @param configPath - Absolute path to tailor.config.ts\n * @returns Vault store keyed by vault name, or null if unavailable\n */\nexport async function loadSecretsFromConfig(\n configPath: string,\n): Promise<Record<string, Record<string, string>> | null> {\n try {\n // Convert to file URL so absolute Windows paths (e.g. \"C:\\...\") parse as\n // valid ESM specifiers.\n const config = await import(pathToFileURL(configPath).href);\n const appConfig = config.default;\n const secrets = appConfig?.secrets ?? config.secrets;\n return extractVaultStore(secrets);\n } catch {\n return null;\n }\n}\n\n// The plugin reads the config in the Vitest host and passes the result here.\n// Applied at the top level, before the test file and its imports evaluate, so a\n// field parsed at import time already follows the configured default.\nconst configuredDateDefault = isTailorRuntime()\n ? process.env.__TAILOR_RUNTIME_DATE_DEFAULT\n : undefined;\nconst restoreDateDefault =\n configuredDateDefault === \"temporal\" ||\n configuredDateDefault === \"date\" ||\n configuredDateDefault === \"legacy\"\n ? applyDateDefault(configuredDateDefault)\n : undefined;\nafterAll(() => restoreDateDefault?.());\n\n// Load secrets from tailor.config.ts if config path is provided via env var\nbeforeAll(async () => {\n if (!isTailorRuntime()) return;\n const configPath = process.env.__TAILOR_RUNTIME_CONFIG;\n if (!configPath) return;\n\n const store = await loadSecretsFromConfig(configPath);\n if (store) {\n // Acquire without `using`: this is a one-time global seed that must persist\n // across tests, so we deliberately do not dispose (which would reset it).\n mockSecretmanager().setSecrets(store);\n }\n});\n"],"mappings":"qMAeA,SAAS,iBAA2B,CAClC,OAAOA,KAAoB,UAC7B,CAYA,SAAgB,kBAAkB,EAAiE,CACjG,GAAI,CAACG,GAAW,OAAOA,GAAY,SAAU,OAAO,KAEpD,IAAMC,EACJ,WAAYD,GACZ,OAAQA,EAAiC,QAAW,UACnDA,EAAiC,SAAW,KACxCA,EAAgD,OAChDA,EAEDE,EAAgD,CAAC,EACvD,IAAK,GAAM,CAACC,EAAWC,KAAc,OAAO,QAAQH,CAAM,EACpD,OAAOG,GAAc,UAAYA,IACnC,EAAMD,GAAa,CAAE,GAAIC,CAAqC,GAGlE,OAAO,OAAO,KAAKF,CAAK,CAAC,CAAC,OAAS,EAAIA,EAAQ,IACjD,CAYA,eAAsB,sBACpB,EACwD,CACxD,GAAI,CAGF,IAAMG,EAAS,MAAM,OAAOC,EAAcC,CAAU,CAAC,CAAC,MAGtD,OAAO,kBAFWF,EAAO,SACE,SAAWA,EAAO,OACb,CAClC,MAAQ,CACN,OAAO,IACT,CACF,CAKA,MAAMG,EAAwB,gBAAgB,EAC1C,QAAQ,IAAI,8BACZ,IAAA,GACEC,EACJD,IAA0B,YAC1BA,IAA0B,QAC1BA,IAA0B,SACtBT,EAAiBS,CAAqB,EACtC,IAAA,GACNE,MAAeD,IAAqB,CAAC,EAGrCE,EAAU,SAAY,CACpB,GAAI,CAAC,gBAAgB,EAAG,OACxB,IAAMJ,EAAa,QAAQ,IAAI,wBAC/B,GAAI,CAACA,EAAY,OAEjB,IAAML,EAAQ,MAAM,sBAAsBK,CAAU,EAChDL,GAGFJ,EAAkB,CAAC,CAAC,WAAWI,CAAK,CAExC,CAAC"}
@@ -37,4 +37,5 @@ export declare function runWorkflowLocally<W extends Workflow<WorkflowJob<string
37
37
  * @returns The main job output
38
38
  */
39
39
  export declare function runWorkflowLocally<W extends AnyWorkflow>(workflow: W, args: WorkflowInput<W>, options?: RunWorkflowLocallyOptions): Promise<WorkflowOutput<W>>;
40
- //#endregion
40
+ //#endregion
41
+ export {};