@cloud-copilot/iam-collect 0.1.1 → 0.1.3

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 (202) hide show
  1. package/README.md +28 -6
  2. package/dist/cjs/aws/ClientPool.d.ts +27 -0
  3. package/dist/cjs/aws/ClientPool.d.ts.map +1 -0
  4. package/dist/cjs/aws/ClientPool.js +52 -0
  5. package/dist/cjs/aws/ClientPool.js.map +1 -0
  6. package/dist/cjs/aws/auth.d.ts +16 -0
  7. package/dist/cjs/aws/auth.d.ts.map +1 -0
  8. package/dist/cjs/aws/auth.js +76 -0
  9. package/dist/cjs/aws/auth.js.map +1 -0
  10. package/dist/cjs/cli.js +46 -8
  11. package/dist/cjs/cli.js.map +1 -1
  12. package/dist/cjs/config/config.d.ts +23 -12
  13. package/dist/cjs/config/config.d.ts.map +1 -1
  14. package/dist/cjs/config/config.js +52 -7
  15. package/dist/cjs/config/config.js.map +1 -1
  16. package/dist/cjs/config/configFile.d.ts +16 -0
  17. package/dist/cjs/config/configFile.d.ts.map +1 -0
  18. package/dist/cjs/config/configFile.js +49 -0
  19. package/dist/cjs/config/configFile.js.map +1 -0
  20. package/dist/cjs/config/defaultConfig.d.ts +1 -1
  21. package/dist/cjs/config/defaultConfig.d.ts.map +1 -1
  22. package/dist/cjs/config/defaultConfig.js +43 -6
  23. package/dist/cjs/config/defaultConfig.js.map +1 -1
  24. package/dist/cjs/config/packageVersion.d.ts +1 -1
  25. package/dist/cjs/config/packageVersion.d.ts.map +1 -1
  26. package/dist/cjs/config/packageVersion.js +2 -2
  27. package/dist/cjs/config/packageVersion.js.map +1 -1
  28. package/dist/cjs/download/download.d.ts +3 -0
  29. package/dist/cjs/download/download.d.ts.map +1 -0
  30. package/dist/cjs/download/download.js +67 -0
  31. package/dist/cjs/download/download.js.map +1 -0
  32. package/dist/cjs/persistence/AwsIamStore.d.ts +95 -0
  33. package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -0
  34. package/dist/cjs/persistence/AwsIamStore.js +3 -0
  35. package/dist/cjs/persistence/AwsIamStore.js.map +1 -0
  36. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +20 -0
  37. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  38. package/dist/cjs/persistence/file/FileSystemAdapter.js +77 -0
  39. package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -0
  40. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  41. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  42. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +96 -0
  43. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  44. package/dist/cjs/persistence/util.d.ts +28 -0
  45. package/dist/cjs/persistence/util.d.ts.map +1 -0
  46. package/dist/cjs/persistence/util.js +46 -0
  47. package/dist/cjs/persistence/util.js.map +1 -0
  48. package/dist/cjs/regions.d.ts +3 -0
  49. package/dist/cjs/regions.d.ts.map +1 -0
  50. package/dist/cjs/regions.js +15 -0
  51. package/dist/cjs/regions.js.map +1 -0
  52. package/dist/cjs/services.d.ts +3 -0
  53. package/dist/cjs/services.d.ts.map +1 -0
  54. package/dist/cjs/services.js +5 -0
  55. package/dist/cjs/services.js.map +1 -0
  56. package/dist/cjs/syncs/iam/authorizationDetails.d.ts +104 -0
  57. package/dist/cjs/syncs/iam/authorizationDetails.d.ts.map +1 -0
  58. package/dist/cjs/syncs/iam/authorizationDetails.js +490 -0
  59. package/dist/cjs/syncs/iam/authorizationDetails.js.map +1 -0
  60. package/dist/cjs/syncs/lambda/lambda.d.ts +3 -0
  61. package/dist/cjs/syncs/lambda/lambda.d.ts.map +1 -0
  62. package/dist/cjs/syncs/lambda/lambda.js +54 -0
  63. package/dist/cjs/syncs/lambda/lambda.js.map +1 -0
  64. package/dist/cjs/syncs/sync.d.ts +27 -0
  65. package/dist/cjs/syncs/sync.d.ts.map +1 -0
  66. package/dist/cjs/syncs/sync.js +16 -0
  67. package/dist/cjs/syncs/sync.js.map +1 -0
  68. package/dist/cjs/syncs/syncMap.d.ts +17 -0
  69. package/dist/cjs/syncs/syncMap.d.ts.map +1 -0
  70. package/dist/cjs/syncs/syncMap.js +51 -0
  71. package/dist/cjs/syncs/syncMap.js.map +1 -0
  72. package/dist/cjs/utils/arn.d.ts +26 -0
  73. package/dist/cjs/utils/arn.d.ts.map +1 -0
  74. package/dist/cjs/utils/arn.js +60 -0
  75. package/dist/cjs/utils/arn.js.map +1 -0
  76. package/dist/cjs/utils/client-tools.d.ts +15 -0
  77. package/dist/cjs/utils/client-tools.d.ts.map +1 -0
  78. package/dist/cjs/utils/client-tools.js +42 -0
  79. package/dist/cjs/utils/client-tools.js.map +1 -0
  80. package/dist/cjs/utils/strings.d.ts +8 -0
  81. package/dist/cjs/utils/strings.d.ts.map +1 -0
  82. package/dist/cjs/utils/strings.js +19 -0
  83. package/dist/cjs/utils/strings.js.map +1 -0
  84. package/dist/cjs/utils/types.d.ts +2 -0
  85. package/dist/cjs/utils/types.d.ts.map +1 -0
  86. package/dist/cjs/utils/types.js +7 -0
  87. package/dist/cjs/utils/types.js.map +1 -0
  88. package/dist/esm/aws/ClientPool.d.ts +27 -0
  89. package/dist/esm/aws/ClientPool.d.ts.map +1 -0
  90. package/dist/esm/aws/ClientPool.js +50 -0
  91. package/dist/esm/aws/ClientPool.js.map +1 -0
  92. package/dist/esm/aws/auth.d.ts +16 -0
  93. package/dist/esm/aws/auth.d.ts.map +1 -0
  94. package/dist/esm/aws/auth.js +71 -0
  95. package/dist/esm/aws/auth.js.map +1 -0
  96. package/dist/esm/cli.js +46 -8
  97. package/dist/esm/cli.js.map +1 -1
  98. package/dist/esm/config/config.d.ts +23 -12
  99. package/dist/esm/config/config.d.ts.map +1 -1
  100. package/dist/esm/config/config.js +50 -7
  101. package/dist/esm/config/config.js.map +1 -1
  102. package/dist/esm/config/configFile.d.ts +16 -0
  103. package/dist/esm/config/configFile.d.ts.map +1 -0
  104. package/dist/esm/config/configFile.js +45 -0
  105. package/dist/esm/config/configFile.js.map +1 -0
  106. package/dist/esm/config/defaultConfig.d.ts +1 -1
  107. package/dist/esm/config/defaultConfig.d.ts.map +1 -1
  108. package/dist/esm/config/defaultConfig.js +44 -7
  109. package/dist/esm/config/defaultConfig.js.map +1 -1
  110. package/dist/esm/config/packageVersion.d.ts +1 -1
  111. package/dist/esm/config/packageVersion.d.ts.map +1 -1
  112. package/dist/esm/config/packageVersion.js +1 -1
  113. package/dist/esm/config/packageVersion.js.map +1 -1
  114. package/dist/esm/download/download.d.ts +3 -0
  115. package/dist/esm/download/download.d.ts.map +1 -0
  116. package/dist/esm/download/download.js +64 -0
  117. package/dist/esm/download/download.js.map +1 -0
  118. package/dist/esm/persistence/AwsIamStore.d.ts +95 -0
  119. package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -0
  120. package/dist/esm/persistence/AwsIamStore.js +2 -0
  121. package/dist/esm/persistence/AwsIamStore.js.map +1 -0
  122. package/dist/esm/persistence/file/FileSystemAdapter.d.ts +20 -0
  123. package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -0
  124. package/dist/esm/persistence/file/FileSystemAdapter.js +73 -0
  125. package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -0
  126. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +19 -0
  127. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -0
  128. package/dist/esm/persistence/file/FileSystemAwsIamStore.js +89 -0
  129. package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -0
  130. package/dist/esm/persistence/util.d.ts +28 -0
  131. package/dist/esm/persistence/util.d.ts.map +1 -0
  132. package/dist/esm/persistence/util.js +41 -0
  133. package/dist/esm/persistence/util.js.map +1 -0
  134. package/dist/esm/regions.d.ts +3 -0
  135. package/dist/esm/regions.d.ts.map +1 -0
  136. package/dist/esm/regions.js +12 -0
  137. package/dist/esm/regions.js.map +1 -0
  138. package/dist/esm/services.d.ts +3 -0
  139. package/dist/esm/services.d.ts.map +1 -0
  140. package/dist/esm/services.js +2 -0
  141. package/dist/esm/services.js.map +1 -0
  142. package/dist/esm/syncs/iam/authorizationDetails.d.ts +104 -0
  143. package/dist/esm/syncs/iam/authorizationDetails.d.ts.map +1 -0
  144. package/dist/esm/syncs/iam/authorizationDetails.js +478 -0
  145. package/dist/esm/syncs/iam/authorizationDetails.js.map +1 -0
  146. package/dist/esm/syncs/lambda/lambda.d.ts +3 -0
  147. package/dist/esm/syncs/lambda/lambda.d.ts.map +1 -0
  148. package/dist/esm/syncs/lambda/lambda.js +51 -0
  149. package/dist/esm/syncs/lambda/lambda.js.map +1 -0
  150. package/dist/esm/syncs/sync.d.ts +27 -0
  151. package/dist/esm/syncs/sync.d.ts.map +1 -0
  152. package/dist/esm/syncs/sync.js +13 -0
  153. package/dist/esm/syncs/sync.js.map +1 -0
  154. package/dist/esm/syncs/syncMap.d.ts +17 -0
  155. package/dist/esm/syncs/syncMap.d.ts.map +1 -0
  156. package/dist/esm/syncs/syncMap.js +47 -0
  157. package/dist/esm/syncs/syncMap.js.map +1 -0
  158. package/dist/esm/utils/arn.d.ts +26 -0
  159. package/dist/esm/utils/arn.d.ts.map +1 -0
  160. package/dist/esm/utils/arn.js +56 -0
  161. package/dist/esm/utils/arn.js.map +1 -0
  162. package/dist/esm/utils/client-tools.d.ts +15 -0
  163. package/dist/esm/utils/client-tools.d.ts.map +1 -0
  164. package/dist/esm/utils/client-tools.js +38 -0
  165. package/dist/esm/utils/client-tools.js.map +1 -0
  166. package/dist/esm/utils/strings.d.ts +8 -0
  167. package/dist/esm/utils/strings.d.ts.map +1 -0
  168. package/dist/esm/utils/strings.js +16 -0
  169. package/dist/esm/utils/strings.js.map +1 -0
  170. package/dist/esm/utils/types.d.ts +2 -0
  171. package/dist/esm/utils/types.d.ts.map +1 -0
  172. package/dist/esm/utils/types.js +4 -0
  173. package/dist/esm/utils/types.js.map +1 -0
  174. package/package.json +81 -4
  175. package/dist/cjs/cli2.d.ts +0 -63
  176. package/dist/cjs/cli2.d.ts.map +0 -1
  177. package/dist/cjs/cli2.js +0 -41
  178. package/dist/cjs/cli2.js.map +0 -1
  179. package/dist/cjs/cli3.d.ts +0 -63
  180. package/dist/cjs/cli3.d.ts.map +0 -1
  181. package/dist/cjs/cli3.js +0 -41
  182. package/dist/cjs/cli3.js.map +0 -1
  183. package/dist/cjs/cliUtils.d.ts +0 -13
  184. package/dist/cjs/cliUtils.d.ts.map +0 -1
  185. package/dist/cjs/cliUtils.js +0 -43
  186. package/dist/cjs/cliUtils.js.map +0 -1
  187. package/dist/cjs/showHelp.d.ts +0 -2
  188. package/dist/cjs/showHelp.d.ts.map +0 -1
  189. package/dist/cjs/showHelp.js +0 -33
  190. package/dist/cjs/showHelp.js.map +0 -1
  191. package/dist/cjs/utils.d.ts +0 -8
  192. package/dist/cjs/utils.d.ts.map +0 -1
  193. package/dist/cjs/utils.js +0 -21
  194. package/dist/cjs/utils.js.map +0 -1
  195. package/dist/esm/cliUtils.d.ts +0 -13
  196. package/dist/esm/cliUtils.d.ts.map +0 -1
  197. package/dist/esm/cliUtils.js +0 -40
  198. package/dist/esm/cliUtils.js.map +0 -1
  199. package/dist/esm/utils.d.ts +0 -8
  200. package/dist/esm/utils.d.ts.map +0 -1
  201. package/dist/esm/utils.js +0 -18
  202. package/dist/esm/utils.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ import { AuthorizationDetailsSync } from './iam/authorizationDetails.js';
