@superblocksteam/shared 0.9617.8 → 0.9618.1

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 (178) hide show
  1. package/dist/database-lifecycle/appDatabaseImport.d.ts +42 -7
  2. package/dist/database-lifecycle/appDatabaseImport.d.ts.map +1 -1
  3. package/dist/database-lifecycle/appDatabaseImport.js +66 -5
  4. package/dist/database-lifecycle/appDatabaseImport.js.map +1 -1
  5. package/dist/database-lifecycle/appDatabaseImport.test.js +79 -0
  6. package/dist/database-lifecycle/appDatabaseImport.test.js.map +1 -1
  7. package/dist/database-lifecycle/appDatabaseStatus.d.ts +18 -0
  8. package/dist/database-lifecycle/appDatabaseStatus.d.ts.map +1 -1
  9. package/dist/database-lifecycle/appDatabaseStatus.js +21 -0
  10. package/dist/database-lifecycle/appDatabaseStatus.js.map +1 -1
  11. package/dist/database-lifecycle/appDatabaseStatus.test.js +11 -0
  12. package/dist/database-lifecycle/appDatabaseStatus.test.js.map +1 -1
  13. package/dist/database-lifecycle/dataImport.d.ts +45 -2
  14. package/dist/database-lifecycle/dataImport.d.ts.map +1 -1
  15. package/dist/database-lifecycle/dataImport.js +209 -3
  16. package/dist/database-lifecycle/dataImport.js.map +1 -1
  17. package/dist/database-lifecycle/dataImport.test.js +60 -0
  18. package/dist/database-lifecycle/dataImport.test.js.map +1 -1
  19. package/dist/database-lifecycle/importCompatibility.d.ts +40 -0
  20. package/dist/database-lifecycle/importCompatibility.d.ts.map +1 -0
  21. package/dist/database-lifecycle/importCompatibility.js +121 -0
  22. package/dist/database-lifecycle/importCompatibility.js.map +1 -0
  23. package/dist/database-lifecycle/importCompatibility.test.d.ts +2 -0
  24. package/dist/database-lifecycle/importCompatibility.test.d.ts.map +1 -0
  25. package/dist/database-lifecycle/importCompatibility.test.js +114 -0
  26. package/dist/database-lifecycle/importCompatibility.test.js.map +1 -0
  27. package/dist/database-lifecycle/index.d.ts +29 -5
  28. package/dist/database-lifecycle/index.d.ts.map +1 -1
  29. package/dist/database-lifecycle/index.js +18 -5
  30. package/dist/database-lifecycle/index.js.map +1 -1
  31. package/dist/database-lifecycle/index.test.js +4 -1
  32. package/dist/database-lifecycle/index.test.js.map +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/types/audit/ocsf.d.ts +2 -1
  38. package/dist/types/audit/ocsf.d.ts.map +1 -1
  39. package/dist/types/audit/ocsf.js +8 -0
  40. package/dist/types/audit/ocsf.js.map +1 -1
  41. package/dist/types/codeSecurity/index.d.ts +2 -1
  42. package/dist/types/codeSecurity/index.d.ts.map +1 -1
  43. package/dist/types/codeSecurity/index.js +43 -5
  44. package/dist/types/codeSecurity/index.js.map +1 -1
  45. package/dist/types/codeSecurity/index.test.js +37 -3
  46. package/dist/types/codeSecurity/index.test.js.map +1 -1
  47. package/dist/types/datasource/auth.d.ts +1 -0
  48. package/dist/types/datasource/auth.d.ts.map +1 -1
  49. package/dist/types/datasource/auth.js +8 -2
  50. package/dist/types/datasource/auth.js.map +1 -1
  51. package/dist/types/datasource/auth.test.js +19 -1
  52. package/dist/types/datasource/auth.test.js.map +1 -1
  53. package/dist/types/integration/index.d.ts +16 -1
  54. package/dist/types/integration/index.d.ts.map +1 -1
  55. package/dist/types/integration/index.js +8 -1
  56. package/dist/types/integration/index.js.map +1 -1
  57. package/dist/types/policyGate/index.d.ts +1 -0
  58. package/dist/types/policyGate/index.d.ts.map +1 -1
  59. package/dist/types/policyGate/index.js +3 -1
  60. package/dist/types/policyGate/index.js.map +1 -1
  61. package/dist/types/publishPipeline/index.d.ts +2 -0
  62. package/dist/types/publishPipeline/index.d.ts.map +1 -1
  63. package/dist/types/publishPipeline/index.js.map +1 -1
  64. package/dist/types/publishPipeline/plan.d.ts +1 -1
  65. package/dist/types/publishPipeline/plan.d.ts.map +1 -1
  66. package/dist/types/publishPipeline/plan.js.map +1 -1
  67. package/dist/types/rbac/index.d.ts +0 -5
  68. package/dist/types/rbac/index.d.ts.map +1 -1
  69. package/dist/types/rbac/index.js.map +1 -1
  70. package/dist/types/response/index.d.ts +0 -1
  71. package/dist/types/response/index.d.ts.map +1 -1
  72. package/dist/types/response/index.js +0 -1
  73. package/dist/types/response/index.js.map +1 -1
  74. package/dist-esm/database-lifecycle/appDatabaseImport.d.ts +42 -7
  75. package/dist-esm/database-lifecycle/appDatabaseImport.d.ts.map +1 -1
  76. package/dist-esm/database-lifecycle/appDatabaseImport.js +65 -5
  77. package/dist-esm/database-lifecycle/appDatabaseImport.js.map +1 -1
  78. package/dist-esm/database-lifecycle/appDatabaseImport.test.js +79 -0
  79. package/dist-esm/database-lifecycle/appDatabaseImport.test.js.map +1 -1
  80. package/dist-esm/database-lifecycle/appDatabaseStatus.d.ts +18 -0
  81. package/dist-esm/database-lifecycle/appDatabaseStatus.d.ts.map +1 -1
  82. package/dist-esm/database-lifecycle/appDatabaseStatus.js +18 -0
  83. package/dist-esm/database-lifecycle/appDatabaseStatus.js.map +1 -1
  84. package/dist-esm/database-lifecycle/appDatabaseStatus.test.js +12 -1
  85. package/dist-esm/database-lifecycle/appDatabaseStatus.test.js.map +1 -1
  86. package/dist-esm/database-lifecycle/dataImport.d.ts +45 -2
  87. package/dist-esm/database-lifecycle/dataImport.d.ts.map +1 -1
  88. package/dist-esm/database-lifecycle/dataImport.js +205 -3
  89. package/dist-esm/database-lifecycle/dataImport.js.map +1 -1
  90. package/dist-esm/database-lifecycle/dataImport.test.js +61 -1
  91. package/dist-esm/database-lifecycle/dataImport.test.js.map +1 -1
  92. package/dist-esm/database-lifecycle/importCompatibility.d.ts +40 -0
  93. package/dist-esm/database-lifecycle/importCompatibility.d.ts.map +1 -0
  94. package/dist-esm/database-lifecycle/importCompatibility.js +117 -0
  95. package/dist-esm/database-lifecycle/importCompatibility.js.map +1 -0
  96. package/dist-esm/database-lifecycle/importCompatibility.test.d.ts +2 -0
  97. package/dist-esm/database-lifecycle/importCompatibility.test.d.ts.map +1 -0
  98. package/dist-esm/database-lifecycle/importCompatibility.test.js +112 -0
  99. package/dist-esm/database-lifecycle/importCompatibility.test.js.map +1 -0
  100. package/dist-esm/database-lifecycle/index.d.ts +29 -5
  101. package/dist-esm/database-lifecycle/index.d.ts.map +1 -1
  102. package/dist-esm/database-lifecycle/index.js +13 -5
  103. package/dist-esm/database-lifecycle/index.js.map +1 -1
  104. package/dist-esm/database-lifecycle/index.test.js +4 -1
  105. package/dist-esm/database-lifecycle/index.test.js.map +1 -1
  106. package/dist-esm/index.d.ts +1 -0
  107. package/dist-esm/index.d.ts.map +1 -1
  108. package/dist-esm/index.js +1 -0
  109. package/dist-esm/index.js.map +1 -1
  110. package/dist-esm/types/audit/ocsf.d.ts +2 -1
  111. package/dist-esm/types/audit/ocsf.d.ts.map +1 -1
  112. package/dist-esm/types/audit/ocsf.js +8 -0
  113. package/dist-esm/types/audit/ocsf.js.map +1 -1
  114. package/dist-esm/types/codeSecurity/index.d.ts +2 -1
  115. package/dist-esm/types/codeSecurity/index.d.ts.map +1 -1
  116. package/dist-esm/types/codeSecurity/index.js +43 -5
  117. package/dist-esm/types/codeSecurity/index.js.map +1 -1
  118. package/dist-esm/types/codeSecurity/index.test.js +37 -3
  119. package/dist-esm/types/codeSecurity/index.test.js.map +1 -1
  120. package/dist-esm/types/datasource/auth.d.ts +1 -0
  121. package/dist-esm/types/datasource/auth.d.ts.map +1 -1
  122. package/dist-esm/types/datasource/auth.js +7 -1
  123. package/dist-esm/types/datasource/auth.js.map +1 -1
  124. package/dist-esm/types/datasource/auth.test.js +20 -2
  125. package/dist-esm/types/datasource/auth.test.js.map +1 -1
  126. package/dist-esm/types/integration/index.d.ts +16 -1
  127. package/dist-esm/types/integration/index.d.ts.map +1 -1
  128. package/dist-esm/types/integration/index.js +8 -1
  129. package/dist-esm/types/integration/index.js.map +1 -1
  130. package/dist-esm/types/policyGate/index.d.ts +1 -0
  131. package/dist-esm/types/policyGate/index.d.ts.map +1 -1
  132. package/dist-esm/types/policyGate/index.js +2 -0
  133. package/dist-esm/types/policyGate/index.js.map +1 -1
  134. package/dist-esm/types/publishPipeline/index.d.ts +2 -0
  135. package/dist-esm/types/publishPipeline/index.d.ts.map +1 -1
  136. package/dist-esm/types/publishPipeline/index.js.map +1 -1
  137. package/dist-esm/types/publishPipeline/plan.d.ts +1 -1
  138. package/dist-esm/types/publishPipeline/plan.d.ts.map +1 -1
  139. package/dist-esm/types/publishPipeline/plan.js.map +1 -1
  140. package/dist-esm/types/rbac/index.d.ts +0 -5
  141. package/dist-esm/types/rbac/index.d.ts.map +1 -1
  142. package/dist-esm/types/rbac/index.js.map +1 -1
  143. package/dist-esm/types/response/index.d.ts +0 -1
  144. package/dist-esm/types/response/index.d.ts.map +1 -1
  145. package/dist-esm/types/response/index.js +0 -1
  146. package/dist-esm/types/response/index.js.map +1 -1
  147. package/package.json +2 -2
  148. package/src/database-lifecycle/appDatabaseImport.test.ts +95 -0
  149. package/src/database-lifecycle/appDatabaseImport.ts +134 -8
  150. package/src/database-lifecycle/appDatabaseStatus.test.ts +20 -1
  151. package/src/database-lifecycle/appDatabaseStatus.ts +39 -0
  152. package/src/database-lifecycle/dataImport.test.ts +75 -0
  153. package/src/database-lifecycle/dataImport.ts +267 -4
  154. package/src/database-lifecycle/importCompatibility.test.ts +146 -0
  155. package/src/database-lifecycle/importCompatibility.ts +148 -0
  156. package/src/database-lifecycle/index.test.ts +4 -1
  157. package/src/database-lifecycle/index.ts +54 -4
  158. package/src/index.ts +1 -0
  159. package/src/types/audit/ocsf.ts +10 -1
  160. package/src/types/codeSecurity/index.test.ts +40 -3
  161. package/src/types/codeSecurity/index.ts +45 -4
  162. package/src/types/datasource/auth.test.ts +25 -1
  163. package/src/types/datasource/auth.ts +9 -1
  164. package/src/types/integration/index.ts +17 -0
  165. package/src/types/policyGate/index.ts +3 -0
  166. package/src/types/publishPipeline/index.ts +2 -0
  167. package/src/types/publishPipeline/plan.ts +1 -1
  168. package/src/types/rbac/index.ts +0 -8
  169. package/src/types/response/index.ts +0 -1
  170. package/dist/types/response/GetGroupPermissionEntitiesResponseBody.d.ts +0 -3
  171. package/dist/types/response/GetGroupPermissionEntitiesResponseBody.d.ts.map +0 -1
  172. package/dist/types/response/GetGroupPermissionEntitiesResponseBody.js +0 -3
  173. package/dist/types/response/GetGroupPermissionEntitiesResponseBody.js.map +0 -1
  174. package/dist-esm/types/response/GetGroupPermissionEntitiesResponseBody.d.ts +0 -3
  175. package/dist-esm/types/response/GetGroupPermissionEntitiesResponseBody.d.ts.map +0 -1
  176. package/dist-esm/types/response/GetGroupPermissionEntitiesResponseBody.js +0 -2
  177. package/dist-esm/types/response/GetGroupPermissionEntitiesResponseBody.js.map +0 -1
  178. package/src/types/response/GetGroupPermissionEntitiesResponseBody.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"appDatabaseImport.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseImport.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appDatabaseImport.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseImport.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { AppDatabaseTagRef } from './appDatabaseCompatibility.js';
