@credibledata/cred-cli 0.0.6

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 (259) hide show
  1. package/.github/workflows/build.yml +23 -0
  2. package/.mocharc.json +10 -0
  3. package/.prettierignore +2 -0
  4. package/.prettierrc +4 -0
  5. package/README-DEV.md +40 -0
  6. package/README.md +11 -0
  7. package/bun.lock +1158 -0
  8. package/dist/client/api.js +7715 -0
  9. package/dist/client/api.js.map +1 -0
  10. package/dist/client/base.js +69 -0
  11. package/dist/client/base.js.map +1 -0
  12. package/dist/client/common.js +162 -0
  13. package/dist/client/common.js.map +1 -0
  14. package/dist/client/configuration.js +44 -0
  15. package/dist/client/configuration.js.map +1 -0
  16. package/dist/client/index.js +32 -0
  17. package/dist/client/index.js.map +1 -0
  18. package/dist/clientconfiguration.js +205 -0
  19. package/dist/clientconfiguration.js.map +1 -0
  20. package/dist/clientconfiguration.spec.js +381 -0
  21. package/dist/clientconfiguration.spec.js.map +1 -0
  22. package/dist/commands/add.js +66 -0
  23. package/dist/commands/add.js.map +1 -0
  24. package/dist/commands/connection/createconnections.js +89 -0
  25. package/dist/commands/connection/createconnections.js.map +1 -0
  26. package/dist/commands/connection/createconnections.spec.js +219 -0
  27. package/dist/commands/connection/createconnections.spec.js.map +1 -0
  28. package/dist/commands/connection/deleteconnection.js +52 -0
  29. package/dist/commands/connection/deleteconnection.js.map +1 -0
  30. package/dist/commands/connection/deleteconnection.spec.js +130 -0
  31. package/dist/commands/connection/deleteconnection.spec.js.map +1 -0
  32. package/dist/commands/connection/listconnections.js +50 -0
  33. package/dist/commands/connection/listconnections.js.map +1 -0
  34. package/dist/commands/connection/listconnections.spec.js +117 -0
  35. package/dist/commands/connection/listconnections.spec.js.map +1 -0
  36. package/dist/commands/get.js +28 -0
  37. package/dist/commands/get.js.map +1 -0
  38. package/dist/commands/group/addmember.js +75 -0
  39. package/dist/commands/group/addmember.js.map +1 -0
  40. package/dist/commands/group/addmember.spec.js +148 -0
  41. package/dist/commands/group/addmember.spec.js.map +1 -0
  42. package/dist/commands/group/creategroup.js +55 -0
  43. package/dist/commands/group/creategroup.js.map +1 -0
  44. package/dist/commands/group/creategroup.spec.js +122 -0
  45. package/dist/commands/group/creategroup.spec.js.map +1 -0
  46. package/dist/commands/group/deletegroup.js +48 -0
  47. package/dist/commands/group/deletegroup.js.map +1 -0
  48. package/dist/commands/group/deletegroup.spec.js +104 -0
  49. package/dist/commands/group/deletegroup.spec.js.map +1 -0
  50. package/dist/commands/group/getgroup.js +50 -0
  51. package/dist/commands/group/getgroup.js.map +1 -0
  52. package/dist/commands/group/getgroup.spec.js +111 -0
  53. package/dist/commands/group/getgroup.spec.js.map +1 -0
  54. package/dist/commands/group/listgroups.js +56 -0
  55. package/dist/commands/group/listgroups.js.map +1 -0
  56. package/dist/commands/group/listgroups.spec.js +118 -0
  57. package/dist/commands/group/listgroups.spec.js.map +1 -0
  58. package/dist/commands/group/removemember.js +69 -0
  59. package/dist/commands/group/removemember.js.map +1 -0
  60. package/dist/commands/group/removemember.spec.js +138 -0
  61. package/dist/commands/group/removemember.spec.js.map +1 -0
  62. package/dist/commands/groupaccesstoken/createToken.js +53 -0
  63. package/dist/commands/groupaccesstoken/createToken.js.map +1 -0
  64. package/dist/commands/groupaccesstoken/createToken.spec.js +127 -0
  65. package/dist/commands/groupaccesstoken/createToken.spec.js.map +1 -0
  66. package/dist/commands/groupaccesstoken/deleteToken.js +24 -0
  67. package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -0
  68. package/dist/commands/groupaccesstoken/deleteToken.spec.js +103 -0
  69. package/dist/commands/groupaccesstoken/deleteToken.spec.js.map +1 -0
  70. package/dist/commands/groupaccesstoken/groupContainer.js +71 -0
  71. package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -0
  72. package/dist/commands/groupaccesstoken/listTokens.js +25 -0
  73. package/dist/commands/groupaccesstoken/listTokens.js.map +1 -0
  74. package/dist/commands/groupaccesstoken/listTokens.spec.js +115 -0
  75. package/dist/commands/groupaccesstoken/listTokens.spec.js.map +1 -0
  76. package/dist/commands/list.js +75 -0
  77. package/dist/commands/list.js.map +1 -0
  78. package/dist/commands/misc/login.js +290 -0
  79. package/dist/commands/misc/login.js.map +1 -0
  80. package/dist/commands/misc/login.spec.js +243 -0
  81. package/dist/commands/misc/login.spec.js.map +1 -0
  82. package/dist/commands/misc/logout.js +11 -0
  83. package/dist/commands/misc/logout.js.map +1 -0
  84. package/dist/commands/misc/logout.spec.js +30 -0
  85. package/dist/commands/misc/logout.spec.js.map +1 -0
  86. package/dist/commands/misc/loopbackOAuth.js +110 -0
  87. package/dist/commands/misc/loopbackOAuth.js.map +1 -0
  88. package/dist/commands/misc/set-access-token.js +27 -0
  89. package/dist/commands/misc/set-access-token.js.map +1 -0
  90. package/dist/commands/misc/set-access-token.spec.js +65 -0
  91. package/dist/commands/misc/set-access-token.spec.js.map +1 -0
  92. package/dist/commands/package/deletepackage.js +54 -0
  93. package/dist/commands/package/deletepackage.js.map +1 -0
  94. package/dist/commands/package/deletepackage.spec.js +136 -0
  95. package/dist/commands/package/deletepackage.spec.js.map +1 -0
  96. package/dist/commands/package/listpackages.js +57 -0
  97. package/dist/commands/package/listpackages.js.map +1 -0
  98. package/dist/commands/package/listpackages.spec.js +129 -0
  99. package/dist/commands/package/listpackages.spec.js.map +1 -0
  100. package/dist/commands/package/publish.js +157 -0
  101. package/dist/commands/package/publish.js.map +1 -0
  102. package/dist/commands/package/publish.spec.js +511 -0
  103. package/dist/commands/package/publish.spec.js.map +1 -0
  104. package/dist/commands/package/updatepackage.js +75 -0
  105. package/dist/commands/package/updatepackage.js.map +1 -0
  106. package/dist/commands/package/updatepackage.spec.js +189 -0
  107. package/dist/commands/package/updatepackage.spec.js.map +1 -0
  108. package/dist/commands/project/createproject.js +75 -0
  109. package/dist/commands/project/createproject.js.map +1 -0
  110. package/dist/commands/project/createproject.spec.js +154 -0
  111. package/dist/commands/project/createproject.spec.js.map +1 -0
  112. package/dist/commands/project/deleteproject.js +49 -0
  113. package/dist/commands/project/deleteproject.js.map +1 -0
  114. package/dist/commands/project/deleteproject.spec.js +106 -0
  115. package/dist/commands/project/deleteproject.spec.js.map +1 -0
  116. package/dist/commands/project/getproject.js +44 -0
  117. package/dist/commands/project/getproject.js.map +1 -0
  118. package/dist/commands/project/getproject.spec.js +99 -0
  119. package/dist/commands/project/getproject.spec.js.map +1 -0
  120. package/dist/commands/project/listprojects.js +52 -0
  121. package/dist/commands/project/listprojects.js.map +1 -0
  122. package/dist/commands/project/listprojects.spec.js +111 -0
  123. package/dist/commands/project/listprojects.spec.js.map +1 -0
  124. package/dist/commands/project/setproject.js +26 -0
  125. package/dist/commands/project/setproject.js.map +1 -0
  126. package/dist/commands/project/setproject.spec.js +58 -0
  127. package/dist/commands/project/setproject.spec.js.map +1 -0
  128. package/dist/commands/project/updateproject.js +68 -0
  129. package/dist/commands/project/updateproject.js.map +1 -0
  130. package/dist/commands/project/updateproject.spec.js +129 -0
  131. package/dist/commands/project/updateproject.spec.js.map +1 -0
  132. package/dist/commands/rm.js +68 -0
  133. package/dist/commands/rm.js.map +1 -0
  134. package/dist/commands/set.js +17 -0
  135. package/dist/commands/set.js.map +1 -0
  136. package/dist/commands/update.js +42 -0
  137. package/dist/commands/update.js.map +1 -0
  138. package/dist/commands/version/archive-unarchive-version.js +79 -0
  139. package/dist/commands/version/archive-unarchive-version.js.map +1 -0
  140. package/dist/commands/version/archive-unarchive-version.spec.js +244 -0
  141. package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -0
  142. package/dist/commands/version/listversions.js +46 -0
  143. package/dist/commands/version/listversions.js.map +1 -0
  144. package/dist/commands/version/listversions.spec.js +121 -0
  145. package/dist/commands/version/listversions.spec.js.map +1 -0
  146. package/dist/common/UserGroupId.js +112 -0
  147. package/dist/common/UserGroupId.js.map +1 -0
  148. package/dist/common/UserGroupId.spec.js +92 -0
  149. package/dist/common/UserGroupId.spec.js.map +1 -0
  150. package/dist/constants.js +90 -0
  151. package/dist/constants.js.map +1 -0
  152. package/dist/index.js +159 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/logger.js +77 -0
  155. package/dist/logger.js.map +1 -0
  156. package/dist/logger.spec.js +125 -0
  157. package/dist/logger.spec.js.map +1 -0
  158. package/dist/polyfills/file.polyfill.js +6 -0
  159. package/dist/polyfills/file.polyfill.js.map +1 -0
  160. package/dist/utils.js +110 -0
  161. package/dist/utils.js.map +1 -0
  162. package/dist/utils.spec.js +158 -0
  163. package/dist/utils.spec.js.map +1 -0
  164. package/dist/validator.js +53 -0
  165. package/dist/validator.js.map +1 -0
  166. package/dist/validator.spec.js +41 -0
  167. package/dist/validator.spec.js.map +1 -0
  168. package/docker/Dockerfile.ci +18 -0
  169. package/docker-compose.yml +18 -0
  170. package/eslint.config.mjs +45 -0
  171. package/generate-client.sh +27 -0
  172. package/mocha.setup.ts +4 -0
  173. package/openapitools.json +7 -0
  174. package/package.json +75 -0
  175. package/src/client/.openapi-generator/FILES +9 -0
  176. package/src/client/.openapi-generator/VERSION +1 -0
  177. package/src/client/.openapi-generator-ignore +23 -0
  178. package/src/client/api.ts +9729 -0
  179. package/src/client/base.ts +86 -0
  180. package/src/client/common.ts +150 -0
  181. package/src/client/configuration.ts +110 -0
  182. package/src/client/git_push.sh +57 -0
  183. package/src/client/index.ts +18 -0
  184. package/src/clientconfiguration.spec.ts +490 -0
  185. package/src/clientconfiguration.ts +263 -0
  186. package/src/commands/add.ts +125 -0
  187. package/src/commands/connection/createconnections.spec.ts +403 -0
  188. package/src/commands/connection/createconnections.ts +109 -0
  189. package/src/commands/connection/deleteconnection.spec.ts +189 -0
  190. package/src/commands/connection/deleteconnection.ts +57 -0
  191. package/src/commands/connection/listconnections.spec.ts +132 -0
  192. package/src/commands/connection/listconnections.ts +58 -0
  193. package/src/commands/get.ts +31 -0
  194. package/src/commands/group/addmember.spec.ts +257 -0
  195. package/src/commands/group/addmember.ts +85 -0
  196. package/src/commands/group/creategroup.spec.ts +146 -0
  197. package/src/commands/group/creategroup.ts +54 -0
  198. package/src/commands/group/deletegroup.spec.ts +120 -0
  199. package/src/commands/group/deletegroup.ts +45 -0
  200. package/src/commands/group/getgroup.spec.ts +129 -0
  201. package/src/commands/group/getgroup.ts +47 -0
  202. package/src/commands/group/listgroups.spec.ts +137 -0
  203. package/src/commands/group/listgroups.ts +45 -0
  204. package/src/commands/group/removemember.spec.ts +224 -0
  205. package/src/commands/group/removemember.ts +75 -0
  206. package/src/commands/groupaccesstoken/createToken.spec.ts +211 -0
  207. package/src/commands/groupaccesstoken/createToken.ts +72 -0
  208. package/src/commands/groupaccesstoken/deleteToken.spec.ts +147 -0
  209. package/src/commands/groupaccesstoken/deleteToken.ts +29 -0
  210. package/src/commands/groupaccesstoken/groupContainer.ts +83 -0
  211. package/src/commands/groupaccesstoken/listTokens.spec.ts +147 -0
  212. package/src/commands/groupaccesstoken/listTokens.ts +29 -0
  213. package/src/commands/list.ts +131 -0
  214. package/src/commands/misc/login.spec.ts +213 -0
  215. package/src/commands/misc/login.ts +325 -0
  216. package/src/commands/misc/logout.spec.ts +32 -0
  217. package/src/commands/misc/logout.ts +9 -0
  218. package/src/commands/misc/loopbackOAuth.ts +127 -0
  219. package/src/commands/misc/set-access-token.spec.ts +95 -0
  220. package/src/commands/misc/set-access-token.ts +32 -0
  221. package/src/commands/package/deletepackage.spec.ts +164 -0
  222. package/src/commands/package/deletepackage.ts +58 -0
  223. package/src/commands/package/listpackages.spec.ts +147 -0
  224. package/src/commands/package/listpackages.ts +67 -0
  225. package/src/commands/package/publish.spec.ts +597 -0
  226. package/src/commands/package/publish.ts +211 -0
  227. package/src/commands/package/updatepackage.spec.ts +319 -0
  228. package/src/commands/package/updatepackage.ts +95 -0
  229. package/src/commands/project/createproject.spec.ts +247 -0
  230. package/src/commands/project/createproject.ts +70 -0
  231. package/src/commands/project/deleteproject.spec.ts +123 -0
  232. package/src/commands/project/deleteproject.ts +48 -0
  233. package/src/commands/project/getproject.spec.ts +109 -0
  234. package/src/commands/project/getproject.ts +43 -0
  235. package/src/commands/project/listprojects.spec.ts +121 -0
  236. package/src/commands/project/listprojects.ts +62 -0
  237. package/src/commands/project/setproject.spec.ts +63 -0
  238. package/src/commands/project/setproject.ts +14 -0
  239. package/src/commands/project/updateproject.spec.ts +217 -0
  240. package/src/commands/project/updateproject.ts +82 -0
  241. package/src/commands/rm.ts +101 -0
  242. package/src/commands/set.ts +16 -0
  243. package/src/commands/update.ts +64 -0
  244. package/src/commands/version/archive-unarchive-version.spec.ts +456 -0
  245. package/src/commands/version/archive-unarchive-version.ts +111 -0
  246. package/src/commands/version/listversions.spec.ts +138 -0
  247. package/src/commands/version/listversions.ts +45 -0
  248. package/src/common/UserGroupId.spec.ts +117 -0
  249. package/src/common/UserGroupId.ts +137 -0
  250. package/src/constants.ts +116 -0
  251. package/src/index.ts +209 -0
  252. package/src/logger.spec.ts +158 -0
  253. package/src/logger.ts +86 -0
  254. package/src/polyfills/file.polyfill.ts +6 -0
  255. package/src/utils.spec.ts +135 -0
  256. package/src/utils.ts +115 -0
  257. package/src/validator.spec.ts +51 -0
  258. package/src/validator.ts +44 -0
  259. package/tsconfig.json +17 -0
