@antelopejs/dms 0.15.0 → 0.15.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/CHANGELOG.md +28 -0
- package/README.md +1 -1
- package/bin/control/journey.mjs +5 -0
- package/bin/control/session.mjs +1 -0
- package/bin/control/stack.mjs +1 -0
- package/dist/config/internal/state.d.ts +7 -0
- package/dist/config/internal/state.js +9 -0
- package/dist/config/internal/state.js.map +1 -1
- package/dist/config/startup-config.d.ts +1 -0
- package/dist/config/startup-config.js +11 -0
- package/dist/config/startup-config.js.map +1 -1
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.js +1 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/models/index.d.ts +1 -0
- package/dist/db/models/index.js +1 -0
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/setupToken.model.d.ts +29 -0
- package/dist/db/models/setupToken.model.js +62 -0
- package/dist/db/models/setupToken.model.js.map +1 -0
- package/dist/db/setup-token.d.ts +2 -0
- package/dist/db/setup-token.js +28 -0
- package/dist/db/setup-token.js.map +1 -0
- package/dist/db/tables/index.d.ts +1 -0
- package/dist/db/tables/index.js +1 -0
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/setupToken.table.d.ts +7 -0
- package/dist/db/tables/setupToken.table.js +34 -0
- package/dist/db/tables/setupToken.table.js.map +1 -0
- package/dist/implementations/dms/page/payloads.js +6 -10
- package/dist/implementations/dms/page/payloads.js.map +1 -1
- package/dist/implementations/dms/page/public-layout.d.ts +2 -0
- package/dist/implementations/dms/page/public-layout.js +45 -0
- package/dist/implementations/dms/page/public-layout.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/settings/users/current-password.js +1 -1
- package/dist/pages/settings/users/current-password.js.map +1 -1
- package/dist/routes/auth/login.d.ts +1 -1
- package/dist/routes/auth/login.js +7 -2
- package/dist/routes/auth/login.js.map +1 -1
- package/dist/routes/auth/password-hash-upgrade.d.ts +2 -0
- package/dist/routes/auth/password-hash-upgrade.js +22 -0
- package/dist/routes/auth/password-hash-upgrade.js.map +1 -0
- package/dist/routes/authentication.d.ts +2 -0
- package/dist/routes/authentication.js +2 -0
- package/dist/routes/authentication.js.map +1 -1
- package/dist/routes/onboarding.d.ts +3 -1
- package/dist/routes/onboarding.js +20 -3
- package/dist/routes/onboarding.js.map +1 -1
- package/dist/utils/ensure-default-tenant.d.ts +2 -1
- package/dist/utils/ensure-default-tenant.js +126 -8
- package/dist/utils/ensure-default-tenant.js.map +1 -1
- package/dist/validation/onboarding/register-admin.schema.d.ts +5 -0
- package/dist/validation/onboarding/register-admin.schema.js +3 -0
- package/dist/validation/onboarding/register-admin.schema.js.map +1 -1
- package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
- package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
- package/frontend-vue/layers/dms-core/shared/types/app-config.ts +5 -0
- package/frontend-vue/layers/dms-layout/app/app.config.ts +1 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidebar.vue +9 -9
- package/frontend-vue/layers/dms-layout/app/components/layout/AppLogo.vue +1 -0
- package/frontend-vue/layers/dms-layout/app/composables/page/useInstalledModules.ts +78 -0
- package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +5 -24
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +2 -1
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +2 -1
- package/frontend-vue/layers/dms-onboarding/app/components/onboarding/steps/register.vue +21 -1
- package/frontend-vue/layers/dms-onboarding/app/custom-pages/onboarding.vue +14 -0
- package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-en-GB.json +2 -0
- package/frontend-vue/layers/dms-onboarding/i18n/locales/onboarding-fr-FR.json +2 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.15.1
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.15.0...v0.15.1)
|
|
6
|
+
|
|
7
|
+
### 🔥 Performance
|
|
8
|
+
|
|
9
|
+
- **page:** Send anonymous visitors only the public pages of the site layout ([#675](https://github.com/AntelopeJS/dms/pull/675))
|
|
10
|
+
|
|
11
|
+
### 🩹 Fixes
|
|
12
|
+
|
|
13
|
+
- **auth:** Upgrade an outdated password hash on sign-in ([#691](https://github.com/AntelopeJS/dms/pull/691))
|
|
14
|
+
- **dashboard:** Name the brand logo for screen readers ([#652](https://github.com/AntelopeJS/dms/pull/652))
|
|
15
|
+
- **onboarding:** Require a setup token to register the first owner ([#654](https://github.com/AntelopeJS/dms/pull/654))
|
|
16
|
+
- **tenants:** Elect one replica to provision the default tenant through a renewed lease ([#657](https://github.com/AntelopeJS/dms/pull/657))
|
|
17
|
+
- **layout:** Count the sidebar's installed modules like the Modules page ([#666](https://github.com/AntelopeJS/dms/pull/666))
|
|
18
|
+
|
|
19
|
+
### 📖 Documentation
|
|
20
|
+
|
|
21
|
+
- **github:** Send questions and ideas to Discord ([#672](https://github.com/AntelopeJS/dms/pull/672))
|
|
22
|
+
|
|
23
|
+
### 🏡 Chore
|
|
24
|
+
|
|
25
|
+
- **release:** @antelopejs/interface-dms v0.10.4 ([3c856c69](https://github.com/AntelopeJS/dms/commit/3c856c69))
|
|
26
|
+
|
|
27
|
+
### ❤️ Contributors
|
|
28
|
+
|
|
29
|
+
- Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
|
|
30
|
+
|
|
3
31
|
## v0.15.0
|
|
4
32
|
|
|
5
33
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.14.0...v0.15.0)
|
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ pnpm dev # backend on http://localhost:5010
|
|
|
59
59
|
pnpm frontend:dev # dashboard on http://localhost:3001, in a second terminal
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Open `
|
|
62
|
+
Open the address the backend logs after `No owner exists yet` and create the first administrator. A page is a class whose static fields are blocks:
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
65
|
import { PageController, RegisterPage, pagesCategory } from "@antelopejs/interface-dms/page";
|
package/bin/control/journey.mjs
CHANGED
|
@@ -193,6 +193,11 @@ export class JourneyContext {
|
|
|
193
193
|
return adminCredentials(this.state);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
/** The setup token the run's backend accepts for the first registration (`DMS_SETUP_TOKEN`). */
|
|
197
|
+
setupToken() {
|
|
198
|
+
return this.state.secrets.DMS_SETUP_TOKEN;
|
|
199
|
+
}
|
|
200
|
+
|
|
196
201
|
/** Creates the administrator through `POST /api/onboarding/register`, then signs it in. */
|
|
197
202
|
onboard(options = {}) {
|
|
198
203
|
return onboard(this.state, options);
|
package/bin/control/session.mjs
CHANGED
package/bin/control/stack.mjs
CHANGED
|
@@ -48,6 +48,11 @@ export interface LoginPrefillConfig {
|
|
|
48
48
|
email: string;
|
|
49
49
|
password: string;
|
|
50
50
|
}
|
|
51
|
+
export interface ProvisioningLeaseConfig {
|
|
52
|
+
renewEveryMs: number;
|
|
53
|
+
staleAfterMs: number;
|
|
54
|
+
pollEveryMs: number;
|
|
55
|
+
}
|
|
51
56
|
export interface Config {
|
|
52
57
|
auth?: AuthConfig;
|
|
53
58
|
htmlRender?: HtmlRenderConfig;
|
|
@@ -61,12 +66,14 @@ export interface Config {
|
|
|
61
66
|
frontend?: FrontendConfig;
|
|
62
67
|
store?: StoreConfig;
|
|
63
68
|
docsPreview?: boolean;
|
|
69
|
+
provisioningLease?: Partial<ProvisioningLeaseConfig>;
|
|
64
70
|
}
|
|
65
71
|
export declare const DEFAULT_ACCESS_TOKEN_LIFETIME = 3600000;
|
|
66
72
|
export declare const DEFAULT_MAX_UPLOAD_SIZE: number;
|
|
67
73
|
export declare const DEFAULT_CLIENT_BASE_URL = "http://localhost:3001";
|
|
68
74
|
export declare const DEFAULT_API_BASE_URL = "http://127.0.0.1:5010";
|
|
69
75
|
export declare function getConfig(): Config;
|
|
76
|
+
export declare function getProvisioningLeaseConfig(): ProvisioningLeaseConfig;
|
|
70
77
|
export declare function setDevClientBaseUrl(url: string): void;
|
|
71
78
|
export declare function getClientBaseUrl(): string | undefined;
|
|
72
79
|
export declare function setDevApiBaseUrl(url: string | undefined): void;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DEFAULT_API_BASE_URL = exports.DEFAULT_CLIENT_BASE_URL = exports.DEFAULT_MAX_UPLOAD_SIZE = exports.DEFAULT_ACCESS_TOKEN_LIFETIME = void 0;
|
|
4
4
|
exports.getConfig = getConfig;
|
|
5
|
+
exports.getProvisioningLeaseConfig = getProvisioningLeaseConfig;
|
|
5
6
|
exports.setDevClientBaseUrl = setDevClientBaseUrl;
|
|
6
7
|
exports.getClientBaseUrl = getClientBaseUrl;
|
|
7
8
|
exports.setDevApiBaseUrl = setDevApiBaseUrl;
|
|
@@ -54,6 +55,14 @@ let devApiBaseUrl;
|
|
|
54
55
|
function getConfig() {
|
|
55
56
|
return globalConfig;
|
|
56
57
|
}
|
|
58
|
+
const DEFAULT_PROVISIONING_LEASE = {
|
|
59
|
+
renewEveryMs: 10 * time_1.MILLISECONDS_PER_SECOND,
|
|
60
|
+
staleAfterMs: time_1.MILLISECONDS_PER_MINUTE,
|
|
61
|
+
pollEveryMs: 5 * time_1.MILLISECONDS_PER_SECOND,
|
|
62
|
+
};
|
|
63
|
+
function getProvisioningLeaseConfig() {
|
|
64
|
+
return { ...DEFAULT_PROVISIONING_LEASE, ...globalConfig.provisioningLease };
|
|
65
|
+
}
|
|
57
66
|
function setDevClientBaseUrl(url) {
|
|
58
67
|
devClientBaseUrl = url;
|
|
59
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":";;;AAsRA,8BAEC;AAQD,gEAEC;AAED,kDAEC;AAED,4CAEC;AAGD,4CAEC;AAED,sCAEC;AAMD,oDAMC;AAED,sCAEC;AAED,kDAEC;AAED,4CAEC;AAED,8CAEC;AAED,wCAEC;AAMD,kCAkBC;AA1WD,+BAA4B;AAE5B,wEAKuD;AA8NvD,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC1B,QAAA,6BAA6B,GAAG,4BAAqB,CAAC;AAEnE,IAAI,gBAAgB,GAAe;IACjC,SAAS,EAAE,EAAE;IACb,4BAA4B,EAAE,2BAAoB;IAClD,4BAA4B,EAAE,2BAAoB;IAClD,mBAAmB,EAAE,qCAA6B;IAClD,oBAAoB,EAAE,2BAA2B,GAAG,2BAAoB;IACxE,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEzC,IAAI,sBAAsB,GAAqB;IAC7C,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAClB,8BAA8B,GAAG,8BAAuB;IAC1D,cAAc,EAAE,uCAAuC;CACxD,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAC5B,QAAA,uBAAuB,GAClC,4BAA4B,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;AAE3E,IAAI,mBAAmB,GAAkB;IACvC,OAAO,EAAE,+BAAuB;IAChC,gBAAgB,EAAE,EAAE;CACrB,CAAC;AAEF,IAAI,oBAAoB,GAAmB;IACzC,gBAAgB,EAAE,MAAM;CACzB,CAAC;AAEW,QAAA,uBAAuB,GAAG,uBAAuB,CAAC;AAClD,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D,IAAI,YAAY,GAAW;IACzB,aAAa,EAAE,+BAAuB;IACtC,UAAU,EAAE,4BAAoB;CACjC,CAAC;AAEF,IAAI,gBAAoC,CAAC;AACzC,IAAI,aAAiC,CAAC;AAEtC,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,0BAA0B,GAA4B;IAC1D,YAAY,EAAE,EAAE,GAAG,8BAAuB;IAC1C,YAAY,EAAE,8BAAuB;IACrC,WAAW,EAAE,CAAC,GAAG,8BAAuB;CACzC,CAAC;AAEF,SAAgB,0BAA0B;IACxC,OAAO,EAAE,GAAG,0BAA0B,EAAE,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;AAC9E,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,gBAAgB,GAAG,GAAG,CAAC;AACzB,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,gBAAgB,IAAI,YAAY,CAAC,aAAa,CAAC;AACxD,CAAC;AAGD,SAAgB,gBAAgB,CAAC,GAAuB;IACtD,aAAa,GAAG,GAAG,CAAC;AACtB,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,aAAa,IAAI,YAAY,CAAC,UAAU,CAAC;AAClD,CAAC;AAED,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAC5C,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAGrC,SAAgB,oBAAoB,CAAC,GAAG,GAAG,KAAK;IAC9C,OAAO,CACL,GAAG;QACH,YAAY,CAAC,WAAW,KAAK,IAAI;QACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,wBAAwB,CAC3D,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;AAClC,CAAC;AAMD,SAAgB,WAAW,CAAC,MAAc;IACxC,YAAY,GAAG,IAAA,WAAI,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAE1C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,gBAAgB,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,sBAAsB,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,mBAAmB,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,oBAAoB,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.assertProductionSecrets = assertProductionSecrets;
|
|
4
4
|
exports.resolveClientBaseUrl = resolveClientBaseUrl;
|
|
5
|
+
exports.resolveConfiguredSetupToken = resolveConfiguredSetupToken;
|
|
5
6
|
const state_1 = require("./internal/state");
|
|
6
7
|
const PUBLIC_DEVELOPMENT_SECRET = "dev";
|
|
7
8
|
const HTTP_PROTOCOLS = ["http:", "https:"];
|
|
@@ -59,4 +60,14 @@ function resolveClientBaseUrl(raw, dev) {
|
|
|
59
60
|
return state_1.DEFAULT_CLIENT_BASE_URL;
|
|
60
61
|
throw new Error("[DMS] clientBaseUrl is required in production (set it from DMS_CLIENT_BASE_URL in the DMS templates): e-mail links, payment redirects and CORS start from the dashboard's origin, and the development one is localhost.");
|
|
61
62
|
}
|
|
63
|
+
const MIN_SETUP_TOKEN_LENGTH = 16;
|
|
64
|
+
function resolveConfiguredSetupToken() {
|
|
65
|
+
const value = process.env.DMS_SETUP_TOKEN?.trim();
|
|
66
|
+
if (!value)
|
|
67
|
+
return undefined;
|
|
68
|
+
if (value.length < MIN_SETUP_TOKEN_LENGTH) {
|
|
69
|
+
throw new Error(`[DMS] DMS_SETUP_TOKEN must be at least ${MIN_SETUP_TOKEN_LENGTH} characters: it is the only proof that the first owner registration comes from whoever deployed the instance.`);
|
|
70
|
+
}
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
62
73
|
//# sourceMappingURL=startup-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../../src/config/startup-config.ts"],"names":[],"mappings":";;AA8CA,0DAMC;AAkCD,oDAUC;
|
|
1
|
+
{"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../../src/config/startup-config.ts"],"names":[],"mappings":"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"}
|
package/dist/db/index.d.ts
CHANGED
package/dist/db/index.js
CHANGED
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./models"), exports);
|
|
18
18
|
__exportStar(require("./tables"), exports);
|
|
19
19
|
__exportStar(require("./guard-row"), exports);
|
|
20
|
+
__exportStar(require("./setup-token"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B"}
|
package/dist/db/models/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./attachments.model"), exports);
|
|
18
|
+
__exportStar(require("./setupToken.model"), exports);
|
|
18
19
|
__exportStar(require("./signInAttempts.model"), exports);
|
|
19
20
|
__exportStar(require("./systemState.model"), exports);
|
|
20
21
|
__exportStar(require("./userEmailChanges.model"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,6DAA2C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC;AACnC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C;AAC1C,6DAA2C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SetupToken } from "../tables";
|
|
2
|
+
declare const SetupTokenModel_base: {
|
|
3
|
+
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
4
|
+
readonly table: import("@antelopejs/interface-database").Table<SetupToken>;
|
|
5
|
+
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
6
|
+
get(id: string): PromiseLike<SetupToken | undefined>;
|
|
7
|
+
getBy(index: keyof SetupToken, ...keys: any[]): PromiseLike<SetupToken[]>;
|
|
8
|
+
getAll(): PromiseLike<SetupToken[]>;
|
|
9
|
+
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken> | import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
10
|
+
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
11
|
+
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<SetupToken>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
12
|
+
delete(id: string): Promise<number>;
|
|
13
|
+
};
|
|
14
|
+
readonly schemaName: string;
|
|
15
|
+
readonly tableClass: import("@antelopejs/interface-database-decorators").Constructible<SetupToken>;
|
|
16
|
+
fromPlainData(obj: any): SetupToken;
|
|
17
|
+
fromDatabase(obj: any): SetupToken | undefined;
|
|
18
|
+
toDatabase(obj: any): Record<string, any>;
|
|
19
|
+
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
20
|
+
};
|
|
21
|
+
export declare class SetupTokenModel extends SetupTokenModel_base {
|
|
22
|
+
private current;
|
|
23
|
+
private write;
|
|
24
|
+
ensure(configured?: string): Promise<string>;
|
|
25
|
+
claim(candidate: string | undefined): Promise<string | undefined>;
|
|
26
|
+
restore(token: string): Promise<void>;
|
|
27
|
+
clear(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetupTokenModel = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
6
|
+
const tables_1 = require("../tables");
|
|
7
|
+
const SETUP_TOKEN_ID = "owner";
|
|
8
|
+
const GENERATED_TOKEN_BYTES = 32;
|
|
9
|
+
function digest(value) {
|
|
10
|
+
return (0, node_crypto_1.createHash)("sha256").update(value).digest();
|
|
11
|
+
}
|
|
12
|
+
function sameSecret(left, right) {
|
|
13
|
+
return (0, node_crypto_1.timingSafeEqual)(digest(left), digest(right));
|
|
14
|
+
}
|
|
15
|
+
class SetupTokenModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.SetupToken, tables_1.setupTokenTableName) {
|
|
16
|
+
async current() {
|
|
17
|
+
const row = await this.table.get(SETUP_TOKEN_ID).run();
|
|
18
|
+
return row ? SetupTokenModel.fromDatabase(row) : undefined;
|
|
19
|
+
}
|
|
20
|
+
async write(token, conflict) {
|
|
21
|
+
await this.table
|
|
22
|
+
.insert({ _id: SETUP_TOKEN_ID, token, createdAt: new Date() }, conflict ? { conflict } : undefined)
|
|
23
|
+
.run();
|
|
24
|
+
}
|
|
25
|
+
async ensure(configured) {
|
|
26
|
+
if (configured) {
|
|
27
|
+
await this.write(configured, "replace");
|
|
28
|
+
return configured;
|
|
29
|
+
}
|
|
30
|
+
const existing = await this.current();
|
|
31
|
+
if (existing)
|
|
32
|
+
return existing.token;
|
|
33
|
+
const generated = (0, node_crypto_1.randomBytes)(GENERATED_TOKEN_BYTES).toString("base64url");
|
|
34
|
+
try {
|
|
35
|
+
await this.write(generated, undefined);
|
|
36
|
+
return generated;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const winner = await this.current();
|
|
40
|
+
if (winner)
|
|
41
|
+
return winner.token;
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async claim(candidate) {
|
|
46
|
+
if (!candidate)
|
|
47
|
+
return undefined;
|
|
48
|
+
const stored = await this.current();
|
|
49
|
+
if (!stored || !sameSecret(stored.token, candidate))
|
|
50
|
+
return undefined;
|
|
51
|
+
const deleted = await this.table.get(SETUP_TOKEN_ID).delete().run();
|
|
52
|
+
return deleted === 1 ? stored.token : undefined;
|
|
53
|
+
}
|
|
54
|
+
async restore(token) {
|
|
55
|
+
await this.write(token, "replace");
|
|
56
|
+
}
|
|
57
|
+
async clear() {
|
|
58
|
+
await this.table.get(SETUP_TOKEN_ID).delete().run();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.SetupTokenModel = SetupTokenModel;
|
|
62
|
+
//# sourceMappingURL=setupToken.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupToken.model.js","sourceRoot":"","sources":["../../../src/db/models/setupToken.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.instanceHasUsers = instanceHasUsers;
|
|
4
|
+
exports.announceSetupToken = announceSetupToken;
|
|
5
|
+
const logging_1 = require("@antelopejs/interface-core/logging");
|
|
6
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
7
|
+
const db_1 = require("@antelopejs/interface-dms/auth/db");
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
const startup_config_1 = require("../config/startup-config");
|
|
10
|
+
const models_1 = require("./models");
|
|
11
|
+
const ONBOARDING_PATH = "/onboarding";
|
|
12
|
+
async function instanceHasUsers() {
|
|
13
|
+
const users = await (0, interface_database_decorators_1.GetModel)(db_1.UserModel).table.slice(0, 1).run();
|
|
14
|
+
return users.length > 0;
|
|
15
|
+
}
|
|
16
|
+
async function announceSetupToken() {
|
|
17
|
+
const tokens = (0, interface_database_decorators_1.GetModel)(models_1.SetupTokenModel);
|
|
18
|
+
if (await instanceHasUsers()) {
|
|
19
|
+
await tokens.clear();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const configured = (0, startup_config_1.resolveConfiguredSetupToken)();
|
|
23
|
+
const token = await tokens.ensure(configured);
|
|
24
|
+
const address = `${(0, config_1.getConfig)().clientBaseUrl ?? ""}${ONBOARDING_PATH}`;
|
|
25
|
+
const shown = configured ? "<DMS_SETUP_TOKEN>" : token;
|
|
26
|
+
logging_1.Logging.Warn(`[DMS] No owner exists yet. To create it, open ${address}?token=${shown}`);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=setup-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-token.js","sourceRoot":"","sources":["../../src/db/setup-token.ts"],"names":[],"mappings":";;AAUA,4CAGC;AAUD,gDAcC;AArCD,gEAA6D;AAC7D,6FAAqE;AACrE,0DAA8D;AAC9D,sCAAsC;AACtC,6DAAuE;AACvE,qCAA2C;AAE3C,MAAM,eAAe,GAAG,aAAa,CAAC;AAG/B,KAAK,UAAU,gBAAgB;IACpC,MAAM,KAAK,GAAG,MAAM,IAAA,wCAAQ,EAAC,cAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAChE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1B,CAAC;AAUM,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,IAAA,wCAAQ,EAAC,wBAAe,CAAC,CAAC;IACzC,IAAI,MAAM,gBAAgB,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,4CAA2B,GAAE,CAAC;IACjD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,IAAA,kBAAS,GAAE,CAAC,aAAa,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,iBAAO,CAAC,IAAI,CACV,iDAAiD,OAAO,UAAU,KAAK,EAAE,CAC1E,CAAC;AACJ,CAAC"}
|
package/dist/db/tables/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./attachments.table"), exports);
|
|
18
|
+
__exportStar(require("./setupToken.table"), exports);
|
|
18
19
|
__exportStar(require("./signInAttempts.table"), exports);
|
|
19
20
|
__exportStar(require("./systemState.table"), exports);
|
|
20
21
|
__exportStar(require("./userEmailChanges.table"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC;AACnC,yDAAuC;AACvC,sDAAoC;AACpC,2DAAyC;AACzC,2DAAyC;AACzC,sEAAoD;AACpD,4DAA0C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SetupToken = exports.setupTokenTableName = void 0;
|
|
13
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
14
|
+
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
15
|
+
exports.setupTokenTableName = "setup_token";
|
|
16
|
+
let SetupToken = class SetupToken extends interface_database_decorators_1.Table {
|
|
17
|
+
};
|
|
18
|
+
exports.SetupToken = SetupToken;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], SetupToken.prototype, "_id", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], SetupToken.prototype, "token", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
29
|
+
__metadata("design:type", Date)
|
|
30
|
+
], SetupToken.prototype, "createdAt", void 0);
|
|
31
|
+
exports.SetupToken = SetupToken = __decorate([
|
|
32
|
+
(0, interface_database_decorators_1.RegisterTable)(exports.setupTokenTableName, constants_1.CORE_SCHEMA_NAME)
|
|
33
|
+
], SetupToken);
|
|
34
|
+
//# sourceMappingURL=setupToken.table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupToken.table.js","sourceRoot":"","sources":["../../../src/db/tables/setupToken.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAImD;AACnD,mEAAuE;AAE1D,QAAA,mBAAmB,GAAG,aAAa,CAAC;AAS1C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,qCAAK;CAOpC,CAAA;AAPY,gCAAU;AAEI;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uCAAqB;AAEZ;IAAxB,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yCAAuB;AAEhB;IAAtB,IAAA,qCAAK,EAAC,MAAM,CAAC;8BAAoB,IAAI;6CAAC;qBAN5B,UAAU;IADtB,IAAA,6CAAa,EAAC,2BAAmB,EAAE,4BAAgB,CAAC;GACxC,UAAU,CAOtB"}
|
|
@@ -27,6 +27,7 @@ const module_catalog_1 = require("./module-catalog");
|
|
|
27
27
|
const access_1 = require("./access");
|
|
28
28
|
const dynamic_menu_1 = require("./dynamic-menu");
|
|
29
29
|
const quick_action_access_1 = require("./quick-action-access");
|
|
30
|
+
const public_layout_1 = require("./public-layout");
|
|
30
31
|
exports.PAGE_LAYOUT_SLUG_PARAMETER = "slug";
|
|
31
32
|
exports.PAGE_REQUEST_PARAMETERS = ["path", "shared"];
|
|
32
33
|
function pageQueryOf(requestContext, ownParameters = [exports.PAGE_LAYOUT_SLUG_PARAMETER]) {
|
|
@@ -91,17 +92,11 @@ async function buildPagePayload(...arguments_) {
|
|
|
91
92
|
}),
|
|
92
93
|
resolvePageNavBadges(user, context, requestContext),
|
|
93
94
|
]);
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
const routes = (0, menu_categories_1.withCategoryRefs)(await annotateRegistryAccess({ [registeredSlug]: route }, context));
|
|
96
|
+
if (!includeShared)
|
|
96
97
|
return { route: routes[registeredSlug], layout, navBadges };
|
|
97
|
-
}
|
|
98
98
|
const shared = await buildSiteLayoutFor(user, tenantId, context);
|
|
99
|
-
return {
|
|
100
|
-
route: shared.siteLayout.pages[registeredSlug],
|
|
101
|
-
shared,
|
|
102
|
-
layout,
|
|
103
|
-
navBadges,
|
|
104
|
-
};
|
|
99
|
+
return { route: routes[registeredSlug], shared, layout, navBadges };
|
|
105
100
|
}
|
|
106
101
|
async function annotateRegistryAccess(registry, context) {
|
|
107
102
|
const annotated = {};
|
|
@@ -151,12 +146,13 @@ async function buildNavBadges(user, memberModel, roleModel, tenantId, requestCon
|
|
|
151
146
|
async function buildSiteLayoutFor(user, tenantId, accessContext) {
|
|
152
147
|
const banners = (0, layout_banners_1.resolveLayoutBanners)(buildLayoutBannerContext(user, tenantId, accessContext));
|
|
153
148
|
const dynamicChildren = await (0, dynamic_menu_1.resolveDynamicChildren)(user, tenantId, accessContext);
|
|
154
|
-
|
|
149
|
+
const layout = {
|
|
155
150
|
siteLayout: await annotateSiteLayoutAccess(accessContext, banners),
|
|
156
151
|
siteLayoutTree: (0, menu_categories_1.treeWithCategoryRefs)(await (0, dynamic_menu_1.addAccessToTree)(state_1.navigationTree, accessContext, true, dynamicChildren)),
|
|
157
152
|
quickActions: await (0, quick_actions_1.getQuickActionsForUser)((target) => (0, quick_action_access_1.resolveQuickActionTarget)(target, accessContext)),
|
|
158
153
|
modules: await (0, module_catalog_1.buildModuleAccessMap)(accessContext),
|
|
159
154
|
isOwner: accessContext.gated.isOwner,
|
|
160
155
|
};
|
|
156
|
+
return user ? layout : (0, public_layout_1.publicSiteLayoutOnly)(layout);
|
|
161
157
|
}
|
|
162
158
|
//# sourceMappingURL=payloads.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/payloads.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"payloads.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/payloads.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.publicSiteLayoutOnly = publicSiteLayoutOnly;
|
|
4
|
+
function withOnlyReachableChildren(node) {
|
|
5
|
+
const children = {};
|
|
6
|
+
for (const [key, child] of Object.entries(node.children)) {
|
|
7
|
+
const pruned = withOnlyReachableChildren(child);
|
|
8
|
+
if (pruned.hasAccess !== false || Object.keys(pruned.children).length > 0)
|
|
9
|
+
children[key] = pruned;
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
...node,
|
|
13
|
+
children,
|
|
14
|
+
...(node.childrenOrders && {
|
|
15
|
+
childrenOrders: node.childrenOrders.filter((key) => key in children),
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function categoriesNamedBy(categories, pages) {
|
|
20
|
+
const kept = {};
|
|
21
|
+
const pending = Object.values(pages).flatMap((page) => page.categoryId ? [page.categoryId] : []);
|
|
22
|
+
for (let id = pending.pop(); id !== undefined; id = pending.pop()) {
|
|
23
|
+
const category = categories[id];
|
|
24
|
+
if (!category || id in kept)
|
|
25
|
+
continue;
|
|
26
|
+
kept[id] = category;
|
|
27
|
+
if (category.categoryId)
|
|
28
|
+
pending.push(category.categoryId);
|
|
29
|
+
}
|
|
30
|
+
return kept;
|
|
31
|
+
}
|
|
32
|
+
function publicSiteLayoutOnly(layout) {
|
|
33
|
+
const pages = Object.fromEntries(Object.entries(layout.siteLayout.pages).filter(([, page]) => page.hasAccess));
|
|
34
|
+
return {
|
|
35
|
+
...layout,
|
|
36
|
+
siteLayout: {
|
|
37
|
+
...layout.siteLayout,
|
|
38
|
+
pages,
|
|
39
|
+
categories: categoriesNamedBy(layout.siteLayout.categories, pages),
|
|
40
|
+
},
|
|
41
|
+
siteLayoutTree: withOnlyReachableChildren(layout.siteLayoutTree),
|
|
42
|
+
modules: Object.fromEntries(Object.entries(layout.modules).filter(([, module]) => module.hasAccess)),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=public-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-layout.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/public-layout.ts"],"names":[],"mappings":";;AA6CA,oDAoBC;AA5DD,SAAS,yBAAyB,CAAC,IAAgB;IACjD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YACvE,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,CAAC;SACrE,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,KAAsB;IAEtB,MAAM,IAAI,GAAyB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CACzC,CAAC;IACF,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,IAAI,EAAE,IAAI,IAAI;YAAE,SAAS;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;QACpB,IAAI,QAAQ,CAAC,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD,SAAgB,oBAAoB,CAClC,MAAyB;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAC7B,CACF,CAAC;IACF,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,KAAK;YACL,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC;SACnE;QACD,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,cAAc,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CACxE;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ const modules_1 = require("@antelopejs/interface-core/modules");
|
|
|
46
46
|
const runtime_1 = require("@antelopejs/interface-core/runtime");
|
|
47
47
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
48
48
|
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
49
|
-
require("./db");
|
|
49
|
+
const db_1 = require("./db");
|
|
50
50
|
require("./realtime");
|
|
51
51
|
require("./implementations/dms-auth/email-templates");
|
|
52
52
|
require("./pages");
|
|
@@ -73,6 +73,7 @@ __exportStar(require("./config"), exports);
|
|
|
73
73
|
let cronTasks = [];
|
|
74
74
|
let staleExportsSweep = Promise.resolve();
|
|
75
75
|
let defaultTenantProvisioning;
|
|
76
|
+
let provisioningWait = new AbortController();
|
|
76
77
|
let globalRealtimeConfig;
|
|
77
78
|
async function construct(config) {
|
|
78
79
|
const { dev } = await (0, runtime_1.GetRuntimeInfo)();
|
|
@@ -157,7 +158,8 @@ function destroy() {
|
|
|
157
158
|
function onModulesStarted() {
|
|
158
159
|
if (defaultTenantProvisioning)
|
|
159
160
|
return;
|
|
160
|
-
|
|
161
|
+
provisioningWait = new AbortController();
|
|
162
|
+
defaultTenantProvisioning = (0, utils_1.provisionDefaultTenant)(provisioningWait.signal).finally(() => {
|
|
161
163
|
defaultTenantProvisioning = undefined;
|
|
162
164
|
});
|
|
163
165
|
}
|
|
@@ -167,6 +169,7 @@ async function start() {
|
|
|
167
169
|
await (0, interface_database_decorators_1.RegisterSchema)(constants_1.CORE_SCHEMA_NAME);
|
|
168
170
|
await (0, interface_database_decorators_1.RegisterSchema)(constants_1.TENANT_SCHEMA_NAME);
|
|
169
171
|
await (0, utils_1.ensureDefaultTenantExists)();
|
|
172
|
+
await (0, db_1.announceSetupToken)();
|
|
170
173
|
await (0, utils_1.registerExistingTenantInstances)();
|
|
171
174
|
await (0, hooks_1.SettleHook)(hooks_1.Hook.DATABASE_INITIALIZED);
|
|
172
175
|
staleExportsSweep = (0, crons_1.runSweepStaleExports)().catch((error) => {
|
|
@@ -183,6 +186,7 @@ async function start() {
|
|
|
183
186
|
}
|
|
184
187
|
async function stop() {
|
|
185
188
|
modules_1.Events.ModulesStarted.unregister(onModulesStarted);
|
|
189
|
+
provisioningWait.abort();
|
|
186
190
|
await defaultTenantProvisioning;
|
|
187
191
|
await staleExportsSweep;
|
|
188
192
|
(0, hooks_1.UnsettleHook)(hooks_1.Hook.DATABASE_INITIALIZED);
|