@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,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getProjectName = exports.getProjectVersion = exports.getLiftVersion = exports.VersionInfo = void 0;
27
+ const path = __importStar(require("path"));
28
+ const fs = __importStar(require("fs"));
29
+ const pathResolve_1 = require("./pathResolve");
30
+ class VersionInfo {
31
+ constructor(vstr) {
32
+ this.major = 0;
33
+ this.minor = 0;
34
+ this.revision = 0;
35
+ this.suffix = "";
36
+ this.toString = () => {
37
+ return `${this.major}.${this.minor}.${this.revision}` + (this.suffix ? "-" + this.suffix : "");
38
+ };
39
+ this.parse = (vstr) => {
40
+ let sn = vstr.indexOf('-');
41
+ let suffix = "";
42
+ if (sn !== -1) {
43
+ suffix = vstr.substring(sn + 1);
44
+ vstr = vstr.substring(0, sn);
45
+ }
46
+ let parts = vstr.split('.');
47
+ while (parts.length < 3)
48
+ parts.push("0");
49
+ this.major = parseInt(parts[0]);
50
+ this.minor = parseInt(parts[1]);
51
+ this.revision = parseInt(parts[2]);
52
+ if (!isFinite(this.major))
53
+ this.major = 0;
54
+ if (!isFinite(this.minor))
55
+ this.minor = 0;
56
+ if (!isFinite(this.revision))
57
+ this.revision = 0;
58
+ this.suffix = suffix;
59
+ };
60
+ this.parse(vstr);
61
+ }
62
+ equals(other) {
63
+ // Note: not really a valid SemVer comparison
64
+ if (typeof other === 'string')
65
+ other = new VersionInfo(other);
66
+ return this.major === other.major
67
+ && this.minor === other.minor
68
+ && this.revision === other.revision;
69
+ }
70
+ isGreaterThan(other) {
71
+ // Note: not really a valid SemVer comparison
72
+ if (typeof other === 'string')
73
+ other = new VersionInfo(other);
74
+ if (this.major > other.major)
75
+ return true;
76
+ if (this.major < other.major)
77
+ return false;
78
+ if (this.minor > other.minor)
79
+ return true;
80
+ if (this.minor < other.minor)
81
+ return false;
82
+ return (this.revision > other.revision);
83
+ }
84
+ }
85
+ exports.VersionInfo = VersionInfo;
86
+ // read version from Lift's package.json
87
+ function getLiftVersion() {
88
+ let pkg = path.join(__dirname, '..', '..', 'package.json');
89
+ return readPackageVersion(pkg);
90
+ }
91
+ exports.getLiftVersion = getLiftVersion;
92
+ // read version from project's package.json
93
+ function getProjectVersion() {
94
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
95
+ return readPackageVersion(projectPaths.packagePath);
96
+ }
97
+ exports.getProjectVersion = getProjectVersion;
98
+ function getProjectName() {
99
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
100
+ let pkgJson = {};
101
+ try {
102
+ pkgJson = JSON.parse(fs.readFileSync(projectPaths.packagePath).toString());
103
+ }
104
+ catch (e) { }
105
+ return pkgJson.name;
106
+ }
107
+ exports.getProjectName = getProjectName;
108
+ function readPackageVersion(pkgPath) {
109
+ var _a;
110
+ let pkgJson = {};
111
+ try {
112
+ pkgJson = JSON.parse(fs.readFileSync(pkgPath).toString());
113
+ }
114
+ catch (e) { }
115
+ return new VersionInfo((_a = pkgJson.version) !== null && _a !== void 0 ? _a : "");
116
+ }
117
+ //# sourceMappingURL=LiftVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiftVersion.js","sourceRoot":"","sources":["../../src/lib/LiftVersion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
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
+ const tap_1 = __importDefault(require("tap"));
30
+ const path = __importStar(require("path"));
31
+ const fileCompare_1 = require("../fileCompare");
32
+ function test(t) {
33
+ // ./dir1/file.1 551 < ./dir2/file.1 552
34
+ // ./dir1/file.2 553 > ./dir2/file.1 552
35
+ // ./dir1 553 > ./dir2 552
36
+ // .dir1 (.1) 552 < ./dir2 552
37
+ const dir1 = path.join(__dirname, "dir1");
38
+ const dir2 = path.join(__dirname, "dir2");
39
+ const dir1File1 = path.join(dir1, "file.1");
40
+ const dir1File2 = path.join(dir1, "file.2");
41
+ const dir2File1 = path.join(dir2, "file.1");
42
+ let newer = (0, fileCompare_1.isNewerFile)(dir1File1, dir2File1);
43
+ t.equal(newer, false, "./dir1/file.1 < ./dir2/file.1");
44
+ newer = (0, fileCompare_1.isNewerFile)(dir1File2, dir2File1);
45
+ t.equal(newer, true, "./dir1/file.2 > ./dir2/file.1");
46
+ newer = (0, fileCompare_1.isNewerFile)(dir1, dir2);
47
+ t.ok(newer, "dir1 > dir2");
48
+ newer = (0, fileCompare_1.isNewerFile)(dir1, dir2, ".1");
49
+ t.ok(!newer, "./dir1 (.1) < ./dir2");
50
+ t.end();
51
+ }
52
+ tap_1.default.test('IsNewer', t => {
53
+ test(t);
54
+ });
55
+ //# sourceMappingURL=fileCompare.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileCompare.test.js","sourceRoot":"","sources":["../../../src/lib/Tests/fileCompare.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8CAAqB;AAErB,2CAA4B;AAC5B,gDAAoD;AAEpD,SAAS,IAAI,CAAC,CAAK;IAEnB,wCAAwC;IACxC,wCAAwC;IACxC,2BAA2B;IAC3B,8BAA8B;IAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE5C,IAAI,KAAK,GAAG,IAAA,yBAAW,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC7C,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,+BAA+B,CAAC,CAAA;IACtD,KAAK,GAAG,IAAA,yBAAW,EAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAA;IACrD,KAAK,GAAG,IAAA,yBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC3B,KAAK,GAAG,IAAA,yBAAW,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAA;IAGpC,CAAC,CAAC,GAAG,EAAE,CAAA;AACX,CAAC;AACD,aAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE;IACpB,IAAI,CAAC,CAAC,CAAC,CAAA;AACX,CAAC,CAAC,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /** handles interaction for asking a question */
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
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.ask = void 0;
28
+ const ac = __importStar(require("ansi-colors"));
29
+ const readlineSync = require("readline-sync");
30
+ function ask(desc, // describes the context
31
+ query, // asks the actual question
32
+ def // default answer
33
+ ) {
34
+ console.log(ac.dim.blue.italic(desc));
35
+ let answer = readlineSync.question(ac.bold.green(query) + ac.dim.grey(` [${def}] `) + '? ');
36
+ if (!answer)
37
+ answer = def;
38
+ return answer;
39
+ }
40
+ exports.ask = ask;
41
+ //# sourceMappingURL=askQuestion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"askQuestion.js","sourceRoot":"","sources":["../../src/lib/askQuestion.ts"],"names":[],"mappings":";AAAA,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhD,gDAAiC;AACjC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAE7C,SAAgB,GAAG,CACf,IAAW,EAAE,wBAAwB;AACrC,KAAY,EAAG,2BAA2B;AAC1C,GAAU,CAAC,iBAAiB;;IAI5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACrC,IAAI,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAE,IAAI,CAAC,CAAA;IAC1F,IAAG,CAAC,MAAM;QAAE,MAAM,GAAG,GAAG,CAAA;IACxB,OAAO,MAAM,CAAA;AACjB,CAAC;AAXD,kBAWC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeCommand = void 0;
4
+ const child_process_1 = require("child_process");
5
+ function executeCommand(cmd, args, cwd = '', consolePass = false, env = {}) {
6
+ const out = {
7
+ stdStr: '',
8
+ errStr: '',
9
+ retcode: 0
10
+ };
11
+ return new Promise(resolve => {
12
+ let cmdstr = cmd + ' ' + args.join(' ');
13
+ // console.log('executing ', cmdstr, 'at', cwd)
14
+ const opts = {
15
+ cwd: cwd,
16
+ env: Object.assign(env, process.env)
17
+ };
18
+ const proc = (0, child_process_1.exec)(cmdstr, opts);
19
+ if (proc.stdout)
20
+ proc.stdout.on('data', data => {
21
+ out.stdStr += data.toString();
22
+ if (consolePass)
23
+ process.stdout.write(data.toString());
24
+ });
25
+ if (proc.stderr)
26
+ proc.stderr.on('data', data => {
27
+ out.errStr += data.toString();
28
+ if (consolePass)
29
+ process.stdout.write(data.toString());
30
+ });
31
+ proc.on('error', error => {
32
+ console.error(error);
33
+ if (!out.errStr)
34
+ out.errStr = error.message;
35
+ out.retcode = -1;
36
+ resolve(out);
37
+ });
38
+ proc.on('close', code => {
39
+ out.retcode = code === null ? -1 : code;
40
+ resolve(out);
41
+ });
42
+ });
43
+ }
44
+ exports.executeCommand = executeCommand;
45
+ //# sourceMappingURL=executeCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeCommand.js","sourceRoot":"","sources":["../../src/lib/executeCommand.ts"],"names":[],"mappings":";;;AACA,iDAAkC;AAGlC,SAAgB,cAAc,CAAC,GAAU,EAAE,IAAU,EAAG,GAAG,GAAG,EAAE,EAAE,WAAW,GAAG,KAAK,EAAE,MAAU,EAAE;IAC/F,MAAM,GAAG,GAAG;QACR,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,CAAC;KACb,CAAA;IACD,OAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvC,+CAA+C;QAC/C,MAAM,IAAI,GAAG;YACT,GAAG,EAAC,GAAG;YACP,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;SACvC,CAAA;QACD,MAAM,IAAI,GAAG,IAAA,oBAAI,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/B,IAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC1C,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAC7B,IAAG,WAAW;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACF,IAAG,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC1C,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;gBAC7B,IAAG,WAAW;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YACzD,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACpB,IAAG,CAAC,GAAG,CAAC,MAAM;gBAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;YAC1C,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;YAChB,OAAO,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;YACpB,GAAG,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACvC,OAAO,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC;AAjCD,wCAiCC"}
@@ -0,0 +1,48 @@
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.isNewerFile = exports.isNewer = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const DirectoryUtils_1 = require("./DirectoryUtils");
10
+ // true if filepath > mapped file in outDir (i.e. .ts > .js)
11
+ function isNewer(filepath, outDir, mappingObj = { ".ts": ".js" }) {
12
+ let basename = path_1.default.basename(filepath);
13
+ let ext = path_1.default.extname(filepath);
14
+ basename = basename.substring(0, basename.lastIndexOf(ext));
15
+ let newExt = "";
16
+ if (mappingObj[ext])
17
+ newExt = mappingObj[ext];
18
+ let outfile = path_1.default.join(outDir, basename + newExt);
19
+ return isNewerFile(filepath, outfile);
20
+ }
21
+ exports.isNewer = isNewer;
22
+ // true if filepath is newer than destpath
23
+ function isNewerFile(filepath, destpath, srcFilter = "", dstFilter = "") {
24
+ const sstat = fs_1.default.statSync(filepath);
25
+ const srcTime = sstat.isDirectory() ? latestInDirectory(filepath, srcFilter) : fs_1.default.statSync(filepath).mtime;
26
+ let destTime = new Date(0);
27
+ if (fs_1.default.existsSync((destpath))) {
28
+ const dstat = fs_1.default.statSync(destpath);
29
+ destTime = dstat.isDirectory() ? latestInDirectory(destpath, dstFilter) : fs_1.default.statSync(destpath).mtime;
30
+ }
31
+ return (srcTime >= destTime);
32
+ }
33
+ exports.isNewerFile = isNewerFile;
34
+ function latestInDirectory(dirPath, extFilter = "") {
35
+ let newestTime = new Date(0);
36
+ (0, DirectoryUtils_1.recurseDirectory)(dirPath, (filepath, stats) => {
37
+ if (stats.isFile()) {
38
+ const ext = path_1.default.extname(filepath);
39
+ if (!extFilter || ext === extFilter) {
40
+ if (stats.mtime > newestTime) {
41
+ newestTime = stats.mtime;
42
+ }
43
+ }
44
+ }
45
+ });
46
+ return newestTime;
47
+ }
48
+ //# sourceMappingURL=fileCompare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileCompare.js","sourceRoot":"","sources":["../../src/lib/fileCompare.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4CAAoB;AACpB,qDAAkD;AAElD,4DAA4D;AAC5D,SAAgB,OAAO,CAAC,QAAe,EAAE,MAAa,EAAE,aAAiB,EAAC,KAAK,EAAE,KAAK,EAAC;IAEnF,IAAI,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAG,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAC,MAAM,CAAC,CAAC;IACjD,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAXD,0BAWC;AAED,0CAA0C;AAC1C,SAAgB,WAAW,CAAC,QAAe,EAAE,QAAe,EAAE,YAAmB,EAAE,EAAE,YAAmB,EAAE;IAEtG,MAAM,KAAK,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IAC3G,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAG,YAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IAC1G,CAAC;IACD,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAA;AAChC,CAAC;AAVD,kCAUC;AACD,SAAS,iBAAiB,CAAC,OAAc,EAAE,YAAmB,EAAE;IAE5D,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAA,iCAAgB,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAG,CAAC,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACjC,IAAG,KAAK,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC;oBAC1B,UAAU,GAAG,KAAK,CAAC,KAAK,CAAA;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,UAAU,CAAC;AAEtB,CAAC"}
@@ -0,0 +1,58 @@
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.gatherFunctionDefinitions = void 0;
7
+ /**
8
+ * Part 1 of two steps to build openApi docs.
9
+ * This reads values from our "definitions.json" format and creates a single array that step 2 will turn into
10
+ * openApi specifications.
11
+ */
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const path_1 = __importDefault(require("path"));
14
+ const DirectoryUtils_1 = require("../DirectoryUtils");
15
+ const pathResolve_1 = require("../pathResolve");
16
+ function gatherFunctionDefinitions() {
17
+ const defs = [];
18
+ try {
19
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
20
+ if (!projectPaths.verified)
21
+ return [];
22
+ const funcNames = [];
23
+ if (!fs_1.default.existsSync(projectPaths.functionPath))
24
+ return [];
25
+ let firstDepth = 0;
26
+ (0, DirectoryUtils_1.recurseDirectory)(projectPaths.functionPath, (filepath, stats) => {
27
+ if (stats.isDirectory()) {
28
+ let depth = filepath.split(path_1.default.sep).length;
29
+ if (!firstDepth)
30
+ firstDepth = depth;
31
+ if (firstDepth == depth) {
32
+ funcNames.push(path_1.default.basename(filepath));
33
+ }
34
+ }
35
+ });
36
+ if (projectPaths.functionPath.indexOf('functions') !== -1) {
37
+ for (let name of funcNames) {
38
+ let defPath = path_1.default.join(projectPaths.functionPath, name, 'src', 'definition.json');
39
+ if (fs_1.default.existsSync(defPath)) {
40
+ const content = fs_1.default.readFileSync(defPath).toString();
41
+ let buildPath = path_1.default.join(projectPaths.buildPath, 'functions', name, 'src', 'definition.json');
42
+ // fs.writeFileSync(buildPath, content); // use this opportunity to copy to build folder before we use it.
43
+ defs.push(JSON.parse(content));
44
+ }
45
+ else {
46
+ console.error(`Definition file not found at ${defPath}`);
47
+ return [];
48
+ }
49
+ }
50
+ }
51
+ }
52
+ catch (e) {
53
+ console.error("Exception in ApiBuildCollector", e);
54
+ }
55
+ return defs;
56
+ }
57
+ exports.gatherFunctionDefinitions = gatherFunctionDefinitions;
58
+ //# sourceMappingURL=ApiBuildCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiBuildCollector.js","sourceRoot":"","sources":["../../../src/lib/openAPI/ApiBuildCollector.ts"],"names":[],"mappings":";;;;;;AAAA;;;;GAIG;AACH,4CAAmB;AACnB,gDAAuB;AACvB,sDAAmD;AACnD,gDAA4C;AAG5C,SAAgB,yBAAyB;IACrC,MAAM,IAAI,GAAO,EAAE,CAAA;IACnB,IAAI,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,0BAAY,GAAE,CAAC;QACpC,IAAG,CAAC,YAAY,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACrC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAG,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,YAAY,CAAC;YAAE,OAAO,EAAE,CAAC;QACxD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAA,iCAAgB,EAAC,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;gBAC3C,IAAG,CAAC,UAAU;oBAAE,UAAU,GAAG,KAAK,CAAA;gBAClC,IAAG,UAAU,IAAI,KAAK,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QACF,IAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAG,CAAC;YACxD,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;gBACzB,IAAI,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;gBAClF,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;oBACnD,IAAI,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAA;oBAC9F,0GAA0G;oBAC1G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;gBAClC,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;oBACzD,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAM,CAAM,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAnCD,8DAmCC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.GetWebrootServePaths = void 0;
27
+ const path = __importStar(require("path"));
28
+ const pathResolve_1 = require("../pathResolve");
29
+ const DirectoryUtils_1 = require("../DirectoryUtils");
30
+ function GetWebrootServePaths() {
31
+ const projectPaths = (0, pathResolve_1.resolvePaths)();
32
+ const webroot = path.join(projectPaths.basePath, "webroot");
33
+ const list = [''];
34
+ (0, DirectoryUtils_1.recurseDirectory)(webroot, (filepath, stats) => {
35
+ if (stats.isDirectory()) {
36
+ let relpath = filepath.substring(webroot.length);
37
+ if (list.indexOf(relpath) === -1)
38
+ list.push(relpath);
39
+ }
40
+ });
41
+ return list;
42
+ }
43
+ exports.GetWebrootServePaths = GetWebrootServePaths;
44
+ //# sourceMappingURL=WebrootFileSupport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebrootFileSupport.js","sourceRoot":"","sources":["../../../src/lib/openAPI/WebrootFileSupport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA4B;AAC5B,gDAA4C;AAC5C,sDAAmD;AAGnD,SAAgB,oBAAoB;IAEhC,MAAM,YAAY,GAAG,IAAA,0BAAY,GAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAE3D,MAAM,IAAI,GAAY,CAAC,EAAE,CAAC,CAAC;IAC3B,IAAA,iCAAgB,EAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAG,KAAK,CAAC,WAAW,EAAE,EACtB,CAAC;YACG,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjD,IAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;IACL,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAC;AAChB,CAAC;AAdD,oDAcC"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.buildOpenApi = void 0;
16
+ /**
17
+ * This is part 2 of 2 -- we take our pre-built json array of definitions and apply them to openApi in this phase.
18
+ */
19
+ const oas30_1 = require("openapi3-ts/oas30");
20
+ const fs_1 = __importDefault(require("fs"));
21
+ const path_1 = __importDefault(require("path"));
22
+ const pathResolve_1 = require("../pathResolve");
23
+ const LiftConfig_1 = require("../LiftConfig");
24
+ function buildOpenApi(defs_1) {
25
+ return __awaiter(this, arguments, void 0, function* (defs, includePrivate = false, yamlFile) {
26
+ var _a, _b, _c, _d, _e, _f, _g, _h;
27
+ const builder = new oas30_1.OpenApiBuilder();
28
+ const projectPaths = yield (0, pathResolve_1.resolvePaths)();
29
+ if (!projectPaths.verified)
30
+ return new Uint8Array(0); // don't continue if not valid
31
+ // Read our package.json and construct info from that
32
+ const pkgFile = projectPaths.packagePath;
33
+ let pkg = {};
34
+ try {
35
+ pkg = JSON.parse(fs_1.default.readFileSync(pkgFile).toString());
36
+ }
37
+ catch (_j) { }
38
+ let title = pkg.name;
39
+ // let summary = pkg.description;
40
+ let spdx = pkg.license;
41
+ let contactName = pkg.author;
42
+ let version = pkg.version;
43
+ // license and version definitely come from package.json
44
+ // description and title might get overridden by service.info file
45
+ const infoFile = path_1.default.join(projectPaths.functionPath, "apiService.info.json");
46
+ var svcInfo = {};
47
+ if (fs_1.default.existsSync(infoFile)) {
48
+ svcInfo = JSON.parse(fs_1.default.readFileSync(infoFile).toString());
49
+ }
50
+ spdx = (_b = (_a = svcInfo.contact) === null || _a === void 0 ? void 0 : _a.spdx) !== null && _b !== void 0 ? _b : spdx;
51
+ const info = {
52
+ title: (_c = svcInfo.name) !== null && _c !== void 0 ? _c : title,
53
+ // summary: summary,
54
+ description: svcInfo.description,
55
+ version: (_e = (_d = svcInfo.version) !== null && _d !== void 0 ? _d : version) !== null && _e !== void 0 ? _e : new Date().toUTCString()
56
+ };
57
+ builder.addInfo(info);
58
+ // map our defs into openApi values
59
+ for (let def of defs) {
60
+ let pathDef = {};
61
+ if (def.private && !includePrivate)
62
+ continue; // skip private
63
+ const parameters = (_f = def.parameters) !== null && _f !== void 0 ? _f : [];
64
+ const methods = def.allowedMethods.split(',');
65
+ const schemas = (_g = def.schemas) !== null && _g !== void 0 ? _g : {};
66
+ for (let schemaName of Object.getOwnPropertyNames(schemas)) {
67
+ const schema = schemas[schemaName];
68
+ addTypeSchema(builder, schemaName, schema);
69
+ }
70
+ for (let method of methods) {
71
+ method = method.trim().toLowerCase();
72
+ addFunctionMethod(pathDef, method, def);
73
+ for (let param of parameters) {
74
+ addParameter(pathDef, param);
75
+ }
76
+ }
77
+ addCORSOptionMethod(pathDef);
78
+ builder.addPath(((_h = def.pathMap) !== null && _h !== void 0 ? _h : "/" + def.name), pathDef);
79
+ builder.addSchema("Empty", {
80
+ title: "Empty Schema",
81
+ type: "object"
82
+ });
83
+ }
84
+ const outFile = yamlFile !== null && yamlFile !== void 0 ? yamlFile : path_1.default.join(projectPaths.basePath, 'webroot', 'docs', 'apidoc.yaml');
85
+ const str2ab = (str) => {
86
+ var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
87
+ var bufView = new Uint8Array(buf);
88
+ for (var i = 0, strLen = str.length; i < strLen; i++) {
89
+ bufView[i] = str.charCodeAt(i);
90
+ }
91
+ return bufView;
92
+ };
93
+ const yaml = builder.getSpecAsYaml();
94
+ const bytes = str2ab(yaml);
95
+ if (!includePrivate) {
96
+ fs_1.default.writeFileSync(outFile, yaml);
97
+ }
98
+ return bytes;
99
+ });
100
+ }
101
+ exports.buildOpenApi = buildOpenApi;
102
+ function addTypeSchema(builder, schemaName, schema) {
103
+ const ref = { title: schemaName, type: "object", properties: {} };
104
+ for (let prop of Object.getOwnPropertyNames(schema)) {
105
+ const scType = schemaType("", schema[prop], false);
106
+ ref.properties[prop] = scType;
107
+ }
108
+ builder.addSchema(schemaName, ref);
109
+ }
110
+ function addFunctionMethod(pathDef, method, def) {
111
+ var _a, _b, _c;
112
+ // TODO: Define a return schema and put that here
113
+ const retDef = def.returns["200"];
114
+ const content = {};
115
+ const mime = (_b = (_a = retDef === null || retDef === void 0 ? void 0 : retDef.content) !== null && _a !== void 0 ? _a : retDef === null || retDef === void 0 ? void 0 : retDef.mime) !== null && _b !== void 0 ? _b : "text/plain";
116
+ content[mime] = {};
117
+ const region = (0, LiftConfig_1.getSettings)().awsPreferredRegion;
118
+ const accountId = "545650260286";
119
+ const methData = {
120
+ summary: def.name,
121
+ description: def.description,
122
+ responses: {
123
+ "200": {
124
+ description: (_c = retDef === null || retDef === void 0 ? void 0 : retDef.description) !== null && _c !== void 0 ? _c : "Success Response",
125
+ content
126
+ }
127
+ }
128
+ };
129
+ pathDef[method] = methData;
130
+ }
131
+ function addCORSOptionMethod(pathDef) {
132
+ if (pathDef["options"])
133
+ return; // already assinged by definition
134
+ // add options for CORS
135
+ pathDef["options"] = {
136
+ "responses": {
137
+ "200": {
138
+ "description": "200 response",
139
+ "content": {
140
+ "application/json": {
141
+ "schema": {
142
+ "$ref": "#/components/schemas/Empty"
143
+ }
144
+ }
145
+ }
146
+ }
147
+ },
148
+ "x-amazon-apigateway-integration": {
149
+ "responses": {
150
+ "default": {
151
+ "statusCode": "200"
152
+ }
153
+ },
154
+ "requestTemplates": {
155
+ "application/json": "{\"statusCode\": 200}"
156
+ },
157
+ "passthroughBehavior": "when_no_match",
158
+ "type": "mock"
159
+ }
160
+ };
161
+ }
162
+ function addParameter(pathDef, param) {
163
+ var _a, _b, _c, _d;
164
+ if (!pathDef.parameters)
165
+ pathDef.parameters = [];
166
+ const parameters = pathDef.parameters;
167
+ const example = (_b = (_a = param.example) !== null && _a !== void 0 ? _a : param.default) !== null && _b !== void 0 ? _b : "";
168
+ const type = (_c = param.type) !== null && _c !== void 0 ? _c : typeof example;
169
+ let deflt = (_d = param.default) !== null && _d !== void 0 ? _d : example;
170
+ parameters.push({
171
+ in: param.in,
172
+ name: param.name,
173
+ description: param.description,
174
+ example: example,
175
+ required: param.required,
176
+ schema: schemaType(deflt, type, true)
177
+ });
178
+ }
179
+ function schemaType(deflt, namedType, innerOnly) {
180
+ if (typeof namedType == "object")
181
+ return namedType;
182
+ const typeFormat = namedType.split(':');
183
+ let type = typeFormat[0];
184
+ const format = typeFormat.length > 1 ? typeFormat[1] : undefined;
185
+ if (!(type === "string"
186
+ || type === "number"
187
+ || type === "integer"
188
+ || type === "boolean"
189
+ || type === "int"
190
+ || type === "bool")) {
191
+ return innerOnly ? {
192
+ $ref: `#/components/schemas/${type}`
193
+ } : { schema: {
194
+ $ref: `#/components/schemas/${type}`
195
+ } };
196
+ }
197
+ if (type === 'int')
198
+ type = 'integer';
199
+ if (type === 'bool')
200
+ type = 'boolean';
201
+ return innerOnly ? { type, format, example: deflt } : { schema: { type, format, example: deflt } };
202
+ }
203
+ //# sourceMappingURL=openApiConstruction.js.map