@contember/cli-common 0.12.0-alpha.9 → 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/application/Application.d.ts +2 -0
- package/dist/src/application/Application.d.ts.map +1 -1
- package/dist/src/application/Application.js +13 -6
- package/dist/src/application/Application.js.map +1 -1
- package/dist/src/application/UsageFormatter.js +1 -1
- package/dist/src/application/UsageFormatter.js.map +1 -1
- package/dist/src/pathUtils.js +2 -2
- package/dist/src/pathUtils.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/PathMapping.js +7 -6
- package/dist/src/utils/PathMapping.js.map +1 -1
- package/dist/src/utils/Project.d.ts +0 -1
- package/dist/src/utils/Project.d.ts.map +1 -1
- package/dist/src/utils/Project.js +0 -37
- package/dist/src/utils/Project.js.map +1 -1
- package/dist/src/utils/ProjectManager.js +8 -8
- package/dist/src/utils/ProjectManager.js.map +1 -1
- package/dist/src/utils/Workspace.d.ts +7 -7
- package/dist/src/utils/Workspace.d.ts.map +1 -1
- package/dist/src/utils/Workspace.js +21 -60
- package/dist/src/utils/Workspace.js.map +1 -1
- package/dist/src/utils/fs.js +4 -4
- package/dist/src/utils/fs.js.map +1 -1
- package/dist/src/utils/index.d.ts +0 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +0 -1
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/npm.d.ts +1 -1
- package/dist/src/utils/npm.d.ts.map +1 -1
- package/dist/src/utils/npm.js +8 -9
- package/dist/src/utils/npm.js.map +1 -1
- package/dist/src/utils/template.d.ts.map +1 -1
- package/dist/src/utils/template.js +33 -30
- package/dist/src/utils/template.js.map +1 -1
- package/dist/src/utils/version.js +1 -1
- package/dist/src/utils/version.js.map +1 -1
- package/dist/src/utils/yaml.d.ts +0 -6
- package/dist/src/utils/yaml.d.ts.map +1 -1
- package/dist/src/utils/yaml.js +3 -27
- package/dist/src/utils/yaml.js.map +1 -1
- package/package.json +5 -6
- package/resources/templates/template-project/admin/components/Layout.tsx +12 -0
- package/resources/templates/template-project/admin/components/SideMenu.tsx +10 -0
- package/resources/templates/template-project/admin/index.html +9 -0
- package/resources/templates/template-project/admin/index.tsx +18 -0
- package/resources/templates/template-project/admin/pages/Dashboard.tsx +8 -0
- package/resources/templates/template-project/admin/vite-env.d.ts +7 -0
- package/resources/templates/template-project/api/{acl/index.ts → acl.ts} +0 -0
- package/resources/templates/template-project/api/model/index.ts +3 -2
- package/resources/templates/template-project/contember.template.yaml +3 -4
- package/resources/templates/template-project/tsconfig.json +16 -9
- package/resources/templates/template-workspace/.gitignore.dist +3 -0
- package/resources/templates/{template-workspace-single-instance → template-workspace}/contember.template.yaml +5 -1
- package/resources/templates/template-workspace/contember.yaml +4 -0
- package/resources/templates/template-workspace/docker-compose.yaml +159 -0
- package/resources/templates/template-workspace/package.json +17 -0
- package/resources/templates/{template-workspace-single-instance/api → template-workspace/scripts/minio}/s3-entrypoint.sh +0 -0
- package/resources/templates/{template-workspace-single-instance/api → template-workspace/scripts/minio}/s3-policy.json +0 -0
- package/resources/templates/template-workspace/tsconfig.json +16 -0
- package/src/application/Application.ts +14 -7
- package/src/utils/PathMapping.ts +1 -1
- package/src/utils/Project.ts +0 -40
- package/src/utils/Workspace.ts +21 -42
- package/src/utils/fs.ts +2 -2
- package/src/utils/index.ts +0 -1
- package/src/utils/npm.ts +3 -4
- package/src/utils/template.ts +28 -24
- package/src/utils/yaml.ts +3 -35
- package/dist/src/utils/dockerCompose.d.ts +0 -15
- package/dist/src/utils/dockerCompose.d.ts.map +0 -1
- package/dist/src/utils/dockerCompose.js +0 -22
- package/dist/src/utils/dockerCompose.js.map +0 -1
- package/resources/templates/template-project/api/migrations/2019-12-13-110355-init.json +0 -146
- package/resources/templates/template-project/api/model/Image.ts +0 -5
- package/resources/templates/template-project/api/model/Post.ts +0 -8
- package/resources/templates/template-project/package.json +0 -13
- package/resources/templates/template-workspace-single-instance/.dockerignore +0 -1
- package/resources/templates/template-workspace-single-instance/api/config.yaml +0 -0
- package/resources/templates/template-workspace-single-instance/contember.workspace.yaml +0 -2
- package/resources/templates/template-workspace-single-instance/docker-compose.override.dist.yaml +0 -26
- package/resources/templates/template-workspace-single-instance/docker-compose.yaml +0 -88
- package/resources/templates/template-workspace-single-instance/package.json +0 -12
- package/resources/templates/template-workspace-single-instance/projects/.gitkeep +0 -0
- package/resources/templates/template-workspace-single-instance/tsconfig.json +0 -22
- package/src/utils/dockerCompose.ts +0 -38
package/dist/src/utils/fs.js
CHANGED
|
@@ -6,12 +6,12 @@ const fs_1 = require("fs");
|
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
const listDirectories = async (dir) => {
|
|
8
8
|
try {
|
|
9
|
-
const entries = (await fs_1.promises.readdir(dir)).map(it => path_1.join(dir, it));
|
|
10
|
-
const stats = await Promise.all(entries.map(async (it) => tuple_1.tuple(it, await fs_1.promises.lstat(it))));
|
|
9
|
+
const entries = (await fs_1.promises.readdir(dir)).map(it => (0, path_1.join)(dir, it));
|
|
10
|
+
const stats = await Promise.all(entries.map(async (it) => (0, tuple_1.tuple)(it, await fs_1.promises.lstat(it))));
|
|
11
11
|
return stats.filter(([, it]) => it.isDirectory()).map(([it]) => it);
|
|
12
12
|
}
|
|
13
13
|
catch (e) {
|
|
14
|
-
if (e
|
|
14
|
+
if (e instanceof Error && 'code' in e && e.code === 'ENOENT') {
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
throw e;
|
|
@@ -29,7 +29,7 @@ const tryUnlink = async (path) => {
|
|
|
29
29
|
await fs_1.promises.unlink(path);
|
|
30
30
|
}
|
|
31
31
|
catch (e) {
|
|
32
|
-
if (e
|
|
32
|
+
if (e instanceof Error && 'code' in e && e.code === 'ENOENT') {
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
throw e;
|
package/dist/src/utils/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/utils/fs.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,2BAAmC;AACnC,+BAA2B;AAEpB,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAqB,EAAE;IACvE,IAAI;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAI,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/utils/fs.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,2BAAmC;AACnC,+BAA2B;AAEpB,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAqB,EAAE;IACvE,IAAI;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,WAAI,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAChE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,IAAA,aAAK,EAAC,EAAE,EAAE,MAAM,aAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACvF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;KACnE;IAAC,OAAO,CAAC,EAAE;QACX,IAAI,CAAC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,IAAK,CAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;YACtE,OAAO,EAAE,CAAA;SACT;QACD,MAAM,CAAC,CAAA;KACP;AACF,CAAC,CAAA;AAXY,QAAA,eAAe,mBAW3B;AAEM,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAY,EAAE,QAAqC,EAAiB,EAAE;IAC9G,MAAM,OAAO,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,aAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;AAC3D,CAAC,CAAA;AAJY,QAAA,kBAAkB,sBAI9B;AAEM,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IAC9D,IAAI;QACH,MAAM,aAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;KACrB;IAAC,OAAO,CAAC,EAAE;QACX,IAAI,CAAC,YAAY,KAAK,IAAI,MAAM,IAAI,CAAC,IAAK,CAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;YACtE,OAAM;SACN;QACD,MAAM,CAAC,CAAA;KACP;AACF,CAAC,CAAA;AATY,QAAA,SAAS,aASrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,MAAM,CAAA"}
|
package/dist/src/utils/index.js
CHANGED
|
@@ -11,7 +11,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./version"), exports);
|
|
14
|
-
__exportStar(require("./dockerCompose"), exports);
|
|
15
14
|
__exportStar(require("./Workspace"), exports);
|
|
16
15
|
__exportStar(require("./Project"), exports);
|
|
17
16
|
__exportStar(require("./fs"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyB;AACzB,8CAA2B;AAC3B,4CAAyB;AACzB,uCAAoB"}
|
package/dist/src/utils/npm.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const downloadPackage: (pkgName: string
|
|
1
|
+
export declare const downloadPackage: (pkgName: string) => Promise<string>;
|
|
2
2
|
//# sourceMappingURL=npm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../../src/utils/npm.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,eAAe,YAAmB,MAAM,
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../../src/utils/npm.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,eAAe,YAAmB,MAAM,KAAG,QAAQ,MAAM,CAiBrE,CAAA"}
|
package/dist/src/utils/npm.js
CHANGED
|
@@ -11,20 +11,19 @@ const download_tarball_1 = __importDefault(require("download-tarball"));
|
|
|
11
11
|
const fs_extra_1 = require("fs-extra");
|
|
12
12
|
const path_1 = require("path");
|
|
13
13
|
const os_1 = require("os");
|
|
14
|
-
const downloadPackage = async (pkgName
|
|
15
|
-
const { scope } = npm_package_arg_1.default(pkgName);
|
|
16
|
-
const { authorization } = registry_info_1.default(scope);
|
|
14
|
+
const downloadPackage = async (pkgName) => {
|
|
15
|
+
const { scope } = (0, npm_package_arg_1.default)(pkgName);
|
|
16
|
+
const { authorization } = (0, registry_info_1.default)(scope);
|
|
17
17
|
const headers = authorization ? { authorization } : {};
|
|
18
|
-
const pkg = await get_package_json_from_registry_1.default(pkgName);
|
|
18
|
+
const pkg = await (0, get_package_json_from_registry_1.default)(pkgName);
|
|
19
19
|
const { dist: { tarball }, } = pkg;
|
|
20
|
-
const tmpDir = path_1.join(os_1.tmpdir(), 'contember-' + Math.random());
|
|
21
|
-
await download_tarball_1.default({ url: tarball, gotOpts: { headers }, dir: tmpDir });
|
|
22
|
-
const dirContent = await fs_extra_1.readdir(tmpDir);
|
|
20
|
+
const tmpDir = (0, path_1.join)((0, os_1.tmpdir)(), 'contember-' + Math.random());
|
|
21
|
+
await (0, download_tarball_1.default)({ url: tarball, gotOpts: { headers }, dir: tmpDir });
|
|
22
|
+
const dirContent = await (0, fs_extra_1.readdir)(tmpDir);
|
|
23
23
|
if (dirContent.length !== 1 || dirContent[0] !== 'package') {
|
|
24
24
|
throw 'Invalid NPM package';
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
await fs_extra_1.remove(tmpDir);
|
|
26
|
+
return (0, path_1.join)(tmpDir, 'package');
|
|
28
27
|
};
|
|
29
28
|
exports.downloadPackage = downloadPackage;
|
|
30
29
|
//# sourceMappingURL=npm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../../src/utils/npm.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,oGAA2D;AAC3D,sEAAiC;AACjC,wEAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../../src/utils/npm.ts"],"names":[],"mappings":";;;;;;AAAA,kEAA2C;AAC3C,oGAA2D;AAC3D,sEAAiC;AACjC,wEAA8C;AAC9C,uCAAkC;AAClC,+BAA2B;AAC3B,2BAA2B;AAEpB,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,yBAAG,EAAC,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEtD,MAAM,GAAG,GAAG,MAAM,IAAA,wCAAc,EAAC,OAAO,CAAC,CAAA;IACzC,MAAM,EACL,IAAI,EAAE,EAAE,OAAO,EAAE,GACjB,GAAG,GAAG,CAAA;IAEP,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAA,WAAM,GAAE,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAC3D,MAAM,IAAA,0BAAe,EAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,MAAM,IAAA,kBAAO,EAAC,MAAM,CAAC,CAAA;IACxC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;QAC3D,MAAM,qBAAqB,CAAA;KAC3B;IACD,OAAO,IAAA,WAAI,EAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAC/B,CAAC,CAAA;AAjBY,QAAA,eAAe,mBAiB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,aACjB,MAAM,aACL,MAAM,wBACK,MAAM,cACjB,OAAO,MAAM,EAAE,MAAM,CAAC,kBA+DjC,CAAA"}
|
|
@@ -4,50 +4,53 @@ exports.installTemplate = void 0;
|
|
|
4
4
|
const path_1 = require("path");
|
|
5
5
|
const fs_1 = require("./fs");
|
|
6
6
|
const fs_extra_1 = require("fs-extra");
|
|
7
|
-
const yaml_1 = require("./yaml");
|
|
8
7
|
const npm_1 = require("./npm");
|
|
8
|
+
const pathUtils_1 = require("../pathUtils");
|
|
9
|
+
const yaml_1 = require("./yaml");
|
|
10
|
+
const localTemplates = {
|
|
11
|
+
['@contember/template-workspace']: (0, path_1.join)(pathUtils_1.resourcesDir, 'templates/template-workspace'),
|
|
12
|
+
['@contember/template-project']: (0, path_1.join)(pathUtils_1.resourcesDir, 'templates/template-project'),
|
|
13
|
+
};
|
|
9
14
|
const installTemplate = async (template, targetDir, requiredTemplateType, variables = {}) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const templateConfigFile = path_1.join(targetDir, 'contember.template.yaml');
|
|
23
|
-
if (!(await fs_extra_1.pathExists(templateConfigFile))) {
|
|
24
|
-
await fs_extra_1.remove(targetDir);
|
|
15
|
+
let removeTemplate = () => { };
|
|
16
|
+
if (localTemplates[template]) {
|
|
17
|
+
template = localTemplates[template];
|
|
18
|
+
}
|
|
19
|
+
if (!(0, path_1.isAbsolute)(template)) {
|
|
20
|
+
template = await (0, npm_1.downloadPackage)(template);
|
|
21
|
+
removeTemplate = async () => {
|
|
22
|
+
await (0, fs_extra_1.remove)(template);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const templateConfigFile = (0, path_1.join)(template, 'contember.template.yaml');
|
|
26
|
+
if (!(await (0, fs_extra_1.pathExists)(templateConfigFile))) {
|
|
25
27
|
throw `${template} is not a Contember template`;
|
|
26
28
|
}
|
|
27
|
-
const config = (await yaml_1.readYaml(templateConfigFile));
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
await fs_1.tryUnlink(path_1.join(targetDir, fileToRemove));
|
|
35
|
-
}
|
|
29
|
+
const config = (await (0, yaml_1.readYaml)(templateConfigFile));
|
|
30
|
+
const nodeModulesDir = (0, path_1.join)(template, 'node_modules');
|
|
31
|
+
const skippedFiles = new Set([...(config.remove || []).map(it => (0, path_1.join)(template, it)), templateConfigFile]);
|
|
32
|
+
await (0, fs_extra_1.copy)(template, targetDir, {
|
|
33
|
+
filter: src => !src.startsWith(nodeModulesDir) && !skippedFiles.has(src),
|
|
34
|
+
});
|
|
35
|
+
await removeTemplate();
|
|
36
36
|
if (config.patchPackageJson) {
|
|
37
|
-
await fs_1.replaceFileContent(path_1.join(targetDir, 'package.json'), content => {
|
|
37
|
+
await (0, fs_1.replaceFileContent)((0, path_1.join)(targetDir, 'package.json'), content => {
|
|
38
38
|
const { name, version, 'scripts-template': scripts, scripts: _nullScripts, license, ...json } = JSON.parse(content);
|
|
39
39
|
return JSON.stringify({ scripts, ...json }, null, ' ');
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
for (const [source, target] of Object.entries(config.rename || {})) {
|
|
43
|
-
await fs_extra_1.rename(path_1.join(targetDir, source), path_1.join(targetDir, target));
|
|
43
|
+
await (0, fs_extra_1.rename)((0, path_1.join)(targetDir, source), (0, path_1.join)(targetDir, target));
|
|
44
|
+
}
|
|
45
|
+
for (const [source, target] of Object.entries(config.copy || {})) {
|
|
46
|
+
await (0, fs_extra_1.copy)((0, path_1.join)(targetDir, source), (0, path_1.join)(targetDir, target));
|
|
44
47
|
}
|
|
45
48
|
for (const file of config.replaceVariables || []) {
|
|
46
|
-
const path = path_1.join(targetDir, file);
|
|
47
|
-
if (!(await fs_extra_1.pathExists(path))) {
|
|
49
|
+
const path = (0, path_1.join)(targetDir, file);
|
|
50
|
+
if (!(await (0, fs_extra_1.pathExists)(path))) {
|
|
48
51
|
continue;
|
|
49
52
|
}
|
|
50
|
-
await fs_1.replaceFileContent(path, content => Object.entries(variables).reduce((content, [key, value]) => content.replace(new RegExp(`\{${key}\}`, 'g'), value), content));
|
|
53
|
+
await (0, fs_1.replaceFileContent)(path, content => Object.entries(variables).reduce((content, [key, value]) => content.replace(new RegExp(`\{${key}\}`, 'g'), value), content));
|
|
51
54
|
}
|
|
52
55
|
};
|
|
53
56
|
exports.installTemplate = installTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":";;;AAAA,+BAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ const path_1 = require("path");
|
|
|
5
5
|
const pathUtils_1 = require("../pathUtils");
|
|
6
6
|
const getPackageVersion = () => {
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
8
|
-
return require(path_1.join(pathUtils_1.packageRoot, 'package.json')).version;
|
|
8
|
+
return require((0, path_1.join)(pathUtils_1.packageRoot, 'package.json')).version;
|
|
9
9
|
};
|
|
10
10
|
exports.getPackageVersion = getPackageVersion;
|
|
11
11
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/utils/version.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,4CAA0C;AAEnC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACrC,8DAA8D;IAC9D,OAAO,OAAO,CAAC,WAAI,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/utils/version.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,4CAA0C;AAEnC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACrC,8DAA8D;IAC9D,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,uBAAW,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1D,CAAC,CAAA;AAHY,QAAA,iBAAiB,qBAG7B"}
|
package/dist/src/utils/yaml.d.ts
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
1
|
import { JSONObject } from './json';
|
|
2
|
-
export declare type JsonUpdateCallback<Value = JSONObject> = (data: Partial<Value>, utils: {
|
|
3
|
-
merge: (a: JSONObject, b: JSONObject) => JSONObject;
|
|
4
|
-
}) => Value;
|
|
5
|
-
export declare const updateYaml: <Value = JSONObject>(path: string, updater: JsonUpdateCallback<Value>, options?: {
|
|
6
|
-
createMissing?: boolean;
|
|
7
|
-
}) => Promise<void>;
|
|
8
2
|
export declare const readYaml: <T = JSONObject>(path: string) => Promise<T>;
|
|
9
3
|
//# sourceMappingURL=yaml.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../../src/utils/yaml.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../../src/utils/yaml.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAInC,eAAO,MAAM,QAAQ,yBAAgC,MAAM,eAG1D,CAAA"}
|
package/dist/src/utils/yaml.js
CHANGED
|
@@ -3,35 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.readYaml =
|
|
7
|
-
const fs_extra_1 = require("fs-extra");
|
|
8
|
-
const fs_1 = require("fs");
|
|
9
|
-
const cjs_1 = __importDefault(require("yawn-yaml/cjs"));
|
|
10
|
-
const config_loader_1 = require("@contember/config-loader");
|
|
6
|
+
exports.readYaml = void 0;
|
|
11
7
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
12
|
-
const
|
|
13
|
-
let config = '';
|
|
14
|
-
if (await fs_extra_1.pathExists(path)) {
|
|
15
|
-
config = await fs_1.promises.readFile(path, { encoding: 'utf8' });
|
|
16
|
-
}
|
|
17
|
-
else if (options.createMissing !== true) {
|
|
18
|
-
throw new Error(`File ${path} does not exist.`);
|
|
19
|
-
}
|
|
20
|
-
let newConfig = '';
|
|
21
|
-
const mergeUtils = { merge: (a, b) => config_loader_1.Merger.merge(a, b) };
|
|
22
|
-
if (config) {
|
|
23
|
-
const yawn = new cjs_1.default(config);
|
|
24
|
-
yawn.json = updater(yawn.json, mergeUtils);
|
|
25
|
-
newConfig = yawn.yaml;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
newConfig = js_yaml_1.default.dump(updater({}, mergeUtils));
|
|
29
|
-
}
|
|
30
|
-
await fs_1.promises.writeFile(path, newConfig, { encoding: 'utf8' });
|
|
31
|
-
};
|
|
32
|
-
exports.updateYaml = updateYaml;
|
|
8
|
+
const promises_1 = require("fs/promises");
|
|
33
9
|
const readYaml = async (path) => {
|
|
34
|
-
const content = await
|
|
10
|
+
const content = await (0, promises_1.readFile)(path, { encoding: 'utf8' });
|
|
35
11
|
return js_yaml_1.default.load(content);
|
|
36
12
|
};
|
|
37
13
|
exports.readYaml = readYaml;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../../src/utils/yaml.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../../src/utils/yaml.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA4B;AAE5B,0CAAsC;AAG/B,MAAM,QAAQ,GAAG,KAAK,EAAkB,IAAY,EAAc,EAAE;IAC1E,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC1D,OAAO,iBAAM,CAAC,IAAI,CAAC,OAAO,CAAiB,CAAA;AAC5C,CAAC,CAAA;AAHY,QAAA,QAAQ,YAGpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/cli-common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-alpha.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"typings": "dist/src/index.d.ts",
|
|
@@ -9,18 +9,17 @@
|
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@types/js-yaml": "^4.0.1",
|
|
12
|
-
"@types/
|
|
13
|
-
"@types/node": "^15.12.5",
|
|
12
|
+
"@types/node": "^17.0.5",
|
|
14
13
|
"@types/npm-package-arg": "^6.1.0"
|
|
15
14
|
},
|
|
16
15
|
"dependencies": {
|
|
16
|
+
"@contember/config-loader": "^1.0.0-alpha.0",
|
|
17
17
|
"chalk": "^4.1.0",
|
|
18
18
|
"download-tarball": "^2.0.0",
|
|
19
19
|
"fs-extra": "^10.0.0",
|
|
20
|
-
"js-yaml": "^4.1.0",
|
|
21
20
|
"get-package-json-from-registry": "^2.2.2",
|
|
21
|
+
"js-yaml": "^4.1.0",
|
|
22
22
|
"npm-package-arg": "^8.0.0",
|
|
23
|
-
"registry-info": "^1.0.0"
|
|
24
|
-
"yawn-yaml": "^1.5.0"
|
|
23
|
+
"registry-info": "^1.0.0"
|
|
25
24
|
}
|
|
26
25
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import { ReactNode } from 'react'
|
|
3
|
+
import { Layout as ContemberLayout } from '@contember/admin'
|
|
4
|
+
import { SideMenu } from './SideMenu'
|
|
5
|
+
|
|
6
|
+
export const Layout = (props: { children?: ReactNode }) => (
|
|
7
|
+
<ContemberLayout
|
|
8
|
+
topStart="{projectName}"
|
|
9
|
+
sideBar={<SideMenu />}
|
|
10
|
+
children={props.children}
|
|
11
|
+
/>
|
|
12
|
+
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import { ApplicationEntrypoint, Pages, runReactApp } from '@contember/admin'
|
|
3
|
+
import { Layout } from './components/Layout'
|
|
4
|
+
import '@contember/admin/style.css'
|
|
5
|
+
|
|
6
|
+
const pages = Object.values(import.meta.globEager('./pages/*.tsx')).flatMap(Object.values)
|
|
7
|
+
|
|
8
|
+
runReactApp(
|
|
9
|
+
<ApplicationEntrypoint
|
|
10
|
+
basePath={import.meta.env.BASE_URL}
|
|
11
|
+
apiBaseUrl={import.meta.env.VITE_CONTEMBER_ADMIN_API_BASE_URL}
|
|
12
|
+
sessionToken={import.meta.env.VITE_CONTEMBER_ADMIN_SESSION_TOKEN}
|
|
13
|
+
project={import.meta.env.VITE_CONTEMBER_ADMIN_PROJECT_NAME}
|
|
14
|
+
stage="live"
|
|
15
|
+
routes={{ dashboard: { path: '/' } }}
|
|
16
|
+
children={<Pages layout={Layout} children={pages} />}
|
|
17
|
+
/>,
|
|
18
|
+
)
|
|
File without changes
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
// export your model definition here
|
|
2
|
+
|
|
3
|
+
export { } // you can delete this line once you export your first entity
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
"allowSyntheticDefaultImports": true,
|
|
4
|
+
"experimentalDecorators": true,
|
|
5
|
+
"isolatedModules": true,
|
|
6
|
+
"jsx": "react-jsx",
|
|
7
|
+
"lib": [
|
|
8
|
+
"esnext",
|
|
9
|
+
"dom"
|
|
10
|
+
],
|
|
11
|
+
"module": "esnext",
|
|
12
|
+
"moduleResolution": "node",
|
|
13
|
+
"noEmit": true,
|
|
14
|
+
"noImplicitOverride": true,
|
|
15
|
+
"skipLibCheck": true,
|
|
16
|
+
"strict": true,
|
|
17
|
+
"target": "esnext"
|
|
18
|
+
}
|
|
12
19
|
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
version: '2.4'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
admin:
|
|
5
|
+
image: node:14-alpine
|
|
6
|
+
command: npm run start-admin
|
|
7
|
+
user: '1000:1000'
|
|
8
|
+
|
|
9
|
+
environment:
|
|
10
|
+
VITE_PORT: '1480'
|
|
11
|
+
VITE_CONTEMBER_ADMIN_API_BASE_URL: 'http://localhost:1481'
|
|
12
|
+
VITE_CONTEMBER_ADMIN_SESSION_TOKEN: '0000000000000000000000000000000000000000'
|
|
13
|
+
VITE_CONTEMBER_ADMIN_PROJECT_NAME: '{projectName}'
|
|
14
|
+
|
|
15
|
+
ports:
|
|
16
|
+
- '1480:1480' # ports must match
|
|
17
|
+
|
|
18
|
+
working_dir: /src
|
|
19
|
+
volumes:
|
|
20
|
+
- ./:/src:cached
|
|
21
|
+
|
|
22
|
+
contember:
|
|
23
|
+
image: contember/engine:{version}
|
|
24
|
+
restart: on-failure
|
|
25
|
+
|
|
26
|
+
environment:
|
|
27
|
+
NODE_ENV: 'development'
|
|
28
|
+
|
|
29
|
+
CONTEMBER_ROOT_EMAIL: 'contember@localhost'
|
|
30
|
+
CONTEMBER_ROOT_PASSWORD: 'contember'
|
|
31
|
+
CONTEMBER_ROOT_TOKEN: '0000000000000000000000000000000000000000'
|
|
32
|
+
CONTEMBER_LOGIN_TOKEN: '1111111111111111111111111111111111111111'
|
|
33
|
+
CONTEMBER_CONFIG_YAML: |
|
|
34
|
+
projectDefaults:
|
|
35
|
+
s3:
|
|
36
|
+
prefix: '%project.slug%'
|
|
37
|
+
|
|
38
|
+
DEFAULT_DB_HOST: 'postgres'
|
|
39
|
+
DEFAULT_DB_PORT: '5432'
|
|
40
|
+
DEFAULT_DB_USER: 'contember'
|
|
41
|
+
DEFAULT_DB_PASSWORD: 'contember'
|
|
42
|
+
|
|
43
|
+
DEFAULT_S3_ENDPOINT: 'http://localhost:1483'
|
|
44
|
+
DEFAULT_S3_BUCKET: 'contember'
|
|
45
|
+
DEFAULT_S3_REGION: ''
|
|
46
|
+
DEFAULT_S3_KEY: 'contember'
|
|
47
|
+
DEFAULT_S3_SECRET: 'contember'
|
|
48
|
+
DEFAULT_S3_PROVIDER: 'minio'
|
|
49
|
+
|
|
50
|
+
TENANT_DB_NAME: 'tenant'
|
|
51
|
+
TENANT_MAILER_HOST: 'mailhog'
|
|
52
|
+
TENANT_MAILER_PORT: '1025'
|
|
53
|
+
TENANT_MAILER_FROM: 'contember@localhost'
|
|
54
|
+
|
|
55
|
+
ports:
|
|
56
|
+
- '1481:4000'
|
|
57
|
+
|
|
58
|
+
depends_on:
|
|
59
|
+
postgres:
|
|
60
|
+
condition: service_healthy
|
|
61
|
+
|
|
62
|
+
contember-cli:
|
|
63
|
+
image: contember/cli:{version}
|
|
64
|
+
user: '1000:1000'
|
|
65
|
+
|
|
66
|
+
environment:
|
|
67
|
+
CONTEMBER_API_URL: 'http://contember:4000/'
|
|
68
|
+
CONTEMBER_API_TOKEN: '0000000000000000000000000000000000000000'
|
|
69
|
+
CONTEMBER_PROJECT_NAME: '{projectName}'
|
|
70
|
+
|
|
71
|
+
working_dir: /src
|
|
72
|
+
volumes:
|
|
73
|
+
- ./:/src:cached
|
|
74
|
+
|
|
75
|
+
depends_on:
|
|
76
|
+
contember:
|
|
77
|
+
condition: service_started
|
|
78
|
+
|
|
79
|
+
contember-migrations:
|
|
80
|
+
image: contember/cli:{version}
|
|
81
|
+
command: 'migrations:execute . --yes'
|
|
82
|
+
user: '1000:1000'
|
|
83
|
+
|
|
84
|
+
environment:
|
|
85
|
+
CONTEMBER_API_URL: 'http://contember:4000/'
|
|
86
|
+
CONTEMBER_API_TOKEN: '0000000000000000000000000000000000000000'
|
|
87
|
+
CONTEMBER_PROJECT_NAME: '{projectName}'
|
|
88
|
+
|
|
89
|
+
working_dir: /src
|
|
90
|
+
volumes:
|
|
91
|
+
- ./:/src:cached
|
|
92
|
+
|
|
93
|
+
depends_on:
|
|
94
|
+
contember:
|
|
95
|
+
condition: service_started
|
|
96
|
+
|
|
97
|
+
postgres:
|
|
98
|
+
image: postgres:13-alpine
|
|
99
|
+
|
|
100
|
+
environment:
|
|
101
|
+
POSTGRES_PASSWORD: contember
|
|
102
|
+
POSTGRES_USER: contember
|
|
103
|
+
POSTGRES_DB: contember
|
|
104
|
+
|
|
105
|
+
ports:
|
|
106
|
+
- '1482:5432'
|
|
107
|
+
|
|
108
|
+
volumes:
|
|
109
|
+
- pgsql-data:/var/lib/postgres/data
|
|
110
|
+
|
|
111
|
+
healthcheck:
|
|
112
|
+
test: ['CMD-SHELL', 'pg_isready']
|
|
113
|
+
interval: 5s
|
|
114
|
+
timeout: 5s
|
|
115
|
+
retries: 10
|
|
116
|
+
|
|
117
|
+
s3:
|
|
118
|
+
image: minio/minio
|
|
119
|
+
entrypoint: /minio-entrypoint.sh
|
|
120
|
+
command: 'server --address :1483 /data'
|
|
121
|
+
|
|
122
|
+
environment:
|
|
123
|
+
MINIO_ROOT_USER: contember
|
|
124
|
+
MINIO_ROOT_PASSWORD: contember
|
|
125
|
+
|
|
126
|
+
ports:
|
|
127
|
+
- '1483:1483' # ports must match
|
|
128
|
+
|
|
129
|
+
volumes:
|
|
130
|
+
- s3-data:/data
|
|
131
|
+
- ./scripts/minio/s3-policy.json:/bucket-policy.json
|
|
132
|
+
- ./scripts/minio/s3-entrypoint.sh:/minio-entrypoint.sh
|
|
133
|
+
|
|
134
|
+
mailhog:
|
|
135
|
+
image: mailhog/mailhog
|
|
136
|
+
ports:
|
|
137
|
+
- '1484:8025'
|
|
138
|
+
|
|
139
|
+
adminer:
|
|
140
|
+
image: michalhosna/adminer:4.8.0-en_v1
|
|
141
|
+
|
|
142
|
+
environment:
|
|
143
|
+
ADMINER_DRIVER: pgsql
|
|
144
|
+
ADMINER_SERVER: postgres
|
|
145
|
+
ADMINER_DB: contember
|
|
146
|
+
ADMINER_USERNAME: contember
|
|
147
|
+
ADMINER_PASSWORD: contember
|
|
148
|
+
ADMINER_AUTOLOGIN: 1
|
|
149
|
+
ADMINER_NAME: Contember
|
|
150
|
+
|
|
151
|
+
ports:
|
|
152
|
+
- '1485:8080'
|
|
153
|
+
|
|
154
|
+
depends_on:
|
|
155
|
+
- postgres
|
|
156
|
+
|
|
157
|
+
volumes:
|
|
158
|
+
pgsql-data: ~
|
|
159
|
+
s3-data: ~
|