2
+ import type { AppDatabaseImportTagSupport } from './importCompatibility.js';
2
3
  import type { DatabaseEngine, LifecycleMigrationState, LifecycleState } from './index.js';
3
4
  /**
4
5
  * Builder-safe physical instance fields. Pool capacity and the internal
@@ -16,13 +17,25 @@ export type AppDatabaseStatusIntegration = {
16
17
  name: string;
17
18
  pluginId: string;
18
19
  };
20
+ export declare const DATABASE_WIDE_LIFECYCLE_OPERATIONS: readonly ["migrate_schema", "restore_import_data", "retire_database"];
21
+ export type DatabaseWideLifecycleOperation = (typeof DATABASE_WIDE_LIFECYCLE_OPERATIONS)[number];
22
+ export declare const TABLE_IMPORT_IN_PROGRESS_REASON = "A table import is running on this database.";
23
+ export declare function databaseWideOperationBlockReason(operation: DatabaseWideLifecycleOperation): string;
24
+ export declare function preferredBlockingDatabaseOperation(operations: readonly string[]): DatabaseWideLifecycleOperation | undefined;
19
25
  export type AppDatabaseStatusBinding = {
26
+ /**
27
+ * Owning OPA deployment name (`databaseLifecycle:agentName`). Null on
28
+ * bindings created before ownership tracking. Schema reads route to this
29
+ * agent; without it the browser cannot authorize a describe call.
30
+ */
31
+ agentName: string | null;
20
32
  bindingId: string;