2
+ import { LambdaSync } from './lambda/lambda.js';
3
+ const allSyncs = [AuthorizationDetailsSync, LambdaSync];
4
+ const syncMap = new Map();
5
+ for (const sync of allSyncs) {
6
+ const service = sync.awsService;
7
+ if (!syncMap.has(service)) {
8
+ syncMap.set(service, {
9
+ regional: [],
10
+ global: []
11
+ });
12
+ }
13
+ const syncs = syncMap.get(service);
14
+ if (sync.global) {
15
+ syncs.global.push(sync);
16
+ }
17
+ else {
18
+ syncs.regional.push(sync);
19
+ }
20
+ }
21
+ /**
22
+ * Get the global syncs for a given AWS service.
23
+ *
24
+ * @param service The AWS service to get the syncs for
25
+ * @returns An array of syncs that are global for the specified service.
26
+ */
27
+ export function getGlobalSyncsForService(service) {
28
+ const syncs = syncMap.get(service);
29
+ if (!syncs) {
30
+ return [];
31
+ }
32
+ return syncs.global;
33
+ }
34
+ /**
35
+ * Get the regional syncs for a given AWS service.
36
+ *
37
+ * @param service The AWS service to get the syncs for
38
+ * @returns An array of syncs that are regional for the specified service.
39
+ */
40
+ export function getRegionalSyncsForService(service) {
41
+ const syncs = syncMap.get(service);
42
+ if (!syncs) {
43
+ return [];
44
+ }
45
+ return syncs.regional;
46
+ }
47
+ //# sourceMappingURL=syncMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncMap.js","sourceRoot":"","sources":["../../../src/syncs/syncMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,MAAM,QAAQ,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAA;AAEvD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoD,CAAA;AAE3E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAA;IAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;YACnB,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;SACX,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;IACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAmB;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAA;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAmB;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAA;AACvB,CAAC"}
@@ -0,0 +1,26 @@
1
+ export interface ArnParts {
2
+ partition: string | undefined;
3
+ service: string | undefined;
4
+ region: string | undefined;
5
+ accountId: string | undefined;
6
+ resource: string | undefined;
7
+ resourceType: string | undefined;
8
+ resourcePath: string | undefined;
9
+ }
10
+ /**
11
+ * Split an ARN into its parts
12
+ *
13
+ * @param arn the arn to split
14
+ * @returns the parts of the ARN
15
+ */
16
+ export declare function splitArnParts(arn: string): ArnParts;
17
+ /**
18
+ * Get the product/id segments of the resource portion of an ARN.
19
+ * The first segment is the product segment and the second segment is the resource id segment.
20
+ * This could be split by a colon or a slash, so it checks for both. It also checks for S3 buckets/objects.
21
+ *
22
+ * @param resource The resource to get the resource segments. Must be an ARN resource.
23
+ * @returns a tuple with the first segment being the product segment (without the separator) and the second segment being the resource id.
24
+ */
25
+ export declare function getResourceSegments(service: string, accountId: string, region: string, resourceString: string): [string, string];
26
+ //# sourceMappingURL=arn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arn.d.ts","sourceRoot":"","sources":["../../../src/utils/arn.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAkBnD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBlB"}
@@ -0,0 +1,56 @@
1
+ // Copied from https://github.com/cloud-copilot/iam-simulate/blob/main/src/util.ts
2
+ /**
3
+ * Split an ARN into its parts
4
+ *
5
+ * @param arn the arn to split
6
+ * @returns the parts of the ARN
7
+ */
8
+ export function splitArnParts(arn) {
9
+ const parts = arn.split(':');
10
+ const partition = parts.at(1);
11
+ const service = parts.at(2);
12
+ const region = parts.at(3);
13
+ const accountId = parts.at(4);
14
+ const resource = parts.slice(5).join(':');
15
+ const [resourceType, resourcePath] = getResourceSegments(service, accountId, region, resource);
16
+ return {
17
+ partition,
18
+ service,
19
+ region,
20
+ accountId,
21
+ resource,
22
+ resourceType,
23
+ resourcePath
24
+ };
25
+ }
26
+ /**
27
+ * Get the product/id segments of the resource portion of an ARN.
28
+ * The first segment is the product segment and the second segment is the resource id segment.
29
+ * This could be split by a colon or a slash, so it checks for both. It also checks for S3 buckets/objects.
30
+ *
31
+ * @param resource The resource to get the resource segments. Must be an ARN resource.
32
+ * @returns a tuple with the first segment being the product segment (without the separator) and the second segment being the resource id.
33
+ */
34
+ export function getResourceSegments(service, accountId, region, resourceString) {
35
+ // This is terrible, and I hate it
36
+ if (service === 's3' && accountId === '' && region === '') {
37
+ return ['', resourceString];
38
+ }
39
+ const slashIndex = resourceString.indexOf('/');
40
+ const colonIndex = resourceString.indexOf(':');
41
+ let splitIndex = slashIndex;
42
+ if (slashIndex != -1 && colonIndex != -1) {
43
+ splitIndex = Math.min(slashIndex, colonIndex) + 1;
44
+ }
45
+ else if (colonIndex == -1) {
46
+ splitIndex = slashIndex + 1;
47
+ }
48
+ else if (slashIndex == -1) {
49
+ splitIndex = colonIndex + 1;
50
+ }
51
+ else {
52
+ throw new Error(`Unable to split resource ${resourceString}`);
53
+ }
54
+ return [resourceString.slice(0, splitIndex - 1), resourceString.slice(splitIndex)];
55
+ }
56
+ //# sourceMappingURL=arn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arn.js","sourceRoot":"","sources":["../../../src/utils/arn.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAYlF;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IAE9F,OAAO;QACL,SAAS;QACT,OAAO;QACP,MAAM;QACN,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,YAAY;KACb,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,SAAiB,EACjB,MAAc,EACd,cAAsB;IAEtB,kCAAkC;IAClC,IAAI,OAAO,KAAK,IAAI,IAAI,SAAS,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE9C,IAAI,UAAU,GAAG,UAAU,CAAA;IAC3B,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QACzC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;IAC7B,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,UAAU,GAAG,CAAC,CAAA;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;AACpF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ *
3
+ * @param operation The operation to run.
4
+ * @returns If successful, returns the result of operation. If operation returns a 404, returns undefined.
5
+ * @throws If operation returns a non 404 error, rethrows that error.
6
+ */
7
+ export declare function runAndCatch404<T>(operation: () => Promise<T | undefined>): Promise<T | undefined>;
8
+ /**
9
+ *
10
+ * @param operation The operation to run.
11
+ * @returns If successful, returns the result of operation. If operation returns a 404, returns undefined.
12
+ * @throws If operation returns a non 400 error, rethrows that error.
13
+ */
14
+ export declare function runAndCatchAccessDenied<T>(operation: () => Promise<T | undefined>): Promise<T | undefined>;
15
+ //# sourceMappingURL=client-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-tools.d.ts","sourceRoot":"","sources":["../../../src/utils/client-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GACtC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAUxB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,GACtC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAYxB"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ *
3
+ * @param operation The operation to run.
4
+ * @returns If successful, returns the result of operation. If operation returns a 404, returns undefined.
5
+ * @throws If operation returns a non 404 error, rethrows that error.
6
+ */
7
+ export async function runAndCatch404(operation) {
8
+ try {
9
+ const result = await operation();
10
+ return result;
11
+ }
12
+ catch (e) {
13
+ if (e['$metadata']?.httpStatusCode == 404) {
14
+ return undefined;
15
+ }
16
+ throw e;
17
+ }
18
+ }
19
+ /**
20
+ *
21
+ * @param operation The operation to run.
22
+ * @returns If successful, returns the result of operation. If operation returns a 404, returns undefined.
23
+ * @throws If operation returns a non 400 error, rethrows that error.
24
+ */
25
+ export async function runAndCatchAccessDenied(operation) {
26
+ try {
27
+ const result = await operation();
28
+ return result;
29
+ }
30
+ catch (e) {
31
+ const errorName = e.name;
32
+ if (errorName == 'AccessDeniedException' || errorName == 'AccessDenied') {
33
+ return undefined;
34
+ }
35
+ throw e;
36
+ }
37
+ }
38
+ //# sourceMappingURL=client-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-tools.js","sourceRoot":"","sources":["../../../src/utils/client-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,cAAc,IAAI,GAAG,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;QAChC,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAA;QAExB,IAAI,SAAS,IAAI,uBAAuB,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;YACxE,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generates a random string of a given length
3
+ *
4
+ * @param length The length of the string you would like to generate
5
+ * @returns
6
+ */
7
+ export declare function randomCharacters(length?: number): string;
8
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,MAAU,GAAG,MAAM,CAQ3D"}
@@ -0,0 +1,16 @@
1
+ const characters = '0123456789abcdefghijklmnopqrstuvwxyz';
2
+ /**
3
+ * Generates a random string of a given length
4
+ *
5
+ * @param length The length of the string you would like to generate
6
+ * @returns
7
+ */
8
+ export function randomCharacters(length = 5) {
9
+ let result = '';
10
+ for (let i = 0; i < length; i++) {
11
+ const randomIndex = Math.floor(Math.random() * characters.length);
12
+ result += characters[randomIndex];
13
+ }
14
+ return result;
15
+ }
16
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,sCAAsC,CAAA;AACzD;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB,CAAC;IACjD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;QACjE,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isDefined<T>(value: T | undefined): value is T;
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,IAAI,CAAC,CAE7D"}
@@ -0,0 +1,4 @@
1
+ export function isDefined(value) {
2
+ return value !== undefined && value !== null;
3
+ }
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAI,KAAoB;IAC/C,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloud-copilot/iam-collect",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Collect IAM information from AWS Accounts",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,6 +16,9 @@
16
16
  "dist/**/*"
