@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.
Files changed (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/build/commands/actions/initQuestions.js +136 -0
  4. package/build/commands/actions/initQuestions.js.map +1 -0
  5. package/build/commands/actions/makePackageJson.js +2 -0
  6. package/build/commands/actions/makePackageJson.js.map +1 -0
  7. package/build/commands/actions/setupPackageJson.js +68 -0
  8. package/build/commands/actions/setupPackageJson.js.map +1 -0
  9. package/build/commands/build.js +191 -0
  10. package/build/commands/build.js.map +1 -0
  11. package/build/commands/builtin/ApiDocMaker.js +72 -0
  12. package/build/commands/builtin/ApiDocMaker.js.map +1 -0
  13. package/build/commands/builtin/BuiltInHandler.js +62 -0
  14. package/build/commands/builtin/BuiltInHandler.js.map +1 -0
  15. package/build/commands/builtin/DeployBuiltInZip.js +57 -0
  16. package/build/commands/builtin/DeployBuiltInZip.js.map +1 -0
  17. package/build/commands/builtin/StageWebrootZip.js +70 -0
  18. package/build/commands/builtin/StageWebrootZip.js.map +1 -0
  19. package/build/commands/builtin/prebuilt-zips/API.zip +0 -0
  20. package/build/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
  21. package/build/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
  22. package/build/commands/create.js +75 -0
  23. package/build/commands/create.js.map +1 -0
  24. package/build/commands/deploy.js +187 -0
  25. package/build/commands/deploy.js.map +1 -0
  26. package/build/commands/doctor.js +137 -0
  27. package/build/commands/doctor.js.map +1 -0
  28. package/build/commands/help.js +205 -0
  29. package/build/commands/help.js.map +1 -0
  30. package/build/commands/init.js +92 -0
  31. package/build/commands/init.js.map +1 -0
  32. package/build/commands/package.js +249 -0
  33. package/build/commands/package.js.map +1 -0
  34. package/build/commands/publish.js +344 -0
  35. package/build/commands/publish.js.map +1 -0
  36. package/build/commands/settings.js +95 -0
  37. package/build/commands/settings.js.map +1 -0
  38. package/build/commands/start.js +66 -0
  39. package/build/commands/start.js.map +1 -0
  40. package/build/commands/test.js +52 -0
  41. package/build/commands/test.js.map +1 -0
  42. package/build/commands/user.js +20 -0
  43. package/build/commands/user.js.map +1 -0
  44. package/build/expressRoutes/all.js +129 -0
  45. package/build/expressRoutes/all.js.map +1 -0
  46. package/build/expressRoutes/api.js +22 -0
  47. package/build/expressRoutes/api.js.map +1 -0
  48. package/build/expressRoutes/functionBinder.js +191 -0
  49. package/build/expressRoutes/functionBinder.js.map +1 -0
  50. package/build/lib/CaseUtils.js +57 -0
  51. package/build/lib/CaseUtils.js.map +1 -0
  52. package/build/lib/DirectoryUtils.js +37 -0
  53. package/build/lib/DirectoryUtils.js.map +1 -0
  54. package/build/lib/LiftConfig.js +83 -0
  55. package/build/lib/LiftConfig.js.map +1 -0
  56. package/build/lib/LiftVersion.js +117 -0
  57. package/build/lib/LiftVersion.js.map +1 -0
  58. package/build/lib/Tests/fileCompare.test.js +55 -0
  59. package/build/lib/Tests/fileCompare.test.js.map +1 -0
  60. package/build/lib/askQuestion.js +41 -0
  61. package/build/lib/askQuestion.js.map +1 -0
  62. package/build/lib/executeCommand.js +45 -0
  63. package/build/lib/executeCommand.js.map +1 -0
  64. package/build/lib/fileCompare.js +48 -0
  65. package/build/lib/fileCompare.js.map +1 -0
  66. package/build/lib/openAPI/ApiBuildCollector.js +58 -0
  67. package/build/lib/openAPI/ApiBuildCollector.js.map +1 -0
  68. package/build/lib/openAPI/WebrootFileSupport.js +44 -0
  69. package/build/lib/openAPI/WebrootFileSupport.js.map +1 -0
  70. package/build/lib/openAPI/openApiConstruction.js +203 -0
  71. package/build/lib/openAPI/openApiConstruction.js.map +1 -0
  72. package/build/lib/pathResolve.js +27 -0
  73. package/build/lib/pathResolve.js.map +1 -0
  74. package/build/lib/utils.js +76 -0
  75. package/build/lib/utils.js.map +1 -0
  76. package/build/lift.js +124 -0
  77. package/build/lift.js.map +1 -0
  78. package/package.json +69 -0
  79. package/src/commands/actions/initQuestions.ts +131 -0
  80. package/src/commands/actions/makePackageJson.ts +0 -0
  81. package/src/commands/actions/setupPackageJson.ts +36 -0
  82. package/src/commands/build.ts +165 -0
  83. package/src/commands/builtin/ApiDocMaker.ts +70 -0
  84. package/src/commands/builtin/BuiltInHandler.ts +51 -0
  85. package/src/commands/builtin/DeployBuiltInZip.ts +27 -0
  86. package/src/commands/builtin/StageWebrootZip.ts +39 -0
  87. package/src/commands/builtin/prebuilt-zips/API.zip +0 -0
  88. package/src/commands/builtin/prebuilt-zips/FileServe.zip +0 -0
  89. package/src/commands/builtin/prebuilt-zips/Webroot.zip +0 -0
  90. package/src/commands/create.ts +55 -0
  91. package/src/commands/deploy.ts +171 -0
  92. package/src/commands/doctor.ts +102 -0
  93. package/src/commands/help.ts +171 -0
  94. package/src/commands/init.ts +62 -0
  95. package/src/commands/package.ts +228 -0
  96. package/src/commands/publish.ts +350 -0
  97. package/src/commands/settings.ts +76 -0
  98. package/src/commands/start.ts +46 -0
  99. package/src/commands/test.ts +38 -0
  100. package/src/commands/user.ts +20 -0
  101. package/src/expressRoutes/all.ts +104 -0
  102. package/src/expressRoutes/api.ts +24 -0
  103. package/src/expressRoutes/functionBinder.ts +169 -0
  104. package/src/lib/CaseUtils.ts +68 -0
  105. package/src/lib/DirectoryUtils.ts +36 -0
  106. package/src/lib/LiftConfig.ts +83 -0
  107. package/src/lib/LiftVersion.ts +95 -0
  108. package/src/lib/Tests/dir1/file.1 +0 -0
  109. package/src/lib/Tests/dir1/file.2 +0 -0
  110. package/src/lib/Tests/dir2/file.1 +0 -0
  111. package/src/lib/Tests/fileCompare.test.ts +34 -0
  112. package/src/lib/askQuestion.ts +18 -0
  113. package/src/lib/executeCommand.ts +38 -0
  114. package/src/lib/fileCompare.ts +46 -0
  115. package/src/lib/openAPI/ApiBuildCollector.ts +47 -0
  116. package/src/lib/openAPI/WebrootFileSupport.ts +21 -0
  117. package/src/lib/openAPI/openApiConstruction.ts +202 -0
  118. package/src/lib/pathResolve.ts +32 -0
  119. package/src/lib/utils.ts +45 -0
  120. package/src/lift.ts +82 -0
  121. package/tsconfig.json +28 -0
@@ -0,0 +1,129 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.allBinder = void 0;
30
+ const path_1 = __importDefault(require("path"));
31
+ const fs_1 = __importDefault(require("fs"));
32
+ const ac = __importStar(require("ansi-colors"));
33
+ const pathResolve_1 = require("../lib/pathResolve");
34
+ const ApiBuildCollector_1 = require("../lib/openAPI/ApiBuildCollector");
35
+ const express_1 = __importDefault(require("express"));
36
+ const router = express_1.default.Router();
37
+ function allBinder() {
38
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
39
+ const defs = (0, ApiBuildCollector_1.gatherFunctionDefinitions)();
40
+ /**
41
+ * @name /all
42
+ * @description
43
+ * Catch-all handler for URLs
44
+ * Provides some simple spam blocking and checks for file pass through at file root.
45
+ *
46
+ * ##### Filtering:
47
+ * - all .php extension references
48
+ *
49
+ * ##### File root:
50
+ * - file root is at service root + 'Public'
51
+ * - no path or path ending in / is appended with '/index.html' for folder root default behavior
52
+ * - File contents passed through using `sendFile` (will handle its own 404 if not found)
53
+ *
54
+ */
55
+ router.all('*', (req, res, next) => {
56
+ // any PHP requests should be ignored
57
+ // ClogTrace('incoming: '+req.originalUrl)
58
+ if (req.originalUrl.indexOf('.php') !== -1) {
59
+ return res.send('');
60
+ }
61
+ if (req.originalUrl.indexOf('.env') !== -1) {
62
+ return res.send('');
63
+ }
64
+ let filepath = req.originalUrl || '/';
65
+ // match cloud behavior for docs because /api doesn't change cwd there
66
+ if (filepath.substring(0, 10) == '/api/docs/') {
67
+ filepath = filepath.replace('/api', '');
68
+ }
69
+ let funcFound = filepath === '/api'; // reserved "function"
70
+ if (!funcFound) {
71
+ if (filepath.charAt(0) === '/') {
72
+ let n = filepath.indexOf('/', 1);
73
+ if (n === -1)
74
+ n = filepath.length;
75
+ let rootEntity = filepath.substring(0, n);
76
+ n = rootEntity.indexOf('?');
77
+ if (n === -1)
78
+ n = rootEntity.length;
79
+ rootEntity = rootEntity.substring(0, n);
80
+ for (const entry of defs) {
81
+ let entryRoot = entry.pathMap;
82
+ let n = entryRoot.indexOf("/{");
83
+ if (n !== -1)
84
+ entryRoot = entryRoot.substring(0, n);
85
+ if (rootEntity === entryRoot) {
86
+ funcFound = true;
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ if (!funcFound) {
93
+ // check for '/' in path beyond the first one
94
+ if (filepath.indexOf('/', 1) !== -1) {
95
+ // console.log(ac.magenta.italic("Warning: / path delimiters will not be honored in a cloud deployment, use + instead ")+filepath)
96
+ }
97
+ // convert any incoming + to / to match cloud behavior
98
+ while (filepath.indexOf("+") !== -1)
99
+ filepath = filepath.replace("+", "/");
100
+ // Put any other filtering here
101
+ if (filepath.indexOf('?') !== -1) {
102
+ filepath = filepath.substring(0, filepath.indexOf('?'));
103
+ }
104
+ if (filepath.substring(filepath.length - 1) === '/')
105
+ filepath += 'index.html';
106
+ if (filepath.substring(0, 10) == '/api/docs/') {
107
+ filepath = filepath.replace('/api', '');
108
+ }
109
+ if (filepath.indexOf("/docs") !== -1) {
110
+ if (filepath.indexOf('.map') !== -1) {
111
+ return res.sendStatus(200);
112
+ }
113
+ }
114
+ filepath = path_1.default.resolve(path_1.default.join(projectPaths.basePath, 'webroot', filepath)); // .. out of build
115
+ if (fs_1.default.existsSync(filepath)) {
116
+ return res.sendFile(filepath);
117
+ }
118
+ else {
119
+ console.log(ac.red.bold("can't find " + filepath));
120
+ return res.sendStatus(404);
121
+ }
122
+ }
123
+ // if none of the above, tickle enumerator so we can process other paths
124
+ next();
125
+ });
126
+ }
127
+ exports.allBinder = allBinder;
128
+ exports.default = router;
129
+ //# sourceMappingURL=all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/expressRoutes/all.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
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
+ const express_1 = __importDefault(require("express"));
7
+ const router = express_1.default.Router();
8
+ const LiftVersion_1 = require("../lib/LiftVersion");
9
+ const openApiUI = require("openapi-ui");
10
+ router.get('/', function (req, res, next) {
11
+ res.send(generateApiDoc());
12
+ });
13
+ exports.default = router;
14
+ function generateApiDoc() {
15
+ console.log("---- Serving up api");
16
+ return openApiUI.generateIndex({
17
+ baseUrl: "docs",
18
+ title: `${(0, LiftVersion_1.getProjectName)()} ${(0, LiftVersion_1.getProjectVersion)()}`,
19
+ url: "docs/apidoc.yaml"
20
+ });
21
+ }
22
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/expressRoutes/api.ts"],"names":[],"mappings":";;;;;AAAA,sDAA6B;AAC7B,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,oDAAqE;AAErE,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAGxC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,IAAI;IACrC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAA;AAErB,SAAS,cAAc;IAErB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IAClC,OAAO,SAAS,CAAC,aAAa,CAAC;QAC7B,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,GAAG,IAAA,4BAAc,GAAE,IAAI,IAAA,+BAAiB,GAAE,EAAE;QACnD,GAAG,EAAE,kBAAkB;KACxB,CAAC,CAAC;AAEL,CAAC"}
@@ -0,0 +1,191 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.functionBinder = void 0;
30
+ const path_1 = __importDefault(require("path"));
31
+ const clearModule = require('clear-module');
32
+ const ac = __importStar(require("ansi-colors"));
33
+ const pathResolve_1 = require("../lib/pathResolve");
34
+ const express_1 = __importDefault(require("express"));
35
+ const ApiBuildCollector_1 = require("../lib/openAPI/ApiBuildCollector");
36
+ const openApiConstruction_1 = require("../lib/openAPI/openApiConstruction");
37
+ const router = express_1.default.Router();
38
+ function functionBinder() {
39
+ const defs = (0, ApiBuildCollector_1.gatherFunctionDefinitions)();
40
+ (0, openApiConstruction_1.buildOpenApi)(defs).then(() => {
41
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
42
+ for (let def of defs) {
43
+ const { name, pathMap, allowedMethods } = def;
44
+ const methods = allowedMethods.split(',');
45
+ for (let method of methods) {
46
+ method = method.trim().toLowerCase();
47
+ let rpath = path_1.default.join(projectPaths.buildPath, 'functions', name, 'src', 'main.js');
48
+ clearModule(rpath);
49
+ const { start } = require(rpath);
50
+ let entryRoot = pathMap;
51
+ let n = entryRoot.indexOf("/{");
52
+ if (n !== -1)
53
+ entryRoot = entryRoot.substring(0, n) + "/*";
54
+ const callNoBody = (pathMap, req, res) => {
55
+ const event = requestToEvent(pathMap, req);
56
+ Promise.resolve(start(event, null, null)).then(respOut => {
57
+ handleResponse(res, respOut);
58
+ });
59
+ };
60
+ const callWithBody = (pathMap, req, res) => {
61
+ const event = requestToEvent(pathMap, req);
62
+ event.body = req.body;
63
+ Promise.resolve(start(event, null, null)).then(respOut => {
64
+ handleResponse(res, respOut);
65
+ });
66
+ };
67
+ if (method === 'get') {
68
+ router.get(entryRoot, (req, res) => callNoBody(pathMap, req, res));
69
+ }
70
+ else if (method === 'post') {
71
+ router.get(entryRoot, (req, res) => callWithBody(pathMap, req, res));
72
+ }
73
+ else if (method === 'put') {
74
+ router.put(entryRoot, (req, res) => callWithBody(pathMap, req, res));
75
+ }
76
+ else if (method === 'patch') {
77
+ router.patch(entryRoot, (req, res) => callWithBody(pathMap, req, res));
78
+ }
79
+ else if (method === 'delete') {
80
+ router.delete(entryRoot, (req, res) => callNoBody(pathMap, req, res));
81
+ }
82
+ else {
83
+ console.log(ac.red.bold("Cannot map method ") + ac.blue.bold(method));
84
+ }
85
+ }
86
+ }
87
+ });
88
+ }
89
+ exports.functionBinder = functionBinder;
90
+ function requestToEvent(template, req) {
91
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
92
+ let path = req.originalUrl;
93
+ const qi = path.indexOf('?');
94
+ if (qi !== -1)
95
+ path = path.substring(0, qi);
96
+ let ptci = path.indexOf("://") + 3;
97
+ let ei = path.indexOf("/", ptci);
98
+ let host = path.substring(0, ei);
99
+ if (ptci < 3) {
100
+ host = (_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin;
101
+ if (!host) {
102
+ host = (_c = (_b = req.headers) === null || _b === void 0 ? void 0 : _b.referer) !== null && _c !== void 0 ? _c : "";
103
+ let ptci = path.indexOf("://") + 3;
104
+ let ei = path.indexOf("/", ptci);
105
+ host = ptci > 3 ? path.substring(0, ei) : "";
106
+ }
107
+ if (!host) {
108
+ // todo: http or https?
109
+ host = (_e = "http://" + ((_d = req.headers) === null || _d === void 0 ? void 0 : _d.host)) !== null && _e !== void 0 ? _e : "";
110
+ }
111
+ }
112
+ var cookies = {};
113
+ var cookieString = (_g = (_f = req.headers) === null || _f === void 0 ? void 0 : _f.cookie) !== null && _g !== void 0 ? _g : "";
114
+ var crumbs = cookieString.split(';');
115
+ for (let c of crumbs) {
116
+ const pair = c.split('=');
117
+ if (pair.length === 2)
118
+ cookies[pair[0]] = pair[1];
119
+ }
120
+ const parameters = {};
121
+ const tslots = template.split('/');
122
+ const pslots = path.split('/');
123
+ for (let i = 0; i < tslots.length; i++) {
124
+ const brknm = ((_h = tslots[i]) !== null && _h !== void 0 ? _h : "").trim();
125
+ if (brknm.charAt(0) === '{') {
126
+ const pn = brknm.substring(1, brknm.length - 1);
127
+ parameters[pn] = ((_j = pslots[i]) !== null && _j !== void 0 ? _j : "").trim();
128
+ }
129
+ }
130
+ for (let p of Object.getOwnPropertyNames(req.query)) {
131
+ parameters[p] = req.query[p];
132
+ }
133
+ const eventOut = {
134
+ requestContext: req,
135
+ request: {
136
+ originalUrl: host + req.originalUrl,
137
+ headers: req.headers
138
+ },
139
+ cookies,
140
+ parameters
141
+ };
142
+ return eventOut;
143
+ }
144
+ function handleResponse(res, resp) {
145
+ // console.log(">>>>>>>> Handling response >>>>>>>>>")
146
+ var _a;
147
+ if (resp) {
148
+ if (resp.cookies !== undefined) {
149
+ // console.log("--- see cookies", resp.cookies)
150
+ var cookies = [];
151
+ if (Array.isArray(resp.cookies)) {
152
+ cookies = resp.cookies;
153
+ }
154
+ else {
155
+ var age = (_a = resp.cookies.expireSeconds) !== null && _a !== void 0 ? _a : 60; // 1 minute
156
+ delete resp.expireSeconds;
157
+ Object.getOwnPropertyNames(resp.cookies).forEach(name => {
158
+ var value = resp.cookies[name];
159
+ cookies.push(`${name}=${value}; Max-Age=${age}; `);
160
+ });
161
+ }
162
+ // console.log("cookies being set", cookies)
163
+ res.setHeader("set-cookie", cookies);
164
+ delete resp.cookies;
165
+ }
166
+ if (resp.headers !== undefined) {
167
+ // if (resp.statusCode === 301) ClogTrace("Redirecting...");
168
+ for (var hdr of Object.getOwnPropertyNames(resp.headers)) {
169
+ // ClogTrace("Setting header ", hdr, resp.headers[hdr]);
170
+ res.setHeader(hdr, resp.headers[hdr]);
171
+ }
172
+ delete resp.headers;
173
+ // console.log("past setting headers");
174
+ }
175
+ if (resp.statusCode !== undefined) {
176
+ res.statusCode = resp.statusCode;
177
+ delete resp.statusCode;
178
+ }
179
+ if (resp.contentType !== undefined) {
180
+ res.setHeader("Content-Type", resp.contentType);
181
+ delete resp.contentType;
182
+ }
183
+ if (resp.body)
184
+ resp = resp.body;
185
+ }
186
+ // console.log("headers to be sent", res.getHeaders())
187
+ // console.log("-- Sending response", resp)
188
+ res.send(resp);
189
+ }
190
+ exports.default = router;
191
+ //# sourceMappingURL=functionBinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functionBinder.js","sourceRoot":"","sources":["../../src/expressRoutes/functionBinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dashCase = exports.snakeCase = exports.pascalCase = exports.camelCase = exports.separated = void 0;
4
+ // separate a case-joined string into a string of space-separated words
5
+ function separated(instr) {
6
+ let outstr = '';
7
+ for (let i = 0; i < instr.length; i++) {
8
+ let c = instr.charAt(i);
9
+ if (!isAlphaNum(c) || isUpperCase(c)) {
10
+ outstr += ' ';
11
+ }
12
+ outstr += c.toLowerCase();
13
+ }
14
+ return outstr.trim();
15
+ }
16
+ exports.separated = separated;
17
+ function isUpperCase(instr) {
18
+ return (instr === null || instr === void 0 ? void 0 : instr.toUpperCase()) === instr;
19
+ }
20
+ function isAlphaNum(char) {
21
+ let alnum = false;
22
+ const cc = char.toUpperCase().charCodeAt(0);
23
+ if (cc >= 'A'.charCodeAt(0) && cc <= 'Z'.charCodeAt(0))
24
+ alnum = true;
25
+ if (cc >= '0'.charCodeAt(0) && cc <= '9'.charCodeAt(0))
26
+ alnum = true;
27
+ return alnum;
28
+ }
29
+ function camelCase(instr) {
30
+ const seps = separated(instr).split(' ');
31
+ for (let i = 1; i < seps.length; i++) {
32
+ seps[i] = seps[i].charAt(0).toUpperCase() + seps[i].substring(1);
33
+ }
34
+ return seps.join('');
35
+ }
36
+ exports.camelCase = camelCase;
37
+ function pascalCase(instr) {
38
+ const seps = separated(instr).split(' ');
39
+ for (let i = 0; i < seps.length; i++) {
40
+ seps[i] = seps[i].charAt(0).toUpperCase() + seps[i].substring(1);
41
+ }
42
+ return seps.join('');
43
+ }
44
+ exports.pascalCase = pascalCase;
45
+ function snakeCase(instr) {
46
+ return dashCase(instr, "_");
47
+ }
48
+ exports.snakeCase = snakeCase;
49
+ function dashCase(instr, dashChar = '-', allCaps = false) {
50
+ const seps = separated(instr).split(' ');
51
+ let out = seps.join(dashChar);
52
+ if (allCaps)
53
+ out = out.toUpperCase();
54
+ return out;
55
+ }
56
+ exports.dashCase = dashCase;
57
+ //# sourceMappingURL=CaseUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CaseUtils.js","sourceRoot":"","sources":["../../src/lib/CaseUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
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.latestModification = exports.recurseDirectory = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ // Recurse a directory, calling back to a 'for-each' callback for all files in tree
10
+ function recurseDirectory(dirpath, callback) {
11
+ fs_1.default.readdirSync(dirpath).forEach((file) => {
12
+ const fpath = path_1.default.join(dirpath, file);
13
+ const stat = fs_1.default.lstatSync(fpath);
14
+ if (callback && !callback(fpath, stat)) {
15
+ if (stat.isDirectory()) {
16
+ recurseDirectory(fpath, callback);
17
+ }
18
+ }
19
+ });
20
+ }
21
+ exports.recurseDirectory = recurseDirectory;
22
+ // find the latest mod time for matching files in this folder tree
23
+ function latestModification(dirpath, match) {
24
+ let latestTime = new Date(0);
25
+ if (fs_1.default.existsSync(dirpath)) {
26
+ recurseDirectory(dirpath, (filepath, stats) => {
27
+ let basefile = filepath.substring(filepath.lastIndexOf('/') + 1);
28
+ if (basefile.match(match)) {
29
+ if (stats.mtime > latestTime)
30
+ latestTime = stats.mtime;
31
+ }
32
+ });
33
+ }
34
+ return latestTime;
35
+ }
36
+ exports.latestModification = latestModification;
37
+ //# sourceMappingURL=DirectoryUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectoryUtils.js","sourceRoot":"","sources":["../../src/lib/DirectoryUtils.ts"],"names":[],"mappings":";;;;;;AACA,4CAAoB;AAEpB,gDAAuB;AAOvB,mFAAmF;AACnF,SAAgB,gBAAgB,CAAC,OAAc,EAAE,QAAkB;IAC/D,YAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAW,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,YAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAChC,IAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACrC,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAA;AACN,CAAC;AAVD,4CAUC;AAED,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,OAAc,EAAE,KAAY;IAC3D,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAG,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,gBAAgB,CAAC,OAAO,EAAE,CAAC,QAAgB,EAAE,KAAY,EAAE,EAAE;YACzD,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YAChE,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,KAAK,CAAC,KAAK,GAAG,UAAU;oBAAE,UAAU,GAAG,KAAK,CAAC,KAAK,CAAA;YAC1D,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IACD,OAAO,UAAU,CAAA;AACrB,CAAC;AAXD,gDAWC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // configuration for setting cloud provider credentials
3
+ // may expand later for other MistLift settings/preferences
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.getAWSCredentials = exports.getSettings = exports.areSettingsAvailable = exports.resetLiftConfig = exports.LoadLiftConfig = exports.getUserHome = exports.LiftConfig = void 0;
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const credential_providers_1 = require("@aws-sdk/credential-providers");
12
+ let s_liftConfigLoaded = null;
13
+ // Defines the structure of the .mistlft json file
14
+ // All relevant configuration for the cloud host goes here
15
+ class LiftConfig {
16
+ constructor() {
17
+ this.cloudHost = "AWS"; // all we support now
18
+ }
19
+ }
20
+ exports.LiftConfig = LiftConfig;
21
+ // Available for general use because, why not?
22
+ function getUserHome() {
23
+ var _a, _b, _c;
24
+ return (_c = (_b = (_a = process.env.HOME) !== null && _a !== void 0 ? _a : process.env.HOMEPATH) !== null && _b !== void 0 ? _b : process.env.USERPROFILE) !== null && _c !== void 0 ? _c : "~";
25
+ }
26
+ exports.getUserHome = getUserHome;
27
+ function LoadLiftConfig() {
28
+ if (!s_liftConfigLoaded) {
29
+ const mistlift = path_1.default.join(getUserHome(), ".mistlift");
30
+ let configJson = "{}";
31
+ if (fs_1.default.existsSync(mistlift)) {
32
+ try {
33
+ configJson = fs_1.default.readFileSync(mistlift).toString();
34
+ s_liftConfigLoaded = JSON.parse(configJson);
35
+ }
36
+ catch (e) {
37
+ //
38
+ }
39
+ }
40
+ }
41
+ return s_liftConfigLoaded;
42
+ }
43
+ exports.LoadLiftConfig = LoadLiftConfig;
44
+ function resetLiftConfig() {
45
+ s_liftConfigLoaded = null;
46
+ }
47
+ exports.resetLiftConfig = resetLiftConfig;
48
+ function areSettingsAvailable() {
49
+ const mistlift = path_1.default.join(getUserHome(), ".mistlift");
50
+ return fs_1.default.existsSync(mistlift);
51
+ }
52
+ exports.areSettingsAvailable = areSettingsAvailable;
53
+ function getSettings() {
54
+ if (s_liftConfigLoaded == null)
55
+ LoadLiftConfig();
56
+ return s_liftConfigLoaded;
57
+ }
58
+ exports.getSettings = getSettings;
59
+ /**
60
+ * Return the credentials required for AWS based upon our config options.
61
+ *
62
+ * We will use the standard .aws config ini file, looked up by profile or default
63
+ * Prior attempts to have it do more than this failed, and resulted in a default profile choice anyway.
64
+ */
65
+ function getAWSCredentials() {
66
+ var _a, _b;
67
+ let config = LoadLiftConfig();
68
+ if (!config) {
69
+ // console.error("No .mistlift configuration found - using AWS default profile");
70
+ config = { cloudHost: "AWS", awsIniProfile: "default" };
71
+ }
72
+ if (((_a = config.cloudHost) === null || _a === void 0 ? void 0 : _a.toUpperCase()) !== "AWS") {
73
+ throw Error("HostType Not Supported");
74
+ }
75
+ let credentials = {};
76
+ const profile = (_b = config.awsIniProfile) !== null && _b !== void 0 ? _b : "default";
77
+ if (profile) {
78
+ credentials = (0, credential_providers_1.fromIni)({ profile });
79
+ }
80
+ return credentials;
81
+ }
82
+ exports.getAWSCredentials = getAWSCredentials;
83
+ //# sourceMappingURL=LiftConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiftConfig.js","sourceRoot":"","sources":["../../src/lib/LiftConfig.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,2DAA2D;;;;;;AAE3D,gDAAwB;AACxB,4CAAoB;AACpB,wEAA2D;AAG3D,IAAI,kBAAkB,GAAmB,IAAI,CAAC;AAE9C,kDAAkD;AAClD,0DAA0D;AAC1D,MAAa,UAAU;IAAvB;QACW,cAAS,GAAW,KAAK,CAAA,CAAC,qBAAqB;IAK1D,CAAC;CAAA;AAND,gCAMC;AAGD,8CAA8C;AAC9C,SAAgB,WAAW;;IACvB,OAAO,MAAA,MAAA,MAAA,OAAO,CAAC,GAAG,CAAC,IAAI,mCAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,mCAAI,OAAO,CAAC,GAAG,CAAC,WAAW,mCAAI,GAAG,CAAC;AACtF,CAAC;AAFD,kCAEC;AAED,SAAgB,cAAc;IAE1B,IAAG,CAAC,kBAAkB,EAAE,CAAC;QAErB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,UAAU,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClD,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,EAAE;YACN,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,kBAAkB,CAAA;AAC7B,CAAC;AAhBD,wCAgBC;AACD,SAAgB,eAAe;IAE3B,kBAAkB,GAAG,IAAI,CAAC;AAC9B,CAAC;AAHD,0CAGC;AAED,SAAgB,oBAAoB;IAChC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;IACvD,OAAO,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAHD,oDAGC;AAED,SAAgB,WAAW;IACvB,IAAI,kBAAkB,IAAI,IAAI;QAAE,cAAc,EAAE,CAAC;IACjD,OAAO,kBAAgC,CAAA;AAC3C,CAAC;AAHD,kCAGC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB;;IAE7B,IAAI,MAAM,GAAG,cAAc,EAAE,CAAA;IAC7B,IAAG,CAAC,MAAM,EAAE,CAAC;QACT,iFAAiF;QACjF,MAAM,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA;IAC3D,CAAC;IACD,IAAI,CAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,WAAW,EAAE,MAAK,KAAK,EAC7C,CAAC;QACG,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,MAAA,MAAM,CAAC,aAAa,mCAAI,SAAS,CAAA;IACjD,IAAG,OAAO,EAAE,CAAC;QACT,WAAW,GAAG,IAAA,8BAAO,EAAC,EAAC,OAAO,EAAC,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAlBD,8CAkBC"}