@cloud-copilot/iam-collect 0.1.15 → 0.1.17

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 (44) hide show
  1. package/README.md +13 -9
  2. package/dist/cjs/persistence/AwsIamStore.d.ts +99 -0
  3. package/dist/cjs/persistence/AwsIamStore.d.ts.map +1 -1
  4. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts +43 -1
  5. package/dist/cjs/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
  6. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js +122 -28
  7. package/dist/cjs/persistence/file/FileSystemAwsIamStore.js.map +1 -1
  8. package/dist/cjs/persistence/util.d.ts +1 -1
  9. package/dist/cjs/persistence/util.d.ts.map +1 -1
  10. package/dist/cjs/persistence/util.js +9 -3
  11. package/dist/cjs/persistence/util.js.map +1 -1
  12. package/dist/cjs/services.d.ts +1 -1
  13. package/dist/cjs/services.d.ts.map +1 -1
  14. package/dist/cjs/services.js +1 -1
  15. package/dist/cjs/services.js.map +1 -1
  16. package/dist/cjs/syncs/organizations/organizations.d.ts +49 -0
  17. package/dist/cjs/syncs/organizations/organizations.d.ts.map +1 -0
  18. package/dist/cjs/syncs/organizations/organizations.js +347 -0
  19. package/dist/cjs/syncs/organizations/organizations.js.map +1 -0
  20. package/dist/cjs/syncs/syncMap.d.ts.map +1 -1
  21. package/dist/cjs/syncs/syncMap.js +8 -1
  22. package/dist/cjs/syncs/syncMap.js.map +1 -1
  23. package/dist/esm/persistence/AwsIamStore.d.ts +99 -0
  24. package/dist/esm/persistence/AwsIamStore.d.ts.map +1 -1
  25. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts +43 -1
  26. package/dist/esm/persistence/file/FileSystemAwsIamStore.d.ts.map +1 -1
  27. package/dist/esm/persistence/file/FileSystemAwsIamStore.js +122 -28
  28. package/dist/esm/persistence/file/FileSystemAwsIamStore.js.map +1 -1
  29. package/dist/esm/persistence/util.d.ts +1 -1
  30. package/dist/esm/persistence/util.d.ts.map +1 -1
  31. package/dist/esm/persistence/util.js +9 -3
  32. package/dist/esm/persistence/util.js.map +1 -1
  33. package/dist/esm/services.d.ts +1 -1
  34. package/dist/esm/services.d.ts.map +1 -1
  35. package/dist/esm/services.js +1 -1
  36. package/dist/esm/services.js.map +1 -1
  37. package/dist/esm/syncs/organizations/organizations.d.ts +49 -0
  38. package/dist/esm/syncs/organizations/organizations.d.ts.map +1 -0
  39. package/dist/esm/syncs/organizations/organizations.js +339 -0
  40. package/dist/esm/syncs/organizations/organizations.js.map +1 -0
  41. package/dist/esm/syncs/syncMap.d.ts.map +1 -1
  42. package/dist/esm/syncs/syncMap.js +8 -1
  43. package/dist/esm/syncs/syncMap.js.map +1 -1
  44. package/package.json +2 -1
