@stamhoofd/build-development-env 2.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +665 -0
- package/README.md +3 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/src/Service.d.ts +6 -0
- package/dist/src/Service.d.ts.map +1 -0
- package/dist/src/Service.js +3 -0
- package/dist/src/Service.js.map +1 -0
- package/dist/src/build.d.ts +9 -0
- package/dist/src/build.d.ts.map +1 -0
- package/dist/src/build.js +128 -0
- package/dist/src/build.js.map +1 -0
- package/dist/src/buildPresets.d.ts +8 -0
- package/dist/src/buildPresets.d.ts.map +1 -0
- package/dist/src/buildPresets.js +100 -0
- package/dist/src/buildPresets.js.map +1 -0
- package/dist/src/helpers/1password.d.ts +8 -0
- package/dist/src/helpers/1password.d.ts.map +1 -0
- package/dist/src/helpers/1password.js +33 -0
- package/dist/src/helpers/1password.js.map +1 -0
- package/dist/src/helpers/cache.d.ts +9 -0
- package/dist/src/helpers/cache.d.ts.map +1 -0
- package/dist/src/helpers/cache.js +144 -0
- package/dist/src/helpers/cache.js.map +1 -0
- package/dist/src/helpers/project-path.d.ts +5 -0
- package/dist/src/helpers/project-path.d.ts.map +1 -0
- package/dist/src/helpers/project-path.js +35 -0
- package/dist/src/helpers/project-path.js.map +1 -0
- package/dist/src/init.d.ts +2 -0
- package/dist/src/init.d.ts.map +1 -0
- package/dist/src/init.js +41 -0
- package/dist/src/init.js.map +1 -0
- package/dist/src/presets/internal.d.ts +5 -0
- package/dist/src/presets/internal.d.ts.map +1 -0
- package/dist/src/presets/internal.js +38 -0
- package/dist/src/presets/internal.js.map +1 -0
- package/dist/src/presets/keeo.d.ts +3 -0
- package/dist/src/presets/keeo.d.ts.map +1 -0
- package/dist/src/presets/keeo.js +36 -0
- package/dist/src/presets/keeo.js.map +1 -0
- package/dist/src/presets/platform.d.ts +2 -0
- package/dist/src/presets/platform.d.ts.map +1 -0
- package/dist/src/presets/platform.js +10 -0
- package/dist/src/presets/platform.js.map +1 -0
- package/dist/src/presets/ports-primary.d.ts +3 -0
- package/dist/src/presets/ports-primary.d.ts.map +1 -0
- package/dist/src/presets/ports-primary.js +53 -0
- package/dist/src/presets/ports-primary.js.map +1 -0
- package/dist/src/presets/ports-secundary.d.ts +3 -0
- package/dist/src/presets/ports-secundary.d.ts.map +1 -0
- package/dist/src/presets/ports-secundary.js +16 -0
- package/dist/src/presets/ports-secundary.js.map +1 -0
- package/dist/src/presets/ravot.d.ts +3 -0
- package/dist/src/presets/ravot.d.ts.map +1 -0
- package/dist/src/presets/ravot.js +35 -0
- package/dist/src/presets/ravot.js.map +1 -0
- package/dist/src/presets/services/caddy.d.ts +3 -0
- package/dist/src/presets/services/caddy.d.ts.map +1 -0
- package/dist/src/presets/services/caddy.js +253 -0
- package/dist/src/presets/services/caddy.js.map +1 -0
- package/dist/src/presets/services/coredns.d.ts +3 -0
- package/dist/src/presets/services/coredns.d.ts.map +1 -0
- package/dist/src/presets/services/coredns.js +13 -0
- package/dist/src/presets/services/coredns.js.map +1 -0
- package/dist/src/presets/services/frontend-type-checking.d.ts +3 -0
- package/dist/src/presets/services/frontend-type-checking.d.ts.map +1 -0
- package/dist/src/presets/services/frontend-type-checking.js +13 -0
- package/dist/src/presets/services/frontend-type-checking.js.map +1 -0
- package/dist/src/presets/services/maildev.d.ts +5 -0
- package/dist/src/presets/services/maildev.d.ts.map +1 -0
- package/dist/src/presets/services/maildev.js +28 -0
- package/dist/src/presets/services/maildev.js.map +1 -0
- package/dist/src/presets/services/stripe.d.ts +11 -0
- package/dist/src/presets/services/stripe.d.ts.map +1 -0
- package/dist/src/presets/services/stripe.js +51 -0
- package/dist/src/presets/services/stripe.js.map +1 -0
- package/dist/src/presets/stamhoofd.d.ts +3 -0
- package/dist/src/presets/stamhoofd.d.ts.map +1 -0
- package/dist/src/presets/stamhoofd.js +43 -0
- package/dist/src/presets/stamhoofd.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/esm/dist/index.d.ts +2 -0
- package/esm/dist/index.d.ts.map +1 -0
- package/esm/dist/index.js +2 -0
- package/esm/dist/index.js.map +1 -0
- package/esm/dist/src/Service.d.ts +6 -0
- package/esm/dist/src/Service.d.ts.map +1 -0
- package/esm/dist/src/Service.js +2 -0
- package/esm/dist/src/Service.js.map +1 -0
- package/esm/dist/src/build.d.ts +9 -0
- package/esm/dist/src/build.d.ts.map +1 -0
- package/esm/dist/src/build.js +122 -0
- package/esm/dist/src/build.js.map +1 -0
- package/esm/dist/src/buildPresets.d.ts +8 -0
- package/esm/dist/src/buildPresets.d.ts.map +1 -0
- package/esm/dist/src/buildPresets.js +74 -0
- package/esm/dist/src/buildPresets.js.map +1 -0
- package/esm/dist/src/helpers/1password.d.ts +8 -0
- package/esm/dist/src/helpers/1password.d.ts.map +1 -0
- package/esm/dist/src/helpers/1password.js +28 -0
- package/esm/dist/src/helpers/1password.js.map +1 -0
- package/esm/dist/src/helpers/cache.d.ts +9 -0
- package/esm/dist/src/helpers/cache.d.ts.map +1 -0
- package/esm/dist/src/helpers/cache.js +139 -0
- package/esm/dist/src/helpers/cache.js.map +1 -0
- package/esm/dist/src/helpers/project-path.d.ts +5 -0
- package/esm/dist/src/helpers/project-path.d.ts.map +1 -0
- package/esm/dist/src/helpers/project-path.js +31 -0
- package/esm/dist/src/helpers/project-path.js.map +1 -0
- package/esm/dist/src/init.d.ts +2 -0
- package/esm/dist/src/init.d.ts.map +1 -0
- package/esm/dist/src/init.js +38 -0
- package/esm/dist/src/init.js.map +1 -0
- package/esm/dist/src/presets/internal.d.ts +5 -0
- package/esm/dist/src/presets/internal.d.ts.map +1 -0
- package/esm/dist/src/presets/internal.js +34 -0
- package/esm/dist/src/presets/internal.js.map +1 -0
- package/esm/dist/src/presets/keeo.d.ts +3 -0
- package/esm/dist/src/presets/keeo.d.ts.map +1 -0
- package/esm/dist/src/presets/keeo.js +33 -0
- package/esm/dist/src/presets/keeo.js.map +1 -0
- package/esm/dist/src/presets/platform.d.ts +2 -0
- package/esm/dist/src/presets/platform.d.ts.map +1 -0
- package/esm/dist/src/presets/platform.js +7 -0
- package/esm/dist/src/presets/platform.js.map +1 -0
- package/esm/dist/src/presets/ports-primary.d.ts +3 -0
- package/esm/dist/src/presets/ports-primary.d.ts.map +1 -0
- package/esm/dist/src/presets/ports-primary.js +50 -0
- package/esm/dist/src/presets/ports-primary.js.map +1 -0
- package/esm/dist/src/presets/ports-secundary.d.ts +3 -0
- package/esm/dist/src/presets/ports-secundary.d.ts.map +1 -0
- package/esm/dist/src/presets/ports-secundary.js +13 -0
- package/esm/dist/src/presets/ports-secundary.js.map +1 -0
- package/esm/dist/src/presets/ravot.d.ts +3 -0
- package/esm/dist/src/presets/ravot.d.ts.map +1 -0
- package/esm/dist/src/presets/ravot.js +32 -0
- package/esm/dist/src/presets/ravot.js.map +1 -0
- package/esm/dist/src/presets/services/caddy.d.ts +3 -0
- package/esm/dist/src/presets/services/caddy.d.ts.map +1 -0
- package/esm/dist/src/presets/services/caddy.js +249 -0
- package/esm/dist/src/presets/services/caddy.js.map +1 -0
- package/esm/dist/src/presets/services/coredns.d.ts +3 -0
- package/esm/dist/src/presets/services/coredns.d.ts.map +1 -0
- package/esm/dist/src/presets/services/coredns.js +10 -0
- package/esm/dist/src/presets/services/coredns.js.map +1 -0
- package/esm/dist/src/presets/services/frontend-type-checking.d.ts +3 -0
- package/esm/dist/src/presets/services/frontend-type-checking.d.ts.map +1 -0
- package/esm/dist/src/presets/services/frontend-type-checking.js +10 -0
- package/esm/dist/src/presets/services/frontend-type-checking.js.map +1 -0
- package/esm/dist/src/presets/services/maildev.d.ts +5 -0
- package/esm/dist/src/presets/services/maildev.d.ts.map +1 -0
- package/esm/dist/src/presets/services/maildev.js +24 -0
- package/esm/dist/src/presets/services/maildev.js.map +1 -0
- package/esm/dist/src/presets/services/stripe.d.ts +11 -0
- package/esm/dist/src/presets/services/stripe.d.ts.map +1 -0
- package/esm/dist/src/presets/services/stripe.js +46 -0
- package/esm/dist/src/presets/services/stripe.js.map +1 -0
- package/esm/dist/src/presets/stamhoofd.d.ts +3 -0
- package/esm/dist/src/presets/stamhoofd.d.ts.map +1 -0
- package/esm/dist/src/presets/stamhoofd.js +40 -0
- package/esm/dist/src/presets/stamhoofd.js.map +1 -0
- package/esm/dist/tsconfig.tsbuildinfo +1 -0
- package/esm/package.json +3 -0
- package/package.json +24 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/Service.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;CACzD,GAAG;IACA,QAAQ,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS,CAAC;CACtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Service.js","sourceRoot":"","sources":["../../src/Service.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InitFunction } from './buildPresets';
|
|
2
|
+
import { Service } from './Service';
|
|
3
|
+
export declare function loadEnvironmentFile(name: string): Promise<any>;
|
|
4
|
+
export declare function buildConfig(name: string, service: Service): Promise<{
|
|
5
|
+
config: any;
|
|
6
|
+
initFunctions: InitFunction[];
|
|
7
|
+
}>;
|
|
8
|
+
export declare function build(name: string, service: Service): Promise<any>;
|
|
9
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,gBAgCrD;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAgGzH;AAED,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAExE"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadEnvironmentFile = loadEnvironmentFile;
|
|
4
|
+
exports.buildConfig = buildConfig;
|
|
5
|
+
exports.build = build;
|
|
6
|
+
const tslib_1 = require("tslib");
|
|
7
|
+
const buildPresets_1 = require("./buildPresets");
|
|
8
|
+
const project_path_1 = require("./helpers/project-path");
|
|
9
|
+
const promises_1 = tslib_1.__importDefault(require("node:fs/promises"));
|
|
10
|
+
async function fileExists(path) {
|
|
11
|
+
try {
|
|
12
|
+
await promises_1.default.access(path);
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function loadEnvironmentFile(name) {
|
|
20
|
+
var _a;
|
|
21
|
+
const rootPath = await (0, project_path_1.getProjectPath)();
|
|
22
|
+
const envFileName = name ? `env.${name}` : 'env';
|
|
23
|
+
if (!(await fileExists(rootPath + envFileName + '.js'))) {
|
|
24
|
+
throw new Error(`Environment file "${envFileName}.js" not found in the root directory`);
|
|
25
|
+
}
|
|
26
|
+
const isInternalContributor = await fileExists(rootPath + '.internal-contributor');
|
|
27
|
+
// Load names
|
|
28
|
+
const globalEnvFile = await Promise.resolve(`${rootPath + envFileName + '.js'}`).then(s => tslib_1.__importStar(require(s)));
|
|
29
|
+
let localEnvFile = undefined;
|
|
30
|
+
try {
|
|
31
|
+
localEnvFile = await Promise.resolve(`${rootPath + envFileName + '.local.js'}`).then(s => tslib_1.__importStar(require(s)));
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
// If the local env file doesn't exist, we can ignore it
|
|
35
|
+
}
|
|
36
|
+
let environment = localEnvFile !== null && localEnvFile !== void 0 ? localEnvFile : globalEnvFile;
|
|
37
|
+
if (isInternalContributor) {
|
|
38
|
+
environment = {
|
|
39
|
+
...environment,
|
|
40
|
+
presets: [...((_a = environment.presets) !== null && _a !== void 0 ? _a : []), 'internal'],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return environment;
|
|
44
|
+
}
|
|
45
|
+
async function buildConfig(name, service) {
|
|
46
|
+
var _a;
|
|
47
|
+
const projectPath = await (0, project_path_1.getProjectPath)();
|
|
48
|
+
const environment = await loadEnvironmentFile(name);
|
|
49
|
+
// Only return these env variables in backend services, to not expose development credentials in the browser
|
|
50
|
+
const backendSpecific = {
|
|
51
|
+
// By default use local MySQL server
|
|
52
|
+
DB_HOST: '127.0.0.1',
|
|
53
|
+
DB_USER: 'root',
|
|
54
|
+
DB_PASS: 'root',
|
|
55
|
+
DB_DATABASE: 'stamhoofd',
|
|
56
|
+
// We don't need AWS in development, so set it to empty values
|
|
57
|
+
AWS_ACCESS_KEY_ID: '',
|
|
58
|
+
AWS_SECRET_ACCESS_KEY: '',
|
|
59
|
+
AWS_REGION: 'eu-west-1',
|
|
60
|
+
// We do need an AWS S3 compatible storage in development.
|
|
61
|
+
// Set it to empty for now...
|
|
62
|
+
SPACES_ENDPOINT: 'ams3.digitaloceanspaces.com',
|
|
63
|
+
SPACES_BUCKET: 'stamhoofd',
|
|
64
|
+
SPACES_KEY: '',
|
|
65
|
+
SPACES_SECRET: '',
|
|
66
|
+
SPACES_PREFIX: 'simon', // todo: use username
|
|
67
|
+
// Mollie client id is shared with the frontend
|
|
68
|
+
MOLLIE_SECRET: '',
|
|
69
|
+
MOLLIE_API_KEY: '',
|
|
70
|
+
// Stripe secret key - required to test Stripe locally
|
|
71
|
+
STRIPE_SECRET_KEY: '',
|
|
72
|
+
STRIPE_ENDPOINT_SECRET: '',
|
|
73
|
+
STRIPE_CONNECT_ENDPOINT_SECRET: '',
|
|
74
|
+
// An internal secret, used for verifying infomration passed between services
|
|
75
|
+
// This one is public and committed to the repository because it is only used in development
|
|
76
|
+
INTERNAL_SECRET_KEY: 'vklRsSAOd0hqb4sx42kcTpFK6f3rCePi3HK/pJw5vz8=',
|
|
77
|
+
// Disable crons in certain development environments
|
|
78
|
+
CRONS_DISABLED: false,
|
|
79
|
+
// Change this if the SMTP server can't send from all domains
|
|
80
|
+
WHITELISTED_EMAIL_DESTINATIONS: ['*'],
|
|
81
|
+
// Whether to store cache files: todo
|
|
82
|
+
CACHE_PATH: 'backend' in service ? (projectPath + 'backend/app/' + service.backend + '/.cache') : undefined,
|
|
83
|
+
// These are used in development, and are not used in production so safe to use.
|
|
84
|
+
FILE_SIGNING_PUBLIC_KEY: { kty: 'EC', x: 'LZPou8JKNPoxgc1FXqLW_dqAYrv3_3ZoFHACwCiiunw', y: 'kBSKvtDVpa29J2mh5pICQD12dKO25fU3Bz-JItNAgEE', crv: 'P-256' },
|
|
85
|
+
FILE_SIGNING_PRIVATE_KEY: { kty: 'EC', x: 'LZPou8JKNPoxgc1FXqLW_dqAYrv3_3ZoFHACwCiiunw', y: 'kBSKvtDVpa29J2mh5pICQD12dKO25fU3Bz-JItNAgEE', crv: 'P-256', d: 'C0xuuMOMKeIDP6YPOz2dO1ccMYYrnpDpzz-_oRoq4io' },
|
|
86
|
+
FILE_SIGNING_ALG: 'ES256',
|
|
87
|
+
// Doesn't matter in development, unless you want to test the upgrade toasts and flows
|
|
88
|
+
LATEST_IOS_VERSION: 109,
|
|
89
|
+
LATEST_ANDROID_VERSION: 109,
|
|
90
|
+
// To test Mollie, we'll need the keys in both the frontend and backend
|
|
91
|
+
MOLLIE_CLIENT_ID: '',
|
|
92
|
+
MOLLIE_ORGANIZATION_TOKEN: '',
|
|
93
|
+
};
|
|
94
|
+
const frontendSpecific = {
|
|
95
|
+
// To test Mollie, we'll need the keys in both the frontend and backend
|
|
96
|
+
MOLLIE_CLIENT_ID: '',
|
|
97
|
+
// The version is visible in the footer of the frontend
|
|
98
|
+
VERSION: '',
|
|
99
|
+
};
|
|
100
|
+
const base = {
|
|
101
|
+
environment: 'development',
|
|
102
|
+
};
|
|
103
|
+
const { config: presetConfig, initFunctions } = await (0, buildPresets_1.buildPresets)(((_a = environment.presets) !== null && _a !== void 0 ? _a : []), service);
|
|
104
|
+
if ('backend' in service) {
|
|
105
|
+
return {
|
|
106
|
+
config: {
|
|
107
|
+
...backendSpecific,
|
|
108
|
+
...base,
|
|
109
|
+
...presetConfig,
|
|
110
|
+
...environment,
|
|
111
|
+
},
|
|
112
|
+
initFunctions,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
config: {
|
|
117
|
+
...frontendSpecific,
|
|
118
|
+
...base,
|
|
119
|
+
...presetConfig,
|
|
120
|
+
...environment,
|
|
121
|
+
},
|
|
122
|
+
initFunctions,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async function build(name, service) {
|
|
126
|
+
return (await buildConfig(name, service)).config;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ConcurrentlyCommandInput } from 'concurrently';
|
|
2
|
+
import { Service } from './Service';
|
|
3
|
+
export type InitFunction = (config: SharedEnvironment) => Promise<undefined | ConcurrentlyCommandInput[]>;
|
|
4
|
+
export declare function buildPresets(presets: string[], service: Service): Promise<{
|
|
5
|
+
config: any;
|
|
6
|
+
initFunctions: InitFunction[];
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=buildPresets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildPresets.d.ts","sourceRoot":"","sources":["../../src/buildPresets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,GAAG,wBAAwB,EAAE,CAAC,CAAC;AAC1G,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAkF/H"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.buildPresets = buildPresets;
|
|
27
|
+
async function buildPresets(presets, service) {
|
|
28
|
+
const defaultPrests = [];
|
|
29
|
+
const todo = [...presets];
|
|
30
|
+
for (const defaultPreset of defaultPrests) {
|
|
31
|
+
if (!todo.includes(defaultPreset)) {
|
|
32
|
+
todo.unshift(defaultPreset);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const result = {};
|
|
36
|
+
const presetsSet = new Set(todo);
|
|
37
|
+
const initFunctions = [];
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/prefer-for-of
|
|
39
|
+
for (let index = 0; index < todo.length; index++) {
|
|
40
|
+
const preset = todo[index];
|
|
41
|
+
// Loop
|
|
42
|
+
const fileLocation = `./presets/${preset}.js`;
|
|
43
|
+
try {
|
|
44
|
+
const presetBuilder = await Promise.resolve(`${fileLocation}`).then(s => __importStar(require(s)));
|
|
45
|
+
let config;
|
|
46
|
+
if ('config' in presetBuilder) {
|
|
47
|
+
config = presetBuilder.config;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
if ('init' in presetBuilder) {
|
|
51
|
+
initFunctions.push(presetBuilder.init);
|
|
52
|
+
}
|
|
53
|
+
if ('build' in presetBuilder) {
|
|
54
|
+
config = await presetBuilder.build(service);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (config && 'presets' in config) {
|
|
58
|
+
// Append to current loop if not yet in the loop
|
|
59
|
+
for (const key of config.presets) {
|
|
60
|
+
if (!presetsSet.has(key)) {
|
|
61
|
+
presetsSet.add(key);
|
|
62
|
+
todo.push(key);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (config) {
|
|
67
|
+
Object.assign(result, config);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (error.message.includes('Cannot find module') && !error.message.includes('package.json')) {
|
|
72
|
+
console.error(error);
|
|
73
|
+
throw new Error(`Preset ${preset} does not exist. Please check the presets directory.`);
|
|
74
|
+
}
|
|
75
|
+
throw new Error(`Failed to load preset ${preset}: ${error.message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Some presets still need to inject things, because they depend on the total configuration of the service
|
|
79
|
+
for (const preset of presetsSet) {
|
|
80
|
+
const fileLocation = `./presets/${preset}.js`;
|
|
81
|
+
try {
|
|
82
|
+
const presetBuilder = await Promise.resolve(`${fileLocation}`).then(s => __importStar(require(s)));
|
|
83
|
+
if ('inject' in presetBuilder) {
|
|
84
|
+
const injectedConfig = await presetBuilder.inject(result, service);
|
|
85
|
+
Object.assign(result, injectedConfig);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (error.message.includes('Cannot find module')) {
|
|
90
|
+
throw new Error(`Preset ${preset} does not exist. Please check the presets directory.`);
|
|
91
|
+
}
|
|
92
|
+
throw new Error(`Failed to inject preset ${preset}: ${error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
config: result,
|
|
97
|
+
initFunctions,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=buildPresets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildPresets.js","sourceRoot":"","sources":["../../src/buildPresets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function escapeShellArg(arg: any): string;
|
|
2
|
+
/**
|
|
3
|
+
* A bit slower - uses local 1Password CLI
|
|
4
|
+
*/
|
|
5
|
+
export declare function read1PasswordCli(key: string, options?: {
|
|
6
|
+
optional: boolean;
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=1password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1password.d.ts","sourceRoot":"","sources":["../../../src/helpers/1password.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,GAAG,KAAA,UAEjC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBpG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.escapeShellArg = escapeShellArg;
|
|
4
|
+
exports.read1PasswordCli = read1PasswordCli;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
7
|
+
const util_1 = tslib_1.__importDefault(require("util"));
|
|
8
|
+
const cache_1 = require("./cache");
|
|
9
|
+
const utility_1 = require("@stamhoofd/utility");
|
|
10
|
+
const execPromise = util_1.default.promisify(child_process_1.exec);
|
|
11
|
+
function escapeShellArg(arg) {
|
|
12
|
+
return `'${arg.replace(/'/g, `'\\''`)}'`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A bit slower - uses local 1Password CLI
|
|
16
|
+
*/
|
|
17
|
+
async function read1PasswordCli(key, options) {
|
|
18
|
+
return await (0, cache_1.cache)(utility_1.Formatter.slug('1password-cli-' + key), async () => {
|
|
19
|
+
// Read key from 1Password
|
|
20
|
+
const result = await execPromise(`op read ${escapeShellArg(key)}`);
|
|
21
|
+
const value = result.stdout;
|
|
22
|
+
// Remove trailing newline (only 1)
|
|
23
|
+
const val = value.substring(0, value.length - 1);
|
|
24
|
+
if (val === '') {
|
|
25
|
+
if (options === null || options === void 0 ? void 0 : options.optional) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
throw new Error('Key not found in 1Password: ' + key);
|
|
29
|
+
}
|
|
30
|
+
return val;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=1password.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1password.js","sourceRoot":"","sources":["../../../src/helpers/1password.ts"],"names":[],"mappings":";;AAMA,wCAEC;AAKD,4CAkBC;;AA/BD,iDAAqC;AACrC,wDAAwB;AACxB,mCAAgC;AAChC,gDAA+C;AAC/C,MAAM,WAAW,GAAG,cAAI,CAAC,SAAS,CAAC,oBAAI,CAAC,CAAC;AAEzC,SAAgB,cAAc,CAAC,GAAG;IAC9B,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,OAA+B;IAC/E,OAAO,MAAM,IAAA,aAAK,EAAC,mBAAS,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE;QAClE,0BAA0B;QAC1B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,mCAAmC;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEjD,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACb,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Since we need to build the environment for every running app, we want to cache some results
|
|
3
|
+
* to prevent for example, prompting for 1Password credentials every time.
|
|
4
|
+
*
|
|
5
|
+
* On top of that, we want to pass data from the 'init' step to the 'build' step, such as the stripe webhook secret.
|
|
6
|
+
*/
|
|
7
|
+
export declare function withFileLock<T>(filePath: string, action: () => Promise<T>): Promise<T>;
|
|
8
|
+
export declare function cache(key: string, getValue?: () => Promise<string>): Promise<any>;
|
|
9
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/helpers/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8BH,wBAAsB,YAAY,CAAC,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,CA0DZ;AAOD,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,gBAsDxE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Since we need to build the environment for every running app, we want to cache some results
|
|
4
|
+
* to prevent for example, prompting for 1Password credentials every time.
|
|
5
|
+
*
|
|
6
|
+
* On top of that, we want to pass data from the 'init' step to the 'build' step, such as the stripe webhook secret.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.withFileLock = withFileLock;
|
|
10
|
+
exports.cache = cache;
|
|
11
|
+
const tslib_1 = require("tslib");
|
|
12
|
+
const promises_1 = tslib_1.__importDefault(require("node:fs/promises"));
|
|
13
|
+
const project_path_1 = require("./project-path");
|
|
14
|
+
// Wait max 60 seconds to acquire the lock
|
|
15
|
+
const LOCK_RETRY_INTERVAL = 100; // ms
|
|
16
|
+
const MAX_RETRIES = 600;
|
|
17
|
+
function withTemporarySignalHandler(cleanup) {
|
|
18
|
+
const handleShutdown = () => {
|
|
19
|
+
cleanup().then(() => {
|
|
20
|
+
// Cleanup completed, exit the process
|
|
21
|
+
process.exit(0); // Exit gracefully
|
|
22
|
+
}).catch((err) => {
|
|
23
|
+
console.error('Error during cleanup:', err);
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
// Attach listeners
|
|
27
|
+
process.on('SIGINT', handleShutdown);
|
|
28
|
+
process.on('SIGTERM', handleShutdown);
|
|
29
|
+
return () => {
|
|
30
|
+
// Detach listeners
|
|
31
|
+
process.off('SIGINT', handleShutdown);
|
|
32
|
+
process.off('SIGTERM', handleShutdown);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async function withFileLock(filePath, action) {
|
|
36
|
+
const lockPath = `${filePath}.lock`;
|
|
37
|
+
let didLock = false;
|
|
38
|
+
;
|
|
39
|
+
const cleanup = withTemporarySignalHandler(async () => {
|
|
40
|
+
if (!didLock)
|
|
41
|
+
return; // No need to clean up if we never acquired the lock
|
|
42
|
+
try {
|
|
43
|
+
await promises_1.default.unlink(lockPath);
|
|
44
|
+
didLock = false; // Reset the lock state
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// ignore
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
try {
|
|
51
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
52
|
+
try {
|
|
53
|
+
if (attempt > 0 && attempt * LOCK_RETRY_INTERVAL % 1000 === 0) {
|
|
54
|
+
console.log('Waiting for lock...');
|
|
55
|
+
}
|
|
56
|
+
const fd = await promises_1.default.open(lockPath, 'wx'); // 'wx' fails if exists
|
|
57
|
+
await fd.close();
|
|
58
|
+
didLock = true;
|
|
59
|
+
try {
|
|
60
|
+
const result = await action(); // Do the actual file operation
|
|
61
|
+
try {
|
|
62
|
+
await promises_1.default.unlink(lockPath); // Release the lock
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
// ignore
|
|
66
|
+
}
|
|
67
|
+
didLock = false;
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
try {
|
|
72
|
+
await promises_1.default.unlink(lockPath); // Release the lock
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
// ignore
|
|
76
|
+
}
|
|
77
|
+
didLock = false;
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (err.code !== 'EEXIST')
|
|
83
|
+
throw err; // Unexpected error
|
|
84
|
+
await sleep(LOCK_RETRY_INTERVAL);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
throw new Error(`Could not acquire lock for ${filePath} after ${MAX_RETRIES} attempts`);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
cleanup(); // Ensure cleanup is called on exit
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function sleep(ms) {
|
|
94
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
95
|
+
}
|
|
96
|
+
// Store the cache in the project root folder (yarn workspace root)
|
|
97
|
+
async function cache(key, getValue) {
|
|
98
|
+
const rootPath = await (0, project_path_1.getProjectPath)();
|
|
99
|
+
// Create cache folder if it doesn't exist
|
|
100
|
+
const cacheFolder = rootPath + '.cache';
|
|
101
|
+
try {
|
|
102
|
+
await promises_1.default.mkdir(cacheFolder, { recursive: true });
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error('Failed to create cache folder:', error);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
const filePath = `${cacheFolder}/${key}`;
|
|
109
|
+
return await withFileLock(filePath, async () => {
|
|
110
|
+
// First read to check if it is cached
|
|
111
|
+
let cachedValue = null;
|
|
112
|
+
try {
|
|
113
|
+
cachedValue = await promises_1.default.readFile(filePath, 'utf-8');
|
|
114
|
+
const decoded = JSON.parse(cachedValue);
|
|
115
|
+
if (decoded && typeof decoded.date === 'number' && typeof decoded.value === 'string') {
|
|
116
|
+
const now = new Date().getTime();
|
|
117
|
+
const age = now - decoded.date;
|
|
118
|
+
// If the cache is older than 1 day, we consider it stale
|
|
119
|
+
if (age < 60 * 60 * 1000 * 24) {
|
|
120
|
+
return decoded.value; // Return cached value if it's still fresh
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error.code !== 'ENOENT') {
|
|
126
|
+
console.error('Failed to read cache file:', error);
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Write file
|
|
131
|
+
if (!getValue) {
|
|
132
|
+
throw new Error(key + ' is not cached, and cannot get fresh value');
|
|
133
|
+
}
|
|
134
|
+
const value = await getValue();
|
|
135
|
+
const data = {
|
|
136
|
+
date: new Date().getTime(),
|
|
137
|
+
value,
|
|
138
|
+
};
|
|
139
|
+
// Write the value to the cache file
|
|
140
|
+
await promises_1.default.writeFile(filePath, JSON.stringify(data), 'utf-8');
|
|
141
|
+
return value;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/helpers/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-path.d.ts","sourceRoot":"","sources":["../../../src/helpers/project-path.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,wBAAsB,cAAc,oBAkBnC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProjectPath = getProjectPath;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const promises_1 = tslib_1.__importDefault(require("node:fs/promises"));
|
|
6
|
+
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
7
|
+
async function fileExists(path) {
|
|
8
|
+
try {
|
|
9
|
+
await promises_1.default.access(path);
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Includes trailing slash
|
|
18
|
+
*/
|
|
19
|
+
async function getProjectPath() {
|
|
20
|
+
let depth = 2;
|
|
21
|
+
while (true) {
|
|
22
|
+
// check lerna.json exists at depth
|
|
23
|
+
const fileName = __dirname + '/' + '../'.repeat(depth) + `lerna.json`;
|
|
24
|
+
if (await fileExists(fileName)) {
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
depth++;
|
|
28
|
+
if (depth >= 7) {
|
|
29
|
+
throw new Error('Could not find lerna.json in the parent directories');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const rootPath = node_path_1.default.normalize(__dirname + '/' + '../'.repeat(depth));
|
|
33
|
+
return rootPath;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=project-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-path.js","sourceRoot":"","sources":["../../../src/helpers/project-path.ts"],"names":[],"mappings":";;AAgBA,wCAkBC;;AAlCD,wEAAkC;AAClC,kEAA6B;AAE7B,KAAK,UAAU,UAAU,CAAC,IAAY;IAClC,IAAI,CAAC;QACD,MAAM,kBAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,IAAI,EAAE,CAAC;QACV,mCAAmC;QACnC,MAAM,QAAQ,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;QACtE,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM;QACV,CAAC;QACD,KAAK,EAAE,CAAC;QAER,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAI,CAAC,SAAS,CAAC,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":""}
|
package/dist/src/init.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const concurrently_1 = require("concurrently");
|
|
5
|
+
const build_1 = require("./build");
|
|
6
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
7
|
+
async function init() {
|
|
8
|
+
var _a;
|
|
9
|
+
console.log(chalk_1.default.magenta('[INIT]') + ' Initializing development environment...');
|
|
10
|
+
const services = [];
|
|
11
|
+
// Loop all presets with a init method and call that method.
|
|
12
|
+
// Append responses to the services array
|
|
13
|
+
const { config, initFunctions } = await (0, build_1.buildConfig)((_a = process.env.STAMHOOFD_ENV) !== null && _a !== void 0 ? _a : '', { backend: 'api' });
|
|
14
|
+
for (const initFunction of initFunctions) {
|
|
15
|
+
const s = await initFunction(config);
|
|
16
|
+
if (Array.isArray(s)) {
|
|
17
|
+
services.push(...s);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (services.length === 0) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// Run concurrently all services
|
|
24
|
+
const { result } = (0, concurrently_1.concurrently)(services, {
|
|
25
|
+
prefix: 'name',
|
|
26
|
+
killOthersOn: [], // don't kill on failure
|
|
27
|
+
successCondition: 'first',
|
|
28
|
+
cwd: process.cwd(),
|
|
29
|
+
});
|
|
30
|
+
try {
|
|
31
|
+
await result;
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
// Ignore error
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
init().catch((error) => {
|
|
38
|
+
console.error('Error during initialization:', error);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;AAC3E,mCAAsC;AACtC,0DAA0B;AAE1B,KAAK,UAAU,IAAI;;IACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,0CAA0C,CAAC,CAAC;IAClF,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAEhD,4DAA4D;IAC5D,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,mBAAW,EAAC,MAAA,OAAO,CAAC,GAAG,CAAC,aAAa,mCAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAEzG,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC,MAA2B,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;IACX,CAAC;IAED,gCAAgC;IAChC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,2BAAY,EAAC,QAAQ,EAAE;QACtC,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,EAAE,EAAE,wBAAwB;QAC1C,gBAAgB,EAAE,OAAO;QACzB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KACrB,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACP,eAAe;IACnB,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/presets/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,wBAAsB,KAAK,CAAC,OAAO,EAAE,OAAO;;GAmC3C"}
|