21
33
  created: string;
22
34
  instance: AppDatabaseStatusInstance | null;
23
35
  integration: AppDatabaseStatusIntegration | null;
24
36
  lastActivity: string;
25
37
  lifecycleState: LifecycleState;
38
+ inProgressOperation?: DatabaseWideLifecycleOperation;
26
39
  logicalName: string;
27
40
  migrationDirectory: string | null;
28
41
  migrationState: LifecycleMigrationState;
@@ -30,6 +43,11 @@ export type AppDatabaseStatusBinding = {
30
43
  export type AppDatabaseStatusTag = AppDatabaseTagRef & {
31
44
  /** Null when this data tag has no live (non-cancelled) database. */
32
45
  binding: AppDatabaseStatusBinding | null;
46
+ /**
47
+ * Whether this tag's registered worker can run a CSV import. Computed by
48
+ * the server from connected-agent registrations, not from a browser probe.
49
+ */
50
+ csvImport?: AppDatabaseImportTagSupport;
33
51
  /**
34
52
  * True when this data tag had a database that was retired. The live
35
53
  * binding is omitted so the tag can be provisioned again, but Status
@@ -1 +1 @@
1
- {"version":3,"file":"appDatabaseStatus.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1F;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG;IACrD,oEAAoE;IACpE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE,oBAAoB,EAAE,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAE/F;AAED,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAIzF"}
1
+ {"version":3,"file":"appDatabaseStatus.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1F;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAIF,eAAO,MAAM,kCAAkC,uEAAwE,CAAC;AACxH,MAAM,MAAM,8BAA8B,GAAG,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjG,eAAO,MAAM,+BAA+B,gDAAgD,CAAC;AAE7F,wBAAgB,gCAAgC,CAAC,SAAS,EAAE,8BAA8B,GAAG,MAAM,CASlG;AAID,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,8BAA8B,GAAG,SAAS,CAE5H;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAG/B,mBAAmB,CAAC,EAAE,8BAA8B,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG;IACrD,oEAAoE;IACpE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACzC;;;OAGG;IACH,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC,IAAI,EAAE,oBAAoB,EAAE,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAE/F;AAED,wBAAgB,sCAAsC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAIzF"}
@@ -1,4 +1,22 @@
1
1
  import { ViewMode } from '../types/event/index.js';
2
+ // These rewrite or remove the whole database. A CSV import into any table on
3
+ // that binding has to wait until the lifecycle request leaves these states.
4
+ export const DATABASE_WIDE_LIFECYCLE_OPERATIONS = ['migrate_schema', 'restore_import_data', 'retire_database'];
5
+ export const TABLE_IMPORT_IN_PROGRESS_REASON = 'A table import is running on this database.';
6
+ export function databaseWideOperationBlockReason(operation) {
7
+ switch (operation) {
8
+ case 'migrate_schema':
9
+ return 'A schema migration is running on this database.';
10
+ case 'restore_import_data':
11
+ return 'A database restore is running on this data tag.';
12
+ case 'retire_database':
13
+ return 'This database is being removed.';
14
+ }
15
+ }
16
+ const BLOCKING_OPERATION_PRIORITY = ['retire_database', 'migrate_schema', 'restore_import_data'];
17
+ export function preferredBlockingDatabaseOperation(operations) {
18
+ return BLOCKING_OPERATION_PRIORITY.find((operation) => operations.includes(operation));
19
+ }
2
20
  /**
3
21
  * Edit lifecycle membership: tags used for edit provisioning and migrations.
4
22
  * That is every editor-only tag, plus the editor default even when that
@@ -1 +1 @@
1
- {"version":3,"file":"appDatabaseStatus.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAwEnD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAiD;IAClF,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAiD;IACpF,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,MAAyB;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,MAAM,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAClH,OAAO,CAAC,eAAe,IAAI,6BAA6B,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"appDatabaseStatus.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAuBnD,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,CAAU,CAAC;AAGxH,MAAM,CAAC,MAAM,+BAA+B,GAAG,6CAA6C,CAAC;AAE7F,MAAM,UAAU,gCAAgC,CAAC,SAAyC;IACxF,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,gBAAgB;YACnB,OAAO,iDAAiD,CAAC;QAC3D,KAAK,qBAAqB;YACxB,OAAO,iDAAiD,CAAC;QAC3D,KAAK,iBAAiB;YACpB,OAAO,iCAAiC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,2BAA2B,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,CAAU,CAAC;AAE1G,MAAM,UAAU,kCAAkC,CAAC,UAA6B;IAC9E,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACzF,CAAC;AAkED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAiD;IAClF,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAiD;IACpF,OAAO,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,UAAU,sCAAsC,CAAC,MAAyB;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,MAAM,6BAA6B,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IAClH,OAAO,CAAC,eAAe,IAAI,6BAA6B,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;AAChG,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import { ViewMode } from '../types/event/index.js';
3
- import { isProductionDatabaseRetirementEligible } from './appDatabaseStatus.js';
3
+ import { databaseWideOperationBlockReason, isProductionDatabaseRetirementEligible, preferredBlockingDatabaseOperation, TABLE_IMPORT_IN_PROGRESS_REASON } from './appDatabaseStatus.js';
4
4
  const binding = {
5
+ agentName: 'customer-opa',
5
6
  bindingId: 'binding-1',
6
7
  created: '2026-09-14T00:00:00.000Z',
7
8
  instance: null,
@@ -83,4 +84,14 @@ describe('production database retirement eligibility', () => {
83
84
  }))).toBe(false);
84
85
  });
85
86
  });
87
+ describe('database-wide operation block', () => {
88
+ it('prefers retirement over a migration and names the operation the import has to wait for', () => {
89
+ expect(preferredBlockingDatabaseOperation(['restore_import_data', 'migrate_schema', 'retire_database'])).toBe('retire_database');
90
+ expect(preferredBlockingDatabaseOperation(['import_table_data'])).toBeUndefined();
91
+ expect(databaseWideOperationBlockReason('migrate_schema')).toBe('A schema migration is running on this database.');
92
+ expect(databaseWideOperationBlockReason('restore_import_data')).toBe('A database restore is running on this data tag.');
93
+ expect(databaseWideOperationBlockReason('retire_database')).toBe('This database is being removed.');
94
+ expect(TABLE_IMPORT_IN_PROGRESS_REASON).toBe('A table import is running on this database.');
95
+ });
96
+ });
86
97
  //# sourceMappingURL=appDatabaseStatus.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"appDatabaseStatus.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"appDatabaseStatus.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseStatus.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export declare const DATA_IMPORT_KINDS: readonly ["csv", "pg_dump_custom"];
2
- export declare const DATA_IMPORT_STATES: readonly ["requested", "preparing_upload", "preparing_prefix_upload", "awaiting_upload", "awaiting_prefix_upload", "uploading", "upload_completed", "validating", "validating_schema", "schema_validated", "ready", "importing", "completed", "failed", "cancelled"];
3
- export declare const DATA_IMPORT_ACTIVE_STATES: ("requested" | "preparing_upload" | "preparing_prefix_upload" | "awaiting_upload" | "awaiting_prefix_upload" | "uploading" | "upload_completed" | "validating" | "validating_schema" | "schema_validated" | "ready" | "importing" | "completed" | "failed" | "cancelled")[];
2
+ export declare const DATA_IMPORT_STATES: readonly ["requested", "preparing_upload", "preparing_prefix_upload", "awaiting_upload", "awaiting_prefix_upload", "uploading", "upload_completed", "validating", "validating_schema", "schema_validated", "capturing_source", "restoring", "ready", "importing", "completed", "failed", "cancelled"];
3
+ export declare const DATA_IMPORT_ACTIVE_STATES: ("requested" | "preparing_upload" | "preparing_prefix_upload" | "awaiting_upload" | "awaiting_prefix_upload" | "uploading" | "upload_completed" | "validating" | "validating_schema" | "schema_validated" | "capturing_source" | "restoring" | "ready" | "importing" | "completed" | "failed" | "cancelled")[];
4
4
  export declare const DATA_IMPORT_TARGET_TYPES: readonly ["app_database"];
5
5
  export type DataImportKind = (typeof DATA_IMPORT_KINDS)[number];
6
6
  export type DataImportState = (typeof DATA_IMPORT_STATES)[number];
@@ -27,18 +27,52 @@ export type DataImportUploadMetadata = {
27
27
  };
28
28
  export type PgDumpDataImportMetadata = {
29
29
  kind: 'pg_dump_custom';
30
+ capturedObjectKey?: string;
31
+ capturedSha256?: string;
32
+ capturedSizeBytes?: number;
30
33
  currentPrefixSizeBytes?: number;
31
34
  postgresMajorVersion?: number;
32
35
  prefixChecksumSha256?: string;
33
36
  prefixObjectKey?: string;
34
37
  requestedPrefixSizeBytes?: number;
38
+ source?: {
39
+ integrationConfigurationId: string;
40
+ integrationId: string;
41
+ profile: string;
42
+ profileId: string;
43
+ type: 'integration';
44
+ };
35
45
  tableNames?: string[];
36
46
  };
47
+ export type CsvColumnMapping = {
48
+ source: string;
49
+ target: string;
50
+ };
51
+ export type CsvTableImportPlan = {
52
+ columnMapping: CsvColumnMapping[];
53
+ dateStyle: string;
54
+ delimiter: ',' | ';' | '\t' | '|';
55
+ emptyAsNull: boolean;
56
+ encoding: 'UTF8' | 'WINDOWS1252';
57
+ hasHeader: boolean;
58
+ timeZone: string;
59
+ trimWhitespace: boolean;
60
+ };
37
61
  export type CsvDataImportMetadata = {
38
62
  kind: 'csv';
39
63
  mode: 'append' | 'replace';
40
64
  table: string;
65
+ } & Partial<CsvTableImportPlan>;
66
+ export type CsvImportPlanParse = {
67
+ message: string;
68
+ status: 'invalid';
69
+ } | {
70
+ plan: CsvTableImportPlan;
71
+ status: 'ok';
41
72
  };
73
+ export type CsvTableImportPlanPresence = {
74
+ status: 'absent';
75
+ } | CsvImportPlanParse;
42
76
  export type DataImportMetadata = PgDumpDataImportMetadata | CsvDataImportMetadata;
43
77
  export type DataImportOutcome = {
44
78
  rowsDeleted?: string;
@@ -48,6 +82,15 @@ export type DataImportOutcome = {
48
82
  export declare function mintDataImportConcurrencyKey(metadata: DataImportMetadata, target: AppDatabaseDataImportTarget): string;
49
83
  export declare function parseDataImportTarget(value: unknown): DataImportTarget | undefined;
50
84
  export declare function parseDataImportMetadata(kind: DataImportKind, value: unknown): DataImportMetadata | undefined;
85
+ export declare function csvTableImportPlan(metadata: CsvDataImportMetadata): CsvTableImportPlan | undefined;
86
+ export declare function isReservedCsvImportTable(table: string): boolean;
87
+ export declare function csvImportPlanFromWizard(input: {
88
+ columnMappings: Record<string, string>;
89
+ dateFormat: string;
90
+ encoding: string;
91
+ trimWhitespace: boolean;
92
+ }): CsvImportPlanParse;
93
+ export declare function parseCsvTableImportPlanFields(value: Record<string, unknown>): CsvTableImportPlanPresence;
51
94
  export declare function parseDataImportOutcome(value: unknown): DataImportOutcome | undefined;
52
95
  export declare function sqlStringList(values: readonly string[]): string;
53
96
  //# sourceMappingURL=dataImport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dataImport.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/dataImport.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,oCAAqC,CAAC;AAIpE,eAAO,MAAM,kBAAkB,sQAgBrB,CAAC;AAEX,eAAO,MAAM,yBAAyB,6QAErC,CAAC;AACF,eAAO,MAAM,wBAAwB,2BAA4B,CAAC;AAElE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,oBAAoB,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,oBAAoB,GAAG;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAIF,MAAM,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAE3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,qBAAqB,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,2BAA2B,GAAG,MAAM,CAKtH;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAgBlF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAgB5G;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAmBpF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"dataImport.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/dataImport.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export const DATA_IMPORT_STATES = [
13
13
  'validating',
14
14
  'validating_schema',
15
15
  'schema_validated',
16
+ 'capturing_source',
17
+ 'restoring',
16
18
  'ready',
17
19
  'importing',
18
20
  'completed',
@@ -55,14 +57,107 @@ export function parseDataImportMetadata(kind, value) {
55
57
  return parsePgDumpMetadata(value);
56
58
  }
57
59
  const table = canonicalCsvTable(value.table);
58
- if (table === undefined || (value.mode !== 'append' && value.mode !== 'replace')) {
60
+ if (table === undefined || (value.mode !== 'append' && value.mode !== 'replace') || isReservedCsvImportTable(table)) {
59
61
  return undefined;
60
62
  }
61
- const allowed = new Set(['kind', 'mode', 'table']);
63
+ const plan = parseCsvTableImportPlanFields(value);
64
+ if (plan.status === 'invalid') {
65
+ return undefined;
66
+ }
67
+ const allowed = new Set(['kind', 'mode', 'table', ...(plan.status === 'ok' ? CSV_TABLE_IMPORT_PLAN_KEYS : [])]);
62
68
  if (Object.keys(value).some((key) => !allowed.has(key))) {
63
69
  return undefined;
64
70
  }
65
- return { kind: 'csv', mode: value.mode, table };
71
+ if (plan.status === 'absent') {
72
+ return { kind: 'csv', mode: value.mode, table };
73
+ }
74
+ return { kind: 'csv', mode: value.mode, table, ...plan.plan };
75
+ }
76
+ export function csvTableImportPlan(metadata) {
77
+ if (metadata.columnMapping === undefined ||
78
+ metadata.dateStyle === undefined ||
79
+ metadata.delimiter === undefined ||
80
+ metadata.emptyAsNull === undefined ||
81
+ metadata.encoding === undefined ||
82
+ metadata.hasHeader === undefined ||
83
+ metadata.timeZone === undefined ||
84
+ metadata.trimWhitespace === undefined) {
85
+ return undefined;
86
+ }
87
+ return {
88
+ columnMapping: metadata.columnMapping,
89
+ dateStyle: metadata.dateStyle,
90
+ delimiter: metadata.delimiter,
91
+ emptyAsNull: metadata.emptyAsNull,
92
+ encoding: metadata.encoding,
93
+ hasHeader: metadata.hasHeader,
94
+ timeZone: metadata.timeZone,
95
+ trimWhitespace: metadata.trimWhitespace
96
+ };
97
+ }
98
+ // The migrations ledger and system catalogs are not import targets.
99
+ export function isReservedCsvImportTable(table) {
100
+ const separator = table.indexOf('.');
101
+ if (separator < 1) {
102
+ return false;
103
+ }
104
+ const schema = table.slice(0, separator);
105
+ const name = table.slice(separator + 1);
106
+ if (schema === 'information_schema' || schema.startsWith('pg_')) {
107
+ return true;
108
+ }
109
+ return schema === 'public' && name === 'superblocks_schema_migrations';
110
+ }
111
+ const CSV_DATE_FORMAT_TO_DATE_STYLE = {
112
+ 'DD.MM.YYYY': 'German, DMY',
113
+ 'DD/MM/YYYY': 'ISO, DMY',
114
+ 'MM/DD/YYYY': 'ISO, MDY',
115
+ 'YYYY-MM-DD': 'ISO, YMD'
116
+ };
117
+ // Wizard spellings become the worker's DateStyle, encoding, and column list.
118
+ // emptyAsNull stays on, the delimiter stays a comma, and the session time zone
119
+ // stays UTC. The first row is always a header.
120
+ export function csvImportPlanFromWizard(input) {
121
+ const encoding = workerCsvEncoding(input.encoding);
122
+ if (!encoding) {
123
+ return { message: 'Encoding must be UTF-8 or Windows-1252.', status: 'invalid' };
124
+ }
125
+ const dateStyle = workerDateStyle(input.dateFormat);
126
+ if (!dateStyle) {
127
+ return {
128
+ message: 'Date format must be YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY, or DD.MM.YYYY.',
129
+ status: 'invalid'
130
+ };
131
+ }
132
+ const columnMapping = columnMappingsFromWizard(input.columnMappings);
133
+ if (columnMapping.status === 'invalid') {
134
+ return columnMapping;
135
+ }
136
+ return readCsvTableImportPlan({
137
+ columnMapping: columnMapping.mapping,
138
+ dateStyle,
139
+ delimiter: ',',
140
+ emptyAsNull: true,
141
+ encoding,
142
+ hasHeader: true,
143
+ timeZone: 'UTC',
144
+ trimWhitespace: input.trimWhitespace
145
+ });
146
+ }
147
+ export function parseCsvTableImportPlanFields(value) {
148
+ if (!CSV_TABLE_IMPORT_PLAN_KEYS.some((key) => value[key] !== undefined)) {
149
+ return { status: 'absent' };
150
+ }
151
+ return readCsvTableImportPlan({
152
+ columnMapping: value.columnMapping,
153
+ dateStyle: value.dateStyle,
154
+ delimiter: value.delimiter,
155
+ emptyAsNull: value.emptyAsNull,
156
+ encoding: value.encoding,
157
+ hasHeader: value.hasHeader,
158
+ timeZone: value.timeZone,
159
+ trimWhitespace: value.trimWhitespace
160
+ });
66
161
  }
67
162
  export function parseDataImportOutcome(value) {
68
163
  if (!isUnknownRecord(value)) {
@@ -156,6 +251,113 @@ function assignOptionalInteger(metadata, key, value) {
156
251
  metadata[key] = value;
157
252
  return true;
158
253
  }
254
+ const CSV_TABLE_IMPORT_PLAN_KEYS = [
255
+ 'columnMapping',
256
+ 'dateStyle',
257
+ 'delimiter',
258
+ 'emptyAsNull',
259
+ 'encoding',
260
+ 'hasHeader',
261
+ 'timeZone',
262
+ 'trimWhitespace'
263
+ ];
264
+ const CSV_DATE_STYLE = /^(ISO|SQL|Postgres|German)(, (MDY|DMY|YMD))?$/;
265
+ const CSV_TIME_ZONE = /^[A-Za-z0-9_+-]{1,64}(?:\/[A-Za-z0-9_+-]{1,64}){0,2}$/;
266
+ const CSV_TARGET_COLUMN = /^[A-Za-z_][A-Za-z0-9_]{0,62}$/;
267
+ const CSV_DELIMITERS = [',', ';', '\t', '|'];
268
+ function workerCsvEncoding(value) {
269
+ const normalized = value.trim().toUpperCase().replace(/-/g, '');
270
+ if (normalized === 'UTF8') {
271
+ return 'UTF8';
272
+ }
273
+ if (normalized === 'WINDOWS1252' || normalized === 'CP1252') {
274
+ return 'WINDOWS1252';
275
+ }
276
+ return undefined;
277
+ }
278
+ function workerDateStyle(value) {
279
+ const trimmed = value.trim();
280
+ return CSV_DATE_FORMAT_TO_DATE_STYLE[trimmed] ?? (CSV_DATE_STYLE.test(trimmed) ? trimmed : undefined);
281
+ }
282
+ function columnMappingsFromWizard(mappings) {
283
+ const columnMapping = [];
284
+ const targets = new Set();
285
+ for (const [source, target] of Object.entries(mappings)) {
286
+ const trimmedTarget = target.trim();
287
+ if (trimmedTarget.length === 0) {
288
+ continue;
289
+ }
290
+ const trimmedSource = source.trim();
291
+ if (trimmedSource.length === 0 || trimmedSource.length > 256) {
292
+ return { message: 'CSV column names must be 1 to 256 characters.', status: 'invalid' };
293
+ }
294
+ if (!CSV_TARGET_COLUMN.test(trimmedTarget)) {
295
+ return { message: 'Table column names must be identifiers.', status: 'invalid' };
296
+ }
297
+ const folded = trimmedTarget.toLowerCase();
298
+ if (targets.has(folded)) {
299
+ return { message: 'Each table column can only be mapped once.', status: 'invalid' };
300
+ }
301
+ targets.add(folded);
302
+ columnMapping.push({ source: trimmedSource, target: trimmedTarget });
303
+ }
304
+ columnMapping.sort((left, right) => (left.source < right.source ? -1 : left.source > right.source ? 1 : 0));
305
+ if (columnMapping.length === 0) {
306
+ return { message: 'Map at least one CSV column to a table column.', status: 'invalid' };
307
+ }
308
+ return { mapping: columnMapping, status: 'ok' };
309
+ }
310
+ function readCsvTableImportPlan(value) {
311
+ if (!Array.isArray(value.columnMapping) || value.columnMapping.length === 0) {
312
+ return { message: 'Map at least one CSV column to a table column.', status: 'invalid' };
313
+ }
314
+ const columnMapping = [];
315
+ const targets = new Set();
316
+ for (const entry of value.columnMapping) {
317
+ if (!isUnknownRecord(entry) || typeof entry.source !== 'string' || typeof entry.target !== 'string') {
318
+ return { message: 'CSV import settings are incomplete or not supported.', status: 'invalid' };
319
+ }
320
+ const source = entry.source.trim();
321
+ const target = entry.target.trim();
322
+ if (source.length === 0 || source.length > 256 || !CSV_TARGET_COLUMN.test(target)) {
323
+ return { message: 'CSV import settings are incomplete or not supported.', status: 'invalid' };
324
+ }
325
+ const folded = target.toLowerCase();
326
+ if (targets.has(folded)) {
327
+ return { message: 'Each table column can only be mapped once.', status: 'invalid' };
328
+ }
329
+ targets.add(folded);
330
+ columnMapping.push({ source, target });
331
+ }
332
+ if (typeof value.dateStyle !== 'string' || !CSV_DATE_STYLE.test(value.dateStyle)) {
333
+ return { message: 'Date format must be YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY, or DD.MM.YYYY.', status: 'invalid' };
334
+ }
335
+ if (typeof value.delimiter !== 'string' || !CSV_DELIMITERS.includes(value.delimiter)) {
336
+ return { message: 'CSV import settings are incomplete or not supported.', status: 'invalid' };
337
+ }
338
+ if (value.encoding !== 'UTF8' && value.encoding !== 'WINDOWS1252') {
339
+ return { message: 'Encoding must be UTF-8 or Windows-1252.', status: 'invalid' };
340
+ }
341
+ if (typeof value.timeZone !== 'string' || !CSV_TIME_ZONE.test(value.timeZone)) {
342
+ return { message: 'CSV import settings are incomplete or not supported.', status: 'invalid' };
343
+ }
344
+ if (typeof value.emptyAsNull !== 'boolean' || typeof value.hasHeader !== 'boolean' || typeof value.trimWhitespace !== 'boolean') {
345
+ return { message: 'CSV import settings are incomplete or not supported.', status: 'invalid' };
346
+ }
347
+ return {
348
+ plan: {
349
+ columnMapping,
350
+ dateStyle: value.dateStyle,
351
+ delimiter: value.delimiter,
352
+ emptyAsNull: value.emptyAsNull,
353
+ encoding: value.encoding,
354
+ hasHeader: value.hasHeader,
355
+ timeZone: value.timeZone,
356
+ trimWhitespace: value.trimWhitespace
357
+ },
358
+ status: 'ok'
359
+ };
360
+ }
159
361
  function isDecimalCount(value) {
160
362
  return typeof value === 'string' && /^(0|[1-9][0-9]*)$/.test(value);
161
363
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataImport.js","sourceRoot":"","sources":["../../src/database-lifecycle/dataImport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataImport.js","sourceRoot":"","sources":["../../src/database-lifecycle/dataImport.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, test } from 'vitest';
2
- import { mintDataImportConcurrencyKey, parseDataImportMetadata, parseDataImportTarget } from './dataImport.js';
2
+ import { csvImportPlanFromWizard, mintDataImportConcurrencyKey, parseDataImportMetadata, parseDataImportTarget } from './dataImport.js';
3
3
  describe('data import contracts', () => {
4
4
  test('validates destination descriptors without fixing the record to one destination schema', () => {
5
5
  expect(parseDataImportTarget({
@@ -49,6 +49,8 @@ describe('data import contracts', () => {
49
49
  }
50
50
  expect(mintDataImportConcurrencyKey(spaced, target)).toBe(`csv:${target.bindingId}:public.orders`);
51
51
  expect(mintDataImportConcurrencyKey(plain, target)).toBe(mintDataImportConcurrencyKey(spaced, target));
52
+ expect(mintDataImportConcurrencyKey({ kind: 'csv', mode: 'append', table: 'public.users' }, target)).not.toBe(mintDataImportConcurrencyKey(plain, target));
53
+ expect(mintDataImportConcurrencyKey(plain, { ...target, bindingId: 'binding-production' })).not.toBe(mintDataImportConcurrencyKey(plain, target));
52
54
  expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: ' ' })).toBeUndefined();
53
55
  expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: 'public. order items' })).toBeUndefined();
54
56
  for (const table of ['PUBLIC.ORDERS', 'public."orders"', '"public"."orders"', 'orders']) {
@@ -66,6 +68,64 @@ describe('data import contracts', () => {
66
68
  expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: `public.${sixtyThree}x` })).toBeUndefined();
67
69
  expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: `public.${sixtyThree}y` })).toBeUndefined();
68
70
  });
71
+ test('keeps a csv upload without a table plan and stores a complete plan', () => {
72
+ expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: 'public.orders' })).toEqual({
73
+ kind: 'csv',
74
+ mode: 'append',
75
+ table: 'public.orders'
76
+ });
77
+ const plan = {
78
+ columnMapping: [{ source: 'id', target: 'id' }],
79
+ dateStyle: 'ISO, YMD',
80
+ delimiter: ',',
81
+ emptyAsNull: true,
82
+ encoding: 'UTF8',
83
+ hasHeader: true,
84
+ timeZone: 'UTC',
85
+ trimWhitespace: true
86
+ };
87
+ expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'replace', table: 'public.orders', ...plan })).toEqual({
88
+ kind: 'csv',
89
+ mode: 'replace',
90
+ table: 'public.orders',
91
+ ...plan
92
+ });
93
+ expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: 'public.superblocks_schema_migrations', ...plan })).toBeUndefined();
94
+ expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: 'public.superblocks_schema_migrations' })).toBeUndefined();
95
+ expect(parseDataImportMetadata('csv', { kind: 'csv', mode: 'append', table: 'pg_catalog.pg_class', ...plan })).toBeUndefined();
96
+ });
97
+ test('maps wizard date formats and encodings onto the worker plan', () => {
98
+ const mapped = csvImportPlanFromWizard({
99
+ columnMappings: { id: 'id', skipped: '' },
100
+ dateFormat: 'YYYY-MM-DD',
101
+ encoding: 'utf-8',
102
+ trimWhitespace: true
103
+ });
104
+ expect(mapped).toEqual({
105
+ plan: {
106
+ columnMapping: [{ source: 'id', target: 'id' }],
107
+ dateStyle: 'ISO, YMD',
108
+ delimiter: ',',
109
+ emptyAsNull: true,
110
+ encoding: 'UTF8',
111
+ hasHeader: true,
112
+ timeZone: 'UTC',
113
+ trimWhitespace: true
114
+ },
115
+ status: 'ok'
116
+ });
117
+ expect(csvImportPlanFromWizard({
118
+ columnMappings: { id: 'id' },
119
+ dateFormat: 'MM/DD/YYYY',
120
+ encoding: 'windows-1252',
121
+ trimWhitespace: false
122
+ })).toMatchObject({ plan: { dateStyle: 'ISO, MDY', encoding: 'WINDOWS1252', trimWhitespace: false }, status: 'ok' });
123
+ expect(csvImportPlanFromWizard({ columnMappings: { id: 'id' }, dateFormat: 'YYYY-MM-DD', encoding: 'utf-16', trimWhitespace: true })).toEqual({ message: 'Encoding must be UTF-8 or Windows-1252.', status: 'invalid' });
124
+ expect(csvImportPlanFromWizard({ columnMappings: { id: '' }, dateFormat: 'not-a-date', encoding: 'utf-8', trimWhitespace: true })).toEqual({
125
+ message: 'Date format must be YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY, or DD.MM.YYYY.',
126
+ status: 'invalid'
127
+ });
128
+ });
69
129
  test('rejects zero prefix sizes and a zero postgres major', () => {
70
130
  const base = { kind: 'pg_dump_custom' };
71
131
  expect(parseDataImportMetadata('pg_dump_custom', { ...base, currentPrefixSizeBytes: 0 })).toBeUndefined();