package/dist/logger.js ADDED
@@ -0,0 +1,77 @@
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.logAxiosError = exports.logger = void 0;
7
+ const kleur_1 = __importDefault(require("kleur"));
8
+ const winston_1 = __importDefault(require("winston"));
9
+ const logColors = {
10
+ error: kleur_1.default.red,
11
+ warn: kleur_1.default.yellow,
12
+ info: kleur_1.default.cyan,
13
+ http: kleur_1.default.magenta,
14
+ debug: kleur_1.default.gray,
15
+ };
16
+ // Custom console log format
17
+ const consoleFormat = winston_1.default.format.printf(({ level, message, timestamp }) => {
18
+ const colorFn = logColors[level] || ((text) => text);
19
+ return `[${kleur_1.default.gray(timestamp)}] ${colorFn(level.toUpperCase())}: ${message}`;
20
+ });
21
+ // Create Winston logger
22
+ exports.logger = winston_1.default.createLogger({
23
+ level: "debug",
24
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston_1.default.format.errors({ stack: true }), winston_1.default.format.splat()),
25
+ transports: [
26
+ // Console transport with colored logs
27
+ new winston_1.default.transports.Console({
28
+ format: consoleFormat,
29
+ }),
30
+ // NOTE disabled app.log logging
31
+ // File transport (logs without colors)
32
+ // new winston.transports.File({
33
+ // filename: "app.log",
34
+ // level: "info",
35
+ // format: winston.format.json(),
36
+ // }),
37
+ ],
38
+ });
39
+ const logAxiosError = (error, debug) => {
40
+ if (error.response) {
41
+ // The request was made and the server responded with a status code
42
+ // that falls out of the range of 2xx
43
+ if (debug) {
44
+ exports.logger.error(`Error ${error.response.status} at ${error.request.path}`);
45
+ }
46
+ switch (error.response.status) {
47
+ case 401:
48
+ exports.logger.error("Unauthorized: Please double check that you are logged in");
49
+ break;
50
+ case 403:
51
+ exports.logger.error("Forbidden: You're not allowed to perform this operation");
52
+ break;
53
+ case 500:
54
+ exports.logger.error("Internal Server Error");
55
+ break;
56
+ default:
57
+ break;
58
+ }
59
+ if (error.response.data) {
60
+ exports.logger.error(error.response.data);
61
+ }
62
+ }
63
+ else if (error.request) {
64
+ // The request was made but no response was received
65
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
66
+ // http.ClientRequest in node.js
67
+ const requestOptions = error.request._options;
68
+ exports.logger.error(`Failed to ${requestOptions.method} resource ${requestOptions.path} on ${requestOptions.hostname}:${requestOptions.port}`);
69
+ exports.logger.error(error.code, error.message);
70
+ }
71
+ else {
72
+ // Something happened in setting up the request that triggered an Error
73
+ exports.logger.error("Error", error.message);
74
+ }
75
+ };
76
+ exports.logAxiosError = logAxiosError;
77
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
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 chai_1 = require("chai");
7
+ const sinon_1 = __importDefault(require("sinon"));
8
+ const logger_1 = require("./logger");
9
+ describe("logAxiosError", () => {
10
+ let loggerStub;
11
+ let sandbox;
12
+ beforeEach(() => {
13
+ sandbox = sinon_1.default.createSandbox();
14
+ loggerStub = sandbox.stub(logger_1.logger);
15
+ });
16
+ afterEach(() => {
17
+ sandbox.restore();
18
+ });
19
+ it("should log 401 Unauthorized error", () => {
20
+ const error = {
21
+ response: {
22
+ status: 401,
23
+ data: null,
24
+ },
25
+ request: { path: "/api/test" },
26
+ isAxiosError: true,
27
+ };
28
+ (0, logger_1.logAxiosError)(error, false);
29
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Unauthorized"))).to.be
30
+ .true;
31
+ });
32
+ it("should log 403 Forbidden error", () => {
33
+ const error = {
34
+ response: {
35
+ status: 403,
36
+ data: null,
37
+ },
38
+ request: { path: "/api/test" },
39
+ isAxiosError: true,
40
+ };
41
+ (0, logger_1.logAxiosError)(error, false);
42
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Forbidden"))).to.be.true;
43
+ });
44
+ it("should log 500 Internal Server Error", () => {
45
+ const error = {
46
+ response: {
47
+ status: 500,
48
+ data: null,
49
+ },
50
+ request: { path: "/api/test" },
51
+ isAxiosError: true,
52
+ };
53
+ (0, logger_1.logAxiosError)(error, false);
54
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Internal Server Error")))
55
+ .to.be.true;
56
+ });
57
+ it("should log response data when present", () => {
58
+ const error = {
59
+ response: {
60
+ status: 400,
61
+ data: "Bad request details",
62
+ },
63
+ request: { path: "/api/test" },
64
+ isAxiosError: true,
65
+ };
66
+ (0, logger_1.logAxiosError)(error, false);
67
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Bad request details"))).to
68
+ .be.true;
69
+ });
70
+ it("should log debug info with status and path when debug is true", () => {
71
+ const error = {
72
+ response: {
73
+ status: 401,
74
+ data: null,
75
+ },
76
+ request: { path: "/api/test" },
77
+ isAxiosError: true,
78
+ };
79
+ (0, logger_1.logAxiosError)(error, true);
80
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Error 401 at /api/test")))
81
+ .to.be.true;
82
+ });
83
+ it("should not log debug info when debug is false", () => {
84
+ const error = {
85
+ response: {
86
+ status: 401,
87
+ data: null,
88
+ },
89
+ request: { path: "/api/test" },
90
+ isAxiosError: true,
91
+ };
92
+ (0, logger_1.logAxiosError)(error, false);
93
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Error 401 at"))).to.be
94
+ .false;
95
+ });
96
+ it("should handle request error with no response", () => {
97
+ const error = {
98
+ response: undefined,
99
+ request: {
100
+ _options: {
101
+ method: "GET",
102
+ path: "/api/resource",
103
+ hostname: "example.com",
104
+ port: 443,
105
+ },
106
+ },
107
+ code: "ECONNREFUSED",
108
+ message: "Connection refused",
109
+ isAxiosError: true,
110
+ };
111
+ (0, logger_1.logAxiosError)(error, false);
112
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Failed to GET resource /api/resource on example.com:443"))).to.be.true;
113
+ });
114
+ it("should handle setup error with no request or response", () => {
115
+ const error = {
116
+ response: undefined,
117
+ request: undefined,
118
+ message: "Invalid URL",
119
+ isAxiosError: true,
120
+ };
121
+ (0, logger_1.logAxiosError)(error, false);
122
+ (0, chai_1.expect)(loggerStub.error.calledWith("Error", "Invalid URL")).to.be.true;
123
+ });
124
+ });
125
+ //# sourceMappingURL=logger.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.spec.js","sourceRoot":"","sources":["../src/logger.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // TODO: Polyfill leads to errors when pushing packages.
4
+ //globalThis.File = File as unknown as typeof globalThis.File;
5
+ //globalThis.Blob = Blob as unknown as typeof globalThis.Blob;
6
+ //# sourceMappingURL=file.polyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.polyfill.js","sourceRoot":"","sources":["../../src/polyfills/file.polyfill.ts"],"names":[],"mappings":";;AAGA,wDAAwD;AACxD,8DAA8D;AAC9D,8DAA8D"}
package/dist/utils.js ADDED
@@ -0,0 +1,110 @@
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.MAX_PAGE_SIZE = exports.DEFAULT_PAGE = exports.DEFAULT_PAGE_SIZE = void 0;
16
+ exports.sleep = sleep;
17
+ exports.prettifyJson = prettifyJson;
18
+ exports.printOutError = printOutError;
19
+ exports.getConfirmation = getConfirmation;
20
+ exports.parsePaginationParams = parsePaginationParams;
21
+ exports.extractTotalCount = extractTotalCount;
22
+ const axios_1 = __importDefault(require("axios"));
23
+ const inquirer_1 = __importDefault(require("inquirer"));
24
+ const logger_1 = require("./logger");
25
+ function sleep(time_in_ms) {
26
+ return new Promise((resolve) => setTimeout(resolve, time_in_ms));
27
+ }
28
+ function prettifyJson(payload) {
29
+ return JSON.stringify(payload, null, 2);
30
+ }
31
+ function printOutError(e, debug) {
32
+ if (axios_1.default.isAxiosError(e)) {
33
+ (0, logger_1.logAxiosError)(e, debug);
34
+ }
35
+ else {
36
+ logger_1.logger.error("Unexpected error", e);
37
+ }
38
+ if (debug) {
39
+ logger_1.logger.debug(e);
40
+ }
41
+ }
42
+ function getConfirmation(message) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const answer = yield inquirer_1.default.prompt([
45
+ {
46
+ type: "confirm",
47
+ name: "confirm",
48
+ message,
49
+ },
50
+ ]);
51
+ return answer.confirm;
52
+ });
53
+ }
54
+ exports.DEFAULT_PAGE_SIZE = -1; // -1 means return all records
55
+ exports.DEFAULT_PAGE = 1;
56
+ exports.MAX_PAGE_SIZE = 500;
57
+ function parsePaginationParams(page, pageSize) {
58
+ // If no page AND no pageSize specified, return all records
59
+ if (page === undefined && pageSize === undefined) {
60
+ logger_1.logger.info("--page-size not passed, returning all records");
61
+ return { limit: -1, offset: 0 };
62
+ }
63
+ // Parse pageSize
64
+ const parsedPageSize = typeof pageSize === "string" ? parseInt(pageSize, 10) : pageSize;
65
+ // If pageSize is explicitly -1, return all records
66
+ if (parsedPageSize === -1) {
67
+ return { limit: -1, offset: 0 };
68
+ }
69
+ // If page OR pageSize is provided, use pagination
70
+ // Default pageSize to 100 when page is provided but pageSize is not
71
+ const effectivePageSize = parsedPageSize !== undefined && !isNaN(parsedPageSize)
72
+ ? parsedPageSize
73
+ : page !== undefined
74
+ ? 100
75
+ : exports.DEFAULT_PAGE_SIZE;
76
+ // If we still have -1 (shouldn't happen, but safety check), return all
77
+ if (effectivePageSize === -1) {
78
+ return { limit: -1, offset: 0 };
79
+ }
80
+ // Use pagination logic
81
+ const parsedPage = typeof page === "string" ? parseInt(page, 10) : page || exports.DEFAULT_PAGE;
82
+ const validPage = Math.max(1, isNaN(parsedPage) ? exports.DEFAULT_PAGE : parsedPage);
83
+ const validPageSize = Math.min(Math.max(1, effectivePageSize), exports.MAX_PAGE_SIZE);
84
+ const offset = (validPage - 1) * validPageSize;
85
+ return {
86
+ limit: validPageSize,
87
+ offset: offset,
88
+ };
89
+ }
90
+ function extractTotalCount(headers) {
91
+ if (!headers || typeof headers !== "object") {
92
+ return undefined;
93
+ }
94
+ const h = headers;
95
+ const candidates = [h["x-total-count"], h["Total-Count"], h["total-count"]];
96
+ for (const totalCountHeader of candidates) {
97
+ if (totalCountHeader == null) {
98
+ continue;
99
+ }
100
+ const raw = Array.isArray(totalCountHeader)
101
+ ? totalCountHeader[0]
102
+ : totalCountHeader;
103
+ const count = parseInt(String(raw), 10);
104
+ if (!isNaN(count)) {
105
+ return count;
106
+ }
107
+ }
108
+ return undefined;
109
+ }
110
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const axios_1 = __importDefault(require("axios"));
49
+ const chai_1 = require("chai");
50
+ const inquirer_1 = __importDefault(require("inquirer"));
51
+ const sinon_1 = __importDefault(require("sinon"));
52
+ const loggerModule = __importStar(require("./logger"));
53
+ const utils_1 = require("./utils");
54
+ describe("utils", () => {
55
+ let sandbox;
56
+ let loggerStub;
57
+ let logAxiosErrorStub;
58
+ beforeEach(() => {
59
+ sandbox = sinon_1.default.createSandbox();
60
+ loggerStub = sandbox.stub(loggerModule.logger);
61
+ logAxiosErrorStub = sandbox.stub(loggerModule, "logAxiosError");
62
+ });
63
+ afterEach(() => {
64
+ sandbox.restore();
65
+ });
66
+ describe("sleep", () => {
67
+ it("should wait for the specified time", function () {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ this.timeout(100);
70
+ const start = Date.now();
71
+ yield (0, utils_1.sleep)(50);
72
+ const elapsed = Date.now() - start;
73
+ (0, chai_1.expect)(elapsed).to.be.at.least(45);
74
+ });
75
+ });
76
+ });
77
+ describe("prettifyJson", () => {
78
+ it("should format JSON with 2-space indentation", () => {
79
+ const obj = { name: "test", value: 123 };
80
+ const result = (0, utils_1.prettifyJson)(obj);
81
+ (0, chai_1.expect)(result).to.equal('{\n "name": "test",\n "value": 123\n}');
82
+ });
83
+ it("should handle empty objects", () => {
84
+ const result = (0, utils_1.prettifyJson)({});
85
+ (0, chai_1.expect)(result).to.equal("{}");
86
+ });
87
+ it("should handle nested objects", () => {
88
+ const obj = { nested: { key: "value" } };
89
+ const result = (0, utils_1.prettifyJson)(obj);
90
+ (0, chai_1.expect)(result).to.include("nested");
91
+ (0, chai_1.expect)(result).to.include("key");
92
+ (0, chai_1.expect)(result).to.include("value");
93
+ });
94
+ });
95
+ describe("printOutError", () => {
96
+ it("should handle axios errors", () => {
97
+ const axiosError = {
98
+ isAxiosError: true,
99
+ response: {
100
+ status: 404,
101
+ data: { message: "Not found" },
102
+ },
103
+ config: {},
104
+ name: "AxiosError",
105
+ message: "Request failed",
106
+ };
107
+ sandbox.stub(axios_1.default, "isAxiosError").returns(true);
108
+ (0, utils_1.printOutError)(axiosError, false);
109
+ (0, chai_1.expect)(logAxiosErrorStub.calledOnce).to.be.true;
110
+ (0, chai_1.expect)(logAxiosErrorStub.firstCall.args[0]).to.equal(axiosError);
111
+ (0, chai_1.expect)(logAxiosErrorStub.firstCall.args[1]).to.equal(false);
112
+ });
113
+ it("should handle non-axios errors", () => {
114
+ const error = new Error("Generic error");
115
+ sandbox.stub(axios_1.default, "isAxiosError").returns(false);
116
+ (0, utils_1.printOutError)(error, false);
117
+ (0, chai_1.expect)(loggerStub.error.calledOnce).to.be.true;
118
+ (0, chai_1.expect)(loggerStub.error.calledWith(sinon_1.default.match("Unexpected error"))).to
119
+ .be.true;
120
+ // Check that error was passed as second argument (Winston accepts Error objects)
121
+ const errorCall = loggerStub.error.getCall(0);
122
+ (0, chai_1.expect)(errorCall.args.length).to.be.at.least(2);
123
+ (0, chai_1.expect)(errorCall.args[1]).to.equal(error);
124
+ });
125
+ it("should log debug info when debug is true", () => {
126
+ const error = new Error("Test error");
127
+ sandbox.stub(axios_1.default, "isAxiosError").returns(false);
128
+ (0, utils_1.printOutError)(error, true);
129
+ (0, chai_1.expect)(loggerStub.debug.calledWith(error)).to.be.true;
130
+ });
131
+ it("should not log debug info when debug is false", () => {
132
+ const error = new Error("Test error");
133
+ sandbox.stub(axios_1.default, "isAxiosError").returns(false);
134
+ (0, utils_1.printOutError)(error, false);
135
+ (0, chai_1.expect)(loggerStub.debug.called).to.be.false;
136
+ });
137
+ });
138
+ describe("getConfirmation", () => {
139
+ it("should return true when user confirms", () => __awaiter(void 0, void 0, void 0, function* () {
140
+ const promptStub = sandbox
141
+ .stub(inquirer_1.default, "prompt")
142
+ .resolves({ confirm: true });
143
+ const result = yield (0, utils_1.getConfirmation)("Are you sure?");
144
+ (0, chai_1.expect)(result).to.be.true;
145
+ (0, chai_1.expect)(promptStub.calledOnce).to.be.true;
146
+ (0, chai_1.expect)(promptStub.firstCall.args[0][0].message).to.equal("Are you sure?");
147
+ }));
148
+ it("should return false when user denies", () => __awaiter(void 0, void 0, void 0, function* () {
149
+ const promptStub = sandbox
150
+ .stub(inquirer_1.default, "prompt")
151
+ .resolves({ confirm: false });
152
+ const result = yield (0, utils_1.getConfirmation)("Are you sure?");
153
+ (0, chai_1.expect)(result).to.be.false;
154
+ (0, chai_1.expect)(promptStub.calledOnce).to.be.true;
155
+ }));
156
+ });
157
+ });
158
+ //# sourceMappingURL=utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../src/utils.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PathType = void 0;
4
+ exports.validatePath = validatePath;
5
+ exports.validateManifest = validateManifest;
6
+ const logger_1 = require("./logger");
7
+ const idRegex = new RegExp("^[a-zA-Z0-9\\-]+$");
8
+ const versionRegex = new RegExp("^[a-zA-Z0-9\\.]+$");
9
+ var PathType;
10
+ (function (PathType) {
11
+ PathType[PathType["Root"] = 0] = "Root";
12
+ PathType[PathType["Package"] = 1] = "Package";
13
+ PathType[PathType["Version"] = 2] = "Version";
14
+ PathType[PathType["Invalid"] = 3] = "Invalid";
15
+ })(PathType || (exports.PathType = PathType = {}));
16
+ function validatePath(path) {
17
+ if (!path.startsWith("/")) {
18
+ return PathType.Invalid;
19
+ }
20
+ const pathParts = path.split("/");
21
+ if (pathParts.length === 2 && !pathParts[1]) {
22
+ return PathType.Root;
23
+ }
24
+ else if (pathParts.length === 2 && idRegex.test(pathParts[1])) {
25
+ return PathType.Package;
26
+ }
27
+ else if (pathParts.length === 3 &&
28
+ idRegex.test(pathParts[1]) &&
29
+ versionRegex.test(pathParts[2])) {
30
+ return PathType.Version;
31
+ }
32
+ else {
33
+ return PathType.Invalid;
34
+ }
35
+ }
36
+ function validateManifest() {
37
+ try {
38
+ // const packageManifestJson = fs.readFileSync("malloy-package.json");
39
+ // const packageManifest = JSON.parse(packageManifestJson.toString());
40
+ // TODO: Validate packageManigfest.
41
+ return true;
42
+ }
43
+ catch (error) {
44
+ let message;
45
+ if (error instanceof Error)
46
+ message = error.message;
47
+ else
48
+ message = String(error);
49
+ logger_1.logger.error("Unable to open and parse manifest: " + message);
50
+ return false;
51
+ }
52
+ }
53
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":";;;AAUA,oCAkBC;AAED,4CAaC;AA3CD,qCAAkC;AAElC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAChD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACrD,IAAY,QAKX;AALD,WAAY,QAAQ;IACjB,uCAAI,CAAA;IACJ,6CAAO,CAAA;IACP,6CAAO,CAAA;IACP,6CAAO,CAAA;AACV,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AACD,SAAgB,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC3B,CAAC;SAAM,IACJ,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAChC,CAAC;QACA,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC3B,CAAC;SAAM,CAAC;QACL,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC3B,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB;IAC7B,IAAI,CAAC;QACF,sEAAsE;QACtE,sEAAsE;QACtE,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACd,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;;YAC/C,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,OAAO,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC;IAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const validator_1 = require("./validator");
5
+ describe("validator", () => {
6
+ describe("validatePath", () => {
7
+ it("should return PathType.Invalid for a path not starting with '/'", () => {
8
+ (0, chai_1.expect)((0, validator_1.validatePath)("invalidPath")).to.equal(validator_1.PathType.Invalid);
9
+ });
10
+ it("should return PathType.Root for '/'", () => {
11
+ (0, chai_1.expect)((0, validator_1.validatePath)("/")).to.equal(validator_1.PathType.Root);
12
+ });
13
+ it("should return PathType.Package for a valid package path", () => {
14
+ (0, chai_1.expect)((0, validator_1.validatePath)("/package123")).to.equal(validator_1.PathType.Package);
15
+ (0, chai_1.expect)((0, validator_1.validatePath)("/abc-def")).to.equal(validator_1.PathType.Package);
16
+ });
17
+ it("should return PathType.Invalid for a package path with invalid characters", () => {
18
+ (0, chai_1.expect)((0, validator_1.validatePath)("/package@123")).to.equal(validator_1.PathType.Invalid);
19
+ });
20
+ it("should return PathType.Version for a valid package and version path", () => {
21
+ (0, chai_1.expect)((0, validator_1.validatePath)("/package123/1.0.0")).to.equal(validator_1.PathType.Version);
22
+ (0, chai_1.expect)((0, validator_1.validatePath)("/abc-def/2.3.4")).to.equal(validator_1.PathType.Version);
23
+ });
24
+ it("should return PathType.Invalid for a version path with invalid characters", () => {
25
+ (0, chai_1.expect)((0, validator_1.validatePath)("/package123/1.0.0-beta")).to.equal(validator_1.PathType.Invalid);
26
+ (0, chai_1.expect)((0, validator_1.validatePath)("/abc-def/2.3.4!")).to.equal(validator_1.PathType.Invalid);
27
+ });
28
+ it("should return PathType.Invalid for a path with too many segments", () => {
29
+ (0, chai_1.expect)((0, validator_1.validatePath)("/package123/1.0.0/extra")).to.equal(validator_1.PathType.Invalid);
30
+ });
31
+ });
32
+ describe("validateManifest", () => {
33
+ it("should return true if manifest validation passes", () => {
34
+ (0, chai_1.expect)((0, validator_1.validateManifest)()).to.be.true;
35
+ });
36
+ // it("should log an error and return false if manifest validation fails", () => {
37
+ // expect(validateManifest()).to.be.false;
38
+ // });
39
+ });
40
+ });
41
+ //# sourceMappingURL=validator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.spec.js","sourceRoot":"","sources":["../src/validator.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,2CAAuE;AAEvE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACxB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;YACxE,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC5C,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAChE,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;YAClF,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;YAC5E,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;YACrE,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;YAClF,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACpD,oBAAQ,CAAC,OAAO,CAClB,CAAC;YACF,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAQ,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YACzE,IAAA,aAAM,EAAC,IAAA,wBAAY,EAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACrD,oBAAQ,CAAC,OAAO,CAClB,CAAC;QACL,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YACzD,IAAA,aAAM,EAAC,IAAA,4BAAgB,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,kFAAkF;QAClF,6CAA6C;QAC7C,MAAM;IACT,CAAC,CAAC,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ FROM node:20-alpine
2
+
3
+ # System dependencies (rarely changes - almost always cached)
4
+ RUN apk add --no-cache bash libc6-compat openjdk21-jre-headless
5
+
6
+ WORKDIR /usr/src/app
7
+
8
+ # Copy dependency files and install (cached unless deps change)
9
+ COPY cli/package.json cli/package-lock.json /usr/src/app/cli/
10
+ WORKDIR /usr/src/app/cli
11
+ RUN npm install
12
+
13
+ # Copy source and APIs (changes per PR but only this layer rebuilds)
14
+ COPY cli /usr/src/app/cli
15
+ COPY apis /usr/src/app/apis
16
+
17
+ WORKDIR /usr/src/app/cli
18
+ CMD [ "tail", "-f", "/dev/null" ]