@credibledata/cred-cli 0.1.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 (170) hide show
  1. package/.eslintrc +33 -0
  2. package/.github/workflows/build.yml +23 -0
  3. package/.mocharc.json +10 -0
  4. package/.prettierignore +1 -0
  5. package/.prettierrc +4 -0
  6. package/README.md +40 -0
  7. package/bun.lock +1259 -0
  8. package/dist/client/api.js +7022 -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 +163 -0
  19. package/dist/clientconfiguration.js.map +1 -0
  20. package/dist/clientconfiguration.spec.js +92 -0
  21. package/dist/clientconfiguration.spec.js.map +1 -0
  22. package/dist/commands/add.js +61 -0
  23. package/dist/commands/add.js.map +1 -0
  24. package/dist/commands/connection/createconnections.js +62 -0
  25. package/dist/commands/connection/createconnections.js.map +1 -0
  26. package/dist/commands/connection/deleteconnection.js +52 -0
  27. package/dist/commands/connection/deleteconnection.js.map +1 -0
  28. package/dist/commands/connection/listconnections.js +44 -0
  29. package/dist/commands/connection/listconnections.js.map +1 -0
  30. package/dist/commands/get.js +28 -0
  31. package/dist/commands/get.js.map +1 -0
  32. package/dist/commands/group/addmember.js +73 -0
  33. package/dist/commands/group/addmember.js.map +1 -0
  34. package/dist/commands/group/creategroup.js +55 -0
  35. package/dist/commands/group/creategroup.js.map +1 -0
  36. package/dist/commands/group/deletegroup.js +48 -0
  37. package/dist/commands/group/deletegroup.js.map +1 -0
  38. package/dist/commands/group/getgroup.js +50 -0
  39. package/dist/commands/group/getgroup.js.map +1 -0
  40. package/dist/commands/group/listgroups.js +56 -0
  41. package/dist/commands/group/listgroups.js.map +1 -0
  42. package/dist/commands/group/removemember.js +68 -0
  43. package/dist/commands/group/removemember.js.map +1 -0
  44. package/dist/commands/groupaccesstoken/createToken.js +49 -0
  45. package/dist/commands/groupaccesstoken/createToken.js.map +1 -0
  46. package/dist/commands/groupaccesstoken/deleteToken.js +24 -0
  47. package/dist/commands/groupaccesstoken/deleteToken.js.map +1 -0
  48. package/dist/commands/groupaccesstoken/groupContainer.js +71 -0
  49. package/dist/commands/groupaccesstoken/groupContainer.js.map +1 -0
  50. package/dist/commands/groupaccesstoken/listTokens.js +25 -0
  51. package/dist/commands/groupaccesstoken/listTokens.js.map +1 -0
  52. package/dist/commands/list.js +68 -0
  53. package/dist/commands/list.js.map +1 -0
  54. package/dist/commands/misc/login.js +166 -0
  55. package/dist/commands/misc/login.js.map +1 -0
  56. package/dist/commands/misc/login.spec.js +138 -0
  57. package/dist/commands/misc/login.spec.js.map +1 -0
  58. package/dist/commands/misc/logout.js +11 -0
  59. package/dist/commands/misc/logout.js.map +1 -0
  60. package/dist/commands/misc/set-access-token.js +27 -0
  61. package/dist/commands/misc/set-access-token.js.map +1 -0
  62. package/dist/commands/package/deletepackage.js +54 -0
  63. package/dist/commands/package/deletepackage.js.map +1 -0
  64. package/dist/commands/package/listpackages.js +52 -0
  65. package/dist/commands/package/listpackages.js.map +1 -0
  66. package/dist/commands/package/publish.js +134 -0
  67. package/dist/commands/package/publish.js.map +1 -0
  68. package/dist/commands/package/updatepackage.js +75 -0
  69. package/dist/commands/package/updatepackage.js.map +1 -0
  70. package/dist/commands/package/updatepackage.spec.js +139 -0
  71. package/dist/commands/package/updatepackage.spec.js.map +1 -0
  72. package/dist/commands/project/createproject.js +65 -0
  73. package/dist/commands/project/createproject.js.map +1 -0
  74. package/dist/commands/project/deleteproject.js +49 -0
  75. package/dist/commands/project/deleteproject.js.map +1 -0
  76. package/dist/commands/project/getproject.js +44 -0
  77. package/dist/commands/project/getproject.js.map +1 -0
  78. package/dist/commands/project/listprojects.js +46 -0
  79. package/dist/commands/project/listprojects.js.map +1 -0
  80. package/dist/commands/project/setproject.js +26 -0
  81. package/dist/commands/project/setproject.js.map +1 -0
  82. package/dist/commands/rm.js +68 -0
  83. package/dist/commands/rm.js.map +1 -0
  84. package/dist/commands/set.js +17 -0
  85. package/dist/commands/set.js.map +1 -0
  86. package/dist/commands/update.js +29 -0
  87. package/dist/commands/update.js.map +1 -0
  88. package/dist/commands/version/archive-unarchive-version.js +79 -0
  89. package/dist/commands/version/archive-unarchive-version.js.map +1 -0
  90. package/dist/commands/version/archive-unarchive-version.spec.js +244 -0
  91. package/dist/commands/version/archive-unarchive-version.spec.js.map +1 -0
  92. package/dist/commands/version/listversions.js +46 -0
  93. package/dist/commands/version/listversions.js.map +1 -0
  94. package/dist/common/UserGroupId.js +112 -0
  95. package/dist/common/UserGroupId.js.map +1 -0
  96. package/dist/constants.js +54 -0
  97. package/dist/constants.js.map +1 -0
  98. package/dist/index.js +137 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/logger.js +77 -0
  101. package/dist/logger.js.map +1 -0
  102. package/dist/polyfills/file.polyfill.js +6 -0
  103. package/dist/polyfills/file.polyfill.js.map +1 -0
  104. package/dist/utils.js +51 -0
  105. package/dist/utils.js.map +1 -0
  106. package/dist/validator.js +53 -0
  107. package/dist/validator.js.map +1 -0
  108. package/dist/validator.spec.js +41 -0
  109. package/dist/validator.spec.js.map +1 -0
  110. package/docker/Dockerfile.ci +10 -0
  111. package/docker-compose.yml +18 -0
  112. package/mocha.setup.ts +4 -0
  113. package/openapitools.json +7 -0
  114. package/package.json +67 -0
  115. package/src/client/.openapi-generator/FILES +8 -0
  116. package/src/client/.openapi-generator/VERSION +1 -0
  117. package/src/client/.openapi-generator-ignore +23 -0
  118. package/src/client/api.ts +8408 -0
  119. package/src/client/base.ts +86 -0
  120. package/src/client/common.ts +150 -0
  121. package/src/client/configuration.ts +110 -0
  122. package/src/client/git_push.sh +57 -0
  123. package/src/client/index.ts +18 -0
  124. package/src/clientconfiguration.spec.ts +116 -0
  125. package/src/clientconfiguration.ts +204 -0
  126. package/src/commands/add.ts +106 -0
  127. package/src/commands/connection/createconnections.ts +67 -0
  128. package/src/commands/connection/deleteconnection.ts +57 -0
  129. package/src/commands/connection/listconnections.ts +39 -0
  130. package/src/commands/get.ts +31 -0
  131. package/src/commands/group/addmember.ts +83 -0
  132. package/src/commands/group/creategroup.ts +54 -0
  133. package/src/commands/group/deletegroup.ts +45 -0
  134. package/src/commands/group/getgroup.ts +47 -0
  135. package/src/commands/group/listgroups.ts +45 -0
  136. package/src/commands/group/removemember.ts +74 -0
  137. package/src/commands/groupaccesstoken/createToken.ts +68 -0
  138. package/src/commands/groupaccesstoken/deleteToken.ts +24 -0
  139. package/src/commands/groupaccesstoken/groupContainer.ts +83 -0
  140. package/src/commands/groupaccesstoken/listTokens.ts +24 -0
  141. package/src/commands/list.ts +90 -0
  142. package/src/commands/misc/login.spec.ts +128 -0
  143. package/src/commands/misc/login.ts +142 -0
  144. package/src/commands/misc/logout.ts +9 -0
  145. package/src/commands/misc/set-access-token.ts +32 -0
  146. package/src/commands/package/deletepackage.ts +58 -0
  147. package/src/commands/package/listpackages.ts +44 -0
  148. package/src/commands/package/publish.ts +179 -0
  149. package/src/commands/package/updatepackage.spec.ts +221 -0
  150. package/src/commands/package/updatepackage.ts +95 -0
  151. package/src/commands/project/createproject.ts +59 -0
  152. package/src/commands/project/deleteproject.ts +48 -0
  153. package/src/commands/project/getproject.ts +43 -0
  154. package/src/commands/project/listprojects.ts +36 -0
  155. package/src/commands/project/setproject.ts +14 -0
  156. package/src/commands/rm.ts +106 -0
  157. package/src/commands/set.ts +16 -0
  158. package/src/commands/update.ts +41 -0
  159. package/src/commands/version/archive-unarchive-version.spec.ts +456 -0
  160. package/src/commands/version/archive-unarchive-version.ts +111 -0
  161. package/src/commands/version/listversions.ts +45 -0
  162. package/src/common/UserGroupId.ts +137 -0
  163. package/src/constants.ts +70 -0
  164. package/src/index.ts +183 -0
  165. package/src/logger.ts +86 -0
  166. package/src/polyfills/file.polyfill.ts +5 -0
  167. package/src/utils.ts +34 -0
  168. package/src/validator.spec.ts +51 -0
  169. package/src/validator.ts +44 -0
  170. package/tsconfig.json +20 -0