@@ -5,10 +5,33 @@ export class FileSystemAwsIamStore {
5
5
  constructor(baseFolder, partition, fsAdapter) {
6
6
  this.baseFolder = baseFolder;
7
7
  this.partition = partition;
8
- console.log(`Initializing FileSystemAwsIamStore with baseFolder: ${baseFolder}, partition: ${partition}`);
9
8
  this.baseFolder = join(baseFolder, 'aws', partition);
10
9
  this.fsAdapter = fsAdapter || new FileSystemAdapter();
11
10
  }
11
+ organizationPath(organizationId) {
12
+ return join(this.baseFolder, 'organizations', organizationId).toLowerCase();
13
+ }
14
+ organizationMetadataPath(organizationId, metadataType) {
15
+ return join(this.organizationPath(organizationId), `${metadataType}.json`).toLowerCase();
16
+ }
17
+ organizationalUnitsPath(organizationId) {
18
+ return join(this.organizationPath(organizationId), 'ous').toLowerCase();
19
+ }
20
+ organizationalUnitPath(organizationId, ouId) {
21
+ return join(this.organizationalUnitsPath(organizationId), ouId).toLowerCase();
22
+ }
23
+ organizationPoliciesPath(organizationId, policyType) {
24
+ return join(this.organizationPath(organizationId), policyType).toLowerCase();
25
+ }
26
+ organizationPolicyPath(organizationId, policyType, policyId) {
27
+ return join(this.organizationPoliciesPath(organizationId, policyType), policyId).toLowerCase();
28
+ }
29
+ organizationPolicyMetadataPath(organizationId, policyType, policyId, metadataType) {
30
+ return join(this.organizationPolicyPath(organizationId, policyType, policyId), `${metadataType}.json`).toLowerCase();
31
+ }
32
+ organizationalUnitMetadataPath(organizationId, ouId, metadataType) {
33
+ return join(this.organizationalUnitPath(organizationId, ouId), `${metadataType}.json`).toLowerCase();
34
+ }
12
35
  accountPath(accountId) {
13
36
  return join(this.baseFolder, 'accounts', accountId).toLowerCase();
14
37
  }
@@ -20,29 +43,13 @@ export class FileSystemAwsIamStore {
20
43
  return join(prefix, `${metadataType}.json`).toLowerCase();
21
44
  }
22
45
  async saveResourceMetadata(accountId, arn, metadataType, data) {
23
- if (typeof data === 'string') {
24
- data = data.trim();
25
- }
26
- if (data === undefined ||
27
- data === null ||
28
- data === '' ||
29
- data === '{}' ||
30
- data === '[]' ||
31
- (Array.isArray(data) && data.length === 0) ||
32
- (typeof data === 'object' && Object.keys(data).length === 0)) {
33
- await this.deleteResourceMetadata(accountId, arn, metadataType);
34
- return;
35
- }
36
- const content = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
37
46
  const filePath = this.buildMetadataPath(accountId, arn, metadataType);
38
- await this.fsAdapter.writeFile(filePath, content);
47
+ await this.saveOrDeleteFile(filePath, data);
39
48
  }
40
49
  async listResourceMetadata(accountId, arn) {
41
50
  // List all files in the resource directory to find metadata types
42
51
  const dirPath = this.buildResourcePath(accountId, arn);
43
- // console.log(dirPath)
44
52
  const files = await this.fsAdapter.listDirectory(dirPath);
45
- // console.log(files)
46
53
  // Filter for files that match the pattern of *.json
47
54
  const metadataTypes = files
48
55
  .filter((file) => file.endsWith('.json'))
@@ -51,11 +58,7 @@ export class FileSystemAwsIamStore {
51
58
  }
52
59
  async getResourceMetadata(accountId, arn, metadataType, defaultValue) {
53
60
  const filePath = this.buildMetadataPath(accountId, arn, metadataType);
54
- const contents = await this.fsAdapter.readFile(filePath);
55
- if (!contents) {
56
- return defaultValue;
57
- }
58
- return JSON.parse(contents);
61
+ return this.contentOrDefault(filePath, defaultValue);
59
62
  }
60
63
  async deleteResourceMetadata(accountId, arn, metadataType) {
61
64
  const filePath = this.buildMetadataPath(accountId, arn, metadataType);
@@ -66,24 +69,115 @@ export class FileSystemAwsIamStore {
66
69
  await this.fsAdapter.deleteDirectory(dirPath);
67
70
  }
68
71
  async listResources(accountId, options) {
69
- const dirPath = resourceTypePrefix(this.accountPath(accountId), { ...options, partition: this.partition }, sep);
72
+ const dirPath = resourceTypePrefix(this.accountPath(accountId), { ...options }, sep);
70
73
  return await this.fsAdapter.listDirectory(dirPath);
71
74
  }
72
75
  async syncResourceList(accountId, options, desiredResources) {
73
- const dirPath = resourceTypePrefix(this.accountPath(accountId), { ...options, partition: this.partition }, sep);
76
+ const dirPath = resourceTypePrefix(this.accountPath(accountId), { ...options }, sep);
74
77
  const existingSubDirs = (await this.fsAdapter.listDirectory(dirPath)).map((subDir) => join(dirPath, subDir));
75
78
  const desiredDirs = new Set(desiredResources.map((desiredArn) => {
76
79
  const resourceDir = this.buildResourcePath(accountId, desiredArn);
77
80
  return resourceDir;
78
81
  }));
79
- // console.log(desiredDirs)
80
82
  // Identify resources that exist in storage but not in desiredResources.
81
83
  const resourcesToDelete = existingSubDirs.filter((s) => !desiredDirs.has(s));
82
84
  for (const resource of resourcesToDelete) {
83
- // const resourceDir = join(dirPath, resource)
84
- // console.log('Deleting resource directory:', resource)
85
85
  await this.fsAdapter.deleteDirectory(resource);
86
86
  }
87
87
  }
88
+ async saveOrganizationMetadata(organizationId, metadataType, data) {
89
+ const filePath = this.organizationMetadataPath(organizationId, metadataType);
90
+ await this.saveOrDeleteFile(filePath, data);
91
+ }
92
+ async deleteOrganizationMetadata(organizationId, metadataType) {
93
+ const filePath = this.organizationMetadataPath(organizationId, metadataType);
94
+ await this.fsAdapter.deleteFile(filePath);
95
+ }
96
+ async listOrganizationalUnits(organizationId) {
97
+ const dirPath = this.organizationalUnitsPath(organizationId);
98
+ return await this.fsAdapter.listDirectory(dirPath);
99
+ }
100
+ async deleteOrganizationalUnitMetadata(organizationId, ouId, metadataType) {
101
+ const filePath = this.organizationalUnitMetadataPath(organizationId, ouId, metadataType);
102
+ await this.fsAdapter.deleteFile(filePath);
103
+ }
104
+ async saveOrganizationalUnitMetadata(organizationId, ouId, metadataType, data) {
105
+ const filePath = this.organizationalUnitMetadataPath(organizationId, ouId, metadataType);
106
+ await this.saveOrDeleteFile(filePath, data);
107
+ }
108
+ async getOrganizationalUnitMetadata(organizationId, ouId, metadataType, defaultValue) {
109
+ const filePath = this.organizationalUnitMetadataPath(organizationId, ouId, metadataType);
110
+ return this.contentOrDefault(filePath, defaultValue);
111
+ }
112
+ async deleteOrganizationalUnit(organizationId, ouId) {
113
+ const dirPath = this.organizationalUnitPath(organizationId, ouId);
114
+ await this.fsAdapter.deleteDirectory(dirPath);
115
+ }
116
+ async deleteOrganizationPolicyMetadata(organizationId, policyType, policyId, metadataType) {
117
+ const filePath = this.organizationPolicyMetadataPath(organizationId, policyType, policyId, metadataType);
118
+ await this.fsAdapter.deleteFile(filePath);
119
+ }
120
+ async saveOrganizationPolicyMetadata(organizationId, policyType, policyId, metadataType, data) {
121
+ const filePath = this.organizationPolicyMetadataPath(organizationId, policyType, policyId, metadataType);
122
+ await this.saveOrDeleteFile(filePath, data);
123
+ }
124
+ async getOrganizationPolicyMetadata(organizationId, policyType, policyId, metadataType, defaultValue) {
125
+ const filePath = this.organizationPolicyMetadataPath(organizationId, policyType, policyId, metadataType);
126
+ return this.contentOrDefault(filePath, defaultValue);
127
+ }
128
+ async deleteOrganizationPolicy(organizationId, policyType, policyId) {
129
+ const dirPath = this.organizationPolicyPath(organizationId, policyType, policyId);
130
+ await this.fsAdapter.deleteDirectory(dirPath);
131
+ }
132
+ async listOrganizationPolicies(organizationId, policyType) {
133
+ const dirPath = this.organizationPoliciesPath(organizationId, policyType);
134
+ return await this.fsAdapter.listDirectory(dirPath);
135
+ }
136
+ /**
137
+ * Checks if a given content value is empty.
138
+ *
139
+ * @param content The content to check.
140
+ * @returns true if the content is empty, false otherwise.
141
+ */
142
+ isEmptyContent(content) {
143
+ return (content === undefined ||
144
+ content === null ||
145
+ content === '' ||
146
+ content === '{}' ||
147
+ content === '[]' ||
148
+ (Array.isArray(content) && content.length === 0) ||
149
+ (typeof content === 'object' && Object.keys(content).length === 0));
150
+ }
151
+ /**
152
+ * Read the content of a file or return a default value if the file does not exist.
153
+ *
154
+ * @param filePath the path to the file
155
+ * @param defaultValue the default value to return if the file does not exist
156
+ * @returns the content of the file or the default value
157
+ */
158
+ async contentOrDefault(filePath, defaultValue) {
159
+ const contents = await this.fsAdapter.readFile(filePath);
160
+ if (!contents) {
161
+ return defaultValue;
162
+ }
163
+ return JSON.parse(contents);
164
+ }
165
+ /**
166
+ * Either saves the provided data to a file or deletes the file if the data is empty.
167
+ *
168
+ * @param filePath the path to the file
169
+ * @param data the data to save in the file
170
+ */
171
+ async saveOrDeleteFile(filePath, data) {
172
+ if (typeof data === 'string') {
173
+ data = data.trim();
174
+ }
175
+ if (this.isEmptyContent(data)) {
176
+ await this.fsAdapter.deleteFile(filePath);
177
+ return;
178
+ }
179
+ const content = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
180
+ await this.fsAdapter.writeFile(filePath, content);
181
+ }
88
182
  }
89
183
  //# sourceMappingURL=FileSystemAwsIamStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystemAwsIamStore.js","sourceRoot":"","sources":["../../../../src/persistence/file/FileSystemAwsIamStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAEhC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE1D,MAAM,OAAO,qBAAqB;IAGhC,YACmB,UAAkB,EAClB,SAAiB,EAClC,SAA6B;QAFZ,eAAU,GAAV,UAAU,CAAQ;QAClB,cAAS,GAAT,SAAS,CAAQ;QAGlC,OAAO,CAAC,GAAG,CACT,uDAAuD,UAAU,gBAAgB,SAAS,EAAE,CAC7F,CAAA;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,iBAAiB,EAAE,CAAA;IACvD,CAAC;IAEO,WAAW,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;IACnE,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,GAAW;QACtD,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IAC5E,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,GAAW,EAAE,YAAoB;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACrD,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IAC3D,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,SAAiB,EACjB,GAAW,EACX,YAAoB,EACpB,IAAkB;QAElB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;QACD,IACE,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,IAAI;YACb,IAAI,KAAK,EAAE;YACX,IAAI,KAAK,IAAI;YACb,IAAI,KAAK,IAAI;YACb,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;YAC1C,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5D,CAAC;YACD,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;YAC/D,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;QACrE,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,GAAW;QACvD,kEAAkE;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACtD,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACzD,qBAAqB;QACrB,oDAAoD;QACpD,MAAM,aAAa,GAAG,KAAK;aACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA,CAAC,6BAA6B;QAEzE,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,SAAiB,EACjB,GAAW,EACX,YAAoB,EACpB,YAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;QACrE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,YAAuD,CAAA;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAM,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAC1B,SAAiB,EACjB,GAAW,EACX,YAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC,CAAA;QACrE,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,GAAW;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACtD,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,OAA0B;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAChC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAC3B,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACzC,GAAG,CACJ,CAAA;QACD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,OAA0B,EAC1B,gBAA0B;QAE1B,MAAM,OAAO,GAAG,kBAAkB,CAChC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAC3B,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EACzC,GAAG,CACJ,CAAA;QAED,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACnF,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CACtB,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,gBAAgB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YACjE,OAAO,WAAW,CAAA;QACpB,CAAC,CAAC,CACH,CAAA;QAED,2BAA2B;QAC3B,wEAAwE;QACxE,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAE5E,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACzC,8CAA8C;YAC9C,wDAAwD;YACxD,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"FileSystemAwsIamStore.js","sourceRoot":"","sources":["../../../../src/persistence/file/FileSystemAwsIamStore.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export declare function resourcePrefix(startingPath: string, resourceArn: string
18
18
  * @returns A string that represents the resource type prefix.
19
19
  */
20
20
  export declare function resourceTypePrefix(startingPath: string, parts: {
21
- partition: string;
21
+ partition?: string;
22
22
  account?: string;
23
23
  service: string;
24
24
  region?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/persistence/util.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAeR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,SAAS,EAAE,MAAM,GAChB,MAAM,CAKR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKtF"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/persistence/util.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAcR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE;IACL,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,EACD,SAAS,EAAE,MAAM,GAChB,MAAM,CAYR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKtF"}
@@ -13,10 +13,9 @@ export function resourcePrefix(startingPath, resourceArn, separator) {
13
13
  const parts = splitArnParts(resourceArn);
14
14
  return joinPathParts([
15
15
  startingPath,
16
- parts.partition,
17
16
  parts.service,
18
17
  parts.region,
19
- parts.accountId,
18
+ parts.accountId === 'aws' ? parts.accountId : undefined,
20
19
  parts.resourceType,
21
20
  parts.resourcePath ? encodeURIComponent(parts.resourcePath.trim()) : undefined
22
21
  ], separator);
@@ -30,7 +29,14 @@ export function resourcePrefix(startingPath, resourceArn, separator) {
30
29
  * @returns A string that represents the resource type prefix.
31
30
  */
32
31
  export function resourceTypePrefix(startingPath, parts, separator) {
33
- return joinPathParts([startingPath, parts.partition, parts.service, parts.region, parts.account, parts.resourceType], separator);
32
+ return joinPathParts([
33
+ startingPath,
34
+ parts.partition,
35
+ parts.service,
36
+ parts.region,
37
+ parts.account === 'aws' ? parts.account : undefined,
38
+ parts.resourceType
39
+ ], separator);
34
40
  }
35
41
  export function joinPathParts(parts, separator) {
36
42
  // Filter out undefined or empty strings
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/persistence/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,YAAoB,EACpB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAExC,OAAO,aAAa,CAClB;QACE,YAAY;QACZ,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KAC/E,EACD,SAAS,CACV,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,KAMC,EACD,SAAiB;IAEjB,OAAO,aAAa,CAClB,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,EAC/F,SAAS,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA6B,EAAE,SAAiB;IAC5E,wCAAwC;IACxC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACtF,sCAAsC;IACtC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACtC,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/persistence/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,YAAoB,EACpB,WAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAExC,OAAO,aAAa,CAClB;QACE,YAAY;QACZ,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACvD,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KAC/E,EACD,SAAS,CACV,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,KAMC,EACD,SAAiB;IAEjB,OAAO,aAAa,CAClB;QACE,YAAY;QACZ,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACnD,KAAK,CAAC,YAAY;KACnB,EACD,SAAS,CACV,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA6B,EAAE,SAAiB;IAC5E,wCAAwC;IACxC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACtF,sCAAsC;IACtC,OAAO,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACtC,CAAC"}
@@ -1,3 +1,3 @@
1
- export type AwsService = 'iam' | 'kms' | 'lambda' | 's3';
1
+ export type AwsService = 'iam' | 'kms' | 'lambda' | 'organizations' | 's3';
2
2
  export declare const allServices: AwsService[];
3
3
  //# sourceMappingURL=services.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAA;AAExD,eAAO,MAAM,WAAW,EAAE,UAAU,EAAmC,CAAA"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,eAAe,GAAG,IAAI,CAAA;AAE1E,eAAO,MAAM,WAAW,EAAE,UAAU,EAAoD,CAAA"}
@@ -1,2 +1,2 @@
1
- export const allServices = ['iam', 'kms', 'lambda', 's3'];
1
+ export const allServices = ['iam', 'kms', 'lambda', 'organizations', 's3'];
2
2
  //# sourceMappingURL=services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/services.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { Account, Organization, OrganizationalUnit, OrganizationsClient, Root } from '@aws-sdk/client-organizations';
2
+ import { Sync } from '../sync.js';
3
+ export declare const OrganizationSync: Sync;
4
+ /**
5
+ * Get the details of an organization or an account.
6
+ *
7
+ * @param client The OrganizationsClient to use
8
+ * @returns the details of the organization the account belongs to or undefined if the account is not part of an organization or does not have permission.
9
+ */
10
+ export declare function getOrganizationDetails(client: OrganizationsClient): Promise<Organization | undefined>;
11
+ /**
12
+ * Get the root Organizational Unit for an organization
13
+ *
14
+ * @param client The OrganizationsClient to use
15
+ * @returns the root Organizational Unit for the organization if it exists
16
+ */
17
+ export declare function getOrganizationRoot(client: OrganizationsClient): Promise<Root | undefined>;
18
+ /**
19
+ * Get the tags for an Organizational Unit
20
+ *
21
+ * @param client The OrganizationsClient to use
22
+ * @param ouId The AWS id of the Organizational Unit to get the tags for
23
+ * @returns The tags for the Organizational Unit
24
+ */
25
+ export declare function getTagsForOu(client: OrganizationsClient, ouId: string): Promise<Record<string, string>>;
26
+ /**
27
+ * Get the tags for an account
28
+ * @param client The OrganizationsClient to use
29
+ * @param accountId The AWS id of the account to get the tags for
30
+ * @returns The tags for the account
31
+ */
32
+ export declare function getTagsForAccount(client: OrganizationsClient, accountId: string): Promise<Record<string, string>>;
33
+ /**
34
+ * Get the organizational units for a parent organizational unit
35
+ *
36
+ * @param client The OrganizationsClient to use
37
+ * @param parentId The AWS id of the parent organizational unit
38
+ * @returns The organizational units directly under the parent
39
+ */
40
+ export declare function getChildOrgUnits(client: OrganizationsClient, parentId: string): Promise<OrganizationalUnit[]>;
41
+ /**
42
+ * Get the accounts for a parent organizational unit
43
+ *
44
+ * @param client The OrganizationsClient to use
45
+ * @param parentId The AWS id of the parent organizational unit
46
+ * @returns The accounts directly under the parent
47
+ */
48
+ export declare function getAccountsForParent(client: OrganizationsClient, parentId: string): Promise<Account[]>;
49
+ //# sourceMappingURL=organizations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../../../src/syncs/organizations/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAUP,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EAGnB,IAAI,EACL,MAAM,+BAA+B,CAAA;AAKtC,OAAO,EAAE,IAAI,EAAe,MAAM,YAAY,CAAA;AA+B9C,eAAO,MAAM,gBAAgB,EAAE,IAmM9B,CAAA;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAenC;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAchG;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEjC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEjC;AA4BD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAQ/B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,EAAE,CAAC,CAYpB"}