@cloud-copilot/iam-collect 0.1.52 → 0.1.53

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 (169) hide show
  1. package/dist/cjs/cli.js +49 -2
  2. package/dist/cjs/cli.js.map +1 -1
  3. package/dist/cjs/download/download.d.ts +1 -1
  4. package/dist/cjs/download/download.d.ts.map +1 -1
  5. package/dist/cjs/download/download.js +26 -9
  6. package/dist/cjs/download/download.js.map +1 -1
  7. package/dist/cjs/index/index.d.ts +4 -0
  8. package/dist/cjs/index/index.d.ts.map +1 -0
  9. package/dist/cjs/index/index.js +42 -0
  10. package/dist/cjs/index/index.js.map +1 -0
  11. package/dist/cjs/indexing/indexMap.d.ts +10 -0
  12. package/dist/cjs/indexing/indexMap.d.ts.map +1 -0
  13. package/dist/cjs/indexing/indexMap.js +32 -0
  14. package/dist/cjs/indexing/indexMap.js.map +1 -0
  15. package/dist/cjs/indexing/indexer.d.ts +37 -0
  16. package/dist/cjs/indexing/indexer.d.ts.map +1 -0
  17. package/dist/cjs/indexing/indexer.js +3 -0
  18. package/dist/cjs/indexing/indexer.js.map +1 -0
  19. package/dist/cjs/indexing/indexers/accountOrgs.d.ts +3 -0
  20. package/dist/cjs/indexing/indexers/accountOrgs.d.ts.map +1 -0
  21. package/dist/cjs/indexing/indexers/accountOrgs.js +41 -0
  22. package/dist/cjs/indexing/indexers/accountOrgs.js.map +1 -0
  23. package/dist/cjs/indexing/indexers/apigateways.d.ts +3 -0
  24. package/dist/cjs/indexing/indexers/apigateways.d.ts.map +1 -0
  25. package/dist/cjs/indexing/indexers/apigateways.js +54 -0
  26. package/dist/cjs/indexing/indexers/apigateways.js.map +1 -0
  27. package/dist/cjs/indexing/indexers/buckets.d.ts +8 -0
  28. package/dist/cjs/indexing/indexers/buckets.d.ts.map +1 -0
  29. package/dist/cjs/indexing/indexers/buckets.js +40 -0
  30. package/dist/cjs/indexing/indexers/buckets.js.map +1 -0
  31. package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts +3 -0
  32. package/dist/cjs/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
  33. package/dist/cjs/indexing/indexers/vpcEndpoints.js +57 -0
  34. package/dist/cjs/indexing/indexers/vpcEndpoints.js.map +1 -0
  35. package/dist/cjs/indexing/runIndexers.d.ts +33 -0
  36. package/dist/cjs/indexing/runIndexers.d.ts.map +1 -0
  37. package/dist/cjs/indexing/runIndexers.js +86 -0
  38. package/dist/cjs/indexing/runIndexers.js.map +1 -0
  39. package/dist/cjs/jobs/jobQueue.d.ts.map +1 -0
  40. package/dist/cjs/jobs/jobQueue.js.map +1 -0
  41. package/dist/cjs/jobs/util.d.ts.map +1 -0
  42. package/dist/cjs/jobs/util.js.map +1 -0
  43. package/dist/cjs/persistence/AwsIamStore.d.ts +36 -0
  44. package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -1
  45. package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
  46. package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
  47. package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js +70 -0
  48. package/dist/cjs/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
  49. package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
  50. package/dist/cjs/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
  51. package/dist/cjs/persistence/PathBasedPersistenceAdapter.js +3 -0
  52. package/dist/cjs/persistence/PathBasedPersistenceAdapter.js.map +1 -0
  53. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts +29 -1
  54. package/dist/cjs/persistence/file/FileSystemAdapter.d.ts.map +1 -1
  55. package/dist/cjs/persistence/file/FileSystemAdapter.js +70 -0
  56. package/dist/cjs/persistence/file/FileSystemAdapter.js.map +1 -1
  57. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
  58. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
  59. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +53 -1
  60. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -1
  61. package/dist/cjs/services.d.ts +7 -0
  62. package/dist/cjs/services.d.ts.map +1 -1
  63. package/dist/cjs/services.js +10 -0
  64. package/dist/cjs/services.js.map +1 -1
  65. package/dist/cjs/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
  66. package/dist/cjs/syncs/ec2/vpcEndpoints.js +23 -2
  67. package/dist/cjs/syncs/ec2/vpcEndpoints.js.map +1 -1
  68. package/dist/cjs/syncs/organizations/organizations.d.ts.map +1 -1
  69. package/dist/cjs/syncs/organizations/organizations.js +18 -0
  70. package/dist/cjs/syncs/organizations/organizations.js.map +1 -1
  71. package/dist/cjs/syncs/s3/buckets.d.ts.map +1 -1
  72. package/dist/cjs/syncs/s3/buckets.js +4 -2
  73. package/dist/cjs/syncs/s3/buckets.js.map +1 -1
  74. package/dist/cjs/syncs/syncMap.d.ts.map +1 -1
  75. package/dist/cjs/syncs/syncMap.js +4 -12
  76. package/dist/cjs/syncs/syncMap.js.map +1 -1
  77. package/dist/esm/cli.js +49 -2
  78. package/dist/esm/cli.js.map +1 -1
  79. package/dist/esm/download/download.d.ts +1 -1
  80. package/dist/esm/download/download.d.ts.map +1 -1
  81. package/dist/esm/download/download.js +23 -6
  82. package/dist/esm/download/download.js.map +1 -1
  83. package/dist/esm/index/index.d.ts +4 -0
  84. package/dist/esm/index/index.d.ts.map +1 -0
  85. package/dist/esm/index/index.js +39 -0
  86. package/dist/esm/index/index.js.map +1 -0
  87. package/dist/esm/indexing/indexMap.d.ts +10 -0
  88. package/dist/esm/indexing/indexMap.d.ts.map +1 -0
  89. package/dist/esm/indexing/indexMap.js +29 -0
  90. package/dist/esm/indexing/indexMap.js.map +1 -0
  91. package/dist/esm/indexing/indexer.d.ts +37 -0
  92. package/dist/esm/indexing/indexer.d.ts.map +1 -0
  93. package/dist/esm/indexing/indexer.js +2 -0
  94. package/dist/esm/indexing/indexer.js.map +1 -0
  95. package/dist/esm/indexing/indexers/accountOrgs.d.ts +3 -0
  96. package/dist/esm/indexing/indexers/accountOrgs.d.ts.map +1 -0
  97. package/dist/esm/indexing/indexers/accountOrgs.js +38 -0
  98. package/dist/esm/indexing/indexers/accountOrgs.js.map +1 -0
  99. package/dist/esm/indexing/indexers/apigateways.d.ts +3 -0
  100. package/dist/esm/indexing/indexers/apigateways.d.ts.map +1 -0
  101. package/dist/esm/indexing/indexers/apigateways.js +51 -0
  102. package/dist/esm/indexing/indexers/apigateways.js.map +1 -0
  103. package/dist/esm/indexing/indexers/buckets.d.ts +8 -0
  104. package/dist/esm/indexing/indexers/buckets.d.ts.map +1 -0
  105. package/dist/esm/indexing/indexers/buckets.js +37 -0
  106. package/dist/esm/indexing/indexers/buckets.js.map +1 -0
  107. package/dist/esm/indexing/indexers/vpcEndpoints.d.ts +3 -0
  108. package/dist/esm/indexing/indexers/vpcEndpoints.d.ts.map +1 -0
  109. package/dist/esm/indexing/indexers/vpcEndpoints.js +54 -0
  110. package/dist/esm/indexing/indexers/vpcEndpoints.js.map +1 -0
  111. package/dist/esm/indexing/runIndexers.d.ts +33 -0
  112. package/dist/esm/indexing/runIndexers.d.ts.map +1 -0
  113. package/dist/esm/indexing/runIndexers.js +83 -0
  114. package/dist/esm/indexing/runIndexers.js.map +1 -0
  115. package/dist/esm/jobs/jobQueue.d.ts.map +1 -0
  116. package/dist/esm/jobs/jobQueue.js.map +1 -0
  117. package/dist/esm/jobs/util.d.ts.map +1 -0
  118. package/dist/esm/jobs/util.js.map +1 -0
  119. package/dist/esm/persistence/AwsIamStore.d.ts +36 -0
  120. package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -1
  121. package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts +16 -0
  122. package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.d.ts.map +1 -0
  123. package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js +68 -0
  124. package/dist/esm/persistence/InMemoryPathBasedPersistenceAdapter.js.map +1 -0
  125. package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts +38 -0
  126. package/dist/esm/persistence/PathBasedPersistenceAdapter.d.ts.map +1 -0
  127. package/dist/esm/persistence/PathBasedPersistenceAdapter.js +2 -0
  128. package/dist/esm/persistence/PathBasedPersistenceAdapter.js.map +1 -0
  129. package/dist/esm/persistence/file/FileSystemAdapter.d.ts +29 -1
  130. package/dist/esm/persistence/file/FileSystemAdapter.d.ts.map +1 -1
  131. package/dist/esm/persistence/file/FileSystemAdapter.js +71 -1
  132. package/dist/esm/persistence/file/FileSystemAdapter.js.map +1 -1
  133. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +22 -0
  134. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
  135. package/dist/esm/persistence/file/FileSystemAwsIamStore.js +53 -1
  136. package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -1
  137. package/dist/esm/services.d.ts +7 -0
  138. package/dist/esm/services.d.ts.map +1 -1
  139. package/dist/esm/services.js +9 -0
  140. package/dist/esm/services.js.map +1 -1
  141. package/dist/esm/syncs/ec2/vpcEndpoints.d.ts.map +1 -1
  142. package/dist/esm/syncs/ec2/vpcEndpoints.js +23 -2
  143. package/dist/esm/syncs/ec2/vpcEndpoints.js.map +1 -1
  144. package/dist/esm/syncs/organizations/organizations.d.ts.map +1 -1
  145. package/dist/esm/syncs/organizations/organizations.js +18 -0
  146. package/dist/esm/syncs/organizations/organizations.js.map +1 -1
  147. package/dist/esm/syncs/s3/buckets.d.ts.map +1 -1
  148. package/dist/esm/syncs/s3/buckets.js +4 -2
  149. package/dist/esm/syncs/s3/buckets.js.map +1 -1
  150. package/dist/esm/syncs/syncMap.d.ts.map +1 -1
  151. package/dist/esm/syncs/syncMap.js +1 -9
  152. package/dist/esm/syncs/syncMap.js.map +1 -1
  153. package/package.json +1 -1
  154. package/dist/cjs/download/jobQueue.d.ts.map +0 -1
  155. package/dist/cjs/download/jobQueue.js.map +0 -1
  156. package/dist/cjs/download/util.d.ts.map +0 -1
  157. package/dist/cjs/download/util.js.map +0 -1
  158. package/dist/esm/download/jobQueue.d.ts.map +0 -1
  159. package/dist/esm/download/jobQueue.js.map +0 -1
  160. package/dist/esm/download/util.d.ts.map +0 -1
  161. package/dist/esm/download/util.js.map +0 -1
  162. /package/dist/cjs/{download → jobs}/jobQueue.d.ts +0 -0
  163. /package/dist/cjs/{download → jobs}/jobQueue.js +0 -0
  164. /package/dist/cjs/{download → jobs}/util.d.ts +0 -0
  165. /package/dist/cjs/{download → jobs}/util.js +0 -0
  166. /package/dist/esm/{download → jobs}/jobQueue.d.ts +0 -0
  167. /package/dist/esm/{download → jobs}/jobQueue.js +0 -0
  168. /package/dist/esm/{download → jobs}/util.d.ts +0 -0
  169. /package/dist/esm/{download → jobs}/util.js +0 -0