17
17
  ],
18
18
  "types": "dist/cjs/index.d.ts",
19
+ "bin": {
20
+ "iam-collect": "dist/esm/cli.js"
21
+ },
19
22
  "scripts": {
20
23
  "build": "npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh",
21
24
  "clean": "rm -rf dist",
@@ -36,10 +39,84 @@
36
39
  "homepage": "https://github.com/cloud-copilot/iam-collect#readme",
37
40
  "devDependencies": {
38
41
  "@cloud-copilot/prettier-config": "^0.1.0",
42
+ "@semantic-release/changelog": "^6.0.3",
43
+ "@semantic-release/commit-analyzer": "^13.0.1",
44
+ "@semantic-release/git": "^10.0.1",
45
+ "@semantic-release/github": "^11.0.1",
46
+ "@semantic-release/npm": "^12.0.1",
47
+ "@semantic-release/release-notes-generator": "^14.0.3",
39
48
  "@types/node": "^22.5.0",
40
- "@vitest/coverage-v8": "^2.0.5",
49
+ "@vitest/coverage-v8": "^3.0.7",
50
+ "semantic-release": "^24.2.1",
41
51
  "typescript": "^5.7.2",
42
- "vitest": "^2.0.5"
52
+ "vitest": "^3.0.7"
53
+ },
54
+ "prettier": "@cloud-copilot/prettier-config",
55
+ "release": {
56
+ "branches": [
57
+ "main"
58
+ ],
59
+ "plugins": [
60
+ [
61
+ "@semantic-release/commit-analyzer",
62
+ {
63
+ "releaseRules": [
64
+ {
65
+ "type": "feat",
66
+ "release": "patch"
67
+ },
68
+ {
69
+ "type": "fix",
70
+ "release": "patch"
71
+ },
72
+ {
73
+ "breaking": true,
74
+ "release": "patch"
75
+ },
76
+ {
77
+ "type": "*",
78
+ "release": "patch"
79
+ }
80
+ ]
81
+ }
82
+ ],
83
+ "@semantic-release/release-notes-generator",
84
+ "@semantic-release/changelog",
85
+ [
86
+ "@semantic-release/npm",
87
+ {
88
+ "npmPublish": true
89
+ }
90
+ ],
91
+ [
92
+ "@semantic-release/git",
93
+ {
94
+ "assets": [
95
+ "package.json",
96
+ "package-lock.json",
97
+ "CHANGELOG.md"
98
+ ],
99
+ "message": "chore(release): ${nextRelease.version} [skip ci]"
100
+ }
101
+ ],
102
+ [
103
+ "@semantic-release/github",
104
+ {
105
+ "assets": []
106
+ }
107
+ ]
108
+ ]
43
109
  },
44
- "prettier": "@cloud-copilot/prettier-config"
110
+ "dependencies": {
111
+ "@aws-sdk/client-account": "^3.758.0",
112
+ "@aws-sdk/client-iam": "^3.777.0",
113
+ "@aws-sdk/client-lambda": "^3.782.0",
114
+ "@aws-sdk/client-sts": "^3.772.0",
115
+ "@aws-sdk/credential-providers": "^3.772.0",
116
+ "@aws-sdk/types": "^3.734.0",
117
+ "@cloud-copilot/cli": "^0.1.16",
118
+ "@smithy/smithy-client": "^4.2.0",
119
+ "@smithy/util-retry": "^4.0.2",
120
+ "jsonc-parser": "^3.3.1"
121
+ }
45
122
  }
