@superblocksteam/shared 0.9619.0 → 0.9619.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.
- package/dist/database-lifecycle/appDatabaseSharing.d.ts +24 -0
- package/dist/database-lifecycle/appDatabaseSharing.d.ts.map +1 -0
- package/dist/database-lifecycle/appDatabaseSharing.js +37 -0
- package/dist/database-lifecycle/appDatabaseSharing.js.map +1 -0
- package/dist/database-lifecycle/appDatabaseSharing.test.d.ts +2 -0
- package/dist/database-lifecycle/appDatabaseSharing.test.d.ts.map +1 -0
- package/dist/database-lifecycle/appDatabaseSharing.test.js +54 -0
- package/dist/database-lifecycle/appDatabaseSharing.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/integration/index.d.ts +7 -1
- package/dist/types/integration/index.d.ts.map +1 -1
- package/dist/types/integration/index.js +7 -1
- package/dist/types/integration/index.js.map +1 -1
- package/dist/types/publishPipeline/index.d.ts +19 -0
- package/dist/types/publishPipeline/index.d.ts.map +1 -1
- package/dist/types/publishPipeline/index.js.map +1 -1
- package/dist/types/publishPipeline/plan.d.ts +1 -1
- package/dist/types/publishPipeline/plan.d.ts.map +1 -1
- package/dist/types/publishPipeline/plan.js.map +1 -1
- package/package.json +1 -1
- package/src/database-lifecycle/appDatabaseSharing.test.ts +72 -0
- package/src/database-lifecycle/appDatabaseSharing.ts +58 -0
- package/src/index.ts +1 -0
- package/src/types/integration/index.ts +8 -0
- package/src/types/publishPipeline/index.ts +20 -0
- package/src/types/publishPipeline/plan.ts +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const INTEGRATION_READ_ONLY_ROLE_NAME = "Read only";
|
|
2
|
+
export declare function isIntegrationReadOnlyRole(role: {
|
|
3
|
+
name: string;
|
|
4
|
+
organizationId?: string | null;
|
|
5
|
+
}): boolean;
|
|
6
|
+
type AppDatabaseOwnershipFields = {
|
|
7
|
+
applicationId?: string | null;
|
|
8
|
+
managedBy?: string | null;
|
|
9
|
+
};
|
|
10
|
+
export declare function isAppDatabase(integration: AppDatabaseOwnershipFields | undefined): boolean;
|
|
11
|
+
export declare function isAppDatabaseReadOnlyForApplication(integration: AppDatabaseOwnershipFields | undefined, applicationId: string | null | undefined): boolean;
|
|
12
|
+
export declare const INTEGRATION_ACCESS_LEVEL_READ_ONLY = "read_only";
|
|
13
|
+
export type IntegrationAccessLevel = typeof INTEGRATION_ACCESS_LEVEL_READ_ONLY;
|
|
14
|
+
export declare function getAppDatabaseAccessLevel(integration: (AppDatabaseOwnershipFields & {
|
|
15
|
+
ownerApplicationName?: string;
|
|
16
|
+
}) | undefined, applicationId: string | null | undefined): IntegrationAccessLevel | undefined;
|
|
17
|
+
export declare function appDatabaseAccessFields(integration: (AppDatabaseOwnershipFields & {
|
|
18
|
+
ownerApplicationName?: string;
|
|
19
|
+
}) | undefined, applicationId: string | null | undefined): {
|
|
20
|
+
accessLevel?: IntegrationAccessLevel;
|
|
21
|
+
ownerApplicationName?: string;
|
|
22
|
+
};
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=appDatabaseSharing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseSharing.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseSharing.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,+BAA+B,cAAc,CAAC;AAE3D,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,CAEzG;AAED,KAAK,0BAA0B,GAAG;IAChC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,WAAW,EAAE,0BAA0B,GAAG,SAAS,GAAG,OAAO,CAE1F;AAID,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,0BAA0B,GAAG,SAAS,EACnD,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAET;AAGD,eAAO,MAAM,kCAAkC,cAAc,CAAC;AAC9D,MAAM,MAAM,sBAAsB,GAAG,OAAO,kCAAkC,CAAC;AAK/E,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,CAAC,0BAA0B,GAAG;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EACzF,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC,sBAAsB,GAAG,SAAS,CAGpC;AAID,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,CAAC,0BAA0B,GAAG;IAAE,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EACzF,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACvC;IAAE,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,CASzE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DATABASE_LIFECYCLE_MANAGED_BY } from './index.js';
|
|
2
|
+
// The built-in integrations role that gives an app read-only access to an app
|
|
3
|
+
// database another app owns. Only 3.0 apps can hold it.
|
|
4
|
+
export const INTEGRATION_READ_ONLY_ROLE_NAME = 'Read only';
|
|
5
|
+
export function isIntegrationReadOnlyRole(role) {
|
|
6
|
+
return role.name === INTEGRATION_READ_ONLY_ROLE_NAME && !role.organizationId;
|
|
7
|
+
}
|
|
8
|
+
export function isAppDatabase(integration) {
|
|
9
|
+
return integration?.managedBy === DATABASE_LIFECYCLE_MANAGED_BY && Boolean(integration.applicationId);
|
|
10
|
+
}
|
|
11
|
+
// True when the integration is an app database owned by a different app. That
|
|
12
|
+
// app can read the data but not change it; the owning app keeps full access.
|
|
13
|
+
export function isAppDatabaseReadOnlyForApplication(integration, applicationId) {
|
|
14
|
+
return isAppDatabase(integration) && Boolean(applicationId) && integration?.applicationId !== applicationId;
|
|
15
|
+
}
|
|
16
|
+
// Same wire value the orchestrator receives in executionAccess.level.
|
|
17
|
+
export const INTEGRATION_ACCESS_LEVEL_READ_ONLY = 'read_only';
|
|
18
|
+
// The server names the owning app only in a payload built for a different
|
|
19
|
+
// app, so a named owner marks the database read-only even when the caller does
|
|
20
|
+
// not know which app it is building.
|
|
21
|
+
export function getAppDatabaseAccessLevel(integration, applicationId) {
|
|
22
|
+
const namedOwner = isAppDatabase(integration) && Boolean(integration?.ownerApplicationName);
|
|
23
|
+
return namedOwner || isAppDatabaseReadOnlyForApplication(integration, applicationId) ? INTEGRATION_ACCESS_LEVEL_READ_ONLY : undefined;
|
|
24
|
+
}
|
|
25
|
+
// Fields to copy onto an integration summary so Clark knows it may only read
|
|
26
|
+
// this database, and whose it is. Empty for anything the app can write to.
|
|
27
|
+
export function appDatabaseAccessFields(integration, applicationId) {
|
|
28
|
+
const accessLevel = getAppDatabaseAccessLevel(integration, applicationId);
|
|
29
|
+
if (!accessLevel) {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
accessLevel,
|
|
34
|
+
...(integration?.ownerApplicationName ? { ownerApplicationName: integration.ownerApplicationName } : {})
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=appDatabaseSharing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseSharing.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseSharing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE3D,8EAA8E;AAC9E,wDAAwD;AACxD,MAAM,CAAC,MAAM,+BAA+B,GAAG,WAAW,CAAC;AAE3D,MAAM,UAAU,yBAAyB,CAAC,IAAsD;IAC9F,OAAO,IAAI,CAAC,IAAI,KAAK,+BAA+B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/E,CAAC;AAOD,MAAM,UAAU,aAAa,CAAC,WAAmD;IAC/E,OAAO,WAAW,EAAE,SAAS,KAAK,6BAA6B,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACxG,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,UAAU,mCAAmC,CACjD,WAAmD,EACnD,aAAwC;IAExC,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,EAAE,aAAa,KAAK,aAAa,CAAC;AAC9G,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,MAAM,kCAAkC,GAAG,WAAW,CAAC;AAG9D,0EAA0E;AAC1E,+EAA+E;AAC/E,qCAAqC;AACrC,MAAM,UAAU,yBAAyB,CACvC,WAAyF,EACzF,aAAwC;IAExC,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAC5F,OAAO,UAAU,IAAI,mCAAmC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxI,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,MAAM,UAAU,uBAAuB,CACrC,WAAyF,EACzF,aAAwC;IAExC,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,WAAW;QACX,GAAG,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzG,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseSharing.test.d.ts","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseSharing.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { appDatabaseAccessFields, getAppDatabaseAccessLevel, INTEGRATION_READ_ONLY_ROLE_NAME, isAppDatabase, isAppDatabaseReadOnlyForApplication, isIntegrationReadOnlyRole } from './appDatabaseSharing.js';
|
|
3
|
+
import { DATABASE_LIFECYCLE_MANAGED_BY } from './index.js';
|
|
4
|
+
const appDatabase = { applicationId: 'owner-app', managedBy: DATABASE_LIFECYCLE_MANAGED_BY };
|
|
5
|
+
describe('isIntegrationReadOnlyRole', () => {
|
|
6
|
+
it('matches only the built-in role, not an org role with the same name', () => {
|
|
7
|
+
expect(isIntegrationReadOnlyRole({ name: INTEGRATION_READ_ONLY_ROLE_NAME, organizationId: null })).toBe(true);
|
|
8
|
+
expect(isIntegrationReadOnlyRole({ name: INTEGRATION_READ_ONLY_ROLE_NAME, organizationId: 'org-1' })).toBe(false);
|
|
9
|
+
expect(isIntegrationReadOnlyRole({ name: 'Developer', organizationId: null })).toBe(false);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
describe('isAppDatabase', () => {
|
|
13
|
+
it('is true only for a lifecycle-managed integration with an owning app', () => {
|
|
14
|
+
expect(isAppDatabase(appDatabase)).toBe(true);
|
|
15
|
+
expect(isAppDatabase({ applicationId: 'owner-app', managedBy: null })).toBe(false);
|
|
16
|
+
expect(isAppDatabase({ applicationId: null, managedBy: DATABASE_LIFECYCLE_MANAGED_BY })).toBe(false);
|
|
17
|
+
expect(isAppDatabase(undefined)).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
describe('isAppDatabaseReadOnlyForApplication', () => {
|
|
21
|
+
it('is read-only for an app that does not own the database', () => {
|
|
22
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, 'consumer-app')).toBe(true);
|
|
23
|
+
});
|
|
24
|
+
it('gives the owning app full access', () => {
|
|
25
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, 'owner-app')).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
it('is not read-only without an app context', () => {
|
|
28
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, undefined)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
it('is not read-only for org integrations', () => {
|
|
31
|
+
expect(isAppDatabaseReadOnlyForApplication({ applicationId: 'owner-app', managedBy: null }, 'consumer-app')).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('getAppDatabaseAccessLevel', () => {
|
|
35
|
+
it('reports read_only for an app database another app owns', () => {
|
|
36
|
+
expect(getAppDatabaseAccessLevel(appDatabase, 'consumer-app')).toBe('read_only');
|
|
37
|
+
});
|
|
38
|
+
it('reports nothing when the app has full access', () => {
|
|
39
|
+
expect(getAppDatabaseAccessLevel(appDatabase, 'owner-app')).toBeUndefined();
|
|
40
|
+
expect(getAppDatabaseAccessLevel({ applicationId: null, managedBy: null }, 'consumer-app')).toBeUndefined();
|
|
41
|
+
});
|
|
42
|
+
it('names the owner alongside read_only, and nothing for a database the app can write to', () => {
|
|
43
|
+
const shared = { ...appDatabase, ownerApplicationName: 'Orders' };
|
|
44
|
+
expect(appDatabaseAccessFields(shared, 'consumer-app')).toEqual({ accessLevel: 'read_only', ownerApplicationName: 'Orders' });
|
|
45
|
+
expect(appDatabaseAccessFields(appDatabase, 'consumer-app')).toEqual({ accessLevel: 'read_only' });
|
|
46
|
+
expect(appDatabaseAccessFields(appDatabase, 'owner-app')).toEqual({});
|
|
47
|
+
});
|
|
48
|
+
it('reports read_only when the server named another owning app, even without an app context', () => {
|
|
49
|
+
const shared = { ...appDatabase, ownerApplicationName: 'Orders' };
|
|
50
|
+
expect(getAppDatabaseAccessLevel(shared, undefined)).toBe('read_only');
|
|
51
|
+
expect(getAppDatabaseAccessLevel(appDatabase, undefined)).toBeUndefined();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=appDatabaseSharing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appDatabaseSharing.test.js","sourceRoot":"","sources":["../../src/database-lifecycle/appDatabaseSharing.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export * from './database-lifecycle/index.js';
|
|
|
31
31
|
export * from './database-lifecycle/appDatabaseCompatibility.js';
|
|
32
32
|
export * from './database-lifecycle/importCompatibility.js';
|
|
33
33
|
export type * from './database-lifecycle/appDatabaseMigrations.js';
|
|
34
|
+
export * from './database-lifecycle/appDatabaseSharing.js';
|
|
34
35
|
export * from './database-lifecycle/appDatabaseStatus.js';
|
|
35
36
|
export * from './database-lifecycle/edit-lifecycle-capability.js';
|
|
36
37
|
export * from './environment-compatibility/appEnvironmentCompatibility.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,mBAAmB,+CAA+C,CAAC;AACnE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAC5D,mBAAmB,+CAA+C,CAAC;AACnE,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export * from './org-features/index.js';
|
|
|
30
30
|
export * from './database-lifecycle/index.js';
|
|
31
31
|
export * from './database-lifecycle/appDatabaseCompatibility.js';
|
|
32
32
|
export * from './database-lifecycle/importCompatibility.js';
|
|
33
|
+
export * from './database-lifecycle/appDatabaseSharing.js';
|
|
33
34
|
export * from './database-lifecycle/appDatabaseStatus.js';
|
|
34
35
|
export * from './database-lifecycle/edit-lifecycle-capability.js';
|
|
35
36
|
export * from './environment-compatibility/appEnvironmentCompatibility.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAE5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kDAAkD,CAAC;AACjE,cAAc,6CAA6C,CAAC;AAE5D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC"}
|
|
@@ -70,6 +70,11 @@ export declare class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
70
70
|
*/
|
|
71
71
|
configuredProfileKeys: string[];
|
|
72
72
|
hasDefaultConfiguration: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Name of the app that owns this App Database. Set only when the payload is for a different
|
|
75
|
+
* app, which can read the database but not change it.
|
|
76
|
+
*/
|
|
77
|
+
ownerApplicationName?: string;
|
|
73
78
|
slug?: string;
|
|
74
79
|
ownerEmail?: string;
|
|
75
80
|
readOnly: boolean;
|
|
@@ -78,7 +83,7 @@ export declare class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
78
83
|
permissions?: ActionTypeEnum[];
|
|
79
84
|
creator?: CreatorDto;
|
|
80
85
|
enabledForV2?: boolean;
|
|
81
|
-
constructor({ id, created, updated, deactivated, name, pluginId, kind, organizationId, configurations, configurationSummaries, configuredProfileKeys, demoIntegrationId, hasDefaultConfiguration, isUserConfigured, ownerEmail, slug, readOnly, editable, permissions, creator, enabledForV2, applicationId, managedBy, userEditable }: {
|
|
86
|
+
constructor({ id, created, updated, deactivated, name, pluginId, kind, organizationId, configurations, configurationSummaries, configuredProfileKeys, demoIntegrationId, hasDefaultConfiguration, isUserConfigured, ownerApplicationName, ownerEmail, slug, readOnly, editable, permissions, creator, enabledForV2, applicationId, managedBy, userEditable }: {
|
|
82
87
|
id: string;
|
|
83
88
|
created: Date;
|
|
84
89
|
updated: Date;
|
|
@@ -97,6 +102,7 @@ export declare class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
97
102
|
hasDefaultConfiguration?: boolean;
|
|
98
103
|
demoIntegrationId?: string;
|
|
99
104
|
isUserConfigured: boolean;
|
|
105
|
+
ownerApplicationName?: string;
|
|
100
106
|
ownerEmail?: string;
|
|
101
107
|
slug?: string;
|
|
102
108
|
readOnly: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/integration/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnE,qBAAa,2BAA2B;IACtC,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEZ,EACV,EAAE,EACF,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EACb,EAAE;QACD,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,IAAI,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,uBAAuB,CAAC;QACvC,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB;CASF;AAID,qBAAa,mCAAmC;IAC9C,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IAInB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEV,EACV,EAAE,EACF,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACX,EAAE;QACD,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,IAAI,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QAEtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACnC,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB;CAQF;AAED,cAAM,kBAAkB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAI1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,cAAc,EAAE,2BAA2B,EAAE,CAAC;IAC9C;;;;OAIG;IACH,sBAAsB,EAAE,KAAK,CAAC;QAC5B,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC,CAAC;IACH;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;gBAEX,EACV,EAAE,EACF,OAAO,EACP,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACT,YAAY,EACb,EAAE;QACD,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,IAAI,CAAC;QACd,OAAO,EAAE,IAAI,CAAC;QACd,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,eAAe,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,2BAA2B,EAAE,CAAC;QAC9C,sBAAsB,CAAC,EAAE,KAAK,CAAC;YAC7B,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,EAAE,OAAO,CAAC;YACnB,UAAU,EAAE,MAAM,EAAE,CAAC;SACtB,CAAC,CAAC;QACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;QACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;QAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/integration/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,11 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
76
76
|
*/
|
|
77
77
|
configuredProfileKeys;
|
|
78
78
|
hasDefaultConfiguration;
|
|
79
|
+
/**
|
|
80
|
+
* Name of the app that owns this App Database. Set only when the payload is for a different
|
|
81
|
+
* app, which can read the database but not change it.
|
|
82
|
+
*/
|
|
83
|
+
ownerApplicationName;
|
|
79
84
|
slug;
|
|
80
85
|
ownerEmail;
|
|
81
86
|
readOnly;
|
|
@@ -84,7 +89,7 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
84
89
|
permissions;
|
|
85
90
|
creator;
|
|
86
91
|
enabledForV2;
|
|
87
|
-
constructor({ id, created, updated, deactivated, name, pluginId, kind, organizationId, configurations, configurationSummaries, configuredProfileKeys, demoIntegrationId, hasDefaultConfiguration, isUserConfigured, ownerEmail, slug, readOnly, editable, permissions, creator, enabledForV2, applicationId, managedBy, userEditable }) {
|
|
92
|
+
constructor({ id, created, updated, deactivated, name, pluginId, kind, organizationId, configurations, configurationSummaries, configuredProfileKeys, demoIntegrationId, hasDefaultConfiguration, isUserConfigured, ownerApplicationName, ownerEmail, slug, readOnly, editable, permissions, creator, enabledForV2, applicationId, managedBy, userEditable }) {
|
|
88
93
|
super();
|
|
89
94
|
this.id = id;
|
|
90
95
|
this.created = created;
|
|
@@ -102,6 +107,7 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
102
107
|
this.isUserConfigured = isUserConfigured;
|
|
103
108
|
this.managedBy = managedBy;
|
|
104
109
|
this.userEditable = userEditable ?? true;
|
|
110
|
+
this.ownerApplicationName = ownerApplicationName;
|
|
105
111
|
this.ownerEmail = ownerEmail;
|
|
106
112
|
this.slug = slug;
|
|
107
113
|
this.readOnly = readOnly;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/integration/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAIlF,MAAM,OAAO,2BAA2B;IACtC,EAAE,CAAS;IACX,yCAAyC;IACzC,OAAO,CAAO;IACd,aAAa,CAAS;IACtB,8DAA8D;IAC9D,aAAa,CAAsB,CAAC,2BAA2B;IAC/D,SAAS,CAAU;IAEnB,mDAAmD;IACnD,4DAA4D;IAC5D,UAAU,CAAY;IACtB,YAAY,CAAY;IAExB,YAAY,EACV,EAAE,EACF,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EASb;QACC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,+DAA+D;AAC/D,yEAAyE;AACzE,MAAM,OAAO,mCAAmC;IAC9C,EAAE,CAAS;IACX,yCAAyC;IACzC,OAAO,CAAO;IACd,aAAa,CAAS;IACtB,8DAA8D;IAC9D,aAAa,CAAsB;IACnC,SAAS,CAAU;IAEnB,mDAAmD;IACnD,4DAA4D;IAC5D,UAAU,CAAY;IAEtB,YAAY,EACV,EAAE,EACF,OAAO,EACP,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EASX;QACC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,kBAAkB;IACtB,EAAE,CAAS;IACX,IAAI,CAAS;IACb,QAAQ,CAAS;IACjB,cAAc,CAAS;IACvB,aAAa,CAAiB;IAC9B,gBAAgB,CAAU;IAC1B,iBAAiB,CAAU;IAC3B,SAAS,CAAiB;IAC1B,+FAA+F;IAC/F,0FAA0F;IAC1F,gDAAgD;IAChD,YAAY,CAAU;CACvB;AAED,MAAM,OAAO,sBAAuB,SAAQ,kBAAkB;IAC5D,IAAI,CAAkB;IACtB,OAAO,CAAQ;IACf,OAAO,CAAQ;IACf,cAAc,CAAgC;IAC9C;;;;OAIG;IACH,sBAAsB,CAInB;IACH;;;;;OAKG;IACH,qBAAqB,CAAW;IAChC,uBAAuB,CAAU;IACjC,IAAI,CAAU;IACd,UAAU,CAAU;IACpB,QAAQ,CAAU;IAClB,QAAQ,CAAU;IAClB,QAAQ,CAAmB;IAC3B,WAAW,CAAoB;IAC/B,OAAO,CAAc;IACrB,YAAY,CAAW;IAEvB,YAAY,EACV,EAAE,EACF,OAAO,EACP,OAAO,EACP,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/integration/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,19 @@ export type PublishPlanTarget = {
|
|
|
70
70
|
applicationId: string;
|
|
71
71
|
commitId: string;
|
|
72
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* An App Database another app shared with this one, whose owner has no usable
|
|
75
|
+
* database yet for some of the data tags this app deploys to. This app's
|
|
76
|
+
* queries to it fail on those tags until the owner publishes.
|
|
77
|
+
*/
|
|
78
|
+
export type UnprovisionedSharedAppDatabase = {
|
|
79
|
+
integrationId: string;
|
|
80
|
+
integrationName: string;
|
|
81
|
+
/** Display names of the data tags this app deploys to that the owner lacks. */
|
|
82
|
+
missingProfileNames: string[];
|
|
83
|
+
ownerApplicationId: string;
|
|
84
|
+
ownerApplicationName?: string;
|
|
85
|
+
};
|
|
73
86
|
export type PublishPlan = {
|
|
74
87
|
/**
|
|
75
88
|
* Whether publishing this app runs policy agents, as the organization has it
|
|
@@ -83,6 +96,12 @@ export type PublishPlan = {
|
|
|
83
96
|
status: PublishStepStatus;
|
|
84
97
|
steps: PublishStep[];
|
|
85
98
|
target: PublishPlanTarget;
|
|
99
|
+
/**
|
|
100
|
+
* Shared App Databases this app would reach in production before their
|
|
101
|
+
* owners have created them. About the app, not one version, like
|
|
102
|
+
* `hasPolicyPublishChecks`. Absent when it could not be determined.
|
|
103
|
+
*/
|
|
104
|
+
unprovisionedSharedAppDatabases?: UnprovisionedSharedAppDatabase[];
|
|
86
105
|
};
|
|
87
106
|
/**
|
|
88
107
|
* Single source of truth for publish-plan step ids. These are wire values: the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/publishPipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,cAAc,GAAG,SAAS,CAAC;AAEpH;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,OAAO,GACP,aAAa,GACb,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,yGAAyG;IACzG,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,qEAAqE;IACrE,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/publishPipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,cAAc,GAAG,SAAS,CAAC;AAEpH;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,OAAO,GACP,aAAa,GACb,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,yGAAyG;IACzG,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,8BAA8B,GAAG;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,qEAAqE;IACrE,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,8BAA8B,EAAE,CAAC;CACpE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,aAAa,EAO7C,CAAC;AAEX,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/publishPipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/publishPipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmHH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,oBAAoB;IACvC,oBAAoB,EAAE,uBAAuB;IAC7C,sBAAsB,EAAE,2BAA2B;IACnD,uBAAuB,EAAE,4BAA4B;IACrD,OAAO,EAAE,SAAS;CACV,CAAC;AAIX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,aAAa,CAAC,sBAAsB;IACpC,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,uBAAuB;IACrC,aAAa,CAAC,oBAAoB;IAClC,aAAa,CAAC,iBAAiB;IAC/B,aAAa,CAAC,OAAO;CACb,CAAC;AAEX,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC"}
|
|
@@ -9,5 +9,5 @@ export declare function orderPublishSteps(steps: PublishStep[]): PublishStep[];
|
|
|
9
9
|
* `facts` carries what the plan says about the app rather than about its steps,
|
|
10
10
|
* so rebuilding a plan from a response keeps it instead of dropping it.
|
|
11
11
|
*/
|
|
12
|
-
export declare function buildPublishPlan(target: PublishPlanTarget, steps: PublishStep[], facts?: Pick<PublishPlan, 'hasDevServerPolicyPublishChecks' | 'hasPolicyPublishChecks'>): PublishPlan;
|
|
12
|
+
export declare function buildPublishPlan(target: PublishPlanTarget, steps: PublishStep[], facts?: Pick<PublishPlan, 'hasDevServerPolicyPublishChecks' | 'hasPolicyPublishChecks' | 'unprovisionedSharedAppDatabases'>): PublishPlan;
|
|
13
13
|
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/types/publishPipeline/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgBjG,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,iBAAiB,CAgB1F;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiBrE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,iCAAiC,GAAG,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/types/publishPipeline/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAgBjG,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,iBAAiB,CAgB1F;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiBrE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,iCAAiC,GAAG,wBAAwB,GAAG,iCAAiC,CAAC,GAC1H,WAAW,CAGb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/types/publishPipeline/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,8EAA8E;AAC9E,MAAM,WAAW,GAAsC;IACrD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,KAAoC;IACrE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB,EACzB,KAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/types/publishPipeline/plan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,8EAA8E;AAC9E,MAAM,WAAW,GAAsC;IACrD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,KAAoC;IACrE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,GAAsB,SAAS,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB,EACzB,KAAoB,EACpB,KAA2H;IAE3H,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACnF,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
appDatabaseAccessFields,
|
|
5
|
+
getAppDatabaseAccessLevel,
|
|
6
|
+
INTEGRATION_READ_ONLY_ROLE_NAME,
|
|
7
|
+
isAppDatabase,
|
|
8
|
+
isAppDatabaseReadOnlyForApplication,
|
|
9
|
+
isIntegrationReadOnlyRole
|
|
10
|
+
} from './appDatabaseSharing.js';
|
|
11
|
+
import { DATABASE_LIFECYCLE_MANAGED_BY } from './index.js';
|
|
12
|
+
|
|
13
|
+
const appDatabase = { applicationId: 'owner-app', managedBy: DATABASE_LIFECYCLE_MANAGED_BY };
|
|
14
|
+
|
|
15
|
+
describe('isIntegrationReadOnlyRole', () => {
|
|
16
|
+
it('matches only the built-in role, not an org role with the same name', () => {
|
|
17
|
+
expect(isIntegrationReadOnlyRole({ name: INTEGRATION_READ_ONLY_ROLE_NAME, organizationId: null })).toBe(true);
|
|
18
|
+
expect(isIntegrationReadOnlyRole({ name: INTEGRATION_READ_ONLY_ROLE_NAME, organizationId: 'org-1' })).toBe(false);
|
|
19
|
+
expect(isIntegrationReadOnlyRole({ name: 'Developer', organizationId: null })).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
describe('isAppDatabase', () => {
|
|
24
|
+
it('is true only for a lifecycle-managed integration with an owning app', () => {
|
|
25
|
+
expect(isAppDatabase(appDatabase)).toBe(true);
|
|
26
|
+
expect(isAppDatabase({ applicationId: 'owner-app', managedBy: null })).toBe(false);
|
|
27
|
+
expect(isAppDatabase({ applicationId: null, managedBy: DATABASE_LIFECYCLE_MANAGED_BY })).toBe(false);
|
|
28
|
+
expect(isAppDatabase(undefined)).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('isAppDatabaseReadOnlyForApplication', () => {
|
|
33
|
+
it('is read-only for an app that does not own the database', () => {
|
|
34
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, 'consumer-app')).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('gives the owning app full access', () => {
|
|
38
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, 'owner-app')).toBe(false);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('is not read-only without an app context', () => {
|
|
42
|
+
expect(isAppDatabaseReadOnlyForApplication(appDatabase, undefined)).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('is not read-only for org integrations', () => {
|
|
46
|
+
expect(isAppDatabaseReadOnlyForApplication({ applicationId: 'owner-app', managedBy: null }, 'consumer-app')).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe('getAppDatabaseAccessLevel', () => {
|
|
51
|
+
it('reports read_only for an app database another app owns', () => {
|
|
52
|
+
expect(getAppDatabaseAccessLevel(appDatabase, 'consumer-app')).toBe('read_only');
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('reports nothing when the app has full access', () => {
|
|
56
|
+
expect(getAppDatabaseAccessLevel(appDatabase, 'owner-app')).toBeUndefined();
|
|
57
|
+
expect(getAppDatabaseAccessLevel({ applicationId: null, managedBy: null }, 'consumer-app')).toBeUndefined();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('names the owner alongside read_only, and nothing for a database the app can write to', () => {
|
|
61
|
+
const shared = { ...appDatabase, ownerApplicationName: 'Orders' };
|
|
62
|
+
expect(appDatabaseAccessFields(shared, 'consumer-app')).toEqual({ accessLevel: 'read_only', ownerApplicationName: 'Orders' });
|
|
63
|
+
expect(appDatabaseAccessFields(appDatabase, 'consumer-app')).toEqual({ accessLevel: 'read_only' });
|
|
64
|
+
expect(appDatabaseAccessFields(appDatabase, 'owner-app')).toEqual({});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('reports read_only when the server named another owning app, even without an app context', () => {
|
|
68
|
+
const shared = { ...appDatabase, ownerApplicationName: 'Orders' };
|
|
69
|
+
expect(getAppDatabaseAccessLevel(shared, undefined)).toBe('read_only');
|
|
70
|
+
expect(getAppDatabaseAccessLevel(appDatabase, undefined)).toBeUndefined();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { DATABASE_LIFECYCLE_MANAGED_BY } from './index.js';
|
|
2
|
+
|
|
3
|
+
// The built-in integrations role that gives an app read-only access to an app
|
|
4
|
+
// database another app owns. Only 3.0 apps can hold it.
|
|
5
|
+
export const INTEGRATION_READ_ONLY_ROLE_NAME = 'Read only';
|
|
6
|
+
|
|
7
|
+
export function isIntegrationReadOnlyRole(role: { name: string; organizationId?: string | null }): boolean {
|
|
8
|
+
return role.name === INTEGRATION_READ_ONLY_ROLE_NAME && !role.organizationId;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type AppDatabaseOwnershipFields = {
|
|
12
|
+
applicationId?: string | null;
|
|
13
|
+
managedBy?: string | null;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export function isAppDatabase(integration: AppDatabaseOwnershipFields | undefined): boolean {
|
|
17
|
+
return integration?.managedBy === DATABASE_LIFECYCLE_MANAGED_BY && Boolean(integration.applicationId);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// True when the integration is an app database owned by a different app. That
|
|
21
|
+
// app can read the data but not change it; the owning app keeps full access.
|
|
22
|
+
export function isAppDatabaseReadOnlyForApplication(
|
|
23
|
+
integration: AppDatabaseOwnershipFields | undefined,
|
|
24
|
+
applicationId: string | null | undefined
|
|
25
|
+
): boolean {
|
|
26
|
+
return isAppDatabase(integration) && Boolean(applicationId) && integration?.applicationId !== applicationId;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Same wire value the orchestrator receives in executionAccess.level.
|
|
30
|
+
export const INTEGRATION_ACCESS_LEVEL_READ_ONLY = 'read_only';
|
|
31
|
+
export type IntegrationAccessLevel = typeof INTEGRATION_ACCESS_LEVEL_READ_ONLY;
|
|
32
|
+
|
|
33
|
+
// The server names the owning app only in a payload built for a different
|
|
34
|
+
// app, so a named owner marks the database read-only even when the caller does
|
|
35
|
+
// not know which app it is building.
|
|
36
|
+
export function getAppDatabaseAccessLevel(
|
|
37
|
+
integration: (AppDatabaseOwnershipFields & { ownerApplicationName?: string }) | undefined,
|
|
38
|
+
applicationId: string | null | undefined
|
|
39
|
+
): IntegrationAccessLevel | undefined {
|
|
40
|
+
const namedOwner = isAppDatabase(integration) && Boolean(integration?.ownerApplicationName);
|
|
41
|
+
return namedOwner || isAppDatabaseReadOnlyForApplication(integration, applicationId) ? INTEGRATION_ACCESS_LEVEL_READ_ONLY : undefined;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Fields to copy onto an integration summary so Clark knows it may only read
|
|
45
|
+
// this database, and whose it is. Empty for anything the app can write to.
|
|
46
|
+
export function appDatabaseAccessFields(
|
|
47
|
+
integration: (AppDatabaseOwnershipFields & { ownerApplicationName?: string }) | undefined,
|
|
48
|
+
applicationId: string | null | undefined
|
|
49
|
+
): { accessLevel?: IntegrationAccessLevel; ownerApplicationName?: string } {
|
|
50
|
+
const accessLevel = getAppDatabaseAccessLevel(integration, applicationId);
|
|
51
|
+
if (!accessLevel) {
|
|
52
|
+
return {};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
accessLevel,
|
|
56
|
+
...(integration?.ownerApplicationName ? { ownerApplicationName: integration.ownerApplicationName } : {})
|
|
57
|
+
};
|
|
58
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -31,6 +31,7 @@ export * from './database-lifecycle/index.js';
|
|
|
31
31
|
export * from './database-lifecycle/appDatabaseCompatibility.js';
|
|
32
32
|
export * from './database-lifecycle/importCompatibility.js';
|
|
33
33
|
export type * from './database-lifecycle/appDatabaseMigrations.js';
|
|
34
|
+
export * from './database-lifecycle/appDatabaseSharing.js';
|
|
34
35
|
export * from './database-lifecycle/appDatabaseStatus.js';
|
|
35
36
|
export * from './database-lifecycle/edit-lifecycle-capability.js';
|
|
36
37
|
export * from './environment-compatibility/appEnvironmentCompatibility.js';
|
|
@@ -122,6 +122,11 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
122
122
|
*/
|
|
123
123
|
configuredProfileKeys: string[];
|
|
124
124
|
hasDefaultConfiguration: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Name of the app that owns this App Database. Set only when the payload is for a different
|
|
127
|
+
* app, which can read the database but not change it.
|
|
128
|
+
*/
|
|
129
|
+
ownerApplicationName?: string;
|
|
125
130
|
slug?: string;
|
|
126
131
|
ownerEmail?: string;
|
|
127
132
|
readOnly: boolean;
|
|
@@ -146,6 +151,7 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
146
151
|
demoIntegrationId,
|
|
147
152
|
hasDefaultConfiguration,
|
|
148
153
|
isUserConfigured,
|
|
154
|
+
ownerApplicationName,
|
|
149
155
|
ownerEmail,
|
|
150
156
|
slug,
|
|
151
157
|
readOnly,
|
|
@@ -175,6 +181,7 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
175
181
|
hasDefaultConfiguration?: boolean;
|
|
176
182
|
demoIntegrationId?: string;
|
|
177
183
|
isUserConfigured: boolean;
|
|
184
|
+
ownerApplicationName?: string;
|
|
178
185
|
ownerEmail?: string;
|
|
179
186
|
slug?: string;
|
|
180
187
|
readOnly: boolean;
|
|
@@ -203,6 +210,7 @@ export class SupersetIntegrationDto extends IntegrationBaseDto {
|
|
|
203
210
|
this.isUserConfigured = isUserConfigured;
|
|
204
211
|
this.managedBy = managedBy;
|
|
205
212
|
this.userEditable = userEditable ?? true;
|
|
213
|
+
this.ownerApplicationName = ownerApplicationName;
|
|
206
214
|
this.ownerEmail = ownerEmail;
|
|
207
215
|
this.slug = slug;
|
|
208
216
|
this.readOnly = readOnly;
|
|
@@ -88,6 +88,20 @@ export type PublishPlanTarget = {
|
|
|
88
88
|
commitId: string;
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* An App Database another app shared with this one, whose owner has no usable
|
|
93
|
+
* database yet for some of the data tags this app deploys to. This app's
|
|
94
|
+
* queries to it fail on those tags until the owner publishes.
|
|
95
|
+
*/
|
|
96
|
+
export type UnprovisionedSharedAppDatabase = {
|
|
97
|
+
integrationId: string;
|
|
98
|
+
integrationName: string;
|
|
99
|
+
/** Display names of the data tags this app deploys to that the owner lacks. */
|
|
100
|
+
missingProfileNames: string[];
|
|
101
|
+
ownerApplicationId: string;
|
|
102
|
+
ownerApplicationName?: string;
|
|
103
|
+
};
|
|
104
|
+
|
|
91
105
|
export type PublishPlan = {
|
|
92
106
|
/**
|
|
93
107
|
* Whether publishing this app runs policy agents, as the organization has it
|
|
@@ -101,6 +115,12 @@ export type PublishPlan = {
|
|
|
101
115
|
status: PublishStepStatus;
|
|
102
116
|
steps: PublishStep[];
|
|
103
117
|
target: PublishPlanTarget;
|
|
118
|
+
/**
|
|
119
|
+
* Shared App Databases this app would reach in production before their
|
|
120
|
+
* owners have created them. About the app, not one version, like
|
|
121
|
+
* `hasPolicyPublishChecks`. Absent when it could not be determined.
|
|
122
|
+
*/
|
|
123
|
+
unprovisionedSharedAppDatabases?: UnprovisionedSharedAppDatabase[];
|
|
104
124
|
};
|
|
105
125
|
|
|
106
126
|
/**
|
|
@@ -62,7 +62,7 @@ export function orderPublishSteps(steps: PublishStep[]): PublishStep[] {
|
|
|
62
62
|
export function buildPublishPlan(
|
|
63
63
|
target: PublishPlanTarget,
|
|
64
64
|
steps: PublishStep[],
|
|
65
|
-
facts?: Pick<PublishPlan, 'hasDevServerPolicyPublishChecks' | 'hasPolicyPublishChecks'>
|
|
65
|
+
facts?: Pick<PublishPlan, 'hasDevServerPolicyPublishChecks' | 'hasPolicyPublishChecks' | 'unprovisionedSharedAppDatabases'>
|
|
66
66
|
): PublishPlan {
|
|
67
67
|
const ordered = orderPublishSteps(steps);
|
|
68
68
|
return { ...facts, status: rollUpPublishSteps(ordered), steps: ordered, target };
|