package/dist/cjs/cli.js CHANGED
@@ -7,6 +7,7 @@ const createConfigFile_js_1 = require("./config/createConfigFile.js");
7
7
  const defaultConfig_js_1 = require("./config/defaultConfig.js");
8
8
  const packageVersion_js_1 = require("./config/packageVersion.js");
9
9
  const download_js_1 = require("./download/download.js");
10
+ const index_js_1 = require("./index/index.js");
10
11
  const log_js_1 = require("./utils/log.js");
11
12
  const main = async () => {
12
13
  const version = await (0, packageVersion_js_1.iamCollectVersion)();
@@ -16,7 +17,7 @@ const main = async () => {
16
17
  options: {}
17
18
  },
18
19
  download: {
19
- description: 'Download IAM data',
20
+ description: 'Download IAM data and update indexes',
20
21
  options: {
21
22
  configFiles: {
22
23
  type: 'string',
@@ -42,6 +43,46 @@ const main = async () => {
42
43
  type: 'number',
43
44
  description: 'The maximum number of concurrent downloads to allow. Defaults based on your system CPUs',
44
45
  values: 'single'
46
+ },
47
+ noIndex: {
48
+ type: 'boolean',
49
+ description: 'Skip refreshing the indexes after downloading',
50
+ character: 'n'
51
+ }
52
+ }
53
+ },
54
+ index: {
55
+ description: 'Refresh the IAM data indexes',
56
+ options: {
57
+ configFiles: {
58
+ type: 'string',
59
+ description: 'The configuration files to use',
60
+ values: 'multiple'
61
+ },
62
+ partition: {
63
+ type: 'string',
64
+ description: 'The partition to refresh index data for. Defaults to aws',
65
+ values: 'single'
66
+ },
67
+ accounts: {
68
+ type: 'string',
69
+ description: 'The account IDs to refresh index data for',
70
+ values: 'multiple'
71
+ },
72
+ regions: {
73
+ type: 'string',
74
+ description: 'The regions to refresh index data for',
75
+ values: 'multiple'
76
+ },
77
+ services: {
78
+ type: 'string',
79
+ description: 'The services to refresh index data for',
80
+ values: 'multiple'
81
+ },
82
+ concurrency: {
83
+ type: 'number',
84
+ description: 'The maximum number of concurrent indexers to run. Defaults based on your system CPUs',
85
+ values: 'single'
45
86
  }
46
87
  }
47
88
  }
@@ -73,7 +114,13 @@ const main = async () => {
73
114
  const defaultConfig = './iam-collect.jsonc';
74
115
  const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
75
116
  const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
76
- await (0, download_js_1.downloadData)(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
117
+ await (0, download_js_1.downloadData)(configs, cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency, cli.args.noIndex);
118
+ }
119
+ else if (cli.subcommand === 'index') {
120
+ const defaultConfig = './iam-collect.jsonc';
121
+ const configFiles = cli.args.configFiles?.length > 0 ? cli.args.configFiles : [defaultConfig];
122
+ const configs = (0, configFile_js_1.loadConfigFiles)(configFiles);
123
+ await (0, index_js_1.index)(configs, cli.args.partition || 'aws', cli.args.accounts, cli.args.regions, cli.args.services, cli.args.concurrency);
77
124
  }
78
125
  };
79
126
  main()
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";;;AAEA,4CAAsD;AACtD,0DAAwD;AACxD,sEAAyE;AACzE,gEAA+D;AAC/D,kEAA8D;AAC9D,wDAAqD;AACrD,+CAAwC;AAExC,2CAAuD;AAEvD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,OAAO,GAAG,MAAM,IAAA,qCAAiB,GAAE,CAAA;IACzC,MAAM,GAAG,GAAG,IAAA,uBAAiB,EAC3B,aAAa,EACb;QACE,IAAI,EAAE;YACJ,WAAW,EAAE,+CAA+C;YAC5D,OAAO,EAAE,EAAE;SACZ;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,sCAAsC;YACnD,OAAO,EAAE;gBACP,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;oBAC7C,MAAM,EAAE,UAAU;iBACnB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;oBAC/C,MAAM,EAAE,UAAU;iBACnB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;oBAC3C,MAAM,EAAE,UAAU;iBACnB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;oBACvC,MAAM,EAAE,UAAU;iBACnB;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yFAAyF;oBAC3F,MAAM,EAAE,QAAQ;iBACjB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,+CAA+C;oBAC5D,SAAS,EAAE,GAAG;iBACf;aACF;SACF;QACD,KAAK,EAAE;YACL,WAAW,EAAE,8BAA8B;YAC3C,OAAO,EAAE;gBACP,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gCAAgC;oBAC7C,MAAM,EAAE,UAAU;iBACnB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;oBACvE,MAAM,EAAE,QAAQ;iBACjB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;oBACxD,MAAM,EAAE,UAAU;iBACnB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;oBACpD,MAAM,EAAE,UAAU;iBACnB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wCAAwC;oBACrD,MAAM,EAAE,UAAU;iBACnB;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;oBACxF,MAAM,EAAE,QAAQ;iBACjB;aACF;SACF;KACF,EACD;QACE,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,kBAAS;SACvB;KACF,EACD;QACE,SAAS,EAAE,aAAa;QACxB,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,OAAO;KACjB,CACF,CAAA;IAED,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,IAAA,oBAAW,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,IAAA,sCAAmB,GAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,MAAM,IAAA,gDAA0B,GAAE,CAAA;IACpC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,qBAAqB,CAAA;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC7F,MAAM,OAAO,GAAG,IAAA,+BAAe,EAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,IAAA,0BAAY,EAChB,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,WAAW,EACpB,GAAG,CAAC,IAAI,CAAC,OAAO,CACjB,CAAA;IACH,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,qBAAqB,CAAA;QAC3C,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAA;QAC7F,MAAM,OAAO,GAAG,IAAA,+BAAe,EAAC,WAAW,CAAC,CAAA;QAC5C,MAAM,IAAA,gBAAK,EACT,OAAO,EACP,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,EAC3B,GAAG,CAAC,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,IAAI,CAAC,OAAO,EAChB,GAAG,CAAC,IAAI,CAAC,QAAwB,EACjC,GAAG,CAAC,IAAI,CAAC,WAAW,CACrB,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,IAAI,EAAE;KACH,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC;KACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;KACd,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  import { TopLevelConfig } from '../config/config.js';
2
- export declare function downloadData(configs: TopLevelConfig[], accountIds: string[], regions: string[], services: string[], concurrency: number | undefined): Promise<void>;
2
+ export declare function downloadData(configs: TopLevelConfig[], accountIds: string[], regions: string[], services: string[], concurrency: number | undefined, skipIndex: boolean): Promise<void>;
3
3
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAU5B,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuIf"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAY5B,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,IAAI,CAAC,CAwJf"}
@@ -5,16 +5,18 @@ const auth_js_1 = require("../aws/auth.js");
5
5
  const coreAuth_js_1 = require("../aws/coreAuth.js");
6
6
  const config_js_1 = require("../config/config.js");
7
7
  const partitionDefaults_js_1 = require("../config/partitionDefaults.js");
8
- const util_js_1 = require("../persistence/util.js");
8
+ const indexMap_js_1 = require("../indexing/indexMap.js");
9
+ const runIndexers_js_1 = require("../indexing/runIndexers.js");
10
+ const jobQueue_js_1 = require("../jobs/jobQueue.js");
11
+ const util_js_1 = require("../jobs/util.js");
12
+ const util_js_2 = require("../persistence/util.js");
9
13
  const regions_js_1 = require("../regions.js");
10
14
  const services_js_1 = require("../services.js");
11
15
  const syncMap_js_1 = require("../syncs/syncMap.js");
12
16
  const log_js_1 = require("../utils/log.js");
13
- const jobQueue_js_1 = require("./jobQueue.js");
14
- const util_js_2 = require("./util.js");
15
- async function downloadData(configs, accountIds, regions, services, concurrency) {
17
+ async function downloadData(configs, accountIds, regions, services, concurrency, skipIndex) {
16
18
  if (concurrency === undefined || concurrency <= 0) {
17
- concurrency = (0, util_js_2.defaultConcurrency)();
19
+ concurrency = (0, util_js_1.defaultConcurrency)();
18
20
  }
19
21
  if (accountIds.length === 0) {
20
22
  const defaultAuthConfig = (0, config_js_1.getDefaultAuthConfig)(configs);
@@ -28,6 +30,7 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
28
30
  throw new Error('No storage configuration found. Cannot download data.');
29
31
  }
30
32
  const jobs = [];
33
+ const indexJobs = [];
31
34
  for (const accountId of accountIds) {
32
35
  log_js_1.log.info('Queuing downloads for account', { accountId });
33
36
  const authForAccount = (0, config_js_1.getAccountAuthConfig)(accountId, configs);
@@ -38,7 +41,7 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
38
41
  if (regions.length === 0) {
39
42
  regions = await (0, regions_js_1.getEnabledRegions)(credentials);
40
43
  }
41
- const storage = (0, util_js_1.createStorageClient)(storageConfig, partition);
44
+ const storage = (0, util_js_2.createStorageClient)(storageConfig, partition);
42
45
  if (services.length === 0) {
43
46
  services = services_js_1.allServices;
44
47
  }
@@ -95,18 +98,32 @@ async function downloadData(configs, accountIds, regions, services, concurrency)
95
98
  });
96
99
  }
97
100
  }