@@ -1,63 +0,0 @@
1
- type OptionConfig2 = {
2
- type: 'string' | 'number' | 'boolean';
3
- values: 'single' | 'multiple';
4
- description: string;
5
- character?: string;
6
- };
7
- type Config2<T extends Record<string, OptionConfig2>> = T;
8
- type ParsedArgs<T extends Record<string, OptionConfig2>> = {
9
- [K in keyof T]: T[K]['type'] extends 'string' ? T[K]['values'] extends 'single' ? string : string[] : T[K]['type'] extends 'number' ? number : T[K]['type'] extends 'boolean' ? boolean : never;
10
- };
11
- declare const config: {
12
- regions: {
13
- type: "string";
14
- values: "multiple";
15
- description: string;
16
- };
17
- account: {
18
- type: "string";
19
- values: "single";
20
- description: string;
21
- };
22
- ssl: {
23
- type: "boolean";
24
- values: "single";
25
- description: string;
26
- character: string;
27
- };
28
- port: {
29
- type: "number";
30
- values: "single";
31
- description: string;
32
- };
33
- };
34
- declare const args: {
35
- regions: string;
36
- account: string;
37
- ssl: string;
38
- port: string;
39
- };
40
- declare const parsed: ParsedArgs<{
41
- regions: {
42
- type: "string";
43
- values: "multiple";
44
- description: string;
45
- };
46
- account: {
47
- type: "string";
48
- values: "single";
49
- description: string;
50
- };
51
- ssl: {
52
- type: "boolean";
53
- values: "single";
54
- description: string;
55
- character: string;
56
- };
57
- port: {
58
- type: "number";
59
- values: "single";
60
- description: string;
61
- };
62
- }>;
63
- //# sourceMappingURL=cli2.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli2.d.ts","sourceRoot":"","sources":["../../src/cli2.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;AAMzD,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,QAAQ,GAC7B,MAAM,GACN,MAAM,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GAC3B,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,GAC5B,OAAO,GACP,KAAK;CACd,CAAA;AAwBD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAKV,CAAA;AAEF,QAAA,MAAM,IAAI;;;;;CAKT,CAAA;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAA+B,CAAA"}
package/dist/cjs/cli2.js DELETED
@@ -1,41 +0,0 @@
1
- "use strict";
2
- function createConfig(config) {
3
- return config;
4
- }
5
- function parseArguments(config, args // Simulating parsed CLI arguments
6
- ) {
7
- const result = {};
8
- for (const key in config) {
9
- const option = config[key];
10
- const value = args[key];
11
- if (option.type === 'string') {
12
- result[key] = value;
13
- }
14
- else if (option.type === 'number') {
15
- result[key] = value ? parseFloat(value) : NaN;
16
- }
17
- else if (option.type === 'boolean') {
18
- // result[key] = value === ('true' as any)
19
- }
20
- }
21
- return result;
22
- }
23
- const config = createConfig({
24
- regions: { type: 'string', values: 'multiple', description: 'Regions to deploy to' },
25
- account: { type: 'string', values: 'single', description: 'AWS account to deploy to' },
26
- ssl: { type: 'boolean', values: 'single', description: 'Enable SSL', character: 's' },
27
- port: { type: 'number', values: 'single', description: 'Port to listen on' }
28
- });
29
- const args = {
30
- regions: 'us-west-1',
31
- account: '123456789012',
32
- ssl: 'true',
33
- port: '8080'
34
- };
35
- const parsed = parseArguments(config, args);
36
- // TypeScript ensures correct types:
37
- console.log(parsed.regions); // string
38
- console.log(parsed.account); // string
39
- console.log(parsed.ssl); // boolean
40
- console.log(parsed.port); // number
41
- //# sourceMappingURL=cli2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli2.js","sourceRoot":"","sources":["../../src/cli2.ts"],"names":[],"mappings":";AASA,SAAS,YAAY,CAA0C,MAAS;IACtE,OAAO,MAAM,CAAA;AACf,CAAC;AAcD,SAAS,cAAc,CACrB,MAAkB,EAClB,IAA4B,CAAC,kCAAkC;;IAE/D,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAY,CAAA;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,GAAW,CAAA;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAuB,CAAA;AAChC,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACpF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC7E,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;CACb,CAAA;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAE3C,oCAAoC;AACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;AAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,SAAS"}
@@ -1,63 +0,0 @@
1
- type OptionConfig3 = {
2
- type: 'string' | 'number' | 'boolean';
3
- values: 'single' | 'multiple';
4
- description: string;
5
- character?: string;
6
- };
7
- type Config2<T extends Record<string, OptionConfig3>> = T;
8
- type ParsedArgs<T extends Record<string, OptionConfig3>> = {
9
- [K in keyof T]: T[K]['type'] extends 'string' ? T[K]['values'] extends 'single' ? string : string[] : T[K]['type'] extends 'number' ? number : T[K]['type'] extends 'boolean' ? boolean : never;
10
- };
11
- declare const config: {
12
- regions: {
13
- type: "string";
14
- values: "multiple";
15
- description: string;
16
- };
17
- account: {
18
- type: "string";
19
- values: "single";
20
- description: string;
21
- };
22
- ssl: {
23
- type: "boolean";
24
- values: "single";
25
- description: string;
26
- character: string;
27
- };
28
- port: {
29
- type: "number";
30
- values: "single";
31
- description: string;
32
- };
33
- };
34
- declare const args: {
35
- regions: string;
36
- account: string;
37
- ssl: string;
38
- port: string;
39
- };
40
- declare const parsed: ParsedArgs<{
41
- regions: {
42
- type: "string";
43
- values: "multiple";
44
- description: string;
45
- };
46
- account: {
47
- type: "string";
48
- values: "single";
49
- description: string;
50
- };
51
- ssl: {
52
- type: "boolean";
53
- values: "single";
54
- description: string;
55
- character: string;
56
- };
57
- port: {
58
- type: "number";
59
- values: "single";
60
- description: string;
61
- };
62
- }>;
63
- //# sourceMappingURL=cli3.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli3.d.ts","sourceRoot":"","sources":["../../src/cli3.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IACrC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;AAMzD,KAAK,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;KACxD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACzC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,QAAQ,GAC7B,MAAM,GACN,MAAM,EAAE,GACV,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GAC3B,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,GAC5B,OAAO,GACP,KAAK;CACd,CAAA;AAwBD,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAKV,CAAA;AAEF,QAAA,MAAM,IAAI;;;;;CAKT,CAAA;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;EAA+B,CAAA"}
package/dist/cjs/cli3.js DELETED
@@ -1,41 +0,0 @@
1
- "use strict";
2
- function createConfig(config) {
3
- return config;
4
- }
5
- function parseArguments(config, args // Simulating parsed CLI arguments
6
- ) {
7
- const result = {};
8
- for (const key in config) {
9
- const option = config[key];
10
- const value = args[key];
11
- if (option.type === 'string') {
12
- result[key] = value;
13
- }
14
- else if (option.type === 'number') {
15
- result[key] = value ? parseFloat(value) : NaN;
16
- }
17
- else if (option.type === 'boolean') {
18
- // result[key] = value === ('true' as any)
19
- }
20
- }
21
- return result;
22
- }
23
- const config = createConfig({
24
- regions: { type: 'string', values: 'multiple', description: 'Regions to deploy to' },
25
- account: { type: 'string', values: 'single', description: 'AWS account to deploy to' },
26
- ssl: { type: 'boolean', values: 'single', description: 'Enable SSL', character: 's' },
27
- port: { type: 'number', values: 'single', description: 'Port to listen on' }
28
- });
29
- const args = {
30
- regions: 'us-west-1',
31
- account: '123456789012',
32
- ssl: 'true',
33
- port: '8080'
34
- };
35
- const parsed = parseArguments(config, args);
36
- // TypeScript ensures correct types:
37
- console.log(parsed.regions); // string
38
- console.log(parsed.account); // string
39
- console.log(parsed.ssl); // boolean
40
- console.log(parsed.port); // number
41
- //# sourceMappingURL=cli3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli3.js","sourceRoot":"","sources":["../../src/cli3.ts"],"names":[],"mappings":";AASA,SAAS,YAAY,CAA0C,MAAS;IACtE,OAAO,MAAM,CAAA;AACf,CAAC;AAcD,SAAS,cAAc,CACrB,MAAkB,EAClB,IAA4B,CAAC,kCAAkC;;IAE/D,MAAM,MAAM,GAA2B,EAAE,CAAA;IAEzC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QAEvB,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAY,CAAA;QAC5B,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,GAAW,CAAA;QACxD,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACrC,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,MAAuB,CAAA;AAChC,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;IACpF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACtF,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE;IACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;CAC7E,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,cAAc;IACvB,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;CACb,CAAA;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAE3C,oCAAoC;AACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,SAAS;AACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAC,UAAU;AAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,SAAS"}
@@ -1,13 +0,0 @@
1
- interface CliArguments {
2
- command: string | undefined;
3
- regions?: string[];
4
- services?: string[];
5
- }
6
- interface ParsedCliArguments {
7
- unrecognizedParams?: string[];
8
- noParams?: boolean;
9
- cliArguments?: CliArguments;
10
- }
11
- export declare function parseCliArguments(args: string[]): ParsedCliArguments;
12
- export {};
13
- //# sourceMappingURL=cliUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cliUtils.d.ts","sourceRoot":"","sources":["../../src/cliUtils.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,UAAU,kBAAkB;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAyCpE"}
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseCliArguments = parseCliArguments;
4
- const allowedArguments = new Set(['regions', 'services', 'accounts']);
5
- function parseCliArguments(args) {
6
- if (args.length == 0) {
7
- return {
8
- noParams: true
9
- };
10
- }
11
- const firstArg = args[0];
12
- let command = undefined;
13
- let unrecognizedParams = [];
14
- if (!firstArg.startsWith('--')) {
15
- command = firstArg;
16
- args = args.slice(1);
17
- }
18
- const cliArguments = {
19
- command: command
20
- };
21
- let currentArgType;
22
- for (let i = 0; i < args.length; i++) {
23
- const arg = args[i];
24
- if (arg.startsWith('--')) {
25
- currentArgType = arg.slice(2);
26
- if (!allowedArguments.has(currentArgType)) {
27
- unrecognizedParams.push(arg);
28
- currentArgType = undefined;
29
- }
30
- }
31
- else {
32
- if (currentArgType) {
33
- cliArguments[currentArgType] = cliArguments[currentArgType] || [];
34
- cliArguments[currentArgType].push(arg);
35
- }
36
- }
37
- }
38
- return {
39
- cliArguments,
40
- unrecognizedParams: unrecognizedParams.length > 0 ? unrecognizedParams : undefined
41
- };
42
- }
43
- //# sourceMappingURL=cliUtils.js.map