@tremho/mist-lift 1.0.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 +21 -0
- package/README.md +37 -0
- package/build/commands/actions/initQuestions.js +136 -0
- package/build/commands/actions/initQuestions.js.map +1 -0
- package/build/commands/actions/makePackageJson.js +2 -0
- package/build/commands/actions/makePackageJson.js.map +1 -0
- package/build/commands/actions/setupPackageJson.js +68 -0
- package/build/commands/actions/setupPackageJson.js.map +1 -0
- package/build/commands/build.js +191 -0
- package/build/commands/build.js.map +1 -0
- package/build/commands/builtin/ApiDocMaker.js +72 -0
- package/build/commands/builtin/ApiDocMaker.js.map +1 -0
- package/build/commands/builtin/BuiltInHandler.js +62 -0
- package/build/commands/builtin/BuiltInHandler.js.map +1 -0
- package/build/commands/builtin/DeployBuiltInZip.js +57 -0
- package/build/commands/builtin/DeployBuiltInZip.js.map +1 -0
- package/build/commands/builtin/StageWebrootZip.js +70 -0
- package/build/commands/builtin/StageWebrootZip.js.map +1 -0
- package/build/commands/builtin/prebuilt-zips/API.zip +0 -0
- package/build/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
- package/build/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
- package/build/commands/create.js +75 -0
- package/build/commands/create.js.map +1 -0
- package/build/commands/deploy.js +187 -0
- package/build/commands/deploy.js.map +1 -0
- package/build/commands/doctor.js +137 -0
- package/build/commands/doctor.js.map +1 -0
- package/build/commands/help.js +205 -0
- package/build/commands/help.js.map +1 -0
- package/build/commands/init.js +92 -0
- package/build/commands/init.js.map +1 -0
- package/build/commands/package.js +249 -0
- package/build/commands/package.js.map +1 -0
- package/build/commands/publish.js +344 -0
- package/build/commands/publish.js.map +1 -0
- package/build/commands/settings.js +95 -0
- package/build/commands/settings.js.map +1 -0
- package/build/commands/start.js +66 -0
- package/build/commands/start.js.map +1 -0
- package/build/commands/test.js +52 -0
- package/build/commands/test.js.map +1 -0
- package/build/commands/user.js +20 -0
- package/build/commands/user.js.map +1 -0
- package/build/expressRoutes/all.js +129 -0
- package/build/expressRoutes/all.js.map +1 -0
- package/build/expressRoutes/api.js +22 -0
- package/build/expressRoutes/api.js.map +1 -0
- package/build/expressRoutes/functionBinder.js +191 -0
- package/build/expressRoutes/functionBinder.js.map +1 -0
- package/build/lib/CaseUtils.js +57 -0
- package/build/lib/CaseUtils.js.map +1 -0
- package/build/lib/DirectoryUtils.js +37 -0
- package/build/lib/DirectoryUtils.js.map +1 -0
- package/build/lib/LiftConfig.js +83 -0
- package/build/lib/LiftConfig.js.map +1 -0
- package/build/lib/LiftVersion.js +117 -0
- package/build/lib/LiftVersion.js.map +1 -0
- package/build/lib/Tests/fileCompare.test.js +55 -0
- package/build/lib/Tests/fileCompare.test.js.map +1 -0
- package/build/lib/askQuestion.js +41 -0
- package/build/lib/askQuestion.js.map +1 -0
- package/build/lib/executeCommand.js +45 -0
- package/build/lib/executeCommand.js.map +1 -0
- package/build/lib/fileCompare.js +48 -0
- package/build/lib/fileCompare.js.map +1 -0
- package/build/lib/openAPI/ApiBuildCollector.js +58 -0
- package/build/lib/openAPI/ApiBuildCollector.js.map +1 -0
- package/build/lib/openAPI/WebrootFileSupport.js +44 -0
- package/build/lib/openAPI/WebrootFileSupport.js.map +1 -0
- package/build/lib/openAPI/openApiConstruction.js +203 -0
- package/build/lib/openAPI/openApiConstruction.js.map +1 -0
- package/build/lib/pathResolve.js +27 -0
- package/build/lib/pathResolve.js.map +1 -0
- package/build/lib/utils.js +76 -0
- package/build/lib/utils.js.map +1 -0
- package/build/lift.js +124 -0
- package/build/lift.js.map +1 -0
- package/package.json +69 -0
- package/src/commands/actions/initQuestions.ts +131 -0
- package/src/commands/actions/makePackageJson.ts +0 -0
- package/src/commands/actions/setupPackageJson.ts +36 -0
- package/src/commands/build.ts +165 -0
- package/src/commands/builtin/ApiDocMaker.ts +70 -0
- package/src/commands/builtin/BuiltInHandler.ts +51 -0
- package/src/commands/builtin/DeployBuiltInZip.ts +27 -0
- package/src/commands/builtin/StageWebrootZip.ts +39 -0
- package/src/commands/builtin/prebuilt-zips/API.zip +0 -0
- package/src/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
- package/src/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
- package/src/commands/create.ts +55 -0
- package/src/commands/deploy.ts +171 -0
- package/src/commands/doctor.ts +102 -0
- package/src/commands/help.ts +171 -0
- package/src/commands/init.ts +62 -0
- package/src/commands/package.ts +228 -0
- package/src/commands/publish.ts +350 -0
- package/src/commands/settings.ts +76 -0
- package/src/commands/start.ts +46 -0
- package/src/commands/test.ts +38 -0
- package/src/commands/user.ts +20 -0
- package/src/expressRoutes/all.ts +104 -0
- package/src/expressRoutes/api.ts +24 -0
- package/src/expressRoutes/functionBinder.ts +169 -0
- package/src/lib/CaseUtils.ts +68 -0
- package/src/lib/DirectoryUtils.ts +36 -0
- package/src/lib/LiftConfig.ts +83 -0
- package/src/lib/LiftVersion.ts +95 -0
- package/src/lib/Tests/dir1/file.1 +0 -0
- package/src/lib/Tests/dir1/file.2 +0 -0
- package/src/lib/Tests/dir2/file.1 +0 -0
- package/src/lib/Tests/fileCompare.test.ts +34 -0
- package/src/lib/askQuestion.ts +18 -0
- package/src/lib/executeCommand.ts +38 -0
- package/src/lib/fileCompare.ts +46 -0
- package/src/lib/openAPI/ApiBuildCollector.ts +47 -0
- package/src/lib/openAPI/WebrootFileSupport.ts +21 -0
- package/src/lib/openAPI/openApiConstruction.ts +202 -0
- package/src/lib/pathResolve.ts +32 -0
- package/src/lib/utils.ts +45 -0
- package/src/lift.ts +82 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openApiConstruction.js","sourceRoot":"","sources":["../../../src/lib/openAPI/openApiConstruction.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;;GAEG;AACH,6CAAmD;AACnD,4CAAgC;AAChC,gDAAuB;AACvB,gDAA4C;AAE5C,8CAA0C;AAE1C,SAAsB,YAAY;yDAC9B,IAAU,EACV,iBAAyB,KAAK,EAC9B,QAAgB;;QAGhB,MAAM,OAAO,GAAG,IAAI,sBAAc,EAAE,CAAC;QAErC,MAAM,YAAY,GAAG,MAAM,IAAA,0BAAY,GAAE,CAAC;QAC1C,IAAG,CAAC,YAAY,CAAC,QAAQ;YAAE,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;QAEnF,qDAAqD;QACrD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACzC,IAAI,GAAG,GAAO,EAAE,CAAA;QAChB,IAAI,CAAC;YAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,WAAM,CAAC,CAAA,CAAC;QACvE,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,iCAAiC;QACjC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;QAC7B,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE1B,wDAAwD;QACxD,kEAAkE;QAClE,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAA;QAC7E,IAAI,OAAO,GAAO,EAAE,CAAC;QACrB,IAAG,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,GAAG,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,IAAI,mCAAI,IAAI,CAAC;QAErC,MAAM,IAAI,GAAG;YACT,KAAK,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,KAAK;YAC5B,oBAAoB;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,mCAAI,OAAO,mCAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClE,CAAA;QACD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAErB,mCAAmC;QACnC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,IAAI,OAAO,GAAG,EAAE,CAAA;YAChB,IAAG,GAAG,CAAC,OAAO,IAAI,CAAC,cAAc;gBAAE,SAAS,CAAC,eAAe;YAE5D,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,UAAU,mCAAI,EAAE,CAAA;YACvC,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC7C,MAAM,OAAO,GAAG,MAAA,GAAG,CAAC,OAAO,mCAAI,EAAE,CAAA;YACjC,KAAI,IAAI,UAAU,IAAI,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBACnC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;YAC9C,CAAC;YACD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;gBACzB,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;gBACpC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;gBACvC,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;oBAC3B,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAChC,CAAC;YACL,CAAC;YACD,mBAAmB,CAAC,OAAO,CAAC,CAAA;YAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAA,GAAG,CAAC,OAAO,mCAAI,GAAG,GAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;YAEvD,OAAO,CAAC,SAAS,CAAC,OAAO,EAAC;gBACtB,KAAK,EAAG,cAAc;gBACtB,IAAI,EAAC,QAAQ;aAChB,CAAC,CAAA;QACN,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,cAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAC,aAAa,CAAC,CAAA;QAE7F,MAAM,MAAM,GAAG,CAAC,GAAU,EAAa,EAAE;YACrC,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;YACnE,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC,CAAA;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAG,CAAC,cAAc,EAAE,CAAC;YACjB,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;CAAA;AAnFD,oCAmFC;AAED,SAAS,aAAa,CAAC,OAAW,EAAE,UAAiB,EAAE,MAAU;IAE7D,MAAM,GAAG,GAAO,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,QAAQ,EAAE,UAAU,EAAC,EAAE,EAAC,CAAA;IACjE,KAAI,IAAI,IAAI,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAClD,CAAC;QACG,MAAM,MAAM,GAAO,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,CAAC,CAAA;QAErD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAW,EAAE,MAAa,EAAE,GAAO;;IAE1D,iDAAiD;IACjD,MAAM,MAAM,GAAQ,GAAG,CAAC,OAAe,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAO,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,YAAY,CAAA;IAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAElB,MAAM,MAAM,GAAG,IAAA,wBAAW,GAAE,CAAC,kBAAkB,CAAC;IAChD,MAAM,SAAS,GAAG,cAAc,CAAC;IACjC,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,GAAG,CAAC,IAAI;QACjB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,SAAS,EAAE;YACP,KAAK,EAAE;gBACH,WAAW,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,mCAAI,kBAAkB;gBACtD,OAAO;aACV;SACJ;KACJ,CAAA;IACD,OAAO,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;AAC/B,CAAC;AACD,SAAS,mBAAmB,CAAC,OAAW;IACpC,IAAI,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,CAAC,iCAAiC;IACjE,uBAAuB;IACvB,OAAO,CAAC,SAAS,CAAC,GAAG;QACjB,WAAW,EAAG;YACV,KAAK,EAAG;gBACJ,aAAa,EAAG,cAAc;gBAC9B,SAAS,EAAG;oBACR,kBAAkB,EAAG;wBACjB,QAAQ,EAAG;4BACP,MAAM,EAAG,4BAA4B;yBACxC;qBACJ;iBACJ;aACJ;SACJ;QACD,iCAAiC,EAAG;YAChC,WAAW,EAAG;gBACV,SAAS,EAAG;oBACR,YAAY,EAAG,KAAK;iBACvB;aACJ;YACD,kBAAkB,EAAG;gBACjB,kBAAkB,EAAG,uBAAuB;aAC/C;YACD,qBAAqB,EAAG,eAAe;YACvC,MAAM,EAAG,MAAM;SAClB;KACJ,CAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAAW,EAAE,KAAS;;IACxC,IAAG,CAAC,OAAO,CAAC,UAAU;QAAE,OAAO,CAAC,UAAU,GAAG,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IACrC,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,OAAO,mCAAI,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,OAAO,OAAO,CAAA;IACzC,IAAI,KAAK,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,OAAO,CAAA;IAEpC,UAAU,CAAC,IAAI,CAAC;QACZ,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;KACxC,CAAC,CAAA;AAEN,CAAC;AAED,SAAS,UAAU,CAAC,KAAY,EAAE,SAAgB,EAAE,SAAiB;IACjE,IAAG,OAAO,SAAS,IAAI,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAChE,IAAG,CAAC,CAAG,IAAI,KAAK,QAAQ;WACjB,IAAI,KAAK,QAAQ;WACjB,IAAI,KAAK,SAAS;WAClB,IAAI,KAAK,SAAS;WAClB,IAAI,KAAK,KAAK;WACd,IAAI,KAAK,MAAM,CACrB,EAAE,CAAC;QACA,OAAO,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,wBAAwB,IAAI,EAAE;SACvC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE;gBACN,IAAI,EAAE,wBAAwB,IAAI,EAAE;aAC3C,EAAE,CAAA;IACP,CAAC;IACD,IAAI,IAAI,KAAK,KAAK;QAAE,IAAI,GAAG,SAAS,CAAC;IACrC,IAAI,IAAI,KAAK,MAAM;QAAE,IAAI,GAAG,SAAS,CAAC;IACtC,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAC,KAAK,EAAE,EAAE,CAAA;AAEpG,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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.resolvePaths = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
// Find the path roots in the project directory
|
|
10
|
+
function resolvePaths() {
|
|
11
|
+
const cwd = process.cwd();
|
|
12
|
+
let funcPath = path_1.default.join(cwd, 'functions');
|
|
13
|
+
while (true) {
|
|
14
|
+
if (!fs_1.default.existsSync(funcPath)) {
|
|
15
|
+
funcPath = path_1.default.normalize(path_1.default.join(funcPath, ".."));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const basePath = path_1.default.normalize(path_1.default.join(funcPath, ".."));
|
|
19
|
+
const buildPath = path_1.default.join(basePath, "build");
|
|
20
|
+
const packagePath = path_1.default.join(basePath, "package.json");
|
|
21
|
+
const verified = fs_1.default.existsSync(basePath) && fs_1.default.existsSync(funcPath) && fs_1.default.existsSync(packagePath);
|
|
22
|
+
return { basePath, buildPath, functionPath: funcPath, packagePath, verified };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.resolvePaths = resolvePaths;
|
|
27
|
+
//# sourceMappingURL=pathResolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathResolve.js","sourceRoot":"","sources":["../../src/lib/pathResolve.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AAGpB,+CAA+C;AAC/C,SAAgB,YAAY;IASxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAC1C,OAAM,IAAI,EACV,CAAC;QACG,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC3B,CAAC;YACG,QAAQ,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;QACxD,CAAC;aAED,CAAC;YACG,MAAM,QAAQ,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;YAC1D,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAC,cAAc,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAClG,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAA;QAC9E,CAAC;IACL,CAAC;AACL,CAAC;AA1BD,oCA0BC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.UnzipToFolder = exports.FolderToZip = exports.delay = void 0;
|
|
36
|
+
const executeCommand_1 = require("./executeCommand");
|
|
37
|
+
const ac = __importStar(require("ansi-colors"));
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
/** General utilities */
|
|
40
|
+
const zipDir = require('zip-dir');
|
|
41
|
+
// pause the given number of milliseconds
|
|
42
|
+
function delay(ms // milliseconds to delay
|
|
43
|
+
) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
return new Promise(resolve => { setTimeout(resolve, ms); });
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
exports.delay = delay;
|
|
49
|
+
function FolderToZip(folderPath, zipPath) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
return new Promise(resolve => {
|
|
52
|
+
zipDir(folderPath, { saveTo: zipPath }, function (err, buffer) {
|
|
53
|
+
if (err)
|
|
54
|
+
throw err;
|
|
55
|
+
// `buffer` is the buffer of the zipped file
|
|
56
|
+
// And the buffer was saved to `~/myzip.zip`
|
|
57
|
+
resolve(buffer);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
exports.FolderToZip = FolderToZip;
|
|
63
|
+
function UnzipToFolder(zipPath_1, folderPath_1) {
|
|
64
|
+
return __awaiter(this, arguments, void 0, function* (zipPath, folderPath, replace = true) {
|
|
65
|
+
// TODO: using CLI -- find a good package. "unzip" has vulnerabilities. Try others.
|
|
66
|
+
if (replace)
|
|
67
|
+
fs.rmSync(folderPath, { recursive: true, force: true });
|
|
68
|
+
let result = yield (0, executeCommand_1.executeCommand)('unzip', [zipPath, '-d', folderPath]);
|
|
69
|
+
if (result.retcode) {
|
|
70
|
+
console.error(ac.red.bold(`failed to stage webroot (${result.retcode}): ${result.errStr}`));
|
|
71
|
+
throw Error();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
exports.UnzipToFolder = UnzipToFolder;
|
|
76
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAgD;AAChD,gDAAkC;AAClC,uCAAwB;AAExB,wBAAwB;AAExB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEjC,yCAAyC;AACzC,SAAsB,KAAK,CACvB,EAAS,CAAC,wBAAwB;;;QAGlC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,GAAE,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;IAC5D,CAAC;CAAA;AALD,sBAKC;AAED,SAAsB,WAAW,CAC7B,UAAiB,EACjB,OAAe;;QAGf,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YACzB,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,UAAU,GAAO,EAAE,MAAiB;gBACxE,IAAG,GAAG;oBAAE,MAAM,GAAG,CAAA;gBACjB,4CAA4C;gBAC5C,4CAA4C;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;CAAA;AAbD,kCAaC;AACD,SAAsB,aAAa;yDAC/B,OAAc,EACd,UAAiB,EACjB,UAAkB,IAAI;QAGtB,mFAAmF;QAEnF,IAAG,OAAO;YAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAA;QACjE,IAAI,MAAM,GAAG,MAAM,IAAA,+BAAc,EAAC,OAAO,EAAE,CAAC,OAAO,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;QACtE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5F,MAAM,KAAK,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;CAAA;AAdD,sCAcC"}
|
package/build/lift.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
27
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
28
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
29
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
30
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
31
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
32
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const ac = __importStar(require("ansi-colors"));
|
|
37
|
+
const process = __importStar(require("process"));
|
|
38
|
+
const LiftVersion_1 = require("./lib/LiftVersion");
|
|
39
|
+
const help_1 = require("./commands/help");
|
|
40
|
+
const init_1 = require("./commands/init");
|
|
41
|
+
const create_1 = require("./commands/create");
|
|
42
|
+
const build_1 = require("./commands/build");
|
|
43
|
+
const test_1 = require("./commands/test");
|
|
44
|
+
const package_1 = require("./commands/package");
|
|
45
|
+
const deploy_1 = require("./commands/deploy");
|
|
46
|
+
const publish_1 = require("./commands/publish");
|
|
47
|
+
const doctor_1 = require("./commands/doctor");
|
|
48
|
+
const start_1 = require("./commands/start");
|
|
49
|
+
const settings_1 = require("./commands/settings");
|
|
50
|
+
const command = process.argv[2] || 'help';
|
|
51
|
+
const args = process.argv.slice(3);
|
|
52
|
+
function processCommand() {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
var _a, _b, _c;
|
|
55
|
+
switch (command) {
|
|
56
|
+
case 'version':
|
|
57
|
+
case '--version':
|
|
58
|
+
case '-v':
|
|
59
|
+
console.log(`Lift v${(0, LiftVersion_1.getLiftVersion)()}`);
|
|
60
|
+
return;
|
|
61
|
+
case 'help':
|
|
62
|
+
return (0, help_1.doHelp)((_a = args[0]) !== null && _a !== void 0 ? _a : '');
|
|
63
|
+
case 'doctor':
|
|
64
|
+
return (0, doctor_1.doDoctor)();
|
|
65
|
+
case 'init':
|
|
66
|
+
return (0, init_1.doInit)((_b = args[0]) !== null && _b !== void 0 ? _b : '');
|
|
67
|
+
case 'create':
|
|
68
|
+
return (0, create_1.doCreate)((_c = args[0]) !== null && _c !== void 0 ? _c : '');
|
|
69
|
+
case 'build':
|
|
70
|
+
{
|
|
71
|
+
const ret = yield (0, build_1.doBuildAsync)(args);
|
|
72
|
+
if (ret)
|
|
73
|
+
process.exit(-1);
|
|
74
|
+
}
|
|
75
|
+
return;
|
|
76
|
+
case 'test':
|
|
77
|
+
{
|
|
78
|
+
const ret = yield (0, test_1.doTestAsync)(args);
|
|
79
|
+
if (ret)
|
|
80
|
+
process.exit(ret);
|
|
81
|
+
}
|
|
82
|
+
return;
|
|
83
|
+
case 'start':
|
|
84
|
+
return (0, start_1.startLocalServer)();
|
|
85
|
+
case 'package':
|
|
86
|
+
{
|
|
87
|
+
const ret = yield (0, package_1.doPackageAsync)(args);
|
|
88
|
+
if (ret)
|
|
89
|
+
process.exit(ret);
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
92
|
+
case 'deploy':
|
|
93
|
+
{
|
|
94
|
+
const ret = yield (0, deploy_1.doDeployAsync)(args);
|
|
95
|
+
if (ret)
|
|
96
|
+
process.exit(ret);
|
|
97
|
+
}
|
|
98
|
+
return;
|
|
99
|
+
case 'publish':
|
|
100
|
+
{
|
|
101
|
+
const ret = yield (0, publish_1.doPublishAsync)();
|
|
102
|
+
if (ret)
|
|
103
|
+
process.exit(ret);
|
|
104
|
+
}
|
|
105
|
+
return;
|
|
106
|
+
case 'settings':
|
|
107
|
+
{
|
|
108
|
+
const ret = yield (0, settings_1.doSettings)();
|
|
109
|
+
if (ret)
|
|
110
|
+
process.exit(ret);
|
|
111
|
+
}
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
return doUnknown(command);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function doUnknown(command) {
|
|
118
|
+
console.log(ac.red.bold(`Unrecognized command ${command || ''}`));
|
|
119
|
+
console.log(ac.grey.dim('try'));
|
|
120
|
+
console.log(ac.blue.dim('help, init, create, build, test, start, package, deploy, publish, settings'));
|
|
121
|
+
console.log('');
|
|
122
|
+
}
|
|
123
|
+
processCommand();
|
|
124
|
+
//# sourceMappingURL=lift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lift.js","sourceRoot":"","sources":["../src/lift.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tremho/mist-lift",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "lift command line utility for MistLift development",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"lift": "build/lift.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"prepublish": "rimraf build && npm run build && npm run indev",
|
|
11
|
+
"clean": "rimraf build && rimraf node_modules && npm install",
|
|
12
|
+
"build": "run-script-os",
|
|
13
|
+
"build:windows": "tsc && npm run postbuild",
|
|
14
|
+
"build:nix": "tsc && chmod +x build/lift.js && npm run postbuild",
|
|
15
|
+
"test": "tap --reporter=base --color --passes --disable-coverage src/lib/Tests/**/*.test.ts",
|
|
16
|
+
"indev": "run-script-os",
|
|
17
|
+
"indev:nix": "echo nix",
|
|
18
|
+
"indev:windows": "echo windows",
|
|
19
|
+
"postbuild": "cp -r src/commands/builtin/prebuilt-zips build/commands/builtin",
|
|
20
|
+
"installCli": "npm run build && cp build/lift.js ~/.nvm/versions/node/`node --version`/bin/lift"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"build/**/*",
|
|
24
|
+
"src/**/*",
|
|
25
|
+
"index.d.ts",
|
|
26
|
+
"README.md",
|
|
27
|
+
"tsconfig.json"
|
|
28
|
+
],
|
|
29
|
+
"keywords": [
|
|
30
|
+
"MistLift",
|
|
31
|
+
"Cloud",
|
|
32
|
+
"Lift",
|
|
33
|
+
"development",
|
|
34
|
+
"framework",
|
|
35
|
+
"cli",
|
|
36
|
+
"aws",
|
|
37
|
+
"express",
|
|
38
|
+
"node"
|
|
39
|
+
],
|
|
40
|
+
"author": "tremho",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@aws-sdk/client-api-gateway": "^3.598.0",
|
|
44
|
+
"@aws-sdk/client-lambda": "^3.598.0",
|
|
45
|
+
"@aws-sdk/credential-providers": "^3.598.0",
|
|
46
|
+
"@tremho/inverse-y": "^1.1.0",
|
|
47
|
+
"ansi-colors": "^4.1.3",
|
|
48
|
+
"axios": "^1.7.2",
|
|
49
|
+
"body-parser": "^1.20.2",
|
|
50
|
+
"clear-module": "^4.1.2",
|
|
51
|
+
"express": "^4.19.2",
|
|
52
|
+
"md5": "^2.3.0",
|
|
53
|
+
"openapi-ui": "^1.0.4",
|
|
54
|
+
"openapi3-ts": "^4.3.3",
|
|
55
|
+
"readline-sync": "^1.4.10",
|
|
56
|
+
"zip-dir": "^2.0.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@types/express": "^4.17.21",
|
|
60
|
+
"@types/md5": "^2.3.5",
|
|
61
|
+
"@types/node": "^20.14.2",
|
|
62
|
+
"@types/tap": "^15.0.11",
|
|
63
|
+
"@types/ws": "^8.5.10",
|
|
64
|
+
"rimraf": "^5.0.7",
|
|
65
|
+
"run-script-os": "^1.1.6",
|
|
66
|
+
"tap": "^19.2.5",
|
|
67
|
+
"typescript": "^5.4.5"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** Handles the input the user must supply upon init
|
|
2
|
+
*/
|
|
3
|
+
|
|
4
|
+
import * as path from 'path'
|
|
5
|
+
import * as fs from 'fs'
|
|
6
|
+
import {executeCommand} from "../../lib/executeCommand";
|
|
7
|
+
import {ask} from "../../lib/askQuestion"
|
|
8
|
+
|
|
9
|
+
export async function interrogateUserForPackageJsonSettings(
|
|
10
|
+
projectPath:string
|
|
11
|
+
)
|
|
12
|
+
{
|
|
13
|
+
// get existing package.json or {}
|
|
14
|
+
// name of project - module name, display name, short name
|
|
15
|
+
// description
|
|
16
|
+
// set version
|
|
17
|
+
// gitAuthor ?? Author
|
|
18
|
+
// create a repository under gitAuthor?
|
|
19
|
+
// copyright
|
|
20
|
+
// spdx licence
|
|
21
|
+
|
|
22
|
+
const gitAuthor = await findGitAuthor()
|
|
23
|
+
const pkgJson = existingPackageJson(projectPath)
|
|
24
|
+
let name = pkgJson.name ?? nameFromProjectPath(projectPath);
|
|
25
|
+
let version = pkgJson.version ?? "0.1.0-prerelease.1"
|
|
26
|
+
let description = pkgJson.description ?? ""
|
|
27
|
+
let author = pkgJson.author ?? gitAuthor
|
|
28
|
+
let copyright = pkgJson.copyright ?? defaultCopyright(author)
|
|
29
|
+
let spdx = pkgJson.license ?? "MIT"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
let ok = false;
|
|
33
|
+
while(!ok) {
|
|
34
|
+
name = ask("Module name of this project",
|
|
35
|
+
"module name",
|
|
36
|
+
name
|
|
37
|
+
)
|
|
38
|
+
ok = name && name.indexOf(' ') === -1
|
|
39
|
+
}
|
|
40
|
+
ok = false
|
|
41
|
+
while(!ok) {
|
|
42
|
+
version = ask("Project version. Use prerelease suffix for development versions. Use Semantic Versioning (https://semver.org).",
|
|
43
|
+
"version",
|
|
44
|
+
version ?? "0.1.0-prerelease.1"
|
|
45
|
+
)
|
|
46
|
+
ok = version && version.indexOf('.') !== -1
|
|
47
|
+
}
|
|
48
|
+
ok = false
|
|
49
|
+
while(!ok) {
|
|
50
|
+
description = ask("Give a brief description of what this project does / what it is for",
|
|
51
|
+
"description",
|
|
52
|
+
description ?? ""
|
|
53
|
+
)
|
|
54
|
+
ok = description !== "";
|
|
55
|
+
}
|
|
56
|
+
ok = false
|
|
57
|
+
while(!ok) {
|
|
58
|
+
author = ask("Identify yourself as the author of this project",
|
|
59
|
+
"name",
|
|
60
|
+
author
|
|
61
|
+
)
|
|
62
|
+
ok = author !== "";
|
|
63
|
+
}
|
|
64
|
+
ok = false
|
|
65
|
+
while(!ok) {
|
|
66
|
+
copyright = ask("Specify a displayable copyright notice",
|
|
67
|
+
"Copyright",
|
|
68
|
+
copyright
|
|
69
|
+
)
|
|
70
|
+
ok = copyright !== ""
|
|
71
|
+
}
|
|
72
|
+
ok = false
|
|
73
|
+
while(!ok) {
|
|
74
|
+
spdx = ask("Specify the appropriate SPDX license identifier for this project. See https://spdx.org/licenses/ for more info.",
|
|
75
|
+
"spdx identifier",
|
|
76
|
+
spdx
|
|
77
|
+
)
|
|
78
|
+
ok = spdx !== ""
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
pkgJson.name = name
|
|
83
|
+
pkgJson.version = version
|
|
84
|
+
pkgJson.description = description
|
|
85
|
+
pkgJson.author = author
|
|
86
|
+
pkgJson.copyright = copyright
|
|
87
|
+
pkgJson.license = spdx
|
|
88
|
+
|
|
89
|
+
const pkgPath = path.join(projectPath, "package.json");
|
|
90
|
+
fs.writeFileSync(pkgPath,
|
|
91
|
+
JSON.stringify(pkgJson, null, 2))
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
async function findGitAuthor() {
|
|
96
|
+
return executeCommand('git', ['config', '--get', 'user.name']).then(rt => {
|
|
97
|
+
let name = ''
|
|
98
|
+
if(rt.retcode) {
|
|
99
|
+
console.error('Error '+rt.retcode, rt.errStr)
|
|
100
|
+
} else {
|
|
101
|
+
name = rt.stdStr.trim().toLowerCase()
|
|
102
|
+
}
|
|
103
|
+
return name
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function defaultCopyright(name:string) {
|
|
109
|
+
return `(C) ${new Date(Date.now()).getFullYear()} ${name}. All rights reserved.`
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function nameFromProjectPath(refPath:string)
|
|
113
|
+
{
|
|
114
|
+
const n = refPath.lastIndexOf('/')+1;
|
|
115
|
+
return refPath.substring(n)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function existingPackageJson(refPath:string):any
|
|
119
|
+
{
|
|
120
|
+
let packageJson:any = {};
|
|
121
|
+
const pkgPath = path.join(refPath, "package.json");
|
|
122
|
+
if(fs.existsSync((pkgPath))) {
|
|
123
|
+
try {
|
|
124
|
+
packageJson = JSON.parse(fs.readFileSync(pkgPath).toString());
|
|
125
|
+
}
|
|
126
|
+
catch(e:any) {
|
|
127
|
+
// error in existing package.json. Please fix or remove and try again.
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return packageJson;
|
|
131
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** Adds necessary scripts to package.json */
|
|
2
|
+
|
|
3
|
+
import * as path from 'path'
|
|
4
|
+
import * as fs from 'fs'
|
|
5
|
+
import {executeCommand} from "../../lib/executeCommand";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Adds necessary scripts to package.json
|
|
9
|
+
*/
|
|
10
|
+
export function addPackageScripts(
|
|
11
|
+
projectPath:string
|
|
12
|
+
)
|
|
13
|
+
{
|
|
14
|
+
const pkgPath = path.join(projectPath, "package.json")
|
|
15
|
+
let pkgJson:any = {};
|
|
16
|
+
try { pkgJson = JSON.parse(fs.readFileSync(pkgPath).toString()) } catch {}
|
|
17
|
+
const script = pkgJson.script ?? {}
|
|
18
|
+
script.test = "lift test"
|
|
19
|
+
pkgJson.script = script;
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
export async function installPackage(
|
|
23
|
+
projectPath:string,
|
|
24
|
+
packageName:string
|
|
25
|
+
)
|
|
26
|
+
{
|
|
27
|
+
return executeCommand("npm", ["i", packageName], projectPath, true)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export async function installDevPackage(
|
|
31
|
+
projectPath:string,
|
|
32
|
+
packageName:string
|
|
33
|
+
)
|
|
34
|
+
{
|
|
35
|
+
return executeCommand("npm", ["i", "--save-dev", packageName], projectPath, true)
|
|
36
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/** handles building in the project directory */
|
|
2
|
+
|
|
3
|
+
import * as path from 'path'
|
|
4
|
+
import * as fs from 'fs'
|
|
5
|
+
import * as ac from "ansi-colors"
|
|
6
|
+
import {resolvePaths} from "../lib/pathResolve";
|
|
7
|
+
import {recurseDirectory} from "../lib/DirectoryUtils";
|
|
8
|
+
import {helpBuild} from "./help"
|
|
9
|
+
import {isNewer} from "../lib/fileCompare";
|
|
10
|
+
import {executeCommand} from "../lib/executeCommand";
|
|
11
|
+
import {buildOpenApi} from "../lib/openAPI/openApiConstruction";
|
|
12
|
+
import {gatherFunctionDefinitions} from "../lib/openAPI/ApiBuildCollector";
|
|
13
|
+
import {delay} from "../lib/utils"
|
|
14
|
+
import {mkdirSync} from "fs";
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
// Build command
|
|
18
|
+
export async function doBuildAsync(
|
|
19
|
+
args:string[] // zero or more functions to build. zero means build all
|
|
20
|
+
): Promise<number>
|
|
21
|
+
{
|
|
22
|
+
const projectPaths = resolvePaths()
|
|
23
|
+
const funcsToBuild:string[] = []
|
|
24
|
+
const options:string[] = []
|
|
25
|
+
for (let arg of args) {
|
|
26
|
+
if(arg.charAt(0) == '-') {
|
|
27
|
+
options.push(arg.toLowerCase())
|
|
28
|
+
}
|
|
29
|
+
else funcsToBuild.push(arg)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if(!funcsToBuild.length)
|
|
33
|
+
{
|
|
34
|
+
let firstDepth = 0
|
|
35
|
+
recurseDirectory(projectPaths.functionPath, (filepath, stats) => {
|
|
36
|
+
let depth = filepath.split(path.sep).length
|
|
37
|
+
if(!firstDepth) firstDepth = depth
|
|
38
|
+
if(stats.isDirectory() && depth == firstDepth) {
|
|
39
|
+
funcsToBuild.push(path.basename(filepath))
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
let fails = 0;
|
|
45
|
+
let failFast = options.indexOf("--failfast") !== -1
|
|
46
|
+
if(options.indexOf("--deferfail") !== -1) failFast = false
|
|
47
|
+
for(let func of funcsToBuild) {
|
|
48
|
+
const funcDir = path.join(projectPaths.functionPath, func);
|
|
49
|
+
if(fs.existsSync(funcDir)) {
|
|
50
|
+
fails += await buildSingleFunction(funcDir, options);
|
|
51
|
+
if(fails && failFast) break;
|
|
52
|
+
} else {
|
|
53
|
+
console.log(ac.red.bold(`${func} does not exist as a function`))
|
|
54
|
+
fails++;
|
|
55
|
+
if(failFast) break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return fails
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function buildSingleFunction(funcDir:string, options:string[]):Promise<number> {
|
|
62
|
+
const funcName = funcDir.substring(funcDir.lastIndexOf('/')+1);
|
|
63
|
+
const buildPath = path.normalize(path.join(funcDir, '..', '..', 'build', 'functions', funcName));
|
|
64
|
+
if(options.indexOf('--clean') !== -1) {
|
|
65
|
+
if(fs.existsSync(buildPath)) {
|
|
66
|
+
fs.rmSync(buildPath, {recursive: true})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// strategy here is to invoke tsc on a per-folder basis rather than letting tsc do the recurse because it is easier to control this way
|
|
70
|
+
return await buildFunctionModules(funcName, funcDir, buildPath, options)
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
async function buildFunctionModules(
|
|
74
|
+
funcName:string,
|
|
75
|
+
funcDir:string,
|
|
76
|
+
buildPath:string,
|
|
77
|
+
options: string[]
|
|
78
|
+
|
|
79
|
+
) : Promise<number>
|
|
80
|
+
{
|
|
81
|
+
const announce = ac.blue.dim(`building ${funcName}...`)
|
|
82
|
+
let announced = false
|
|
83
|
+
let fails = 0;
|
|
84
|
+
let builds = 0;
|
|
85
|
+
let failFast = options.indexOf("--failfast") !== -1
|
|
86
|
+
if(options.indexOf("--deferfail") !== -1) failFast = false
|
|
87
|
+
const all:Promise<void>[] = [];
|
|
88
|
+
recurseDirectory(funcDir, (filepath, stats) => {
|
|
89
|
+
if(path.extname(filepath) === ".ts") {
|
|
90
|
+
let relPath = filepath.substring(funcDir.length);
|
|
91
|
+
relPath = relPath.substring(0, relPath.lastIndexOf('/'));
|
|
92
|
+
let outDir = path.join(buildPath, relPath);
|
|
93
|
+
// console.log(`tsc --esModuleInterop true --outdir ${outDir} ${filepath}`);
|
|
94
|
+
if(!(fails && failFast)) {
|
|
95
|
+
if (isNewer(filepath, outDir)) {
|
|
96
|
+
if (!announced) {
|
|
97
|
+
announced = true
|
|
98
|
+
console.log(announce)
|
|
99
|
+
}
|
|
100
|
+
builds++;
|
|
101
|
+
all.push(executeCommand('tsc', [
|
|
102
|
+
'--esModuleInterop', 'true',
|
|
103
|
+
'--target', 'ES2015',
|
|
104
|
+
'--module', 'commonjs',
|
|
105
|
+
'--lib', 'dom,es2015,scripthost,es2015.proxy',
|
|
106
|
+
'--strict', 'true',
|
|
107
|
+
'--noImplicitAny', 'false',
|
|
108
|
+
'--skipLibCheck', 'true',
|
|
109
|
+
'--forceConsistentCasingInFileNames', 'true',
|
|
110
|
+
'--sourceMap', 'true',
|
|
111
|
+
'--outdir', outDir,
|
|
112
|
+
filepath
|
|
113
|
+
], '', true).then(result => {
|
|
114
|
+
if (result.retcode) {
|
|
115
|
+
fails++
|
|
116
|
+
// console.log("error detected", fails)
|
|
117
|
+
const now = new Date()
|
|
118
|
+
fs.utimesSync(filepath, now, now) // touch file so it is not skipped next build
|
|
119
|
+
}
|
|
120
|
+
}))
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
return Promise.all(all).then( async () => {
|
|
126
|
+
fails += await doPostBuildSteps(funcDir, buildPath)
|
|
127
|
+
return fails
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
async function doPostBuildSteps(funcDir: string, buildPath: string) : Promise<number>
|
|
132
|
+
{
|
|
133
|
+
// copy the definitions,json file over
|
|
134
|
+
const srcdef = path.join(funcDir, 'src', 'definition.json')
|
|
135
|
+
const dstdef = path.join(buildPath, 'src', 'definition.json')
|
|
136
|
+
if(fs.existsSync(srcdef)) {
|
|
137
|
+
fs.copyFileSync(srcdef, dstdef)
|
|
138
|
+
} else {
|
|
139
|
+
console.error(ac.red.bold("no definition file found at "+srcdef));
|
|
140
|
+
return 1;
|
|
141
|
+
}
|
|
142
|
+
// copy the __files__ folder if it exists
|
|
143
|
+
const filedirPath = path.join(funcDir, "__files__");
|
|
144
|
+
if(fs.existsSync(filedirPath)) {
|
|
145
|
+
const bfiles = path.join(buildPath, '__files__');
|
|
146
|
+
if(!fs.existsSync(bfiles)) fs.mkdirSync(bfiles, {recursive:true});
|
|
147
|
+
recurseDirectory(filedirPath, (filepath, stats) =>{
|
|
148
|
+
let relPath = filepath.substring(funcDir.length);
|
|
149
|
+
relPath = relPath.substring(0, relPath.lastIndexOf('/'));
|
|
150
|
+
let outDir = path.join(buildPath, relPath);
|
|
151
|
+
let target = path.join(outDir, path.basename(filepath));
|
|
152
|
+
if(stats.isDirectory() && !fs.existsSync(target)) {
|
|
153
|
+
fs.mkdirSync(target, {recursive: true});
|
|
154
|
+
}
|
|
155
|
+
if(stats.isFile()) {
|
|
156
|
+
fs.copyFileSync(filepath, target);
|
|
157
|
+
}
|
|
158
|
+
})
|
|
159
|
+
}
|
|
160
|
+
return 0
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|