101
+ const indexers = (0, indexMap_js_1.getIndexersForService)(service);
102
+ for (const indexer of indexers) {
103
+ indexJobs.push({
104
+ indexer,
105
+ partition,
106
+ accountId,
107
+ regions: serviceRegions
108
+ });
109
+ }
98
110
  }
99
111
  }
100
112
  log_js_1.log.debug('Starting downloads', { jobs: jobs.length, concurrency });
101
113
  const results = await (0, jobQueue_js_1.runJobs)(jobs, concurrency);
102
114
  const failedJobs = results.filter((r) => r.status === 'rejected');
103
115
  if (failedJobs.length > 0) {
104
- log_js_1.log.error('Some jobs failed', { failedJobs: failedJobs.length });
116
+ log_js_1.log.error('Some downloads failed', { failedJobs: failedJobs.length });
105
117
  for (const failedJob of failedJobs) {
106
- log_js_1.log.error('Job failed', failedJob.reason, failedJob.properties);
118
+ log_js_1.log.error('Download failed', failedJob.reason, failedJob.properties);
107
119
  }
108
- throw new Error(`Failed to download download some data. See logs for details.`);
120
+ throw new Error(`Failed to download some data. See logs for details.`);
109
121
  }
110
122
  log_js_1.log.info('Finished downloads', { jobs: jobs.length });
