@saltcorn/mobile-builder 0.7.3-beta.3 → 0.7.3

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=post-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-installer.d.ts","sourceRoot":"","sources":["../../docker/post-installer.js"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ const { spawnSync } = require("child_process");
3
+ const { join } = require("path");
4
+ if (process.env.SKIP_DOCKER_IMAGE_INSTALL === "true") {
5
+ console.log("skipping build 'saltcorn/cordova-builder' docker image");
6
+ }
7
+ else {
8
+ const result = spawnSync("docker", [
9
+ "build",
10
+ __dirname,
11
+ "-f",
12
+ join(__dirname, "Dockerfile"),
13
+ "-t",
14
+ "saltcorn/cordova-builder",
15
+ ], { cwd: ".", stdio: "inherit" });
16
+ if (result.error)
17
+ console.log(result.error.toString());
18
+ }
19
+ //# sourceMappingURL=post-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-installer.js","sourceRoot":"","sources":["../../docker/post-installer.js"],"names":[],"mappings":";AAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjC,IAAI,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,EAAE;IACpD,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;CACvE;KAAM;IACL,MAAM,MAAM,GAAG,SAAS,CACtB,QAAQ,EACR;QACE,OAAO;QACP,SAAS;QACT,IAAI;QACJ,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QAC7B,IAAI;QACJ,0BAA0B;KAC3B,EACD,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAC/B,CAAC;IACF,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;CACxD"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,9 @@
1
- declare const _default: {};
2
- export default _default;
1
+ /**
2
+ * This is the mobile builder package
3
+ * @module
4
+ */
5
+ export * as common_build_utils from "./utils/common-build-utils";
6
+ export * as cordova_build_utils from "./utils/cordova-build-utils";
7
+ export * as package_bundle_utils from "./utils/package-bundle-utils";
8
+ export * from "./mobile-builder";
3
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,wBAAkB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AAErE,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,39 @@
1
1
  "use strict";
