@acmekit/modules-sdk 2.13.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/acmekit-app.d.ts +96 -0
- package/dist/acmekit-app.d.ts.map +1 -0
- package/dist/acmekit-app.js +437 -0
- package/dist/acmekit-app.js.map +1 -0
- package/dist/acmekit-module.d.ts +149 -0
- package/dist/acmekit-module.d.ts.map +1 -0
- package/dist/acmekit-module.js +541 -0
- package/dist/acmekit-module.js.map +1 -0
- package/dist/definitions.d.ts +7 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +313 -0
- package/dist/definitions.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +54 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +444 -0
- package/dist/link.js.map +1 -0
- package/dist/loaders/index.d.ts +4 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +20 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/loaders/module-loader.d.ts +10 -0
- package/dist/loaders/module-loader.d.ts.map +1 -0
- package/dist/loaders/module-loader.js +56 -0
- package/dist/loaders/module-loader.js.map +1 -0
- package/dist/loaders/module-provider-loader.d.ts +8 -0
- package/dist/loaders/module-provider-loader.d.ts.map +1 -0
- package/dist/loaders/module-provider-loader.js +56 -0
- package/dist/loaders/module-provider-loader.js.map +1 -0
- package/dist/loaders/register-modules.d.ts +10 -0
- package/dist/loaders/register-modules.d.ts.map +1 -0
- package/dist/loaders/register-modules.js +102 -0
- package/dist/loaders/register-modules.js.map +1 -0
- package/dist/loaders/utils/index.d.ts +2 -0
- package/dist/loaders/utils/index.d.ts.map +1 -0
- package/dist/loaders/utils/index.js +18 -0
- package/dist/loaders/utils/index.js.map +1 -0
- package/dist/loaders/utils/load-internal.d.ts +53 -0
- package/dist/loaders/utils/load-internal.d.ts.map +1 -0
- package/dist/loaders/utils/load-internal.js +519 -0
- package/dist/loaders/utils/load-internal.js.map +1 -0
- package/dist/remote-query/index.d.ts +3 -0
- package/dist/remote-query/index.d.ts.map +1 -0
- package/dist/remote-query/index.js +19 -0
- package/dist/remote-query/index.js.map +1 -0
- package/dist/remote-query/parse-filters.d.ts +15 -0
- package/dist/remote-query/parse-filters.d.ts.map +1 -0
- package/dist/remote-query/parse-filters.js +178 -0
- package/dist/remote-query/parse-filters.js.map +1 -0
- package/dist/remote-query/query.d.ts +58 -0
- package/dist/remote-query/query.d.ts.map +1 -0
- package/dist/remote-query/query.js +254 -0
- package/dist/remote-query/query.js.map +1 -0
- package/dist/remote-query/remote-query.d.ts +43 -0
- package/dist/remote-query/remote-query.d.ts.map +1 -0
- package/dist/remote-query/remote-query.js +297 -0
- package/dist/remote-query/remote-query.js.map +1 -0
- package/dist/remote-query/to-remote-query.d.ts +29 -0
- package/dist/remote-query/to-remote-query.d.ts.map +1 -0
- package/dist/remote-query/to-remote-query.js +110 -0
- package/dist/remote-query/to-remote-query.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/convert-data-to-link-definition.d.ts +3 -0
- package/dist/utils/convert-data-to-link-definition.d.ts.map +1 -0
- package/dist/utils/convert-data-to-link-definition.js +28 -0
- package/dist/utils/convert-data-to-link-definition.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +19 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/linking-error.d.ts +14 -0
- package/dist/utils/linking-error.d.ts.map +1 -0
- package/dist/utils/linking-error.js +18 -0
- package/dist/utils/linking-error.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { RemoteFetchDataCallback } from "@acmekit/orchestration";
|
|
2
|
+
import { ExternalModuleDeclaration, ILinkMigrationsPlanner, InternalModuleDeclaration, LoadedModule, AcmeKitContainer, ModuleJoinerConfig, ModuleServiceInitializeOptions, RemoteQueryFunction } from "@acmekit/types";
|
|
3
|
+
import { GraphQLUtils, Modules } from "@acmekit/utils";
|
|
4
|
+
import { Link } from "./link";
|
|
5
|
+
import { RegisterModuleJoinerConfig } from "./acmekit-module";
|
|
6
|
+
export type RunMigrationFn = (options?: {
|
|
7
|
+
allOrNothing?: boolean;
|
|
8
|
+
}) => Promise<void>;
|
|
9
|
+
export type RevertMigrationFn = (moduleNames: string[]) => Promise<void>;
|
|
10
|
+
export type GenerateMigrations = (moduleNames: string[]) => Promise<void>;
|
|
11
|
+
export type GetLinkExecutionPlanner = () => ILinkMigrationsPlanner;
|
|
12
|
+
export type AcmeKitModuleConfig = {
|
|
13
|
+
[key: string | Modules]: string | boolean | Partial<InternalModuleDeclaration | ExternalModuleDeclaration>;
|
|
14
|
+
};
|
|
15
|
+
export type SharedResources = {
|
|
16
|
+
database?: ModuleServiceInitializeOptions["database"] & {
|
|
17
|
+
/**
|
|
18
|
+
* {
|
|
19
|
+
* name?: string
|
|
20
|
+
* afterCreate?: Function
|
|
21
|
+
* min?: number
|
|
22
|
+
* max?: number
|
|
23
|
+
* refreshIdle?: boolean
|
|
24
|
+
* idleTimeoutMillis?: number
|
|
25
|
+
* reapIntervalMillis?: number
|
|
26
|
+
* returnToHead?: boolean
|
|
27
|
+
* priorityRange?: number
|
|
28
|
+
* log?: (message: string, logLevel: string) => void
|
|
29
|
+
* }
|
|
30
|
+
*/
|
|
31
|
+
pool?: Record<string, unknown>;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export declare function loadModules(args: {
|
|
35
|
+
modulesConfig: AcmeKitModuleConfig;
|
|
36
|
+
sharedContainer: AcmeKitContainer;
|
|
37
|
+
sharedResourcesConfig?: SharedResources;
|
|
38
|
+
migrationOnly?: boolean;
|
|
39
|
+
schemaOnly?: boolean;
|
|
40
|
+
loaderOnly?: boolean;
|
|
41
|
+
workerMode?: "shared" | "worker" | "server";
|
|
42
|
+
cwd?: string;
|
|
43
|
+
}): Promise<any>;
|
|
44
|
+
export type AcmeKitAppOutput = {
|
|
45
|
+
modules: Record<string, LoadedModule | LoadedModule[]>;
|
|
46
|
+
link: Link | undefined;
|
|
47
|
+
query: RemoteQueryFunction;
|
|
48
|
+
entitiesMap?: Record<string, any>;
|
|
49
|
+
gqlSchema?: GraphQLUtils.GraphQLSchema;
|
|
50
|
+
notFound?: Record<string, Record<string, string>>;
|
|
51
|
+
runMigrations: RunMigrationFn;
|
|
52
|
+
revertMigrations: RevertMigrationFn;
|
|
53
|
+
generateMigrations: GenerateMigrations;
|
|
54
|
+
linkMigrationExecutionPlanner: GetLinkExecutionPlanner;
|
|
55
|
+
onApplicationShutdown: () => Promise<void>;
|
|
56
|
+
onApplicationPrepareShutdown: () => Promise<void>;
|
|
57
|
+
onApplicationStart: () => Promise<void>;
|
|
58
|
+
sharedContainer?: AcmeKitContainer;
|
|
59
|
+
};
|
|
60
|
+
export type AcmeKitAppOptions = {
|
|
61
|
+
workerMode?: "shared" | "worker" | "server";
|
|
62
|
+
sharedContainer?: AcmeKitContainer;
|
|
63
|
+
sharedResourcesConfig?: SharedResources;
|
|
64
|
+
loadedModules?: LoadedModule[];
|
|
65
|
+
servicesConfig?: ModuleJoinerConfig[];
|
|
66
|
+
acmekitConfigPath?: string;
|
|
67
|
+
modulesConfigFileName?: string;
|
|
68
|
+
modulesConfig?: AcmeKitModuleConfig;
|
|
69
|
+
linkModules?: RegisterModuleJoinerConfig | RegisterModuleJoinerConfig[];
|
|
70
|
+
remoteFetchData?: RemoteFetchDataCallback;
|
|
71
|
+
injectedDependencies?: any;
|
|
72
|
+
onApplicationStartCb?: () => void;
|
|
73
|
+
/**
|
|
74
|
+
* Forces the modules bootstrapper to only run the modules loaders and return prematurely
|
|
75
|
+
*/
|
|
76
|
+
loaderOnly?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Only partially load modules to retrieve their module joiner configs and run their loaders.
|
|
79
|
+
* Useful for migrations.
|
|
80
|
+
*/
|
|
81
|
+
migrationOnly?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Only partially load modules to retrieve their module joiner configs without running loaders.
|
|
84
|
+
* Useful for type generation.
|
|
85
|
+
*/
|
|
86
|
+
schemaOnly?: boolean;
|
|
87
|
+
cwd?: string;
|
|
88
|
+
};
|
|
89
|
+
export declare function AcmeKitApp(options?: AcmeKitAppOptions): Promise<AcmeKitAppOutput>;
|
|
90
|
+
export declare function AcmeKitAppMigrateUp(options?: AcmeKitAppOptions & {
|
|
91
|
+
allOrNothing?: boolean;
|
|
92
|
+
}): Promise<void>;
|
|
93
|
+
export declare function AcmeKitAppMigrateDown(moduleNames: string[], options?: AcmeKitAppOptions): Promise<void>;
|
|
94
|
+
export declare function AcmeKitAppMigrateGenerate(moduleNames: string[], options?: AcmeKitAppOptions): Promise<void>;
|
|
95
|
+
export declare function AcmeKitAppGetLinksExecutionPlanner(options?: AcmeKitAppOptions): Promise<ILinkMigrationsPlanner>;
|
|
96
|
+
//# sourceMappingURL=acmekit-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acmekit-app.d.ts","sourceRoot":"","sources":["../src/acmekit-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAEL,yBAAyB,EAGzB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EAEZ,gBAAgB,EAIhB,kBAAkB,EAClB,8BAA8B,EAC9B,mBAAmB,EACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAOL,YAAY,EAMZ,OAAO,EAIR,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAIL,0BAA0B,EAC3B,MAAM,kBAAkB,CAAA;AAMzB,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE;IACtC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACnB,MAAM,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACxE,MAAM,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACzE,MAAM,MAAM,uBAAuB,GAAG,MAAM,sBAAsB,CAAA;AAElE,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAClB,MAAM,GACN,OAAO,GACP,OAAO,CAAC,yBAAyB,GAAG,yBAAyB,CAAC,CAAA;CACnE,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,8BAA8B,CAAC,UAAU,CAAC,GAAG;QACtD;;;;;;;;;;;;;WAaG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,CAAA;CACF,CAAA;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,aAAa,EAAE,mBAAmB,CAAA;IAClC,eAAe,EAAE,gBAAgB,CAAA;IACjC,qBAAqB,CAAC,EAAE,eAAe,CAAA;IACvC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,gBA8GA;AAkFD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC,CAAA;IACtD,IAAI,EAAE,IAAI,GAAG,SAAS,CAAA;IACtB,KAAK,EAAE,mBAAmB,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,SAAS,CAAC,EAAE,YAAY,CAAC,aAAa,CAAA;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,aAAa,EAAE,cAAc,CAAA;IAC7B,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,kBAAkB,EAAE,kBAAkB,CAAA;IACtC,6BAA6B,EAAE,uBAAuB,CAAA;IACtD,qBAAqB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1C,4BAA4B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,eAAe,CAAC,EAAE,gBAAgB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC3C,eAAe,CAAC,EAAE,gBAAgB,CAAA;IAClC,qBAAqB,CAAC,EAAE,eAAe,CAAA;IACvC,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAA;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,WAAW,CAAC,EAAE,0BAA0B,GAAG,0BAA0B,EAAE,CAAA;IACvE,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,oBAAoB,CAAC,EAAE,GAAG,CAAA;IAC1B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAkXD,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAE3B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,iBAAiB,GAAG;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3D,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,kCAAkC,CACtD,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CASjC"}
|
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadModules = loadModules;
|
|
4
|
+
exports.AcmeKitApp = AcmeKitApp;
|
|
5
|
+
exports.AcmeKitAppMigrateUp = AcmeKitAppMigrateUp;
|
|
6
|
+
exports.AcmeKitAppMigrateDown = AcmeKitAppMigrateDown;
|
|
7
|
+
exports.AcmeKitAppMigrateGenerate = AcmeKitAppMigrateGenerate;
|
|
8
|
+
exports.AcmeKitAppGetLinksExecutionPlanner = AcmeKitAppGetLinksExecutionPlanner;
|
|
9
|
+
const awilix_1 = require("@acmekit/deps/awilix");
|
|
10
|
+
const utils_1 = require("@acmekit/utils");
|
|
11
|
+
const link_1 = require("./link");
|
|
12
|
+
const acmekit_module_1 = require("./acmekit-module");
|
|
13
|
+
const remote_query_1 = require("./remote-query");
|
|
14
|
+
const types_1 = require("./types");
|
|
15
|
+
const LinkModulePackage = utils_1.MODULE_PACKAGE_NAMES[utils_1.Modules.LINK];
|
|
16
|
+
async function loadModules(args) {
|
|
17
|
+
const { modulesConfig, sharedContainer, sharedResourcesConfig, migrationOnly = false, schemaOnly = false, loaderOnly = false, workerMode = "shared", cwd, } = args;
|
|
18
|
+
const allModules = {};
|
|
19
|
+
const modulesToLoad = [];
|
|
20
|
+
for (const moduleName of Object.keys(modulesConfig)) {
|
|
21
|
+
const mod = modulesConfig[moduleName];
|
|
22
|
+
let path;
|
|
23
|
+
let moduleExports = undefined;
|
|
24
|
+
let declaration = {};
|
|
25
|
+
let definition = undefined;
|
|
26
|
+
// TODO: We are keeping mod === false for backward compatibility for now
|
|
27
|
+
if (mod === false || ((0, utils_1.isObject)(mod) && "disable" in mod && mod.disable)) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if ((0, utils_1.isObject)(mod)) {
|
|
31
|
+
const mod_ = mod;
|
|
32
|
+
path = mod_.resolve ?? utils_1.MODULE_PACKAGE_NAMES[moduleName];
|
|
33
|
+
definition = mod_.definition;
|
|
34
|
+
moduleExports = !(0, utils_1.isString)(mod_.resolve)
|
|
35
|
+
? mod_.resolve
|
|
36
|
+
: undefined;
|
|
37
|
+
declaration = { ...mod };
|
|
38
|
+
delete declaration.definition;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
path = utils_1.MODULE_PACKAGE_NAMES[moduleName];
|
|
42
|
+
}
|
|
43
|
+
declaration.scope ??= types_1.MODULE_SCOPE.INTERNAL;
|
|
44
|
+
if (declaration.scope === types_1.MODULE_SCOPE.INTERNAL) {
|
|
45
|
+
declaration.options ??= {};
|
|
46
|
+
if (!declaration.options.database) {
|
|
47
|
+
declaration.options[utils_1.isSharedConnectionSymbol] = true;
|
|
48
|
+
}
|
|
49
|
+
declaration.options.database ??= {
|
|
50
|
+
...sharedResourcesConfig?.database,
|
|
51
|
+
};
|
|
52
|
+
declaration.options.database.debug ??=
|
|
53
|
+
sharedResourcesConfig?.database?.debug;
|
|
54
|
+
}
|
|
55
|
+
modulesToLoad.push({
|
|
56
|
+
moduleKey: moduleName,
|
|
57
|
+
defaultPath: path,
|
|
58
|
+
declaration,
|
|
59
|
+
sharedContainer,
|
|
60
|
+
moduleDefinition: definition,
|
|
61
|
+
moduleExports,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const loaded = (await acmekit_module_1.AcmeKitModule.bootstrapAll(modulesToLoad, {
|
|
65
|
+
migrationOnly,
|
|
66
|
+
schemaOnly,
|
|
67
|
+
loaderOnly,
|
|
68
|
+
workerMode,
|
|
69
|
+
cwd,
|
|
70
|
+
}));
|
|
71
|
+
if (loaderOnly) {
|
|
72
|
+
return allModules;
|
|
73
|
+
}
|
|
74
|
+
for (const { moduleKey } of modulesToLoad) {
|
|
75
|
+
const service = loaded.find((loadedModule) => loadedModule[moduleKey])?.[moduleKey];
|
|
76
|
+
if (!service) {
|
|
77
|
+
throw new Error(`Module ${moduleKey} could not be loaded.`);
|
|
78
|
+
}
|
|
79
|
+
sharedContainer.register({
|
|
80
|
+
[service.__definition.key]: (0, awilix_1.asValue)(service),
|
|
81
|
+
});
|
|
82
|
+
if (allModules[moduleKey] && !Array.isArray(allModules[moduleKey])) {
|
|
83
|
+
allModules[moduleKey] = [];
|
|
84
|
+
}
|
|
85
|
+
if (allModules[moduleKey]) {
|
|
86
|
+
;
|
|
87
|
+
allModules[moduleKey].push(service);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
allModules[moduleKey] = service;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return allModules;
|
|
94
|
+
}
|
|
95
|
+
async function initializeLinks({ config, linkModules, injectedDependencies, moduleExports, migrationOnly = false, schemaOnly = false, }) {
|
|
96
|
+
try {
|
|
97
|
+
let resources = moduleExports;
|
|
98
|
+
if (!resources) {
|
|
99
|
+
const module = await (0, utils_1.dynamicImport)(LinkModulePackage);
|
|
100
|
+
if ("discoveryPath" in module) {
|
|
101
|
+
const reExportedLoadedModule = await (0, utils_1.dynamicImport)(module.discoveryPath);
|
|
102
|
+
resources = reExportedLoadedModule.default ?? reExportedLoadedModule;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const { initialize, getMigrationPlanner } = resources;
|
|
106
|
+
const linkResolution = await initialize(config, linkModules, injectedDependencies, undefined, migrationOnly, schemaOnly);
|
|
107
|
+
return {
|
|
108
|
+
remoteLink: new link_1.Link(),
|
|
109
|
+
linkResolution,
|
|
110
|
+
getMigrationPlanner,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.warn("Error initializing link modules.", err);
|
|
115
|
+
return {
|
|
116
|
+
remoteLink: undefined,
|
|
117
|
+
linkResolution: undefined,
|
|
118
|
+
getMigrationPlanner: () => void 0,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function isAcmeKitModule(mod) {
|
|
123
|
+
return typeof mod?.initialize === "function";
|
|
124
|
+
}
|
|
125
|
+
function cleanAndMergeSchema(loadedSchema) {
|
|
126
|
+
const defaultAcmeKitSchema = `
|
|
127
|
+
scalar DateTime
|
|
128
|
+
scalar JSON
|
|
129
|
+
directive @enumValue(value: String) on ENUM_VALUE
|
|
130
|
+
`;
|
|
131
|
+
const { schema: cleanedSchema, notFound } = utils_1.GraphQLUtils.cleanGraphQLSchema(defaultAcmeKitSchema + loadedSchema);
|
|
132
|
+
const mergedSchema = utils_1.GraphQLUtils.mergeTypeDefs(cleanedSchema);
|
|
133
|
+
return {
|
|
134
|
+
schema: utils_1.GraphQLUtils.makeExecutableSchema({ typeDefs: mergedSchema }),
|
|
135
|
+
notFound,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function getLoadedSchema() {
|
|
139
|
+
return acmekit_module_1.AcmeKitModule.getAllJoinerConfigs()
|
|
140
|
+
.map((joinerConfig) => joinerConfig?.schema ?? "")
|
|
141
|
+
.join("\n");
|
|
142
|
+
}
|
|
143
|
+
function registerCustomJoinerConfigs(servicesConfig) {
|
|
144
|
+
for (const config of servicesConfig) {
|
|
145
|
+
if (!config.serviceName || config.isReadOnlyLink) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
acmekit_module_1.AcmeKitModule.setJoinerConfig(config.serviceName, config);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async function AcmeKitApp_({ sharedContainer, sharedResourcesConfig, servicesConfig, acmekitConfigPath, modulesConfigFileName, modulesConfig, linkModules, remoteFetchData, injectedDependencies = {}, migrationOnly = false, schemaOnly = false, loaderOnly = false, workerMode = "shared", cwd = process.cwd(), } = {}) {
|
|
152
|
+
const sharedContainer_ = (0, utils_1.createAcmeKitContainer)({}, sharedContainer);
|
|
153
|
+
const config = sharedContainer_.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE, {
|
|
154
|
+
allowUnregistered: true,
|
|
155
|
+
});
|
|
156
|
+
const logger = sharedContainer_.resolve(utils_1.ContainerRegistrationKeys.LOGGER, {
|
|
157
|
+
allowUnregistered: true,
|
|
158
|
+
});
|
|
159
|
+
const discovered = await (0, utils_1.discoverFeatureFlagsFromDir)(cwd);
|
|
160
|
+
for (const def of discovered) {
|
|
161
|
+
(0, utils_1.registerFeatureFlag)({
|
|
162
|
+
flag: def,
|
|
163
|
+
projectConfigFlags: config?.featureFlags ?? {},
|
|
164
|
+
router: utils_1.FeatureFlag,
|
|
165
|
+
logger,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
const onApplicationShutdown = async () => {
|
|
169
|
+
await (0, utils_1.promiseAll)([
|
|
170
|
+
acmekit_module_1.AcmeKitModule.onApplicationShutdown(),
|
|
171
|
+
sharedContainer_.dispose(),
|
|
172
|
+
]);
|
|
173
|
+
};
|
|
174
|
+
const onApplicationPrepareShutdown = async () => {
|
|
175
|
+
await (0, utils_1.promiseAll)([acmekit_module_1.AcmeKitModule.onApplicationPrepareShutdown()]);
|
|
176
|
+
};
|
|
177
|
+
const onApplicationStart = async () => {
|
|
178
|
+
await acmekit_module_1.AcmeKitModule.onApplicationStart();
|
|
179
|
+
};
|
|
180
|
+
const modules = modulesConfig ??
|
|
181
|
+
(await (0, utils_1.dynamicImport)(acmekitConfigPath ?? cwd + (modulesConfigFileName ?? "/modules-config"))).default;
|
|
182
|
+
const dbData = utils_1.ModulesSdkUtils.loadDatabaseConfig("acmekit", sharedResourcesConfig, true);
|
|
183
|
+
registerCustomJoinerConfigs(servicesConfig ?? []);
|
|
184
|
+
if (sharedResourcesConfig?.database?.connection &&
|
|
185
|
+
!injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {
|
|
186
|
+
injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION] =
|
|
187
|
+
sharedResourcesConfig.database.connection;
|
|
188
|
+
}
|
|
189
|
+
else if (dbData.clientUrl &&
|
|
190
|
+
!injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {
|
|
191
|
+
injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION] =
|
|
192
|
+
utils_1.ModulesSdkUtils.createPgConnection({
|
|
193
|
+
...(sharedResourcesConfig?.database ?? {}),
|
|
194
|
+
...dbData,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
// remove the link module from the modules
|
|
198
|
+
const linkModule = modules[LinkModulePackage] ?? modules[utils_1.Modules.LINK];
|
|
199
|
+
delete modules[LinkModulePackage];
|
|
200
|
+
delete modules[utils_1.Modules.LINK];
|
|
201
|
+
let linkModuleOrOptions = {};
|
|
202
|
+
if ((0, utils_1.isObject)(linkModule)) {
|
|
203
|
+
linkModuleOrOptions = linkModule;
|
|
204
|
+
}
|
|
205
|
+
for (const injectedDependency of Object.keys(injectedDependencies)) {
|
|
206
|
+
sharedContainer_.register({
|
|
207
|
+
[injectedDependency]: (0, awilix_1.asValue)(injectedDependencies[injectedDependency]),
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
const allModules = await loadModules({
|
|
211
|
+
modulesConfig: modules,
|
|
212
|
+
sharedContainer: sharedContainer_,
|
|
213
|
+
sharedResourcesConfig: { database: dbData },
|
|
214
|
+
migrationOnly,
|
|
215
|
+
schemaOnly,
|
|
216
|
+
loaderOnly,
|
|
217
|
+
workerMode,
|
|
218
|
+
cwd,
|
|
219
|
+
});
|
|
220
|
+
if (loaderOnly) {
|
|
221
|
+
async function query(...args) {
|
|
222
|
+
throw new Error("Querying not allowed in loaderOnly mode");
|
|
223
|
+
}
|
|
224
|
+
query.graph = query;
|
|
225
|
+
query.gql = query;
|
|
226
|
+
return {
|
|
227
|
+
onApplicationShutdown,
|
|
228
|
+
onApplicationPrepareShutdown,
|
|
229
|
+
onApplicationStart,
|
|
230
|
+
modules: allModules,
|
|
231
|
+
link: undefined,
|
|
232
|
+
query: query,
|
|
233
|
+
runMigrations: async () => {
|
|
234
|
+
throw new Error("Migrations not allowed in loaderOnly mode");
|
|
235
|
+
},
|
|
236
|
+
revertMigrations: async () => {
|
|
237
|
+
throw new Error("Revert migrations not allowed in loaderOnly mode");
|
|
238
|
+
},
|
|
239
|
+
generateMigrations: async () => {
|
|
240
|
+
throw new Error("Generate migrations not allowed in loaderOnly mode");
|
|
241
|
+
},
|
|
242
|
+
linkMigrationExecutionPlanner: () => {
|
|
243
|
+
throw new Error("Migrations planner is not avaibable in loaderOnly mode");
|
|
244
|
+
},
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
// Share Event bus with link modules
|
|
248
|
+
injectedDependencies[utils_1.Modules.EVENT_BUS] = sharedContainer_.resolve(utils_1.Modules.EVENT_BUS, {
|
|
249
|
+
allowUnregistered: true,
|
|
250
|
+
});
|
|
251
|
+
linkModules ??= [];
|
|
252
|
+
if (!Array.isArray(linkModules)) {
|
|
253
|
+
linkModules = [linkModules];
|
|
254
|
+
}
|
|
255
|
+
linkModules.push(...acmekit_module_1.AcmeKitModule.getCustomLinks());
|
|
256
|
+
const allLoadedJoinerConfigs = acmekit_module_1.AcmeKitModule.getAllJoinerConfigs();
|
|
257
|
+
for (let linkIdx = 0; linkIdx < linkModules.length; linkIdx++) {
|
|
258
|
+
const customLink = linkModules[linkIdx];
|
|
259
|
+
if (typeof customLink === "function") {
|
|
260
|
+
linkModules[linkIdx] = customLink(allLoadedJoinerConfigs);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const { remoteLink, getMigrationPlanner } = await initializeLinks({
|
|
264
|
+
config: linkModuleOrOptions,
|
|
265
|
+
linkModules,
|
|
266
|
+
injectedDependencies,
|
|
267
|
+
moduleExports: isAcmeKitModule(linkModule) ? linkModule : undefined,
|
|
268
|
+
migrationOnly,
|
|
269
|
+
schemaOnly,
|
|
270
|
+
});
|
|
271
|
+
const loadedSchema = getLoadedSchema();
|
|
272
|
+
const { schema, notFound } = cleanAndMergeSchema(loadedSchema);
|
|
273
|
+
const entitiesMap = schema.getTypeMap();
|
|
274
|
+
const remoteQuery = new remote_query_1.RemoteQuery({
|
|
275
|
+
servicesConfig,
|
|
276
|
+
customRemoteFetchData: remoteFetchData,
|
|
277
|
+
entitiesMap,
|
|
278
|
+
});
|
|
279
|
+
const applyMigration = async ({ modulesNames, action = "run", allOrNothing = false, }) => {
|
|
280
|
+
const moduleResolutions = Array.from(new Set(modulesNames)).map((moduleName) => {
|
|
281
|
+
return {
|
|
282
|
+
moduleName,
|
|
283
|
+
resolution: acmekit_module_1.AcmeKitModule.getModuleResolutions(moduleName),
|
|
284
|
+
};
|
|
285
|
+
});
|
|
286
|
+
const missingModules = moduleResolutions
|
|
287
|
+
.filter(({ resolution }) => !resolution)
|
|
288
|
+
.map(({ moduleName }) => moduleName);
|
|
289
|
+
if (missingModules.length) {
|
|
290
|
+
const error = new utils_1.AcmeKitError(utils_1.AcmeKitError.Types.UNKNOWN_MODULES, `Cannot ${action} migrations for unknown module(s) ${missingModules.join(",")}`, utils_1.AcmeKitError.Codes.UNKNOWN_MODULES);
|
|
291
|
+
error["allModules"] = Object.keys(allModules);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
let executedResolutions = []; // [moduleResolution, migration names[]]
|
|
295
|
+
const run = async ({ resolution: moduleResolution }, migrationNames) => {
|
|
296
|
+
if (!moduleResolution.options?.database &&
|
|
297
|
+
moduleResolution.moduleDeclaration?.scope === types_1.MODULE_SCOPE.INTERNAL) {
|
|
298
|
+
moduleResolution.options ??= {};
|
|
299
|
+
moduleResolution.options.database = {
|
|
300
|
+
...(sharedResourcesConfig?.database ?? {}),
|
|
301
|
+
};
|
|
302
|
+
moduleResolution.options.database.debug ??=
|
|
303
|
+
sharedResourcesConfig?.database?.debug;
|
|
304
|
+
}
|
|
305
|
+
const migrationOptions = {
|
|
306
|
+
moduleKey: moduleResolution.definition.key,
|
|
307
|
+
modulePath: moduleResolution.resolutionPath,
|
|
308
|
+
container: sharedContainer,
|
|
309
|
+
options: moduleResolution.options,
|
|
310
|
+
moduleExports: moduleResolution.moduleExports,
|
|
311
|
+
cwd,
|
|
312
|
+
};
|
|
313
|
+
if (action === "revert") {
|
|
314
|
+
await acmekit_module_1.AcmeKitModule.migrateDown(migrationOptions, migrationNames);
|
|
315
|
+
}
|
|
316
|
+
else if (action === "run") {
|
|
317
|
+
const ranMigrationsResult = await acmekit_module_1.AcmeKitModule.migrateUp(migrationOptions);
|
|
318
|
+
// Store for revert if anything goes wrong later
|
|
319
|
+
executedResolutions.push([
|
|
320
|
+
moduleResolution,
|
|
321
|
+
ranMigrationsResult?.map((r) => r.name) ?? [],
|
|
322
|
+
]);
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
await acmekit_module_1.AcmeKitModule.migrateGenerate(migrationOptions);
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
const concurrency = parseInt(process.env.DB_MIGRATION_CONCURRENCY ?? "1");
|
|
329
|
+
try {
|
|
330
|
+
const results = await (0, utils_1.executeWithConcurrency)(moduleResolutions.map((a) => () => run(a)), concurrency);
|
|
331
|
+
const rejections = results.filter((result) => result.status === "rejected");
|
|
332
|
+
if (rejections.length) {
|
|
333
|
+
throw new Error(`Some migrations failed to ${action}: ${rejections
|
|
334
|
+
.map((r) => r.reason)
|
|
335
|
+
.join(", ")}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
if (allOrNothing) {
|
|
340
|
+
action = "revert";
|
|
341
|
+
await (0, utils_1.executeWithConcurrency)(executedResolutions.map(([resolution, migrationNames]) => () => run({ resolution }, migrationNames)), concurrency);
|
|
342
|
+
}
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
const runMigrations = async ({ allOrNothing = false } = {
|
|
347
|
+
allOrNothing: false,
|
|
348
|
+
}) => {
|
|
349
|
+
await applyMigration({
|
|
350
|
+
modulesNames: Object.keys(allModules),
|
|
351
|
+
allOrNothing,
|
|
352
|
+
});
|
|
353
|
+
};
|
|
354
|
+
const revertMigrations = async (modulesNames) => {
|
|
355
|
+
await applyMigration({
|
|
356
|
+
modulesNames,
|
|
357
|
+
action: "revert",
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
const generateMigrations = async (modulesNames) => {
|
|
361
|
+
await applyMigration({
|
|
362
|
+
modulesNames,
|
|
363
|
+
action: "generate",
|
|
364
|
+
});
|
|
365
|
+
};
|
|
366
|
+
const getMigrationPlannerFn = () => {
|
|
367
|
+
const options = "scope" in linkModuleOrOptions
|
|
368
|
+
? { ...linkModuleOrOptions.options }
|
|
369
|
+
: {
|
|
370
|
+
...linkModuleOrOptions,
|
|
371
|
+
};
|
|
372
|
+
options.database ??= {
|
|
373
|
+
...sharedResourcesConfig?.database,
|
|
374
|
+
};
|
|
375
|
+
options.database.debug ??= sharedResourcesConfig?.database?.debug;
|
|
376
|
+
return getMigrationPlanner(options, linkModules);
|
|
377
|
+
};
|
|
378
|
+
const indexModule = sharedContainer_.resolve(utils_1.Modules.INDEX, {
|
|
379
|
+
allowUnregistered: true,
|
|
380
|
+
});
|
|
381
|
+
return {
|
|
382
|
+
onApplicationShutdown,
|
|
383
|
+
onApplicationPrepareShutdown,
|
|
384
|
+
onApplicationStart,
|
|
385
|
+
modules: allModules,
|
|
386
|
+
link: remoteLink,
|
|
387
|
+
query: (0, remote_query_1.createQuery)({
|
|
388
|
+
remoteQuery,
|
|
389
|
+
indexModule,
|
|
390
|
+
container: sharedContainer_,
|
|
391
|
+
}), // TODO: rm any once we remove the old RemoteQueryFunction and rely on the Query object instead,
|
|
392
|
+
entitiesMap,
|
|
393
|
+
gqlSchema: schema,
|
|
394
|
+
notFound,
|
|
395
|
+
runMigrations,
|
|
396
|
+
revertMigrations,
|
|
397
|
+
generateMigrations,
|
|
398
|
+
linkMigrationExecutionPlanner: getMigrationPlannerFn,
|
|
399
|
+
sharedContainer: sharedContainer_,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
async function AcmeKitApp(options = {}) {
|
|
403
|
+
return await AcmeKitApp_(options);
|
|
404
|
+
}
|
|
405
|
+
async function AcmeKitAppMigrateUp(options = {}) {
|
|
406
|
+
const migrationOnly = true;
|
|
407
|
+
const { runMigrations } = await AcmeKitApp_({
|
|
408
|
+
...options,
|
|
409
|
+
migrationOnly,
|
|
410
|
+
});
|
|
411
|
+
await runMigrations({ allOrNothing: options.allOrNothing }).finally(acmekit_module_1.AcmeKitModule.clearInstances);
|
|
412
|
+
}
|
|
413
|
+
async function AcmeKitAppMigrateDown(moduleNames, options = {}) {
|
|
414
|
+
const migrationOnly = true;
|
|
415
|
+
const { revertMigrations } = await AcmeKitApp_({
|
|
416
|
+
...options,
|
|
417
|
+
migrationOnly,
|
|
418
|
+
});
|
|
419
|
+
await revertMigrations(moduleNames).finally(acmekit_module_1.AcmeKitModule.clearInstances);
|
|
420
|
+
}
|
|
421
|
+
async function AcmeKitAppMigrateGenerate(moduleNames, options = {}) {
|
|
422
|
+
const migrationOnly = true;
|
|
423
|
+
const { generateMigrations } = await AcmeKitApp_({
|
|
424
|
+
...options,
|
|
425
|
+
migrationOnly,
|
|
426
|
+
});
|
|
427
|
+
await generateMigrations(moduleNames).finally(acmekit_module_1.AcmeKitModule.clearInstances);
|
|
428
|
+
}
|
|
429
|
+
async function AcmeKitAppGetLinksExecutionPlanner(options = {}) {
|
|
430
|
+
const migrationOnly = true;
|
|
431
|
+
const { linkMigrationExecutionPlanner } = await AcmeKitApp_({
|
|
432
|
+
...options,
|
|
433
|
+
migrationOnly,
|
|
434
|
+
});
|
|
435
|
+
return linkMigrationExecutionPlanner();
|
|
436
|
+
}
|
|
437
|
+
//# sourceMappingURL=acmekit-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acmekit-app.js","sourceRoot":"","sources":["../src/acmekit-app.ts"],"names":[],"mappings":"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"}
|