@superblocksteam/shared 0.9607.2 → 0.9608.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.
- package/dist/database-lifecycle/appDatabaseCompatibility.d.ts +49 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.d.ts.map +1 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.js +32 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.js.map +1 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.test.d.ts +2 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.test.d.ts.map +1 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.test.js +47 -0
- package/dist/database-lifecycle/appDatabaseCompatibility.test.js.map +1 -0
- package/dist/database-lifecycle/destructiveMigrations.d.ts +12 -0
- package/dist/database-lifecycle/destructiveMigrations.d.ts.map +1 -1
- package/dist/database-lifecycle/destructiveMigrations.js +114 -0
- package/dist/database-lifecycle/destructiveMigrations.js.map +1 -1
- package/dist/database-lifecycle/destructiveMigrations.test.js +79 -0
- package/dist/database-lifecycle/destructiveMigrations.test.js.map +1 -1
- package/dist/database-lifecycle/index.d.ts +46 -2
- package/dist/database-lifecycle/index.d.ts.map +1 -1
- package/dist/database-lifecycle/index.js +127 -1
- package/dist/database-lifecycle/index.js.map +1 -1
- package/dist/database-lifecycle/providerDiagnostics.test.d.ts +2 -0
- package/dist/database-lifecycle/providerDiagnostics.test.d.ts.map +1 -0
- package/dist/database-lifecycle/providerDiagnostics.test.js +119 -0
- package/dist/database-lifecycle/providerDiagnostics.test.js.map +1 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.d.ts +65 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.d.ts.map +1 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.js +87 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.js.map +1 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.test.d.ts +2 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.test.d.ts.map +1 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.test.js +285 -0
- package/dist/environment-compatibility/appEnvironmentCompatibility.test.js.map +1 -0
- package/dist/errors/http.d.ts +15 -4
- package/dist/errors/http.d.ts.map +1 -1
- package/dist/errors/http.js +25 -7
- package/dist/errors/http.js.map +1 -1
- package/dist/errors/http.test.d.ts +2 -0
- package/dist/errors/http.test.d.ts.map +1 -0
- package/dist/errors/http.test.js +28 -0
- package/dist/errors/http.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/templates/restApiIntegration.d.ts.map +1 -1
- package/dist/plugins/templates/restApiIntegration.js +2 -0
- package/dist/plugins/templates/restApiIntegration.js.map +1 -1
- package/dist/plugins/templates/shared/auth.d.ts +3 -1
- package/dist/plugins/templates/shared/auth.d.ts.map +1 -1
- package/dist/plugins/templates/shared/auth.js +129 -17
- package/dist/plugins/templates/shared/auth.js.map +1 -1
- package/dist/plugins/templates/shared/auth.test.d.ts +2 -0
- package/dist/plugins/templates/shared/auth.test.d.ts.map +1 -0
- package/dist/plugins/templates/shared/auth.test.js +116 -0
- package/dist/plugins/templates/shared/auth.test.js.map +1 -0
- package/dist/plugins/templates/shared/restapiintegration.d.ts +2 -0
- package/dist/plugins/templates/shared/restapiintegration.d.ts.map +1 -1
- package/dist/plugins/templates/shared/restapiintegration.js +3 -1
- package/dist/plugins/templates/shared/restapiintegration.js.map +1 -1
- package/dist/socket/dist-entry.test.d.ts +2 -0
- package/dist/socket/dist-entry.test.d.ts.map +1 -0
- package/dist/socket/dist-entry.test.js +34 -0
- package/dist/socket/dist-entry.test.js.map +1 -0
- package/dist/socket/heartbeat.d.ts +258 -0
- package/dist/socket/heartbeat.d.ts.map +1 -0
- package/dist/socket/heartbeat.js +307 -0
- package/dist/socket/heartbeat.js.map +1 -0
- package/dist/socket/heartbeat.test.d.ts +2 -0
- package/dist/socket/heartbeat.test.d.ts.map +1 -0
- package/dist/socket/heartbeat.test.js +431 -0
- package/dist/socket/heartbeat.test.js.map +1 -0
- package/dist/socket/index.d.ts +1 -0
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +1 -0
- package/dist/socket/index.js.map +1 -1
- package/dist/socket/util.d.ts.map +1 -1
- package/dist/socket/util.js +15 -1
- package/dist/socket/util.js.map +1 -1
- package/dist/socket/util.test.js +12 -2
- package/dist/socket/util.test.js.map +1 -1
- package/dist/types/ai/index.d.ts +3 -0
- package/dist/types/ai/index.d.ts.map +1 -1
- package/dist/types/ai/index.js +3 -0
- package/dist/types/ai/index.js.map +1 -1
- package/dist/types/application/index.d.ts +12 -0
- package/dist/types/application/index.d.ts.map +1 -1
- package/dist/types/application/index.js.map +1 -1
- package/dist/types/codeSecurity/index.d.ts +55 -1
- package/dist/types/codeSecurity/index.d.ts.map +1 -1
- package/dist/types/codeSecurity/index.js +21 -1
- package/dist/types/codeSecurity/index.js.map +1 -1
- package/dist/types/codeSecurity/index.test.d.ts +2 -0
- package/dist/types/codeSecurity/index.test.d.ts.map +1 -0
- package/dist/types/codeSecurity/index.test.js +19 -0
- package/dist/types/codeSecurity/index.test.js.map +1 -0
- package/dist/types/datasource/auth.d.ts +12 -1
- package/dist/types/datasource/auth.d.ts.map +1 -1
- package/dist/types/datasource/auth.js +20 -2
- package/dist/types/datasource/auth.js.map +1 -1
- package/dist/types/datasource/auth.test.js +3 -1
- package/dist/types/datasource/auth.test.js.map +1 -1
- package/dist/types/group/index.d.ts +1 -3
- package/dist/types/group/index.d.ts.map +1 -1
- package/dist/types/group/index.js +1 -3
- package/dist/types/group/index.js.map +1 -1
- package/dist/types/integration/index.d.ts +11 -1
- package/dist/types/integration/index.d.ts.map +1 -1
- package/dist/types/integration/index.js +11 -1
- package/dist/types/integration/index.js.map +1 -1
- package/dist/types/plugin/form.d.ts +32 -0
- package/dist/types/plugin/form.d.ts.map +1 -1
- package/dist/types/plugin/form.js +73 -1
- package/dist/types/plugin/form.js.map +1 -1
- package/dist/types/plugin/form.test.js +128 -0
- package/dist/types/plugin/form.test.js.map +1 -1
- package/dist/types/profile/index.d.ts +16 -1
- package/dist/types/profile/index.d.ts.map +1 -1
- package/dist/types/profile/index.js +7 -1
- package/dist/types/profile/index.js.map +1 -1
- package/dist/types/rbac/index.d.ts +2 -0
- package/dist/types/rbac/index.d.ts.map +1 -1
- package/dist/types/rbac/index.js +2 -0
- package/dist/types/rbac/index.js.map +1 -1
- package/dist/types/response/GetRecentApplicationsResponseBody.d.ts +4 -0
- package/dist/types/response/GetRecentApplicationsResponseBody.d.ts.map +1 -0
- package/dist/types/response/GetRecentApplicationsResponseBody.js +3 -0
- package/dist/types/response/GetRecentApplicationsResponseBody.js.map +1 -0
- package/dist/types/response/index.d.ts +1 -0
- package/dist/types/response/index.d.ts.map +1 -1
- package/dist/types/response/index.js +1 -0
- package/dist/types/response/index.js.map +1 -1
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.d.ts +49 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.d.ts.map +1 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.js +28 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.js.map +1 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.test.d.ts +2 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.test.d.ts.map +1 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.test.js +45 -0
- package/dist-esm/database-lifecycle/appDatabaseCompatibility.test.js.map +1 -0
- package/dist-esm/database-lifecycle/destructiveMigrations.d.ts +12 -0
- package/dist-esm/database-lifecycle/destructiveMigrations.d.ts.map +1 -1
- package/dist-esm/database-lifecycle/destructiveMigrations.js +113 -0
- package/dist-esm/database-lifecycle/destructiveMigrations.js.map +1 -1
- package/dist-esm/database-lifecycle/destructiveMigrations.test.js +80 -1
- package/dist-esm/database-lifecycle/destructiveMigrations.test.js.map +1 -1
- package/dist-esm/database-lifecycle/index.d.ts +46 -2
- package/dist-esm/database-lifecycle/index.d.ts.map +1 -1
- package/dist-esm/database-lifecycle/index.js +123 -1
- package/dist-esm/database-lifecycle/index.js.map +1 -1
- package/dist-esm/database-lifecycle/providerDiagnostics.test.d.ts +2 -0
- package/dist-esm/database-lifecycle/providerDiagnostics.test.d.ts.map +1 -0
- package/dist-esm/database-lifecycle/providerDiagnostics.test.js +117 -0
- package/dist-esm/database-lifecycle/providerDiagnostics.test.js.map +1 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.d.ts +65 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.d.ts.map +1 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.js +79 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.js.map +1 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.test.d.ts +2 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.test.d.ts.map +1 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.test.js +283 -0
- package/dist-esm/environment-compatibility/appEnvironmentCompatibility.test.js.map +1 -0
- package/dist-esm/errors/http.d.ts +15 -4
- package/dist-esm/errors/http.d.ts.map +1 -1
- package/dist-esm/errors/http.js +22 -6
- package/dist-esm/errors/http.js.map +1 -1
- package/dist-esm/errors/http.test.d.ts +2 -0
- package/dist-esm/errors/http.test.d.ts.map +1 -0
- package/dist-esm/errors/http.test.js +26 -0
- package/dist-esm/errors/http.test.js.map +1 -0
- package/dist-esm/index.d.ts +2 -0
- package/dist-esm/index.d.ts.map +1 -1
- package/dist-esm/index.js +2 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/plugins/templates/restApiIntegration.d.ts.map +1 -1
- package/dist-esm/plugins/templates/restApiIntegration.js +2 -0
- package/dist-esm/plugins/templates/restApiIntegration.js.map +1 -1
- package/dist-esm/plugins/templates/shared/auth.d.ts +3 -1
- package/dist-esm/plugins/templates/shared/auth.d.ts.map +1 -1
- package/dist-esm/plugins/templates/shared/auth.js +129 -17
- package/dist-esm/plugins/templates/shared/auth.js.map +1 -1
- package/dist-esm/plugins/templates/shared/auth.test.d.ts +2 -0
- package/dist-esm/plugins/templates/shared/auth.test.d.ts.map +1 -0
- package/dist-esm/plugins/templates/shared/auth.test.js +114 -0
- package/dist-esm/plugins/templates/shared/auth.test.js.map +1 -0
- package/dist-esm/plugins/templates/shared/restapiintegration.d.ts +2 -0
- package/dist-esm/plugins/templates/shared/restapiintegration.d.ts.map +1 -1
- package/dist-esm/plugins/templates/shared/restapiintegration.js +3 -1
- package/dist-esm/plugins/templates/shared/restapiintegration.js.map +1 -1
- package/dist-esm/socket/dist-entry.test.d.ts +2 -0
- package/dist-esm/socket/dist-entry.test.d.ts.map +1 -0
- package/dist-esm/socket/dist-entry.test.js +29 -0
- package/dist-esm/socket/dist-entry.test.js.map +1 -0
- package/dist-esm/socket/heartbeat.d.ts +258 -0
- package/dist-esm/socket/heartbeat.d.ts.map +1 -0
- package/dist-esm/socket/heartbeat.js +303 -0
- package/dist-esm/socket/heartbeat.js.map +1 -0
- package/dist-esm/socket/heartbeat.test.d.ts +2 -0
- package/dist-esm/socket/heartbeat.test.d.ts.map +1 -0
- package/dist-esm/socket/heartbeat.test.js +429 -0
- package/dist-esm/socket/heartbeat.test.js.map +1 -0
- package/dist-esm/socket/index.d.ts +1 -0
- package/dist-esm/socket/index.d.ts.map +1 -1
- package/dist-esm/socket/index.js +1 -0
- package/dist-esm/socket/index.js.map +1 -1
- package/dist-esm/socket/util.d.ts.map +1 -1
- package/dist-esm/socket/util.js +15 -1
- package/dist-esm/socket/util.js.map +1 -1
- package/dist-esm/socket/util.test.js +12 -2
- package/dist-esm/socket/util.test.js.map +1 -1
- package/dist-esm/types/ai/index.d.ts +3 -0
- package/dist-esm/types/ai/index.d.ts.map +1 -1
- package/dist-esm/types/ai/index.js +3 -0
- package/dist-esm/types/ai/index.js.map +1 -1
- package/dist-esm/types/application/index.d.ts +12 -0
- package/dist-esm/types/application/index.d.ts.map +1 -1
- package/dist-esm/types/application/index.js.map +1 -1
- package/dist-esm/types/codeSecurity/index.d.ts +55 -1
- package/dist-esm/types/codeSecurity/index.d.ts.map +1 -1
- package/dist-esm/types/codeSecurity/index.js +17 -1
- package/dist-esm/types/codeSecurity/index.js.map +1 -1
- package/dist-esm/types/codeSecurity/index.test.d.ts +2 -0
- package/dist-esm/types/codeSecurity/index.test.d.ts.map +1 -0
- package/dist-esm/types/codeSecurity/index.test.js +17 -0
- package/dist-esm/types/codeSecurity/index.test.js.map +1 -0
- package/dist-esm/types/datasource/auth.d.ts +12 -1
- package/dist-esm/types/datasource/auth.d.ts.map +1 -1
- package/dist-esm/types/datasource/auth.js +19 -2
- package/dist-esm/types/datasource/auth.js.map +1 -1
- package/dist-esm/types/datasource/auth.test.js +3 -1
- package/dist-esm/types/datasource/auth.test.js.map +1 -1
- package/dist-esm/types/group/index.d.ts +1 -3
- package/dist-esm/types/group/index.d.ts.map +1 -1
- package/dist-esm/types/group/index.js +1 -3
- package/dist-esm/types/group/index.js.map +1 -1
- package/dist-esm/types/integration/index.d.ts +11 -1
- package/dist-esm/types/integration/index.d.ts.map +1 -1
- package/dist-esm/types/integration/index.js +11 -1
- package/dist-esm/types/integration/index.js.map +1 -1
- package/dist-esm/types/plugin/form.d.ts +32 -0
- package/dist-esm/types/plugin/form.d.ts.map +1 -1
- package/dist-esm/types/plugin/form.js +68 -0
- package/dist-esm/types/plugin/form.js.map +1 -1
- package/dist-esm/types/plugin/form.test.js +129 -1
- package/dist-esm/types/plugin/form.test.js.map +1 -1
- package/dist-esm/types/profile/index.d.ts +16 -1
- package/dist-esm/types/profile/index.d.ts.map +1 -1
- package/dist-esm/types/profile/index.js +7 -1
- package/dist-esm/types/profile/index.js.map +1 -1
- package/dist-esm/types/rbac/index.d.ts +2 -0
- package/dist-esm/types/rbac/index.d.ts.map +1 -1
- package/dist-esm/types/rbac/index.js +2 -0
- package/dist-esm/types/rbac/index.js.map +1 -1
- package/dist-esm/types/response/GetRecentApplicationsResponseBody.d.ts +4 -0
- package/dist-esm/types/response/GetRecentApplicationsResponseBody.d.ts.map +1 -0
- package/dist-esm/types/response/GetRecentApplicationsResponseBody.js +2 -0
- package/dist-esm/types/response/GetRecentApplicationsResponseBody.js.map +1 -0
- package/dist-esm/types/response/index.d.ts +1 -0
- package/dist-esm/types/response/index.d.ts.map +1 -1
- package/dist-esm/types/response/index.js +1 -0
- package/dist-esm/types/response/index.js.map +1 -1
- package/package.json +1 -1
- package/src/database-lifecycle/appDatabaseCompatibility.test.ts +55 -0
- package/src/database-lifecycle/appDatabaseCompatibility.ts +62 -0
- package/src/database-lifecycle/destructiveMigrations.test.ts +108 -1
- package/src/database-lifecycle/destructiveMigrations.ts +129 -0
- package/src/database-lifecycle/index.ts +173 -0
- package/src/database-lifecycle/providerDiagnostics.test.ts +134 -0
- package/src/environment-compatibility/appEnvironmentCompatibility.test.ts +326 -0
- package/src/environment-compatibility/appEnvironmentCompatibility.ts +173 -0
- package/src/errors/http.test.ts +32 -0
- package/src/errors/http.ts +24 -6
- package/src/index.ts +2 -0
- package/src/plugins/templates/restApiIntegration.ts +2 -0
- package/src/plugins/templates/shared/auth.test.ts +162 -0
- package/src/plugins/templates/shared/auth.ts +135 -18
- package/src/plugins/templates/shared/restapiintegration.ts +3 -1
- package/src/socket/dist-entry.test.ts +29 -0
- package/src/socket/heartbeat.test.ts +538 -0
- package/src/socket/heartbeat.ts +469 -0
- package/src/socket/index.ts +1 -0
- package/src/socket/util.test.ts +14 -2
- package/src/socket/util.ts +15 -1
- package/src/types/ai/index.ts +3 -0
- package/src/types/application/index.ts +14 -0
- package/src/types/codeSecurity/index.test.ts +21 -0
- package/src/types/codeSecurity/index.ts +83 -1
- package/src/types/datasource/auth.test.ts +3 -1
- package/src/types/datasource/auth.ts +24 -3
- package/src/types/group/index.ts +1 -3
- package/src/types/integration/index.ts +14 -0
- package/src/types/plugin/form.test.ts +174 -1
- package/src/types/plugin/form.ts +100 -2
- package/src/types/profile/index.ts +19 -1
- package/src/types/rbac/index.ts +2 -0
- package/src/types/response/GetRecentApplicationsResponseBody.ts +4 -0
- package/src/types/response/index.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetRecentApplicationsResponseBody.js","sourceRoot":"","sources":["../../../src/types/response/GetRecentApplicationsResponseBody.ts"],"names":[],"mappings":""}
|
|
@@ -41,6 +41,7 @@ export * from './GetPublicApiResponseBody.js';
|
|
|
41
41
|
export * from './GetPublicOrganizationSummaryResponseBody.js';
|
|
42
42
|
export * from './IssueSuperblocksResponseBody.js';
|
|
43
43
|
export * from './GetAllApplicationsResponseBody.js';
|
|
44
|
+
export * from './GetRecentApplicationsResponseBody.js';
|
|
44
45
|
export * from './PatchApplicationResponseBody.js';
|
|
45
46
|
export * from './PatchHomePageItemsResponseBody.js';
|
|
46
47
|
export * from './ListApplicationBuildsResponseBody.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/response/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,oDAAoD,CAAC;AACnE,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/response/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AACrD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,oDAAoD,CAAC;AACnE,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+CAA+C,CAAC;AAC9D,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC"}
|
|
@@ -57,6 +57,7 @@ __exportStar(require("./GetPublicApiResponseBody.js"), exports);
|
|
|
57
57
|
__exportStar(require("./GetPublicOrganizationSummaryResponseBody.js"), exports);
|
|
58
58
|
__exportStar(require("./IssueSuperblocksResponseBody.js"), exports);
|
|
59
59
|
__exportStar(require("./GetAllApplicationsResponseBody.js"), exports);
|
|
60
|
+
__exportStar(require("./GetRecentApplicationsResponseBody.js"), exports);
|
|
60
61
|
__exportStar(require("./PatchApplicationResponseBody.js"), exports);
|
|
61
62
|
__exportStar(require("./PatchHomePageItemsResponseBody.js"), exports);
|
|
62
63
|
__exportStar(require("./ListApplicationBuildsResponseBody.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/response/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwD;AACxD,yEAAuD;AACvD,qEAAmD;AACnD,6DAA2C;AAC3C,iEAA+C;AAC/C,0DAAwC;AACxC,yEAAuD;AACvD,0EAAwD;AACxD,kEAAgD;AAChD,qEAAmD;AACnD,2EAAyD;AACzD,sEAAoD;AACpD,iEAA+C;AAC/C,+EAA6D;AAC7D,uEAAqD;AACrD,+EAA6D;AAC7D,qFAAmE;AACnE,yEAAuD;AACvD,yEAAuD;AACvD,wEAAsD;AACtD,wEAAsD;AACtD,uEAAqD;AACrD,uEAAqD;AACrD,6EAA2D;AAC3D,iEAA+C;AAC/C,gEAA8C;AAC9C,gEAA8C;AAC9C,6EAA2D;AAC3D,qEAAmD;AACnD,yEAAuD;AACvD,0EAAwD;AACxD,8EAA4D;AAC5D,wEAAsD;AACtD,gEAA8C;AAC9C,yEAAuD;AACvD,iFAA+D;AAC/D,iEAA+C;AAC/C,gFAA8D;AAC9D,wEAAsD;AACtD,gEAA8C;AAC9C,gFAA8D;AAC9D,oEAAkD;AAClD,sEAAoD;AACpD,oEAAkD;AAClD,sEAAoD;AACpD,yEAAuD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/response/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAAwD;AACxD,yEAAuD;AACvD,qEAAmD;AACnD,6DAA2C;AAC3C,iEAA+C;AAC/C,0DAAwC;AACxC,yEAAuD;AACvD,0EAAwD;AACxD,kEAAgD;AAChD,qEAAmD;AACnD,2EAAyD;AACzD,sEAAoD;AACpD,iEAA+C;AAC/C,+EAA6D;AAC7D,uEAAqD;AACrD,+EAA6D;AAC7D,qFAAmE;AACnE,yEAAuD;AACvD,yEAAuD;AACvD,wEAAsD;AACtD,wEAAsD;AACtD,uEAAqD;AACrD,uEAAqD;AACrD,6EAA2D;AAC3D,iEAA+C;AAC/C,gEAA8C;AAC9C,gEAA8C;AAC9C,6EAA2D;AAC3D,qEAAmD;AACnD,yEAAuD;AACvD,0EAAwD;AACxD,8EAA4D;AAC5D,wEAAsD;AACtD,gEAA8C;AAC9C,yEAAuD;AACvD,iFAA+D;AAC/D,iEAA+C;AAC/C,gFAA8D;AAC9D,wEAAsD;AACtD,gEAA8C;AAC9C,gFAA8D;AAC9D,oEAAkD;AAClD,sEAAoD;AACpD,yEAAuD;AACvD,oEAAkD;AAClD,sEAAoD;AACpD,yEAAuD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ViewMode } from '../types/event/index.js';
|
|
2
|
+
import type { LifecycleOperation } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Whether lifecycle workers can serve App Database work for one data tag.
|
|
5
|
+
*
|
|
6
|
+
* `unsupported` is a standing gap: workers are connected, but none of them
|
|
7
|
+
* handles this tag. `temporarily_unavailable` means we could not tell —
|
|
8
|
+
* nothing is registered right now, or the lookup itself failed — so the tag
|
|
9
|
+
* may start working again without anyone changing the app.
|
|
10
|
+
*/
|
|
11
|
+
export declare const APP_DATABASE_TAG_SUPPORT_STATES: readonly ["supported", "temporarily_unavailable", "unsupported"];
|
|
12
|
+
export type AppDatabaseTagSupportState = (typeof APP_DATABASE_TAG_SUPPORT_STATES)[number];
|
|
13
|
+
export declare const APP_DATABASE_COMPATIBILITY_STATES: readonly ["compatible", "incompatible", "temporarily_unavailable"];
|
|
14
|
+
export type AppDatabaseCompatibilityState = (typeof APP_DATABASE_COMPATIBILITY_STATES)[number];
|
|
15
|
+
/** Lifecycle operations an App Database cannot work without. */
|
|
16
|
+
export declare const APP_DATABASE_REQUIRED_OPERATIONS: readonly LifecycleOperation[];
|
|
17
|
+
export type AppDatabaseTagCompatibility = {
|
|
18
|
+
/** App view modes that offer this data tag, for messaging. */
|
|
19
|
+
availableModes: ViewMode[];
|
|
20
|
+
missingOperations: LifecycleOperation[];
|
|
21
|
+
profileKey: string;
|
|
22
|
+
requiredOperations: LifecycleOperation[];
|
|
23
|
+
supportState: AppDatabaseTagSupportState;
|
|
24
|
+
};
|
|
25
|
+
export type AppDatabaseCompatibility = {
|
|
26
|
+
applicationId: string;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the app declares an App Database right now. An app without one is
|
|
29
|
+
* never blocked by a data tag gap, so callers use this to stay quiet instead
|
|
30
|
+
* of warning about a problem the user does not have.
|
|
31
|
+
*/
|
|
32
|
+
hasAppDatabase: boolean;
|
|
33
|
+
/** True only when someone has to change the app for it to work again. */
|
|
34
|
+
needsAttention: boolean;
|
|
35
|
+
overallState: AppDatabaseCompatibilityState;
|
|
36
|
+
/** Every data tag the app can run App Database work for, sorted by key. */
|
|
37
|
+
tags: AppDatabaseTagCompatibility[];
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Fold per-tag support into the app-wide verdict. A standing gap outranks a
|
|
41
|
+
* temporary one: a tag no worker serves has to be reported even while another
|
|
42
|
+
* tag's capability is momentarily unknown, otherwise the outage hides work the
|
|
43
|
+
* user actually has to do.
|
|
44
|
+
*/
|
|
45
|
+
export declare function rollUpAppDatabaseCompatibility(tags: readonly AppDatabaseTagCompatibility[]): {
|
|
46
|
+
needsAttention: boolean;
|
|
47
|
+
overallState: AppDatabaseCompatibilityState;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=appDatabaseCompatibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseCompatibility.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseCompatibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,kEAAmE,CAAC;AAChH,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1F,eAAO,MAAM,iCAAiC,oEAAqE,CAAC;AACpH,MAAM,MAAM,6BAA6B,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/F,gEAAgE;AAChE,eAAO,MAAM,gCAAgC,EAAE,SAAS,kBAAkB,EAA0C,CAAC;AAErH,MAAM,MAAM,2BAA2B,GAAG;IACxC,8DAA8D;IAC9D,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,YAAY,EAAE,0BAA0B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,6BAA6B,CAAC;IAC5C,2EAA2E;IAC3E,IAAI,EAAE,2BAA2B,EAAE,CAAC;CACrC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,SAAS,2BAA2B,EAAE,GAAG;IAC5F,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,6BAA6B,CAAC;CAC7C,CAQA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether lifecycle workers can serve App Database work for one data tag.
|
|
3
|
+
*
|
|
4
|
+
* `unsupported` is a standing gap: workers are connected, but none of them
|
|
5
|
+
* handles this tag. `temporarily_unavailable` means we could not tell —
|
|
6
|
+
* nothing is registered right now, or the lookup itself failed — so the tag
|
|
7
|
+
* may start working again without anyone changing the app.
|
|
8
|
+
*/
|
|
9
|
+
export const APP_DATABASE_TAG_SUPPORT_STATES = ['supported', 'temporarily_unavailable', 'unsupported'];
|
|
10
|
+
export const APP_DATABASE_COMPATIBILITY_STATES = ['compatible', 'incompatible', 'temporarily_unavailable'];
|
|
11
|
+
/** Lifecycle operations an App Database cannot work without. */
|
|
12
|
+
export const APP_DATABASE_REQUIRED_OPERATIONS = ['ensure_database', 'migrate_schema'];
|
|
13
|
+
/**
|
|
14
|
+
* Fold per-tag support into the app-wide verdict. A standing gap outranks a
|
|
15
|
+
* temporary one: a tag no worker serves has to be reported even while another
|
|
16
|
+
* tag's capability is momentarily unknown, otherwise the outage hides work the
|
|
17
|
+
* user actually has to do.
|
|
18
|
+
*/
|
|
19
|
+
export function rollUpAppDatabaseCompatibility(tags) {
|
|
20
|
+
if (tags.some((tag) => tag.supportState === 'unsupported')) {
|
|
21
|
+
return { needsAttention: true, overallState: 'incompatible' };
|
|
22
|
+
}
|
|
23
|
+
if (tags.some((tag) => tag.supportState === 'temporarily_unavailable')) {
|
|
24
|
+
return { needsAttention: false, overallState: 'temporarily_unavailable' };
|
|
25
|
+
}
|
|
26
|
+
return { needsAttention: false, overallState: 'compatible' };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=appDatabaseCompatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseCompatibility.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseCompatibility.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,WAAW,EAAE,yBAAyB,EAAE,aAAa,CAAU,CAAC;AAGhH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,yBAAyB,CAAU,CAAC;AAGpH,gEAAgE;AAChE,MAAM,CAAC,MAAM,gCAAgC,GAAkC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AA0BrH;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAA4C;IAIzF,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,KAAK,yBAAyB,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseCompatibility.test.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseCompatibility.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import { ViewMode } from '../types/event/index.js';
|
|
3
|
+
import { rollUpAppDatabaseCompatibility } from './appDatabaseCompatibility.js';
|
|
4
|
+
function tag(overrides) {
|
|
5
|
+
return {
|
|
6
|
+
availableModes: [ViewMode.EDITOR],
|
|
7
|
+
missingOperations: [],
|
|
8
|
+
requiredOperations: ['ensure_database', 'migrate_schema'],
|
|
9
|
+
...overrides
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
describe('rolling up per-tag support into an app-wide verdict', () => {
|
|
13
|
+
test('an app whose every data tag is served is compatible', () => {
|
|
14
|
+
const rollUp = rollUpAppDatabaseCompatibility([
|
|
15
|
+
tag({ profileKey: 'staging', supportState: 'supported' }),
|
|
16
|
+
tag({ profileKey: 'production', supportState: 'supported' })
|
|
17
|
+
]);
|
|
18
|
+
expect(rollUp).toEqual({ needsAttention: false, overallState: 'compatible' });
|
|
19
|
+
});
|
|
20
|
+
test('one unserved data tag makes the whole app incompatible even when siblings are served', () => {
|
|
21
|
+
const rollUp = rollUpAppDatabaseCompatibility([
|
|
22
|
+
tag({ profileKey: 'staging', supportState: 'supported' }),
|
|
23
|
+
tag({ missingOperations: ['ensure_database'], profileKey: 'restricted', supportState: 'unsupported' })
|
|
24
|
+
]);
|
|
25
|
+
expect(rollUp).toEqual({ needsAttention: true, overallState: 'incompatible' });
|
|
26
|
+
});
|
|
27
|
+
test('a capability lookup outage is reported as temporary rather than as a missing capability', () => {
|
|
28
|
+
const rollUp = rollUpAppDatabaseCompatibility([
|
|
29
|
+
tag({ profileKey: 'staging', supportState: 'temporarily_unavailable' }),
|
|
30
|
+
tag({ profileKey: 'production', supportState: 'temporarily_unavailable' })
|
|
31
|
+
]);
|
|
32
|
+
expect(rollUp).toEqual({ needsAttention: false, overallState: 'temporarily_unavailable' });
|
|
33
|
+
});
|
|
34
|
+
test('a permanently unserved tag is still reported while another tag is only temporarily unknown', () => {
|
|
35
|
+
const rollUp = rollUpAppDatabaseCompatibility([
|
|
36
|
+
tag({ profileKey: 'staging', supportState: 'temporarily_unavailable' }),
|
|
37
|
+
tag({ missingOperations: ['migrate_schema'], profileKey: 'restricted', supportState: 'unsupported' })
|
|
38
|
+
]);
|
|
39
|
+
expect(rollUp).toEqual({ needsAttention: true, overallState: 'incompatible' });
|
|
40
|
+
});
|
|
41
|
+
test('an app with no data tags to check is compatible', () => {
|
|
42
|
+
expect(rollUpAppDatabaseCompatibility([])).toEqual({ needsAttention: false, overallState: 'compatible' });
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=appDatabaseCompatibility.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseCompatibility.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseCompatibility.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAoC,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEjH,SAAS,GAAG,CAAC,SAAkH;IAC7H,OAAO;QACL,cAAc,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,iBAAiB,EAAE,EAAE;QACrB,kBAAkB,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;QACzD,GAAG,SAAS;KACyB,CAAC;AAC1C,CAAC;AAED,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;IACnE,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC5C,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YACzD,GAAG,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAChG,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC5C,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YACzD,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;SACvG,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACnG,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC5C,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;YACvE,GAAG,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;SAC3E,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACtG,MAAM,MAAM,GAAG,8BAA8B,CAAC;YAC5C,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC;YACvE,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;SACtG,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -23,4 +23,16 @@ export type DestructiveMigrationFile = {
|
|
|
23
23
|
* explicit user acknowledgment before apply/deploy.
|
|
24
24
|
*/
|
|
25
25
|
export declare function analyzeDestructiveMigrations(files: DestructiveMigrationFile[]): DestructiveMigrationFinding[];
|
|
26
|
+
/**
|
|
27
|
+
* Like analyzeDestructiveMigrations, but omits drops/truncates of objects this
|
|
28
|
+
* same unscanned batch created earlier. Those remove nothing that existed before
|
|
29
|
+
* the batch started, so they are not acknowledged. A drop that appears before
|
|
30
|
+
* its create, or that targets an object the batch never creates, still requires
|
|
31
|
+
* an ack — including when the control plane has never migrated this binding,
|
|
32
|
+
* because a ready database can hold tables the app wrote without migrations.
|
|
33
|
+
*
|
|
34
|
+
* DROP DATABASE / DROP SCHEMA are never suppressed this way: creating the
|
|
35
|
+
* container in the same batch does not prove it is free of customer data.
|
|
36
|
+
*/
|
|
37
|
+
export declare function analyzeDestructiveMigrationsRequiringAck(files: DestructiveMigrationFile[]): DestructiveMigrationFinding[];
|
|
26
38
|
//# sourceMappingURL=destructiveMigrations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destructiveMigrations.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,EAAG,oCAA6C,CAAC;AAChG;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EACrD,6EAAsF,CAAC;AACzF,8EAA8E;AAC9E,eAAO,MAAM,sCAAsC,EAAG,wCAAiD,CAAC;AAExG,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEnH,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;
|
|
1
|
+
{"version":3,"file":"destructiveMigrations.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,EAAG,oCAA6C,CAAC;AAChG;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,EACrD,6EAAsF,CAAC;AACzF,8EAA8E;AAC9E,eAAO,MAAM,sCAAsC,EAAG,wCAAiD,CAAC;AAExG,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;AAEnH,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAyJF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,EAAE,GAAG,2BAA2B,EAAE,CAiB7G;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,wBAAwB,EAAE,GAAG,2BAA2B,EAAE,CAuBzH"}
|
|
@@ -60,6 +60,84 @@ function classifyStatement(statement) {
|
|
|
60
60
|
}
|
|
61
61
|
return undefined;
|
|
62
62
|
}
|
|
63
|
+
function normalizeSqlIdent(raw) {
|
|
64
|
+
return raw.replace(/"/g, '').toLowerCase();
|
|
65
|
+
}
|
|
66
|
+
/** Optional schema-qualified identifier, with optional quoting on each part. */
|
|
67
|
+
const SQL_IDENT = String.raw `(?:"[^"]+"|\w+)(?:\.(?:"[^"]+"|\w+))?`;
|
|
68
|
+
function matchFirstIdent(statement, pattern) {
|
|
69
|
+
const match = pattern.exec(statement);
|
|
70
|
+
const raw = match?.[1];
|
|
71
|
+
return raw === undefined ? undefined : normalizeSqlIdent(raw);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Pull every table name from a comma-separated DROP TABLE / TRUNCATE list.
|
|
75
|
+
* Returns undefined when the list cannot be parsed safely — callers must then
|
|
76
|
+
* require acknowledgment (fail closed).
|
|
77
|
+
*/
|
|
78
|
+
function matchTableListTargets(statement, header) {
|
|
79
|
+
const headerMatch = header.exec(statement);
|
|
80
|
+
if (headerMatch === null) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const afterHeader = statement.slice(headerMatch[0].length);
|
|
84
|
+
const listPart = afterHeader.split(/\b(?:CASCADE|RESTRICT|CONTINUE\s+IDENTITY|RESTART\s+IDENTITY)\b/i)[0] ?? '';
|
|
85
|
+
const tables = [];
|
|
86
|
+
for (const part of listPart.split(',')) {
|
|
87
|
+
const trimmed = part.trim();
|
|
88
|
+
if (trimmed.length === 0) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
// TRUNCATE allows ONLY before each name.
|
|
92
|
+
const raw = matchFirstIdent(trimmed, new RegExp(String.raw `^(?:ONLY\s+)?(${SQL_IDENT})`, 'i'));
|
|
93
|
+
if (raw === undefined) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
tables.push(raw);
|
|
97
|
+
}
|
|
98
|
+
return tables.length > 0 ? tables : undefined;
|
|
99
|
+
}
|
|
100
|
+
function allTablesCreatedInBatch(tables, createdTables) {
|
|
101
|
+
return tables !== undefined && tables.length > 0 && tables.every((table) => createdTables.has(table));
|
|
102
|
+
}
|
|
103
|
+
function recordCreates(statement, createdTables, createdColumns) {
|
|
104
|
+
const table = matchFirstIdent(statement, new RegExp(String.raw `^\s*CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(${SQL_IDENT})`, 'i'));
|
|
105
|
+
if (table !== undefined) {
|
|
106
|
+
createdTables.add(table);
|
|
107
|
+
}
|
|
108
|
+
const addColumn = new RegExp(String.raw `^\s*ALTER\s+TABLE\s+(${SQL_IDENT})\s+ADD\s+(?:COLUMN\s+)?(${SQL_IDENT})`, 'i').exec(statement);
|
|
109
|
+
if (addColumn?.[1] !== undefined && addColumn[2] !== undefined) {
|
|
110
|
+
createdColumns.add(`${normalizeSqlIdent(addColumn[1])}.${normalizeSqlIdent(addColumn[2])}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function isCoveredByEarlierCreate(kind, statement, createdTables, createdColumns) {
|
|
114
|
+
switch (kind) {
|
|
115
|
+
case 'drop_table': {
|
|
116
|
+
return allTablesCreatedInBatch(matchTableListTargets(statement, /^\s*DROP\s+TABLE\s+(?:IF\s+EXISTS\s+)?/i), createdTables);
|
|
117
|
+
}
|
|
118
|
+
case 'truncate': {
|
|
119
|
+
return allTablesCreatedInBatch(matchTableListTargets(statement, /^\s*TRUNCATE\s+(?:TABLE\s+)?/i), createdTables);
|
|
120
|
+
}
|
|
121
|
+
case 'drop_column': {
|
|
122
|
+
const alterDrop = new RegExp(String.raw `^\s*ALTER\s+TABLE\s+(${SQL_IDENT})\s+[\s\S]*?\bDROP\s+(?:COLUMN\s+)?(?!CONSTRAINT\b|INDEX\b|TRIGGER\b|RULE\b|POLICY\b|STATISTICS\b|IDENTITY\b|NOT\b|DEFAULT\b|EXPRESSION\b)(${SQL_IDENT})`, 'i').exec(statement);
|
|
123
|
+
if (alterDrop?.[1] !== undefined && alterDrop[2] !== undefined) {
|
|
124
|
+
const table = normalizeSqlIdent(alterDrop[1]);
|
|
125
|
+
const column = normalizeSqlIdent(alterDrop[2]);
|
|
126
|
+
return createdTables.has(table) || createdColumns.has(`${table}.${column}`);
|
|
127
|
+
}
|
|
128
|
+
// Standalone DROP COLUMN has no table context — cannot prove coverage.
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
case 'drop_database':
|
|
132
|
+
case 'drop_schema':
|
|
133
|
+
// Creating the container in the same batch does not prove it is free of
|
|
134
|
+
// customer data, so these always require an acknowledgment.
|
|
135
|
+
return false;
|
|
136
|
+
default: {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
63
141
|
/**
|
|
64
142
|
* Scans migration SQL for schema-destroying statements that require an
|
|
65
143
|
* explicit user acknowledgment before apply/deploy.
|
|
@@ -82,4 +160,39 @@ export function analyzeDestructiveMigrations(files) {
|
|
|
82
160
|
}
|
|
83
161
|
return findings;
|
|
84
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Like analyzeDestructiveMigrations, but omits drops/truncates of objects this
|
|
165
|
+
* same unscanned batch created earlier. Those remove nothing that existed before
|
|
166
|
+
* the batch started, so they are not acknowledged. A drop that appears before
|
|
167
|
+
* its create, or that targets an object the batch never creates, still requires
|
|
168
|
+
* an ack — including when the control plane has never migrated this binding,
|
|
169
|
+
* because a ready database can hold tables the app wrote without migrations.
|
|
170
|
+
*
|
|
171
|
+
* DROP DATABASE / DROP SCHEMA are never suppressed this way: creating the
|
|
172
|
+
* container in the same batch does not prove it is free of customer data.
|
|
173
|
+
*/
|
|
174
|
+
export function analyzeDestructiveMigrationsRequiringAck(files) {
|
|
175
|
+
const createdTables = new Set();
|
|
176
|
+
const createdColumns = new Set();
|
|
177
|
+
const findings = [];
|
|
178
|
+
for (const file of files) {
|
|
179
|
+
const statements = splitStatements(stripSqlComments(file.sql));
|
|
180
|
+
for (const statement of statements) {
|
|
181
|
+
recordCreates(statement, createdTables, createdColumns);
|
|
182
|
+
const kind = classifyStatement(statement);
|
|
183
|
+
if (kind === undefined) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (isCoveredByEarlierCreate(kind, statement, createdTables, createdColumns)) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
findings.push({
|
|
190
|
+
fileName: file.fileName,
|
|
191
|
+
kind,
|
|
192
|
+
excerpt: excerptFor(statement)
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return findings;
|
|
197
|
+
}
|
|
85
198
|
//# sourceMappingURL=destructiveMigrations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destructiveMigrations.js","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kCAAkC,GAAG,oCAA6C,CAAC;AAChG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0CAA0C,GACrD,6EAAsF,CAAC;AACzF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,sCAAsC,GAAG,wCAAiD,CAAC;AAexG,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;;;;;GASG;AACH,qEAAqE;AACrE,MAAM,oBAAoB,GAA0D;IAClF,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,qBAAqB,EAAE;IACjD,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,wBAAwB,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,sBAAsB,EAAE;IACnD,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE;IAC3C,sEAAsE;IACtE,4EAA4E;IAC5E,8EAA8E;IAC9E;QACE,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,iKAAiK;KACtK;IACD,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,sBAAsB,EAAE;CACpD,CAAC;AAEF,SAAS,gBAAgB,CAAC,GAAW;IACnC,6EAA6E;IAC7E,iEAAiE;IACjE,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,SAAS,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB;IAC1C,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,oBAAoB,EAAE,CAAC;QAChD,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAiC;IAC5E,MAAM,QAAQ,GAAkC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI;gBACJ,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"destructiveMigrations.js","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, test } from 'vitest';
|
|
2
|
-
import { analyzeDestructiveMigrations } from './destructiveMigrations.js';
|
|
2
|
+
import { analyzeDestructiveMigrations, analyzeDestructiveMigrationsRequiringAck } from './destructiveMigrations.js';
|
|
3
3
|
describe('analyzeDestructiveMigrations', () => {
|
|
4
4
|
test('returns empty when SQL has no destructive statements', () => {
|
|
5
5
|
expect(analyzeDestructiveMigrations([
|
|
@@ -95,4 +95,83 @@ CREATE TABLE users (id int);
|
|
|
95
95
|
expect(findings[1]).toMatchObject({ fileName: 'b.sql', kind: 'truncate' });
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
|
+
describe('analyzeDestructiveMigrationsRequiringAck', () => {
|
|
99
|
+
test('does not require an ack for a drop of a table created earlier in the same batch', () => {
|
|
100
|
+
// The whole set runs as one batch. Dropping a table that this batch just
|
|
101
|
+
// created removes nothing that existed before the batch started.
|
|
102
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
103
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE users (id int);' },
|
|
104
|
+
{ fileName: '0002_drop.sql', sql: 'DROP TABLE users;' }
|
|
105
|
+
])).toEqual([]);
|
|
106
|
+
});
|
|
107
|
+
test('still requires an ack for a drop of a table the batch never created', () => {
|
|
108
|
+
// A ready database can hold tables written by the app with no migrate
|
|
109
|
+
// history. A DROP of those is genuinely destructive.
|
|
110
|
+
expect(analyzeDestructiveMigrationsRequiringAck([{ fileName: '0001_drop.sql', sql: 'DROP TABLE orders;' }])).toEqual([
|
|
111
|
+
expect.objectContaining({ fileName: '0001_drop.sql', kind: 'drop_table' })
|
|
112
|
+
]);
|
|
113
|
+
});
|
|
114
|
+
test('still requires an ack when the drop appears before the create in the batch', () => {
|
|
115
|
+
// DROP then CREATE would wipe any pre-existing table of that name.
|
|
116
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
117
|
+
{ fileName: '0001_drop.sql', sql: 'DROP TABLE users;' },
|
|
118
|
+
{ fileName: '0002_init.sql', sql: 'CREATE TABLE users (id int);' }
|
|
119
|
+
])).toEqual([expect.objectContaining({ kind: 'drop_table' })]);
|
|
120
|
+
});
|
|
121
|
+
test('does not require an ack for truncate or drop column on a table created earlier in the batch', () => {
|
|
122
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
123
|
+
{
|
|
124
|
+
fileName: '0001_init.sql',
|
|
125
|
+
sql: 'CREATE TABLE users (id int, email text); ALTER TABLE users ADD COLUMN name text;'
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
fileName: '0002_cleanup.sql',
|
|
129
|
+
sql: 'TRUNCATE TABLE users; ALTER TABLE users DROP COLUMN email;'
|
|
130
|
+
}
|
|
131
|
+
])).toEqual([]);
|
|
132
|
+
});
|
|
133
|
+
test('still requires an ack for drop database and drop schema even after creates in the batch', () => {
|
|
134
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
135
|
+
{ fileName: '0001.sql', sql: 'CREATE SCHEMA app; CREATE DATABASE scratch;' },
|
|
136
|
+
{ fileName: '0002.sql', sql: 'DROP SCHEMA app; DROP DATABASE scratch;' }
|
|
137
|
+
])
|
|
138
|
+
.map((finding) => finding.kind)
|
|
139
|
+
.sort()).toEqual(['drop_database', 'drop_schema']);
|
|
140
|
+
});
|
|
141
|
+
test('still requires an ack for a multi-table drop when any target was not created in the batch', () => {
|
|
142
|
+
// DROP TABLE can list several names. Covering only the first must not
|
|
143
|
+
// suppress the statement — the other names may already hold customer data.
|
|
144
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
145
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE users (id int);' },
|
|
146
|
+
{ fileName: '0002_drop.sql', sql: 'DROP TABLE IF EXISTS users, orders;' }
|
|
147
|
+
])).toEqual([expect.objectContaining({ kind: 'drop_table' })]);
|
|
148
|
+
});
|
|
149
|
+
test('still requires an ack for a multi-table truncate when any target was not created in the batch', () => {
|
|
150
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
151
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE users (id int);' },
|
|
152
|
+
{ fileName: '0002_cleanup.sql', sql: 'TRUNCATE TABLE users, orders;' }
|
|
153
|
+
])).toEqual([expect.objectContaining({ kind: 'truncate' })]);
|
|
154
|
+
});
|
|
155
|
+
test('does not require an ack for a multi-table drop when every target was created in the batch', () => {
|
|
156
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
157
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE users (id int); CREATE TABLE orders (id int);' },
|
|
158
|
+
{ fileName: '0002_drop.sql', sql: 'DROP TABLE users, orders;' }
|
|
159
|
+
])).toEqual([]);
|
|
160
|
+
});
|
|
161
|
+
test('still requires an ack when create and drop use different schema qualification', () => {
|
|
162
|
+
// Exact identifier match only. public.users and users may be the same
|
|
163
|
+
// relation in Postgres, but we cannot prove that from the SQL text alone,
|
|
164
|
+
// so mismatched spelling stays acknowledged (fail closed).
|
|
165
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
166
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE users (id int);' },
|
|
167
|
+
{ fileName: '0002_drop.sql', sql: 'DROP TABLE public.users;' }
|
|
168
|
+
])).toEqual([expect.objectContaining({ kind: 'drop_table' })]);
|
|
169
|
+
});
|
|
170
|
+
test('does not require an ack when create and drop use the same schema-qualified name', () => {
|
|
171
|
+
expect(analyzeDestructiveMigrationsRequiringAck([
|
|
172
|
+
{ fileName: '0001_init.sql', sql: 'CREATE TABLE public.users (id int);' },
|
|
173
|
+
{ fileName: '0002_drop.sql', sql: 'DROP TABLE public.users;' }
|
|
174
|
+
])).toEqual([]);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
98
177
|
//# sourceMappingURL=destructiveMigrations.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destructiveMigrations.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"destructiveMigrations.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/destructiveMigrations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,51 @@ export type LifecycleTerminalState = (typeof LIFECYCLE_TERMINAL_STATES)[number];
|
|
|
22
22
|
export type LifecycleNonTerminalState = (typeof LIFECYCLE_NON_TERMINAL_STATES)[number];
|
|
23
23
|
export type LifecycleState = (typeof LIFECYCLE_STATES)[number];
|
|
24
24
|
export type LifecycleMigrationState = (typeof LIFECYCLE_MIGRATION_STATES)[number];
|
|
25
|
-
export declare const LIFECYCLE_ERROR_CODES: readonly ["unsupported_provider_capability", "backend_locked", "policy_blocked", "credential_resolution_failed", "terraform_failed", "migration_failed", "callback_failed", "stale_dispatch"];
|
|
25
|
+
export declare const LIFECYCLE_ERROR_CODES: readonly ["unsupported_provider_capability", "backend_locked", "policy_blocked", "credential_resolution_failed", "terraform_failed", "migration_failed", "callback_failed", "configuration_conflict", "stale_dispatch"];
|
|
26
26
|
export type LifecycleErrorCode = (typeof LIFECYCLE_ERROR_CODES)[number];
|
|
27
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_PHASES: readonly ["apply", "destroy", "init", "plan", "unknown"];
|
|
28
|
+
export declare const MAX_LIFECYCLE_PROVIDER_DIAGNOSTICS = 3;
|
|
29
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_SERVICE_PATTERN: RegExp;
|
|
30
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_OPERATION_PATTERN: RegExp;
|
|
31
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_ERROR_CODE_PATTERN: RegExp;
|
|
32
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_REQUEST_ID_PATTERN: RegExp;
|
|
33
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_S3_REQUEST_ID_PATTERN: RegExp;
|
|
34
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_AWS_DYNAMODB_REQUEST_ID_PATTERN: RegExp;
|
|
35
|
+
export declare const LIFECYCLE_PROVIDER_DIAGNOSTIC_POSTGRESQL_SQL_STATE_PATTERN: RegExp;
|
|
36
|
+
export declare function isLifecycleProviderDiagnosticAwsRequestId(service: string, requestId: unknown): requestId is string;
|
|
37
|
+
export type LifecycleProviderDiagnosticPhase = (typeof LIFECYCLE_PROVIDER_DIAGNOSTIC_PHASES)[number];
|
|
38
|
+
type LifecycleProviderDiagnosticBase = {
|
|
39
|
+
phase: LifecycleProviderDiagnosticPhase;
|
|
40
|
+
retryable: boolean;
|
|
41
|
+
};
|
|
42
|
+
export type LifecycleAwsProviderDiagnostic = LifecycleProviderDiagnosticBase & {
|
|
43
|
+
provider: 'aws';
|
|
44
|
+
service: string;
|
|
45
|
+
operation: string;
|
|
46
|
+
errorCode: string;
|
|
47
|
+
requestId?: string;
|
|
48
|
+
nextAction: 'review_aws_operation';
|
|
49
|
+
};
|
|
50
|
+
export type LifecyclePostgresqlProviderDiagnostic = LifecycleProviderDiagnosticBase & {
|
|
51
|
+
provider: 'postgresql';
|
|
52
|
+
sqlState: string;
|
|
53
|
+
nextAction: 'review_database_operation';
|
|
54
|
+
};
|
|
55
|
+
export type LifecycleProviderDiagnostic = LifecycleAwsProviderDiagnostic | LifecyclePostgresqlProviderDiagnostic;
|
|
56
|
+
export type LifecycleProviderDiagnosticCandidateProvider = 'aws' | 'postgresql' | 'unknown';
|
|
57
|
+
export type LifecycleProviderDiagnosticCandidateInspection = {
|
|
58
|
+
provider: LifecycleProviderDiagnosticCandidateProvider;
|
|
59
|
+
diagnostic?: LifecycleProviderDiagnostic;
|
|
60
|
+
rejectedFields?: string[];
|
|
61
|
+
sanitizedFields?: string[];
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Canonical validation boundary for one provider diagnostic. The output is
|
|
65
|
+
* rebuilt from allowlisted facts, provider-authored text and unknown fields are
|
|
66
|
+
* discarded, and decorative fields such as nextAction are derived locally.
|
|
67
|
+
*/
|
|
68
|
+
export declare function inspectLifecycleProviderDiagnosticCandidate(value: unknown): LifecycleProviderDiagnosticCandidateInspection;
|
|
69
|
+
export declare function sanitizeLifecycleProviderDiagnostics(value: unknown): LifecycleProviderDiagnostic[] | undefined;
|
|
27
70
|
export type PhysicalMasterCredentialRef = {
|
|
28
71
|
resolver: 'aws_secrets_manager';
|
|
29
72
|
ref: string;
|
|
@@ -103,7 +146,7 @@ export type LifecycleMigration = {
|
|
|
103
146
|
filename: string;
|
|
104
147
|
sql: string;
|
|
105
148
|
};
|
|
106
|
-
export { analyzeDestructiveMigrations, DESTRUCTIVE_MIGRATION_ACK_REQUIRED, DESTRUCTIVE_MIGRATION_ACK_REQUIRED_MESSAGE, DESTRUCTIVE_MIGRATION_SCAN_UNAVAILABLE } from './destructiveMigrations.js';
|
|
149
|
+
export { analyzeDestructiveMigrations, analyzeDestructiveMigrationsRequiringAck, DESTRUCTIVE_MIGRATION_ACK_REQUIRED, DESTRUCTIVE_MIGRATION_ACK_REQUIRED_MESSAGE, DESTRUCTIVE_MIGRATION_SCAN_UNAVAILABLE } from './destructiveMigrations.js';
|
|
107
150
|
export type { DestructiveMigrationFile, DestructiveMigrationFinding, DestructiveMigrationKind } from './destructiveMigrations.js';
|
|
108
151
|
export type LifecycleDispatchContinuation = {
|
|
109
152
|
currentState?: string;
|
|
@@ -120,6 +163,7 @@ export type PhysicalPoolProvisioningActor = {
|
|
|
120
163
|
};
|
|
121
164
|
export type PhysicalPoolProvisioningError = {
|
|
122
165
|
code: string;
|
|
166
|
+
diagnostics?: LifecycleProviderDiagnostic[];
|
|
123
167
|
message: string;
|
|
124
168
|
};
|
|
125
169
|
export type PhysicalPoolProvisioningState = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,yBAAyB,2CAA4C,CAAC;AACnF,eAAO,MAAM,6BAA6B,+DAAgE,CAAC;AAC3G,eAAO,MAAM,gBAAgB,+FAA4E,CAAC;AAC1G,eAAO,MAAM,0BAA0B,4CAA6C,CAAC;AASrF,eAAO,MAAM,oBAAoB,wGAAyG,CAAC;AAC3I,eAAO,MAAM,6BAA6B,uBAAuB,CAAC;AAClE,eAAO,MAAM,iCAAiC,EAAG,CAAU,CAAC;AAC5D,eAAO,MAAM,oCAAoC,oCAAoC,CAAC;AACtF,eAAO,MAAM,uBAAuB,EAAG,cAAuB,CAAC;AAC/D,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAC3E,eAAO,MAAM,4CAA4C,mBAAmB,CAAC;AAE7E,wBAAgB,iDAAiD,CAC/D,WAAW,EAAE,cAAc,EAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAKT;AASD,eAAO,MAAM,iCAAiC,iCAAiC,CAAC;AAChF,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,mCAAmC,mCAAmC,CAAC;AACpF,OAAO,EACL,6BAA6B,EAC7B,gBAAgB,EAChB,wCAAwC,EACxC,0CAA0C,EAC1C,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mCAAmC,EACnC,KAAK,cAAc,EACnB,KAAK,8BAA8B,EACnC,KAAK,qCAAqC,EAC1C,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,iCAAiC,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAExI,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAChF,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AACvF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/index.ts"],"names":[],"mappings":"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"}
|