123
+ if (skipIndex) {
124
+ log_js_1.log.info('Skipping indexing');
125
+ return;
126
+ }
127
+ await (0, runIndexers_js_1.runIndexJobs)(indexJobs, storageConfig, concurrency);
111
128
  }
112
129
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":";;AAqBA,oCA6IC;AAlKD,4CAA+C;AAC/C,oDAA6D;AAC7D,mDAS4B;AAC5B,yEAAqE;AACrE,oDAA4D;AAC5D,8CAAiD;AACjD,gDAA4C;AAC5C,oDAA0F;AAC1F,4CAAqC;AACrC,+CAA4C;AAC5C,uCAA8C;AAEvC,KAAK,UAAU,YAAY,CAChC,OAAyB,EACzB,UAAoB,EACpB,OAAiB,EACjB,QAAkB,EAClB,WAA+B;IAE/B,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QAClD,WAAW,GAAG,IAAA,4BAAkB,GAAE,CAAA;IACpC,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,iBAAiB,GAAG,IAAA,gCAAoB,EAAC,OAAO,CAAC,CAAA;QACvD,MAAM,kBAAkB,GAAG,MAAM,IAAA,sCAAwB,EAAC,iBAAiB,EAAE;YAC3E,KAAK,EAAE,kBAAkB;SAC1B,CAAC,CAAA;QACF,UAAU,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,IAAI,GAAU,EAAE,CAAA;IAEtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,YAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,IAAA,gCAAoB,EAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAC/D,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,EAAC,SAAS,EAAE,cAAc,CAAC,CAAA;QACnE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAA;QACvC,MAAM,eAAe,GAAG,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAA;QACvD,MAAM,cAAc,GAAG,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,CAAA;QAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,MAAM,IAAA,8BAAiB,EAAC,WAAW,CAAC,CAAA;QAChD,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QAE7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,QAAQ,GAAG,yBAAkC,CAAA;QAC/C,CAAC;QACD,MAAM,WAAW,GAAG,EAAE,CAAA;QAEtB,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAA;QAC/E,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,YAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;YACrD,MAAM,cAAc,GAAG,IAAA,6BAAiB,EAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;YAErF,8BAA8B;YAC9B,MAAM,WAAW,GAAG,IAAA,qCAAwB,EAAC,OAAO,CAAC,CAAA;YACrD,MAAM,YAAY,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC,CAAE,CAAA;YAC1C,MAAM,YAAY,GAAG,IAAA,sCAA0B,EAC7C,OAAO,EACP,SAAS,EACT,YAAY,EACZ,cAAc,CACf,CAAA;YAED,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC;oBACR,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE;oBACzD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;wBACzB,MAAM,UAAU,GAAG;4BACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,GAAG,OAAO,CAAC,UAAU;yBACtB,CAAA;wBACD,MAAM,iBAAiB,GAAG,MAAM,IAAA,wBAAc,EAAC,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;wBAC5E,YAAG,CAAC,KAAK,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAA;wBAC9C,MAAM,UAAU,CAAC,OAAO,CACtB,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,YAAY,CAAC,QAAQ,EACrB,WAAW,CACZ,CAAA;wBACD,YAAG,CAAC,KAAK,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;oBAC/C,CAAC;iBACF,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,IAAA,uCAA0B,EAAC,OAAO,CAAC,CAAA;YACzD,gCAAgC;YAChC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACpC,YAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAA;gBACnE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,SAAQ;gBACV,CAAC;gBACD,MAAM,SAAS,GAAG,IAAA,sCAA0B,EAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;gBAExF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,MAAM,WAAW,GAAG,IAAA,gCAAoB,EACtC,SAAS,EACT,OAAO,EACP,IAAI,CAAC,IAAI,EACT,cAAc,EACd,MAAM,CACP,CAAA;oBACD,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,YAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAA;wBACxF,SAAQ;oBACV,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC;wBACR,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;wBAC3D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;4BACzB,MAAM,UAAU,GAAG;gCACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gCAC1B,GAAG,OAAO,CAAC,UAAU;6BACtB,CAAA;4BACD,YAAG,CAAC,KAAK,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAA;4BAChD,MAAM,mBAAmB,GAAG,MAAM,IAAA,wBAAc,EAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;4BAE3E,MAAM,IAAI,CAAC,OAAO,CAChB,SAAS,EACT,MAAM,EACN,mBAAmB,EACnB,OAAO,EACP,SAAS,CAAC,QAAQ,EAClB,WAAW,CACZ,CAAA;4BACD,YAAG,CAAC,KAAK,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAA;wBACjD,CAAC;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;IACnE,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAO,EAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;IACjE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,YAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,YAAG,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;QACjE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,YAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/download/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { TopLevelConfig } from '../config/config.js';
2
+ import { AwsService } from '../services.js';
3
+ export declare function index(configs: TopLevelConfig[], partition: string, accountIds: string[], regions: string[], services: AwsService[], concurrency: number | undefined): Promise<void>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAMtE,OAAO,EAAe,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAExD,wBAAsB,KAAK,CACzB,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,UAAU,EAAE,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.index = index;
4
+ const config_js_1 = require("../config/config.js");
5
+ const indexMap_js_1 = require("../indexing/indexMap.js");
6
+ const runIndexers_js_1 = require("../indexing/runIndexers.js");
7
+ const util_js_1 = require("../jobs/util.js");
8
+ const util_js_2 = require("../persistence/util.js");
9
+ const services_js_1 = require("../services.js");
10
+ async function index(configs, partition, accountIds, regions, services, concurrency) {
11
+ const storageConfig = (0, config_js_1.getStorageConfig)(configs);
12
+ if (!storageConfig) {
13
+ throw new Error('No storage configuration found. Cannot index data.');
14
+ }
15
+ const storage = (0, util_js_2.createStorageClient)(storageConfig, partition);
16
+ if (accountIds.length === 0) {
17
+ accountIds = await storage.listAccountIds();
18
+ }
19
+ if (services.length === 0) {
20
+ services = services_js_1.allServices;
21
+ }
22
+ if (!concurrency || concurrency <= 0) {
23
+ concurrency = (0, util_js_1.defaultConcurrency)();
24
+ }
25
+ const indexers = services.reduce((allIndexers, service) => {
26
+ allIndexers.push(...(0, indexMap_js_1.getIndexersForService)(service));
27
+ return allIndexers;
28
+ }, []);
29
+ const jobs = [];
30
+ for (const accountId of accountIds) {
31
+ for (const indexer of indexers) {
32
+ jobs.push({
33
+ indexer,
34
+ accountId,
35
+ regions: regions,
36
+ partition
37
+ });
38
+ }
39
+ }
40
+ await (0, runIndexers_js_1.runIndexJobs)(jobs, storageConfig, concurrency);
41
+ }
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index/index.ts"],"names":[],"mappings":";;AAQA,sBA4CC;AApDD,mDAAsE;AAEtE,yDAA+D;AAC/D,+DAAmE;AACnE,6CAAoD;AACpD,oDAA4D;AAC5D,gDAAwD;AAEjD,KAAK,UAAU,KAAK,CACzB,OAAyB,EACzB,SAAiB,EACjB,UAAoB,EACpB,OAAiB,EACjB,QAAsB,EACtB,WAA+B;IAE/B,MAAM,aAAa,GAAG,IAAA,4BAAgB,EAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,6BAAmB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAE7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,UAAU,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,CAAA;IAC7C,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,QAAQ,GAAG,yBAAsC,CAAA;IACnD,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrC,WAAW,GAAG,IAAA,4BAAkB,GAAE,CAAA;IACpC,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;QACxD,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,mCAAqB,EAAC,OAAO,CAAC,CAAC,CAAA;QACnD,OAAO,WAAW,CAAA;IACpB,CAAC,EAAE,EAAoB,CAAC,CAAA;IAExB,MAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO;gBACP,SAAS;gBACT,OAAO,EAAE,OAAO;gBAChB,SAAS;aACV,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAA,6BAAY,EAAC,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;AACtD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AwsService } from '../services.js';
2
+ import { Indexer } from './indexer.js';
3
+ /**
4
+ * Get the indexers for a given AWS service.
5
+ *
6
+ * @param awsService the AWS service to get the indexers for
7
+ * @returns An array of indexers that are for the specified service.
8
+ */
9
+ export declare function getIndexersForService(awsService: AwsService): Indexer<any>[];
10
+ //# sourceMappingURL=indexMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexMap.d.ts","sourceRoot":"","sources":["../../../src/indexing/indexMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAuBtC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAE5E"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getIndexersForService = getIndexersForService;
4
+ const services_js_1 = require("../services.js");
5
+ const accountOrgs_js_1 = require("./indexers/accountOrgs.js");
6
+ const apigateways_js_1 = require("./indexers/apigateways.js");
7
+ const buckets_js_1 = require("./indexers/buckets.js");
8
+ const vpcEndpoints_js_1 = require("./indexers/vpcEndpoints.js");
9
+ const allIndexers = [
10
+ accountOrgs_js_1.AccountOrganizationIndexer,
11
+ apigateways_js_1.ApiGatewayIndexer,
12
+ buckets_js_1.S3BucketIndexer,
13
+ vpcEndpoints_js_1.VpcEndpointIndexer
14
+ ];
15
+ const indexMap = new Map();
16
+ for (const indexer of allIndexers) {
17
+ const service = (0, services_js_1.lowerCaseService)(indexer.awsService);
18
+ if (!indexMap.has(service)) {
19
+ indexMap.set(service, []);
20
+ }
21
+ indexMap.get(service).push(indexer);
22
+ }
23
+ /**
24
+ * Get the indexers for a given AWS service.
25
+ *
26
+ * @param awsService the AWS service to get the indexers for
27
+ * @returns An array of indexers that are for the specified service.
28
+ */
29
+ function getIndexersForService(awsService) {
30
+ return indexMap.get((0, services_js_1.lowerCaseService)(awsService)) ?? [];
31
+ }
32
+ //# sourceMappingURL=indexMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexMap.js","sourceRoot":"","sources":["../../../src/indexing/indexMap.ts"],"names":[],"mappings":";;AA8BA,sDAEC;AAhCD,gDAA6D;AAE7D,8DAAsE;AACtE,8DAA6D;AAC7D,sDAAuD;AACvD,gEAA+D;AAE/D,MAAM,WAAW,GAAmB;IAClC,2CAA0B;IAC1B,kCAAiB;IACjB,4BAAe;IACf,oCAAkB;CACnB,CAAA;AAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAA;AAElD,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IAC3B,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,UAAsB;IAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAA,8BAAgB,EAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;AACzD,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { AwsIamStore } from '../persistence/AwsIamStore.js';
2
+ import { AwsService } from '../services.js';
3
+ export interface Indexer<T> {
4
+ /**
5
+ * The service that this indexer is for
6
+ */
7
+ awsService: AwsService;
8
+ /**
9
+ * The name of the indexer
10
+ */
11
+ name: string;
12
+ /**
13
+ * Get the cache for the execute method to update
14
+ */
15
+ getCache(storage: AwsIamStore): Promise<{
16
+ data: T;
17
+ lockId: string;
18
+ }>;
19
+ /**
20
+ * Save the cache after the execute method has updated it
21
+ *
22
+ * @param storage the storage to save the cache to
23
+ * @param cache the updated cache data to save
24
+ * @param lockId the lock ID to use for validation
25
+ * @returns true if the cache was saved successfully, false if there was an optimistic locking failure
26
+ */
27
+ saveCache(storage: AwsIamStore, cache: T, lockId: string): Promise<boolean>;
28
+ /**
29
+ * Update the the cache in place.
30
+ *
31
+ * @param existingCache the existing cache to update
32
+ * @param accounts the accounts to update the cache for
33
+ * @param regions the regions to update the cache for
34
+ */
35
+ updateCache: (existingCache: T, account: string, regions: string[], storage: AwsIamStore) => Promise<void>;
36
+ }
37
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/indexing/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEpE;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE3E;;;;;;OAMG;IACH,WAAW,EAAE,CACX,aAAa,EAAE,CAAC,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../../src/indexing/indexer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { Indexer } from '../indexer.js';
2
+ export declare const AccountOrganizationIndexer: Indexer<Record<string, string>>;
3
+ //# sourceMappingURL=accountOrgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountOrgs.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/accountOrgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,eAAO,MAAM,0BAA0B,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6CtE,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountOrganizationIndexer = void 0;
4
+ const indexName = 'accounts-to-orgs';
5
+ exports.AccountOrganizationIndexer = {
6
+ awsService: 'organizations',
7
+ name: 'accountsToOrganizations',
8
+ getCache: async (storage) => {
9
+ const data = await storage.getIndex(indexName, {});
10
+ return data;
11
+ },
12
+ saveCache: async (storage, cache, lockId) => {
13
+ return storage.saveIndex(indexName, cache, lockId);
14
+ },
15
+ updateCache: async (existingCache, accountId, regions, storage) => {
16
+ const orgForAccount = await storage.getAccountMetadata(accountId, 'organization', undefined);
17
+ const organizationId = orgForAccount?.organizationId;
18
+ // If the account is not a organization management account, we don't need to update the cache
19
+ if (!organizationId) {
20
+ return;
21
+ }
22
+ const currentCacheKeys = Object.keys(existingCache);
23
+ // Remove all existing accounts for the organization
24
+ for (const key of currentCacheKeys) {
25
+ if (existingCache[key] == organizationId) {
26
+ delete existingCache[key];
27
+ }
28
+ }
29
+ const currentInfo = await storage.getOrganizationMetadata(organizationId, 'accounts');
30
+ // If there are no accounts for the org, return
31
+ if (!currentInfo) {
32
+ return;
33
+ }
34
+ //Add the current accounts to the cache
35
+ const currentAccounts = Object.keys(currentInfo);
36
+ for (const account of currentAccounts) {
37
+ existingCache[account] = organizationId;
38
+ }
39
+ }
40
+ };
41
+ //# sourceMappingURL=accountOrgs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountOrgs.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/accountOrgs.ts"],"names":[],"mappings":";;;AAMA,MAAM,SAAS,GAAG,kBAAkB,CAAA;AAEvB,QAAA,0BAA0B,GAAoC;IACzE,UAAU,EAAE,eAAe;IAC3B,IAAI,EAAE,yBAAyB;IAC/B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,kBAAkB,CACpD,SAAS,EACT,cAAc,EACd,SAAS,CACV,CAAA;QAED,MAAM,cAAc,GAAG,aAAa,EAAE,cAAc,CAAA;QAEpD,6FAA6F;QAC7F,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oDAAoD;QACpD,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;gBACzC,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;QACrF,+CAA+C;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAChD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,cAAc,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Indexer } from '../indexer.js';
2
+ export declare const ApiGatewayIndexer: Indexer<Record<string, string>>;
3
+ //# sourceMappingURL=apigateways.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apigateways.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAQvC,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkD7D,CAAA"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiGatewayIndexer = void 0;
4
+ const arn_js_1 = require("../../utils/arn.js");
5
+ const indexName = 'apigateways-to-accounts';
6
+ exports.ApiGatewayIndexer = {
7
+ awsService: 'apigateway',
8
+ name: 'apigatewaysToAccounts',
9
+ getCache: async (storage) => {
10
+ const data = await storage.getIndex(indexName, {});
11
+ return data;
12
+ },
13
+ saveCache: async (storage, cache, lockId) => {
14
+ return storage.saveIndex(indexName, cache, lockId);
15
+ },
16
+ updateCache: async (existingCache, accountId, regions, storage) => {
17
+ const regionsSet = new Set(regions);
18
+ const matchesRegion = (region) => {
19
+ return region && (regionsSet.size == 0 || regionsSet.has(region));
20
+ };
21
+ const currentCacheKeys = Object.keys(existingCache);
22
+ // Remove all existing gateways for the account in the specified regions
23
+ for (const key of currentCacheKeys) {
24
+ const arnParts = (0, arn_js_1.splitArnParts)(key);
25
+ if (existingCache[key] == accountId && matchesRegion(arnParts.region)) {
26
+ delete existingCache[key];
27
+ }
28
+ }
29
+ const currentGateways = [];
30
+ if (regions.length == 0) {
31
+ const gateways = await storage.findResourceMetadata(accountId, {
32
+ service: 'apigateway',
33
+ region: '*',
34
+ resourceType: 'restapis'
35
+ });
36
+ currentGateways.push(...gateways);
37
+ }
38
+ else {
39
+ for (const region of regions) {
40
+ const gateways = await storage.findResourceMetadata(accountId, {
41
+ service: 'apigateway',
42
+ region: region,
43
+ resourceType: 'restapis'
44
+ });
45
+ currentGateways.push(...gateways);
46
+ }
47
+ }
48
+ // Add the new gateways to the cache
49
+ for (const gateway of currentGateways) {
50
+ existingCache[gateway.arn] = accountId;
51
+ }
52
+ }
53
+ };
54
+ //# sourceMappingURL=apigateways.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apigateways.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/apigateways.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAOlD,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAE9B,QAAA,iBAAiB,GAAoC;IAChE,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,wEAAwE;QACxE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAA;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAyB,EAAE,CAAA;QAEhD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;gBACjF,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,UAAU;aACzB,CAAC,CAAA;YACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAqB,SAAS,EAAE;oBACjF,OAAO,EAAE,YAAY;oBACrB,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,UAAU;iBACzB,CAAC,CAAA;gBACF,eAAe,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;QACxC,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { Indexer } from '../indexer.js';
2
+ interface S3BucketIndex {
3
+ accountId: string;
4
+ region: string;
5
+ }
6
+ export declare const S3BucketIndexer: Indexer<Record<string, S3BucketIndex>>;
7
+ export {};
8
+ //# sourceMappingURL=buckets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAUD,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAqClE,CAAA"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S3BucketIndexer = void 0;
4
+ const indexName = 'buckets-to-accounts';
5
+ exports.S3BucketIndexer = {
6
+ awsService: 's3',
7
+ name: 'bucketsToAccounts',
8
+ getCache: async (storage) => {
9
+ const data = await storage.getIndex(indexName, {});
10
+ return data;
11
+ },
12
+ saveCache: async (storage, cache, lockId) => {
13
+ return storage.saveIndex(indexName, cache, lockId);
14
+ },
15
+ updateCache: async (existingCache, accountId, regions, storage) => {
16
+ const regionsSet = new Set(regions);
17
+ const matchesRegion = (region) => {
18
+ return region && (regionsSet.size == 0 || regionsSet.has(region));
19
+ };
20
+ const currentCacheKeys = Object.keys(existingCache);
21
+ // Remove all existing buckets for the account in the specified regions
22
+ for (const key of currentCacheKeys) {
23
+ if (existingCache[key].accountId == accountId && matchesRegion(existingCache[key].region)) {
24
+ delete existingCache[key];
25
+ }
26
+ }
27
+ const currentBuckets = await storage.findResourceMetadata(accountId, {
28
+ service: 's3'
29
+ });
30
+ for (const bucket of currentBuckets) {
31
+ if (matchesRegion(bucket.region)) {
32
+ existingCache[bucket.name] = {
33
+ accountId: accountId,
34
+ region: bucket.region
35
+ };
36
+ }
37
+ }
38
+ }
39
+ };
40
+ //# sourceMappingURL=buckets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buckets.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/buckets.ts"],"names":[],"mappings":";;;AAaA,MAAM,SAAS,GAAG,qBAAqB,CAAA;AAE1B,QAAA,eAAe,GAA2C;IACrE,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,uEAAuE;QACvE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1F,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAiB,SAAS,EAAE;YACnF,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;oBAC3B,SAAS,EAAE,SAAS;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAO;iBACvB,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Indexer } from '../indexer.js';
2
+ export declare const VpcEndpointIndexer: Indexer<Record<string, string[]>>;
3
+ //# sourceMappingURL=vpcEndpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpcEndpoints.d.ts","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AASvC,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAqDhE,CAAA"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VpcEndpointIndexer = void 0;
4
+ const arn_js_1 = require("../../utils/arn.js");
5
+ const indexName = 'vpcs-to-endpoints';
6
+ exports.VpcEndpointIndexer = {
7
+ awsService: 'ec2',
8
+ name: 'vpcsToEndpoints',
9
+ getCache: async (storage) => {
10
+ const data = await storage.getIndex(indexName, {});
11
+ return data;
12
+ },
13
+ saveCache: async (storage, cache, lockId) => {
14
+ return storage.saveIndex(indexName, cache, lockId);
15
+ },
16
+ updateCache: async (existingCache, accountId, regions, storage) => {
17
+ const regionsSet = new Set(regions);
18
+ const matchesRegion = (region) => {
19
+ return region && (regionsSet.size == 0 || regionsSet.has(region));
20
+ };
21
+ const currentCacheKeys = Object.keys(existingCache);
22
+ // Remove all existing vpcs for the account in the specified regions
23
+ for (const key of currentCacheKeys) {
24
+ const arnParts = (0, arn_js_1.splitArnParts)(key);
25
+ if (arnParts.accountId == accountId && matchesRegion(arnParts.region)) {
26
+ delete existingCache[key];
27
+ }
28
+ }
29
+ const currentEndpoints = [];
30
+ if (regions.length == 0) {
31
+ const gateways = await storage.findResourceMetadata(accountId, {
32
+ service: 'ec2',
33
+ region: '*',
34
+ resourceType: 'vpc-endpoint'
35
+ });
36
+ currentEndpoints.push(...gateways);
37
+ }
38
+ else {
39
+ for (const region of regions) {
40
+ const gateways = await storage.findResourceMetadata(accountId, {
41
+ service: 'ec2',
42
+ region: region,
43
+ resourceType: 'vpc-endpoint'
44
+ });
45
+ currentEndpoints.push(...gateways);
46
+ }
47
+ }
48
+ for (const endpoint of currentEndpoints) {
49
+ const vpcId = endpoint.vpc;
50
+ if (!existingCache[vpcId]) {
51
+ existingCache[vpcId] = [];
52
+ }
53
+ existingCache[vpcId].push(endpoint.arn);
54
+ }
55
+ }
56
+ };
57
+ //# sourceMappingURL=vpcEndpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vpcEndpoints.js","sourceRoot":"","sources":["../../../../src/indexing/indexers/vpcEndpoints.ts"],"names":[],"mappings":";;;AAAA,+CAAkD;AAQlD,MAAM,SAAS,GAAG,mBAAmB,CAAA;AAExB,QAAA,kBAAkB,GAAsC;IACnE,UAAU,EAAE,KAAK;IACjB,IAAI,EAAE,iBAAiB;IACvB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;QAClD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,aAAa,GAAG,CAAC,MAA0B,EAAE,EAAE;YACnD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnE,CAAC,CAAA;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAEnD,oEAAoE;QACpE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,CAAA;YACnC,IAAI,QAAQ,CAAC,SAAS,IAAI,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAA0B,EAAE,CAAA;QAElD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;gBAClF,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,GAAG;gBACX,YAAY,EAAE,cAAc;aAC7B,CAAC,CAAA;YACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAsB,SAAS,EAAE;oBAClF,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,cAAc;iBAC7B,CAAC,CAAA;gBACF,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;YAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;YAC3B,CAAC;YACD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;CACF,CAAA"}