2
+ // For the typedoc documentation
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
27
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
28
+ };
2
29
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {};
30
+ exports.package_bundle_utils = exports.cordova_build_utils = exports.common_build_utils = void 0;
31
+ /**
32
+ * This is the mobile builder package
33
+ * @module
34
+ */
35
+ exports.common_build_utils = __importStar(require("./utils/common-build-utils"));
36
+ exports.cordova_build_utils = __importStar(require("./utils/cordova-build-utils"));
37
+ exports.package_bundle_utils = __importStar(require("./utils/package-bundle-utils"));
38
+ __exportStar(require("./mobile-builder"), exports);
4
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,kBAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhC;;;GAGG;AACH,iFAAiE;AACjE,mFAAmE;AACnE,qFAAqE;AAErE,mDAAiC"}
@@ -0,0 +1,41 @@
1
+ import Plugin from "@saltcorn/data/models/plugin";
2
+ /**
3
+ *
4
+ */
5
+ export declare class MobileBuilder {
6
+ templateDir: string;
7
+ buildDir: string;
8
+ cliDir: string;
9
+ useDocker?: boolean;
10
+ platforms: string[];
11
+ localUserTables: string[];
12
+ entryPoint: string;
13
+ serverURL: string;
14
+ pluginManager: any;
15
+ plugins: Plugin[];
16
+ packageRoot: string;
17
+ copyTargetDir?: string;
18
+ copyFileName?: string;
19
+ /**
20
+ *
21
+ * @param cfg
22
+ */
23
+ constructor(cfg: {
24
+ templateDir: string;
25
+ buildDir: string;
26
+ cliDir: string;
27
+ useDocker?: boolean;
28
+ platforms: string[];
29
+ localUserTables?: string[];
30
+ entryPoint: string;
31
+ serverURL: string;
32
+ plugins: Plugin[];
33
+ copyTargetDir?: string;
34
+ copyFileName?: string;
35
+ });
36
+ /**
37
+ *
38
+ */
39
+ build(): Promise<number | null>;
40
+ }
41
+ //# sourceMappingURL=mobile-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-builder.d.ts","sourceRoot":"","sources":["../mobile-builder.ts"],"names":[],"mappings":"AAGA,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAmBlD;;GAEG;AACH,qBAAa,aAAa;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,SAA0B;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,GAAG,EAAE;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IAkBD;;OAEG;IACG,KAAK;CAsBZ"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MobileBuilder = void 0;
4
+ const { PluginManager } = require("live-plugin-manager");
5
+ const { staticDependencies } = require("@saltcorn/server/load_plugins");
6
+ const path_1 = require("path");
7
+ const common_build_utils_1 = require("./utils/common-build-utils");
8
+ const package_bundle_utils_1 = require("./utils/package-bundle-utils");
9
+ const cordova_build_utils_1 = require("./utils/cordova-build-utils");
10
+ /**
11
+ *
12
+ */
13
+ class MobileBuilder {
14
+ /**
15
+ *
16
+ * @param cfg
17
+ */
18
+ constructor(cfg) {
19
+ this.packageRoot = (0, path_1.join)(__dirname, "../");
20
+ this.templateDir = cfg.templateDir;
21
+ this.buildDir = cfg.buildDir;
22
+ this.cliDir = cfg.cliDir;
23
+ this.useDocker = cfg.useDocker;
24
+ this.platforms = cfg.platforms;
25
+ this.localUserTables = cfg.localUserTables ? cfg.localUserTables : [];
26
+ this.entryPoint = cfg.entryPoint;
27
+ this.serverURL = cfg.serverURL;
28
+ this.pluginManager = new PluginManager({
29
+ pluginsPath: (0, path_1.join)(this.buildDir, "plugin_packages", "node_modules"),
30
+ staticDependencies,
31
+ });
32
+ this.plugins = cfg.plugins;
33
+ this.copyTargetDir = cfg.copyTargetDir;
34
+ this.copyFileName = cfg.copyFileName;
35
+ }
36
+ /**
37
+ *
38
+ */
39
+ async build() {
40
+ (0, cordova_build_utils_1.prepareBuildDir)(this.buildDir, this.templateDir);
41
+ (0, common_build_utils_1.copyStaticAssets)(this.buildDir);
42
+ (0, common_build_utils_1.copySbadmin2Deps)(this.buildDir);
43
+ (0, common_build_utils_1.writeCfgFile)({
44
+ buildDir: this.buildDir,
45
+ entryPoint: this.entryPoint,
46
+ serverPath: this.serverURL ? this.serverURL : "http://10.0.2.2:3000",
47
+ localUserTables: this.localUserTables,
48
+ });
49
+ await (0, package_bundle_utils_1.bundlePackagesAndPlugins)(this.buildDir, this.plugins);
50
+ await (0, package_bundle_utils_1.copyPublicDirs)(this.buildDir, this.pluginManager, this.plugins);
51
+ await (0, package_bundle_utils_1.installNpmPackages)(this.buildDir, this.pluginManager);
52
+ await (0, common_build_utils_1.buildTablesFile)(this.buildDir);
53
+ await (0, common_build_utils_1.createSqliteDb)(this.buildDir);
54
+ const resultCode = (0, cordova_build_utils_1.buildApp)(this.buildDir, this.platforms, this.useDocker);
55
+ if (resultCode === 0 && this.copyTargetDir) {
56
+ // copy file to 'copyTargetDir' (only apk)
57
+ await (0, cordova_build_utils_1.copyApp)(this.buildDir, this.copyTargetDir, this.copyFileName);
58
+ }
59
+ return resultCode;
60
+ }
61
+ }
62
+ exports.MobileBuilder = MobileBuilder;
63
+ //# sourceMappingURL=mobile-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-builder.js","sourceRoot":"","sources":["../mobile-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * copy files from 'server/public' into the www folder (with a version_tag prefix)
3
+ * @param buildDir directory where the app will be build
4
+ */
5
+ export declare function copyStaticAssets(buildDir: string): void;
6
+ /**
7
+ * copy files from 'startbootstrap-sb-admin-2-bs5' into the www directory
8
+ * @param buildDir directory where the app will be build
9
+ */
10
+ export declare function copySbadmin2Deps(buildDir: string): void;
11
+ /**
12
+ * create a cfg file, the app use this configs
13
+ * @param param0
14
+ */
15
+ export declare function writeCfgFile({ buildDir, entryPoint, serverPath, localUserTables, }: any): void;
16
+ /**
17
+ * create a file with all data from the db
18
+ * the app updates its local db from this
19
+ * @param buildDir directory where the app will be build
20
+ */
21
+ export declare function buildTablesFile(buildDir: string): Promise<void>;
22
+ /**
23
+ * init an empty db
24
+ * after the first startup, this db will be updated from the tables.json
25
+ * @param buildDir directory where the app will be build
26
+ */
27
+ export declare function createSqliteDb(buildDir: string): Promise<void>;
28
+ //# sourceMappingURL=common-build-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-build-utils.d.ts","sourceRoot":"","sources":["../../utils/common-build-utils.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QAoBhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,QA8BhD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,UAAU,EACV,eAAe,GAChB,EAAE,GAAG,QASL;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,iBAmBrD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,iBASpD"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSqliteDb = exports.buildTablesFile = exports.writeCfgFile = exports.copySbadmin2Deps = exports.copyStaticAssets = void 0;
7
+ const index_1 = __importDefault(require("@saltcorn/data/db/index"));
8
+ const path_1 = require("path");
9
+ const fs_extra_1 = require("fs-extra");
10
+ const child_process_1 = require("child_process");
11
+ /**
12
+ * copy files from 'server/public' into the www folder (with a version_tag prefix)
13
+ * @param buildDir directory where the app will be build
14
+ */
15
+ function copyStaticAssets(buildDir) {
16
+ const wwwDir = (0, path_1.join)(buildDir, "www");
17
+ const assetsDst = (0, path_1.join)(wwwDir, "static_assets", index_1.default.connectObj.version_tag);
18
+ if (!(0, fs_extra_1.existsSync)(assetsDst)) {
19
+ (0, fs_extra_1.mkdirSync)(assetsDst, { recursive: true });
20
+ }
21
+ const serverRoot = (0, path_1.join)(require.resolve("@saltcorn/server"), "..");
22
+ const srcPrefix = (0, path_1.join)(serverRoot, "public");
23
+ const srcFiles = [
24
+ "jquery-3.6.0.min.js",
25
+ "saltcorn-common.js",
26
+ "saltcorn.js",
27
+ "saltcorn.css",
28
+ "codemirror.js",
29
+ "codemirror.css",
30
+ "socket.io.min.js",
31
+ ];
32
+ for (const srcFile of srcFiles) {
33
+ (0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(assetsDst, srcFile));
34
+ }
35
+ }
36
+ exports.copyStaticAssets = copyStaticAssets;
37
+ /**
38
+ * copy files from 'startbootstrap-sb-admin-2-bs5' into the www directory
39
+ * @param buildDir directory where the app will be build
40
+ */
41
+ function copySbadmin2Deps(buildDir) {
42
+ const sbadmin2Dst = (0, path_1.join)(buildDir, "www", "plugins/pubdeps/sbadmin2/startbootstrap-sb-admin-2-bs5/4.1.5-beta.5");
43
+ if (!(0, fs_extra_1.existsSync)(sbadmin2Dst)) {
44
+ (0, fs_extra_1.mkdirSync)(sbadmin2Dst, { recursive: true });
45
+ }
46
+ const devPath = (0, path_1.join)(__dirname, "../../../..", "node_modules/startbootstrap-sb-admin-2-bs5");
47
+ const prodPath = (0, path_1.join)(require.resolve("@saltcorn/cli"), "../..", "node_modules/startbootstrap-sb-admin-2-bs5");
48
+ const srcPrefix = (0, fs_extra_1.existsSync)(devPath) ? devPath : prodPath;
49
+ const srcFiles = [
50
+ "vendor/fontawesome-free",
51
+ "vendor/bootstrap/js/bootstrap.bundle.min.js",
52
+ "vendor/jquery-easing/jquery.easing.min.js",
53
+ "css/sb-admin-2.css",
54
+ "js/sb-admin-2.min.js",
55
+ ];
56
+ for (const srcFile of srcFiles) {
57
+ (0, fs_extra_1.copySync)((0, path_1.join)(srcPrefix, srcFile), (0, path_1.join)(sbadmin2Dst, srcFile));
58
+ }
59
+ }
60
+ exports.copySbadmin2Deps = copySbadmin2Deps;
61
+ /**
62
+ * create a cfg file, the app use this configs
63
+ * @param param0
64
+ */
65
+ function writeCfgFile({ buildDir, entryPoint, serverPath, localUserTables, }) {
66
+ const wwwDir = (0, path_1.join)(buildDir, "www");
67
+ let cfg = {
68
+ version_tag: index_1.default.connectObj.version_tag,
69
+ entry_view: `get/view/${entryPoint}`,
70
+ server_path: serverPath,
71
+ localUserTables,
72
+ };
73
+ (0, fs_extra_1.writeFileSync)((0, path_1.join)(wwwDir, "config"), JSON.stringify(cfg));
74
+ }
75
+ exports.writeCfgFile = writeCfgFile;
76
+ /**
77
+ * create a file with all data from the db
78
+ * the app updates its local db from this
79
+ * @param buildDir directory where the app will be build
80
+ */
81
+ async function buildTablesFile(buildDir) {
82
+ const wwwDir = (0, path_1.join)(buildDir, "www");
83
+ const scTables = (await index_1.default.listScTables()).filter((table) => ["_sc_migrations", "_sc_errors", "_sc_session"].indexOf(table.name) === -1);
84
+ const tablesWithData = await Promise.all(scTables.map(async (row) => {
85
+ const dbData = await index_1.default.select(row.name);
86
+ return { table: row.name, rows: dbData };
87
+ }));
88
+ (0, fs_extra_1.writeFileSync)((0, path_1.join)(wwwDir, "tables.json"), JSON.stringify({
89
+ created_at: new Date(),
90
+ sc_tables: tablesWithData,
91
+ }));
92
+ }
93
+ exports.buildTablesFile = buildTablesFile;
94
+ /**
95
+ * init an empty db
96
+ * after the first startup, this db will be updated from the tables.json
97
+ * @param buildDir directory where the app will be build
98
+ */
99
+ async function createSqliteDb(buildDir) {
100
+ const result = (0, child_process_1.spawnSync)("saltcorn", ["reset-schema", "-f"], {
101
+ env: {
102
+ ...process.env,
103
+ FORCE_SQLITE: "true",
104
+ SQLITE_FILEPATH: (0, path_1.join)(buildDir, "www", "scdb.sqlite"),
105
+ },
106
+ });
107
+ console.log(result.output.toString());
108
+ }
109
+ exports.createSqliteDb = createSqliteDb;
110
+ //# sourceMappingURL=common-build-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-build-utils.js","sourceRoot":"","sources":["../../utils/common-build-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * copy saltcorn-mobile-app as a template to buildDir
3
+ * @param buildDir directory where the app will be build
4
+ * @param templateDir directory of the template code that will be copied to 'buildDir'
5
+ */
6
+ export declare function prepareBuildDir(buildDir: string, templateDir: string): void;
7
+ /**
8
+ *
9
+ * @param buildDir directory where the app will be build
10
+ * @returns
11
+ */
12
+ export declare function buildApkInContainer(buildDir: string): number | null;
13
+ /**
14
+ * build '.apk / .ipa' files with cordova (only android is tested)
15
+ * @param flags
16
+ * @returns
17
+ */
18
+ export declare function buildApp(buildDir: string, platforms: string[], useDocker?: boolean): number | null;
19
+ /**
20
+ *
21
+ * @param buildDir directory where the app will be build
22
+ * @param platforms
23
+ */
24
+ export declare function addPlatforms(buildDir: string, platforms: string[]): void;
25
+ /**
26
+ *
27
+ * @param buildDir directory where the app will be build
28
+ * @param platforms
29
+ * @returns
30
+ */
31
+ export declare function callBuild(buildDir: string, platforms: string[]): number | null;
32
+ /**
33
+ *
34
+ * @param buildDir directory where the app was build
35
+ * @param copyDir directory where the resulting app file will be copied to
36
+ * @param appFileName name of the copied app file
37
+ */
38
+ export declare function copyApp(buildDir: string, copyDir: string, appFileName?: string): Promise<void>;
39
+ //# sourceMappingURL=cordova-build-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cordova-build-utils.d.ts","sourceRoot":"","sources":["../../utils/cordova-build-utils.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAQpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,iBAcnD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,OAAO,iBAUpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAKjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAO9D;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,iBAmBrB"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copyApp = exports.callBuild = exports.addPlatforms = exports.buildApp = exports.buildApkInContainer = exports.prepareBuildDir = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const path_1 = require("path");
7
+ const os_1 = require("os");
8
+ /**
9
+ * copy saltcorn-mobile-app as a template to buildDir
10
+ * @param buildDir directory where the app will be build
11
+ * @param templateDir directory of the template code that will be copied to 'buildDir'
12
+ */
13
+ function prepareBuildDir(buildDir, templateDir) {
14
+ if ((0, fs_extra_1.existsSync)(buildDir))
15
+ (0, fs_extra_1.rmSync)(buildDir, { force: true, recursive: true });
16
+ (0, fs_extra_1.copySync)(templateDir, buildDir);
17
+ (0, fs_extra_1.rmSync)(`${buildDir}/node_modules`, { recursive: true, force: true });
18
+ const result = (0, child_process_1.spawnSync)("npm", ["install", "--legacy-peer-deps"], {
19
+ cwd: buildDir,
20
+ });
21
+ console.log(result.output.toString());
22
+ }
23
+ exports.prepareBuildDir = prepareBuildDir;
24
+ /**
25
+ *
26
+ * @param buildDir directory where the app will be build
27
+ * @returns
28
+ */
29
+ function buildApkInContainer(buildDir) {
30
+ const info = (0, os_1.userInfo)();
31
+ const result = (0, child_process_1.spawnSync)("docker", [
32
+ "run",
33
+ "-v",
34
+ `${buildDir}:/saltcorn-mobile-app`,
35
+ "saltcorn/cordova-builder",
36
+ ], { cwd: "." });
37
+ console.log(result.output.toString());
38
+ return result.status;
39
+ }
40
+ exports.buildApkInContainer = buildApkInContainer;
41
+ /**
42
+ * build '.apk / .ipa' files with cordova (only android is tested)
43
+ * @param flags
44
+ * @returns
45
+ */
46
+ function buildApp(buildDir, platforms, useDocker) {
47
+ if (!useDocker) {
48
+ return callBuild(buildDir, platforms);
49
+ }
50
+ else {
51
+ let code = buildApkInContainer(buildDir);
52
+ if (code === 0 && platforms.indexOf("ios") > -1)
53
+ code = callBuild(buildDir, ["ios"]);
54
+ return code;
55
+ }
56
+ }
57
+ exports.buildApp = buildApp;
58
+ /**
59
+ *
60
+ * @param buildDir directory where the app will be build
61
+ * @param platforms
62
+ */
63
+ function addPlatforms(buildDir, platforms) {
64
+ const result = (0, child_process_1.spawnSync)("npm", ["run", "add-platform", "--", ...platforms], {
65
+ cwd: buildDir,
66
+ });
67
+ console.log(result.output.toString());
68
+ }
69
+ exports.addPlatforms = addPlatforms;
70
+ /**
71
+ *
72
+ * @param buildDir directory where the app will be build
73
+ * @param platforms
74
+ * @returns
75
+ */
76
+ function callBuild(buildDir, platforms) {
77
+ addPlatforms(buildDir, platforms);
78
+ const result = (0, child_process_1.spawnSync)("npm", ["run", "build-app", "--", ...platforms], {
79
+ cwd: buildDir,
80
+ });
81
+ console.log(result.output.toString());
82
+ return result.status;
83
+ }
84
+ exports.callBuild = callBuild;
85
+ /**
86
+ *
87
+ * @param buildDir directory where the app was build
88
+ * @param copyDir directory where the resulting app file will be copied to
89
+ * @param appFileName name of the copied app file
90
+ */
91
+ async function copyApp(buildDir, copyDir, appFileName) {
92
+ if (!(0, fs_extra_1.existsSync)(copyDir)) {
93
+ (0, fs_extra_1.mkdirSync)(copyDir);
94
+ }
95
+ const apkName = "app-debug.apk";
96
+ const apkFile = (0, path_1.join)(buildDir, "platforms", "android", "app", "build", "outputs", "apk", "debug", apkName);
97
+ const targetFile = appFileName ? appFileName : apkName;
98
+ (0, fs_extra_1.copySync)(apkFile, (0, path_1.join)(copyDir, targetFile));
99
+ }
100
+ exports.copyApp = copyApp;
101
+ //# sourceMappingURL=cordova-build-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cordova-build-utils.js","sourceRoot":"","sources":["../../utils/cordova-build-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import Plugin from "@saltcorn/data/models/plugin";
2
+ /**
3
+ *
4
+ * @param buildDir directory where the app will be build
5
+ * @param plugins saltcorn plugins to install
6
+ */
7
+ export declare function bundlePackagesAndPlugins(buildDir: string, plugins: Plugin[]): Promise<void>;
8
+ /**
9
+ *
10
+ * @param buildDir directory where the app will be build
11
+ * @param manager live-plugin-manager to load a saltcorn-plugin
12
+ * @param plugins saltcorn plugins
13
+ */
14
+ export declare function copyPublicDirs(buildDir: string, manager: any, plugins: Plugin[]): Promise<void>;
15
+ /**
16
+ *
17
+ * @param buildDir directory where the app will be build
18
+ * @param manager live-plugin-manager to load a npm pacakage (change to dependency??)
19
+ */
20
+ export declare function installNpmPackages(buildDir: string, manager: any): Promise<void>;
21
+ //# sourceMappingURL=package-bundle-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-bundle-utils.d.ts","sourceRoot":"","sources":["../../utils/package-bundle-utils.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,8BAA8B,CAAC;AAIlD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,iBAsBlB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,MAAM,EAAE,iBAgBlB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAkBtE"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.installNpmPackages = exports.copyPublicDirs = exports.bundlePackagesAndPlugins = void 0;
4
+ const path_1 = require("path");
5
+ const fs_extra_1 = require("fs-extra");
6
+ const child_process_1 = require("child_process");
7
+ const { requirePlugin } = require("@saltcorn/server/load_plugins");
8
+ /**
9
+ *
10
+ * @param buildDir directory where the app will be build
11
+ * @param plugins saltcorn plugins to install
12
+ */
13
+ async function bundlePackagesAndPlugins(buildDir, plugins) {
14
+ const result = (0, child_process_1.spawnSync)("npm", [
15
+ "run",
16
+ "build",
17
+ "--",
18
+ "--env",
19
+ `plugins=${JSON.stringify(plugins)}`,
20
+ "--env",
21
+ `output=${buildDir}/www/js/`,
22
+ ], {
23
+ cwd: (0, path_1.join)(__dirname, "../../"),
24
+ });
25
+ console.log(result.output.toString());
26
+ (0, fs_extra_1.rmSync)((0, path_1.join)(__dirname, "../..", "plugin_packages"), {
27
+ force: true,
28
+ recursive: true,
29
+ });
30
+ }
31
+ exports.bundlePackagesAndPlugins = bundlePackagesAndPlugins;
32
+ /**
33
+ *
34
+ * @param buildDir directory where the app will be build
35
+ * @param manager live-plugin-manager to load a saltcorn-plugin
36
+ * @param plugins saltcorn plugins
37
+ */
38
+ async function copyPublicDirs(buildDir, manager, plugins) {
39
+ const wwwDir = (0, path_1.join)(buildDir, "www");
40
+ for (const plugin of plugins) {
41
+ const required = await requirePlugin(plugin, false, manager);
42
+ const srcPublicDir = (0, path_1.join)(required.location, "public");
43
+ if ((0, fs_extra_1.existsSync)(srcPublicDir)) {
44
+ const dstPublicDir = (0, path_1.join)(wwwDir, "plugins", "public", plugin.name);
45
+ if (!(0, fs_extra_1.existsSync)(dstPublicDir)) {
46
+ (0, fs_extra_1.mkdirSync)(dstPublicDir, { recursive: true });
47
+ }
48
+ for (const dirEntry of (0, fs_extra_1.readdirSync)(srcPublicDir)) {
49
+ (0, fs_extra_1.copySync)((0, path_1.join)(srcPublicDir, dirEntry), (0, path_1.join)(dstPublicDir, dirEntry));
50
+ }
51
+ }
52
+ }
53
+ }
54
+ exports.copyPublicDirs = copyPublicDirs;
55
+ /**
56
+ *
57
+ * @param buildDir directory where the app will be build
58
+ * @param manager live-plugin-manager to load a npm pacakage (change to dependency??)
59
+ */
60
+ async function installNpmPackages(buildDir, manager) {
61
+ const npmTargetDir = (0, path_1.join)(buildDir, "www", "npm_packages");
62
+ if (!(0, fs_extra_1.existsSync)(npmTargetDir))
63
+ (0, fs_extra_1.mkdirSync)(npmTargetDir, { recursive: true });
64
+ const jwtInfo = await manager.install("jwt-decode", "3.1.2");
65
+ (0, fs_extra_1.copySync)((0, path_1.join)(jwtInfo.location, "build/jwt-decode.js"), (0, path_1.join)(npmTargetDir, "jwt-decode.js"));
66
+ const routerInfo = await manager.install("universal-router", "9.1.0");
67
+ (0, fs_extra_1.copySync)((0, path_1.join)(routerInfo.location, "universal-router.min.js"), (0, path_1.join)(npmTargetDir, "universal-router.min.js"));
68
+ const axiosInfo = await manager.install("axios", "0.27.2");
69
+ (0, fs_extra_1.copySync)((0, path_1.join)(axiosInfo.location, "dist", "axios.min.js"), (0, path_1.join)(npmTargetDir, "axios.min.js"));
70
+ }
71
+ exports.installNpmPackages = installNpmPackages;
72
+ //# sourceMappingURL=package-bundle-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-bundle-utils.js","sourceRoot":"","sources":["../../utils/package-bundle-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ FROM node:16
2
+
3
+ RUN apt update && apt install -y wget unzip \
4
+ openjdk-11-jdk openjdk-11-demo openjdk-11-doc openjdk-11-jre-headless openjdk-11-source
5
+
6
+ # install android commandline tools and sdk
7
+ RUN wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip
8
+ RUN unzip commandlinetools-linux-8512546_latest.zip
9
+ RUN mkdir android_sdk
10
+ RUN yes | cmdline-tools/bin/sdkmanager --sdk_root=android_sdk --install "cmdline-tools;latest"
11
+ RUN android_sdk/cmdline-tools/latest/bin/sdkmanager --list
12
+ RUN android_sdk/cmdline-tools/latest/bin/sdkmanager "platforms;android-11"
13
+ RUN android_sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;30.0.3"
14
+
15
+ # download gradle
16
+ RUN wget -q https://services.gradle.org/distributions/gradle-7.1.1-all.zip \
17
+ && unzip gradle-7.1.1-all.zip -d /opt
18
+
19
+ RUN npm install -g cordova
20
+
21
+ # create an empty project, the first init seems to take longer
22
+ WORKDIR /init_project
23
+ RUN cordova create project
24
+ WORKDIR /init_project/project
25
+ RUN cordova platform add android
26
+ ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
27
+ ENV ANDROID_SDK_ROOT=/android_sdk
28
+ ENV GRADLE_HOME=/opt/gradle-7.1.1
29
+ ENV PATH=$PATH:/opt/gradle-7.1.1/bin
30
+ # stop gradle from downloading itself
31
+ ENV CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file\:/gradle-7.1.1-all.zip
32
+ RUN cordova build
33
+
34
+ # due to a bug in npm that has been addressed since then
35
+ # some files in '/root/.npm' are owned by root
36
+ RUN chown -R 1000:1000 "/root/.npm"
37
+ RUN chmod -R o+rwx "/root/.npm"
38
+
39
+ # prepare entry point
40
+ WORKDIR /
41
+ COPY entry.bash ./
42
+ RUN chmod u+x entry.bash
43
+
44
+ RUN chmod o+rwx ~
45
+ RUN chmod -R o+rwx ~/.config
46
+
47
+ ENTRYPOINT ["./entry.bash"]
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
4
+ export ANDROID_SDK_ROOT=/android_sdk
5
+ export GRADLE_HOME=/opt/gradle-7.1.1
6
+ export PATH=$PATH:/opt/gradle-7.1.1/bin
7
+ # stop gradle from downloading itself
8
+ export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file\:/gradle-7.1.1-all.zip
9
+
10
+ cd /saltcorn-mobile-app
11
+ echo "adding android platform"
12
+ npm run add-platform android
13
+ echo "calling cordova clean";
14
+ cordova clean
15
+ echo "calling cordova build";
16
+ cordova build android
17
+
18
+ chmod -R o+rwx /saltcorn-mobile-app
@@ -0,0 +1,20 @@
1
+ const { spawnSync } = require("child_process");
2
+ const { join } = require("path");
3
+
4
+ if (process.env.SKIP_DOCKER_IMAGE_INSTALL === "true") {
5
+ console.log("skipping build 'saltcorn/cordova-builder' docker image");
6
+ } else {
7
+ const result = spawnSync(
8
+ "docker",
9
+ [
10
+ "build",
11
+ __dirname,
12
+ "-f",
13
+ join(__dirname, "Dockerfile"),
14
+ "-t",
15
+ "saltcorn/cordova-builder",
16
+ ],
17
+ { cwd: ".", stdio: "inherit" }
18
+ );
19
+ if (result.error) console.log(result.error.toString());
20
+ }
package/package.json CHANGED
@@ -3,39 +3,48 @@
3
3
  "description": "plugin to to build a mobile app from a tenant application",