@@ -0,0 +1,46 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.listVersions = listVersions;
13
+ const api_1 = require("../../client/api");
14
+ const configuration_1 = require("../../client/configuration");
15
+ const clientconfiguration_1 = require("../../clientconfiguration");
16
+ const logger_1 = require("../../logger");
17
+ const utils_1 = require("../../utils");
18
+ const versionsApi = new api_1.VersionsApi(new configuration_1.Configuration());
19
+ function listVersions(controlPlane, packagePath, debug) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ const clientConfig = new clientconfiguration_1.ClientConfiguration();
22
+ const organizationName = clientConfig.getOrganization();
23
+ const projectName = clientConfig.getProject();
24
+ if (!clientConfig.doesConfigExists()) {
25
+ logger_1.logger.error("Please, make sure that you are logged in");
26
+ return;
27
+ }
28
+ if (!projectName) {
29
+ logger_1.logger.error("Please, make sure to set a project");
30
+ return;
31
+ }
32
+ try {
33
+ const packageName = packagePath.replace("/", "");
34
+ const response = yield versionsApi.listVersions(organizationName, projectName, packageName, {
35
+ baseURL: controlPlane,
36
+ headers: clientConfig.getHeaders(),
37
+ });
38
+ console.log((0, utils_1.prettifyJson)(response.data));
39
+ }
40
+ catch (e) {
41
+ logger_1.logger.error("Failed to list versions");
42
+ (0, utils_1.printOutError)(e, debug);
43
+ }
44
+ });
45
+ }
46
+ //# sourceMappingURL=listversions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listversions.js","sourceRoot":"","sources":["../../../src/commands/version/listversions.ts"],"names":[],"mappings":";;;;;;;;;;;AAQA,oCAoCC;AA5CD,0CAA+C;AAC/C,8DAA2D;AAC3D,mEAAgE;AAChE,yCAAsC;AACtC,uCAA0D;AAE1D,MAAM,WAAW,GAAG,IAAI,iBAAW,CAAC,IAAI,6BAAa,EAAE,CAAC,CAAC;AAEzD,SAAsB,YAAY,CAC/B,YAAoB,EACpB,WAAmB,EACnB,KAAc;;QAEd,MAAM,YAAY,GAAG,IAAI,yCAAmB,EAAE,CAAC;QAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;QACxD,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACpC,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,OAAO;QACV,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YAChB,eAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACnD,OAAO;QACV,CAAC;QAED,IAAI,CAAC;YACF,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,YAAY,CAC5C,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX;gBACG,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE;aACpC,CACH,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAY,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACV,eAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,IAAA,qBAAa,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;IACJ,CAAC;CAAA"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserGroupId = exports.ResourceType = void 0;
4
+ /**
5
+ * Enum representing the different types of user/group resources.
6
+ */
7
+ var ResourceType;
8
+ (function (ResourceType) {
9
+ ResourceType["USER"] = "USER";
10
+ ResourceType["GROUP"] = "GROUP";
11
+ })(ResourceType || (exports.ResourceType = ResourceType = {}));
12
+ /**
13
+ * Represents a user or group identifier in the format 'user:userId' or 'group:groupId'.
14
+ * This class parses the input string and provides methods to extract the
15
+ * resource type and name.
16
+ */
17
+ class UserGroupId {
18
+ static forPublicAccess() {
19
+ return new UserGroupId(`user:*`);
20
+ }
21
+ static forUser(userName) {
22
+ if (!userName) {
23
+ throw new Error("User name cannot be undefined");
24
+ }
25
+ return new UserGroupId(`user:${userName}`);
26
+ }
27
+ static forGroup(groupName) {
28
+ return new UserGroupId(`group:${groupName}`);
29
+ }
30
+ /**
31
+ * Creates a UserGroupId from a string in the format 'user:userId' or 'group:groupId'.
32
+ *
33
+ * @param value the string to parse
34
+ * @throws BadRequestException if the format is invalid
35
+ */
36
+ constructor(value) {
37
+ if (!value || value.trim().length === 0) {
38
+ throw new Error("UserGroupId cannot be null or empty");
39
+ }
40
+ this.originalValue = value.trim();
41
+ if (!this.originalValue.match(/^(user:[^:]+|group:[^:]+)$/)) {
42
+ throw new Error(`Invalid UserGroupId format. Expected 'user:userId' or 'group:groupId', got: ${this.originalValue}`);
43
+ }
44
+ const parts = this.originalValue.split(":", 2);
45
+ const typeStr = parts[0];
46
+ const name = parts[1];
47
+ if (!name || name.length === 0) {
48
+ throw new Error(`UserGroupId name cannot be empty. Expected 'user:userId' or 'group:groupId', got: ${this.originalValue}`);
49
+ }
50
+ switch (typeStr) {
51
+ case "user":
52
+ this.resourceType = ResourceType.USER;
53
+ break;
54
+ case "group":
55
+ this.resourceType = ResourceType.GROUP;
56
+ break;
57
+ default:
58
+ throw new Error(`Invalid UserGroupId type. Expected 'user' or 'group', got: ${typeStr}`);
59
+ }
60
+ this.resourceName = name;
61
+ }
62
+ /**
63
+ * Creates a UserGroupId from resource type and name.
64
+ *
65
+ * @param resourceType the resource type
66
+ * @param userName the user or group name
67
+ */
68
+ static create(resourceType, userName) {
69
+ return new UserGroupId(`${resourceType.toLowerCase()}:${userName}`);
70
+ }
71
+ /**
72
+ * Returns the resource type (USER or GROUP).
73
+ *
74
+ * @return the resource type
75
+ */
76
+ getResourceType() {
77
+ return this.resourceType;
78
+ }
79
+ /**
80
+ * Returns the resource name (the part after the colon).
81
+ *
82
+ * @return the resource name
83
+ */
84
+ getResourceName() {
85
+ return this.resourceName;
86
+ }
87
+ /**
88
+ * Returns the original string value.
89
+ *
90
+ * @return the original string value
91
+ */
92
+ getValue() {
93
+ return this.originalValue;
94
+ }
95
+ toString() {
96
+ return this.originalValue;
97
+ }
98
+ /**
99
+ * Custom JSON serialization method for axios/openapi.
100
+ * This ensures UserGroupId is serialized as a string (originalValue) instead of an object.
101
+ *
102
+ * @return the original string value for JSON serialization
103
+ */
104
+ toJSON() {
105
+ return this.originalValue;
106
+ }
107
+ isPublicAccess() {
108
+ return (this.resourceType === ResourceType.USER && this.originalValue === "*");
109
+ }
110
+ }
111
+ exports.UserGroupId = UserGroupId;
112
+ //# sourceMappingURL=UserGroupId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserGroupId.js","sourceRoot":"","sources":["../../src/common/UserGroupId.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASCII_TITLE = exports.LOGIN_TIMEOUT_MS = exports.DAY = exports.HOUR = exports.MINUTE = exports.SECOND = exports.auth0ConfigsByEnv = exports.controlPlanesByEnv = void 0;
4
+ exports.controlPlanesByEnv = {
5
+ production: "https://admin.ms2.co/api/v0",
6
+ dev: "https://dev-admin.ms2.co/api/v0",
7
+ staging: "https://staging-admin.ms2.co/api/v0",
8
+ localhost: "http://admin.ms2.localhost/api/v0",
9
+ "e2e-test": "http://admin.ms2.localhost/api/v0",
10
+ };
11
+ exports.auth0ConfigsByEnv = {
12
+ production: {
13
+ domain: "https://ms2data.us.auth0.com",
14
+ clientId: "ge8JL5TJNwqy7bygAaJkD92KdluqEZgO",
15
+ audience: "https://ms2data.us.auth0.com/api/v2/",
16
+ },
17
+ dev: {
18
+ domain: "https://dev-ohaafogw5p8uyx1m.us.auth0.com",
19
+ clientId: "rr6mzJNj9b104MjCc9xWKPPehq1MJx0L",
20
+ audience: "https://dev-ohaafogw5p8uyx1m.us.auth0.com/api/v2/",
21
+ },
22
+ staging: {
23
+ domain: "https://dev-ohaafogw5p8uyx1m.us.auth0.com",
24
+ clientId: "rr6mzJNj9b104MjCc9xWKPPehq1MJx0L",
25
+ audience: "https://dev-ohaafogw5p8uyx1m.us.auth0.com/api/v2/",
26
+ },
27
+ localhost: {
28
+ domain: "https://dev-ohaafogw5p8uyx1m.us.auth0.com",
29
+ clientId: "rr6mzJNj9b104MjCc9xWKPPehq1MJx0L",
30
+ audience: "https://dev-ohaafogw5p8uyx1m.us.auth0.com/api/v2/",
31
+ },
32
+ "e2e-test": {
33
+ domain: "https://dev-ohaafogw5p8uyx1m.us.auth0.com",
34
+ clientId: "atd8n8dEiGUiNRM7Geuvg41fi5s8ZKqY",
35
+ clientSecret: "ZrEvs86WLqKO9EPp4y_cOvUn3NQT1qc3XC8111f6DBt9oyaclV5sWHz6Nkyo_bEF",
36
+ audience: "https://dev-ohaafogw5p8uyx1m.us.auth0.com/api/v2/",
37
+ },
38
+ };
39
+ // Time constants in ms
40
+ exports.SECOND = 1000;
41
+ exports.MINUTE = exports.SECOND * 60;
42
+ exports.HOUR = exports.MINUTE * 60;
43
+ exports.DAY = exports.HOUR * 24;
44
+ // Login related
45
+ exports.LOGIN_TIMEOUT_MS = exports.MINUTE * 5;
46
+ exports.ASCII_TITLE = `
47
+ _____ _ _ _ _ _____ _ _____
48
+ / ____| | (_) | | | / ____| | |_ _|
49
+ | | _ __ ___ __| |_| |__ | | ___ | | | | | |
50
+ | | | '__/ _ \\/ _\` | | '_ \\| |/ _ \\ | | | | | |
51
+ | |____| | | __/ (_| | | |_) | | __/ | |____| |____ _| |_
52
+ \\_____|_| \\___|\\__,_|_|_.__/|_|\\___| \\_____|______|_____|
53
+ `;
54
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAOa,QAAA,kBAAkB,GAAgC;IAC5D,UAAU,EAAE,6BAA6B;IACzC,GAAG,EAAE,iCAAiC;IACtC,OAAO,EAAE,qCAAqC;IAC9C,SAAS,EAAE,mCAAmC;IAC9C,UAAU,EAAE,mCAAmC;CACjD,CAAC;AAEW,QAAA,iBAAiB,GAQ1B;IACD,UAAU,EAAE;QACT,MAAM,EAAE,8BAA8B;QACtC,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,sCAAsC;KAClD;IACD,GAAG,EAAE;QACF,MAAM,EAAE,2CAA2C;QACnD,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,mDAAmD;KAC/D;IACD,OAAO,EAAE;QACN,MAAM,EAAE,2CAA2C;QACnD,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,mDAAmD;KAC/D;IACD,SAAS,EAAE;QACR,MAAM,EAAE,2CAA2C;QACnD,QAAQ,EAAE,kCAAkC;QAC5C,QAAQ,EAAE,mDAAmD;KAC/D;IACD,UAAU,EAAE;QACT,MAAM,EAAE,2CAA2C;QACnD,QAAQ,EAAE,kCAAkC;QAC5C,YAAY,EACT,kEAAkE;QACrE,QAAQ,EAAE,mDAAmD;KAC/D;CACH,CAAC;AAEF,uBAAuB;AACV,QAAA,MAAM,GAAG,IAAI,CAAC;AACd,QAAA,MAAM,GAAG,cAAM,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,GAAG,cAAM,GAAG,EAAE,CAAC;AACnB,QAAA,GAAG,GAAG,YAAI,GAAG,EAAE,CAAC;AAE7B,gBAAgB;AACH,QAAA,gBAAgB,GAAG,cAAM,GAAG,CAAC,CAAC;AAE9B,QAAA,WAAW,GAAG;;;;;;;CAO1B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const axios_1 = __importDefault(require("axios"));
17
+ const commander_1 = require("commander");
18
+ const kleur_1 = __importDefault(require("kleur"));
19
+ const omelette_1 = __importDefault(require("omelette"));
20
+ const package_json_1 = __importDefault(require("../package.json"));
21
+ const clientconfiguration_1 = require("./clientconfiguration");
22
+ const add_1 = require("./commands/add");
23
+ const get_1 = require("./commands/get");
24
+ const list_1 = require("./commands/list");
25
+ const login_1 = require("./commands/misc/login");
26
+ const logout_1 = require("./commands/misc/logout");
27
+ const set_access_token_1 = require("./commands/misc/set-access-token");
28
+ const listpackages_1 = require("./commands/package/listpackages");
29
+ const publish_1 = require("./commands/package/publish");
30
+ const listprojects_1 = require("./commands/project/listprojects");
31
+ const rm_1 = require("./commands/rm");
32
+ const set_1 = require("./commands/set");
33
+ const update_1 = require("./commands/update");
34
+ const archive_unarchive_version_1 = require("./commands/version/archive-unarchive-version");
35
+ const constants_1 = require("./constants");
36
+ const clientConfig = new clientconfiguration_1.ClientConfiguration();
37
+ const activeEnvironment = clientConfig.getEnvironment();
38
+ axios_1.default.defaults.baseURL = constants_1.controlPlanesByEnv[activeEnvironment];
39
+ const cli = commander_1.program
40
+ .version(package_json_1.default.version)
41
+ .description(kleur_1.default.green(constants_1.ASCII_TITLE));
42
+ // Nested CRUD commands for resource management
43
+ (0, get_1.registerGetCommands)(cli, activeEnvironment);
44
+ (0, list_1.registerListCommands)(cli, activeEnvironment);
45
+ (0, update_1.registerUpdateCommands)(cli, activeEnvironment);
46
+ (0, rm_1.registerRmCommands)(cli, activeEnvironment);
47
+ (0, add_1.registerAddCommands)(cli, activeEnvironment);
48
+ (0, set_1.registerSetCommands)(cli);
49
+ // Root commands
50
+ cli.command("publish")
51
+ .description("Publish a new version of the package.")
52
+ .option("--debug")
53
+ .option("-y, --yes", "Skip confirmation.")
54
+ .option("--replication <replication_count>", "The number of replicas to create.", (v) => (v === undefined ? undefined : parseInt(v)), undefined)
55
+ .option("--set-latest", "Set this version as the latest version of the package.", false)
56
+ .action((options) => {
57
+ (0, publish_1.publish)(constants_1.controlPlanesByEnv[activeEnvironment], options.replicationCount, options.debug, options.yes, options.setLatest);
58
+ });
59
+ cli.command("archive")
60
+ .description("Archive a version of a package.")
61
+ .argument("<packageName>", "The name of the package to archive the version of.")
62
+ .argument("<versionId>", "The id of the version to archive.")
63
+ .option("--debug")
64
+ .option("-y, --yes", "Skip confirmation.")
65
+ .action((packageName, versionId, options) => {
66
+ (0, archive_unarchive_version_1.archiveVersion)(constants_1.controlPlanesByEnv[activeEnvironment], packageName, versionId, options.debug, options.yes);
67
+ });
68
+ cli.command("unarchive")
69
+ .description("Unarchive a version of a package.")
70
+ .argument("<packageName>", "The name of the package to unarchive the version of.")
71
+ .argument("<versionId>", "The id of the version to unarchive.")
72
+ .option("--debug")
73
+ .option("-y, --yes", "Skip confirmation.")
74
+ .action((packageName, versionId, options) => {
75
+ (0, archive_unarchive_version_1.unarchiveVersion)(constants_1.controlPlanesByEnv[activeEnvironment], packageName, versionId, options.debug, options.yes);
76
+ });
77
+ cli.command("login")
78
+ .description("Login into Credible service.")
79
+ .argument("<organizationName>", "The organization to login to.")
80
+ .action((organizationName) => {
81
+ (0, login_1.login)(organizationName);
82
+ });
83
+ cli.command("logout")
84
+ .description("Resets Credible service credentials")
85
+ .action(logout_1.logout);
86
+ cli.command("set-access-token")
87
+ .description("Set a service account JWT token for CLI authentication")
88
+ .argument("<jwtToken>", "The JWT token to use for authentication")
89
+ .option("-o, --organization <organizationName>", "Organization name to set")
90
+ .action((jwtToken, options) => {
91
+ (0, set_access_token_1.setAccessToken)(jwtToken, options.organization);
92
+ });
93
+ cli.command("status")
94
+ .description("Shows the currently active organization and project.")
95
+ .action(() => {
96
+ const config = new clientconfiguration_1.ClientConfiguration();
97
+ config.printStatus();
98
+ });
99
+ const complete = (0, omelette_1.default)("cred").tree({
100
+ // CRUD commands
101
+ get: ["project", "group"],
102
+ ls: ["project", "connection", "package", "version", "group", "group-access-token"],
103
+ update: ["package"],
104
+ rm: ["project", "connection", "package", "group", "member", "group-access-token"],
105
+ add: ["project", "connection", "group", "member", "group-access-token"],
106
+ // Misc commands
107
+ set: ["project"],
108
+ login: [],
109
+ logout: [],
110
+ "set-access-token": [],
111
+ status: [],
112
+ publish: [],
113
+ archive: [],
114
+ unarchive: [],
115
+ });
116
+ complete.onAsync("$3", (_a) => __awaiter(void 0, [_a], void 0, function* ({ reply, line }) {
117
+ const projectRelatedCommands = ["set project", "get project", "rm project"];
118
+ if (projectRelatedCommands.some((cmd) => line.includes(cmd))) {
119
+ reply((0, listprojects_1.listProjects)(constants_1.controlPlanesByEnv[activeEnvironment], false).then((projects) => projects.map((project) => project.name)));
120
+ }
121
+ const packageRelatedCommands = ["rm package", "ls version"];
122
+ if (packageRelatedCommands.some((cmd) => line.includes(cmd))) {
123
+ reply((0, listpackages_1.listPackages)(constants_1.controlPlanesByEnv[activeEnvironment], false).then((packages) => packages.map((_package) => _package.name)));
124
+ }
125
+ }));
126
+ complete.next(() => {
127
+ commander_1.program.parse(process.argv);
128
+ });
129
+ if (~process.argv.indexOf("--cleanup")) {
130
+ complete.cleanupShellInitFile();
131
+ }
132
+ if (~process.argv.indexOf("--install")) {
133
+ complete.setupShellInitFile();
134
+ console.log("CLI installed successfully!");
135
+ }
136
+ complete.init();
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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,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":";;AAEA,wDAAwD;AACxD,8DAA8D;AAC9D,8DAA8D"}
package/dist/utils.js ADDED
@@ -0,0 +1,51 @@
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.sleep = sleep;
16
+ exports.prettifyJson = prettifyJson;
17
+ exports.printOutError = printOutError;
18
+ exports.getConfirmation = getConfirmation;
19
+ const axios_1 = __importDefault(require("axios"));
20
+ const inquirer_1 = __importDefault(require("inquirer"));
21
+ const logger_1 = require("./logger");
22
+ function sleep(time_in_ms) {
23
+ return new Promise((resolve) => setTimeout(resolve, time_in_ms));
24
+ }
25
+ function prettifyJson(payload) {
26
+ return JSON.stringify(payload, null, 2);
27
+ }
28
+ function printOutError(e, debug) {
29
+ if (axios_1.default.isAxiosError(e)) {
30
+ (0, logger_1.logAxiosError)(e, debug);
31
+ }
32
+ else {
33
+ logger_1.logger.error("Unexpected error", e);
34
+ }
35
+ if (debug) {
36
+ logger_1.logger.debug(e);
37
+ }
38
+ }
39
+ function getConfirmation(message) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const answer = yield inquirer_1.default.prompt([
42
+ {
43
+ type: "confirm",
44
+ name: "confirm",
45
+ message,
46
+ },
47
+ ]);
48
+ return answer.confirm;
49
+ });
50
+ }
51
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,sBAEC;AAED,oCAEC;AAED,sCAUC;AAED,0CASC;AAjCD,kDAA0B;AAC1B,wDAAgC;AAChC,qCAAiD;AAEjD,SAAgB,KAAK,CAAC,UAAkB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,aAAa,CAAC,CAAQ,EAAE,KAAc;IACnD,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,IAAA,sBAAa,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACL,eAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACT,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACJ,CAAC;AAED,SAAsB,eAAe,CAAC,OAAe;;QAClD,MAAM,MAAM,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YAClC;gBACG,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO;aACT;SACH,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;IACzB,CAAC;CAAA"}
@@ -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,10 @@
1
+ FROM node:20-alpine
2
+
3
+ RUN apk add bash
4
+ RUN apk add libc6-compat
5
+
6
+ WORKDIR /usr/src/app
7
+ COPY . /usr/src/app
8
+ WORKDIR /usr/src/app/cli
9
+
10
+ CMD [ "tail", "-f", "/dev/null" ]