4
4
  "homepage": "https://saltcorn.com",
5
5
  "repository": "github:saltcorn/saltcorn",
6
- "version": "0.7.3-beta.3",
6
+ "version": "0.7.3",
7
7
  "author": "Christian Hugo",
8
8
  "scripts": {
9
- "build": "webpack --mode development"
9
+ "build": "webpack --mode development",
10
+ "postinstall": "node ./docker/post-installer.js"
10
11
  },
11
12
  "dependencies": {
12
- "@oclif/core": "^1.2.0",
13
- "@saltcorn/markup": "0.7.3-beta.3",
14
- "@saltcorn/cli": "0.7.3-beta.3",
15
- "@saltcorn/data": "0.7.3-beta.3",
16
- "@saltcorn/db-common": "0.7.3-beta.3",
17
- "@saltcorn/server": "0.7.3-beta.3",
18
- "@saltcorn/base-plugin": "0.7.3-beta.3",
19
- "@saltcorn/sbadmin2": "0.7.3-beta.3",
20
- "@saltcorn/mobile-app": "0.7.3-beta.3",
13
+ "@saltcorn/markup": "0.7.3",
14
+ "@saltcorn/data": "0.7.3",
15
+ "@saltcorn/db-common": "0.7.3",
16
+ "@saltcorn/server": "0.7.3",
17
+ "@saltcorn/base-plugin": "0.7.3",
18
+ "@saltcorn/sbadmin2": "0.7.3",
19
+ "@saltcorn/mobile-app": "0.7.3",
21
20
  "fs-extra": "^10.0.1",
22
21
  "live-plugin-manager": "^0.16.0",
23
- "xml2js": "0.4.23"
24
- },
25
- "devDependencies": {
26
- "@types/node": "^16.11.7",
27
22
  "webpack-merge": "^5.8.0",
28
23
  "webpack": "5.68.0",
29
- "webpack-cli": "4.9.2",
30
- "@types/xml2js": "0.4.9"
24
+ "webpack-cli": "4.9.2"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^16.11.7"
28
+ },
29
+ "main": "./dist/index.js",
30
+ "exports": {
31
+ ".": "./dist/index.js",
32
+ "./*": "./dist/*.js"
33
+ },
34
+ "typesVersions": {
35
+ "*": {
36
+ "*": [
37
+ "dist/*"
38
+ ]
39
+ }
31
40
  },
32
41
  "files": [
33
- "/dist"
42
+ "/dist",
43
+ "/docker",
44
+ "webpack.config.js",
45
+ "!dist/tsconfig.ref.tsbuildinfo"
34
46
  ],
35
47
  "license": "MIT",
36
- "oclif": {
37
- "commands": "./dist/commands"
38
- },
39
48
  "publishConfig": {
40
49
  "access": "public"
41
50
  }
@@ -0,0 +1,83 @@
1
+ const { mergeWithCustomize, merge } = require("webpack-merge");
2
+ const { join } = require("path");
3
+ const { PluginManager } = require("live-plugin-manager");
4
+ const {
5
+ staticDependencies,
6
+ requirePlugin,
7
+ } = require("@saltcorn/server/load_plugins");
8
+
9
+ const manager = new PluginManager({
10
+ pluginsPath: join(__dirname, "plugin_packages", "node_modules"),
11
+ staticDependencies,
12
+ });
13
+
14
+ const dataCfg = require(join(
15
+ require.resolve("@saltcorn/data"),
16
+ "../..",
17
+ "webpack.config"
18
+ ));
19
+ const markupCfg = require(join(
20
+ require.resolve("@saltcorn/markup"),
21
+ "../..",
22
+ "webpack.config"
23
+ ));
24
+ const basePluginCfg = require(join(
25
+ require.resolve("@saltcorn/base-plugin"),
26
+ "../",
27
+ "webpack.config"
28
+ ));
29
+ const sbAdmin2Cfg = require(join(
30
+ require.resolve("@saltcorn/sbadmin2"),
31
+ "../",
32
+ "webpack.config"
33
+ ));
34
+
35
+ const addDependOn = (dataEntryPoint, b) => {
36
+ const copy = { ...dataEntryPoint };
37
+ copy.data.dependOn = "markup";
38
+ return merge({}, copy, b);
39
+ };
40
+
41
+ const buildPluginEntries = async (plugins) => {
42
+ let result = [];
43
+ for (plugin of JSON.parse(plugins)) {
44
+ const requireResult = await requirePlugin(plugin, false, manager);
45
+ const additionalDependencies = requireResult.plugin_module?.dependencies
46
+ ? requireResult.plugin_module.dependencies
47
+ : [];
48
+ const genericEntry = {
49
+ [plugin.name]: {
50
+ import: requireResult.mainFile,
51
+ dependOn: ["markup", "data", ...additionalDependencies],
52
+ },
53
+ };
54
+ result.push({
55
+ entry: genericEntry,
56
+ });
57
+ }
58
+ return result;
59
+ };
60
+
61
+ module.exports = async (env) => {
62
+ const pluginEntries = env.plugins ? await buildPluginEntries(env.plugins) : [];
63
+ return mergeWithCustomize({
64
+ customizeArray(a, b, key) {
65
+ if (key === "library") {
66
+ return _.uniq([...a, ...b]);
67
+ }
68
+ return undefined;
69
+ },
70
+ customizeObject(a, b, key) {
71
+ if (key === "output") {
72
+ const copy = { ...a };
73
+ copy.path = env.output;
74
+ return copy;
75
+ }
76
+ if (key === "entry") {
77
+ if (a.data) return addDependOn(a, b);
78
+ else if (b.data) return addDependOn(b, a);
79
+ }
80
+ return undefined;
81
+ },
82
+ })(dataCfg, markupCfg, basePluginCfg, sbAdmin2Cfg, ...pluginEntries);
83
+ };