@cloud-copilot/iam-lens 0.1.53 → 0.1.55
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.
- package/dist/cjs/cli.js +5 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/collect/client.d.ts +12 -6
- package/dist/cjs/collect/client.d.ts.map +1 -1
- package/dist/cjs/collect/client.js +37 -26
- package/dist/cjs/collect/client.js.map +1 -1
- package/dist/cjs/principalIndex/makePrincipalIndex.d.ts +5 -0
- package/dist/cjs/principalIndex/makePrincipalIndex.d.ts.map +1 -1
- package/dist/cjs/principalIndex/makePrincipalIndex.js +33 -11
- package/dist/cjs/principalIndex/makePrincipalIndex.js.map +1 -1
- package/dist/cjs/utils/bitset.d.ts +45 -0
- package/dist/cjs/utils/bitset.d.ts.map +1 -0
- package/dist/cjs/utils/bitset.js +149 -0
- package/dist/cjs/utils/bitset.js.map +1 -0
- package/dist/esm/cli.js +5 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/collect/client.d.ts +12 -6
- package/dist/esm/collect/client.d.ts.map +1 -1
- package/dist/esm/collect/client.js +37 -26
- package/dist/esm/collect/client.js.map +1 -1
- package/dist/esm/principalIndex/makePrincipalIndex.d.ts +5 -0
- package/dist/esm/principalIndex/makePrincipalIndex.d.ts.map +1 -1
- package/dist/esm/principalIndex/makePrincipalIndex.js +33 -11
- package/dist/esm/principalIndex/makePrincipalIndex.js.map +1 -1
- package/dist/esm/utils/bitset.d.ts +45 -0
- package/dist/esm/utils/bitset.d.ts.map +1 -0
- package/dist/esm/utils/bitset.js +141 -0
- package/dist/esm/utils/bitset.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makePrincipalIndex.js","sourceRoot":"","sources":["../../../src/principalIndex/makePrincipalIndex.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"makePrincipalIndex.js","sourceRoot":"","sources":["../../../src/principalIndex/makePrincipalIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import BitSet from 'bitset';
|
|
2
|
+
/**
|
|
3
|
+
* Encode a BitSet into a more compact representation
|
|
4
|
+
*
|
|
5
|
+
* @param bitset the BitSet to encode
|
|
6
|
+
* @returns the encoded representation
|
|
7
|
+
*/
|
|
8
|
+
export declare function encodeBitSet(bitset: BitSet): any;
|
|
9
|
+
/**
|
|
10
|
+
* Decode a BitSet from a compact representation
|
|
11
|
+
*
|
|
12
|
+
* @param encoded the encoded representation
|
|
13
|
+
* @returns the decoded BitSet
|
|
14
|
+
*/
|
|
15
|
+
export declare function decodeBitSet(encoded: any): BitSet;
|
|
16
|
+
/**
|
|
17
|
+
* Compress a hexadecimal string by replacing runs of zeros with a compact representation
|
|
18
|
+
*
|
|
19
|
+
* @param rawHex the original hexadecimal string
|
|
20
|
+
* @returns the compressed hexadecimal string
|
|
21
|
+
*/
|
|
22
|
+
export declare function compressHex(rawHex: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Decompress a hexadecimal string
|
|
25
|
+
*
|
|
26
|
+
* @param compressedHex the compressed hexadecimal string
|
|
27
|
+
* @returns the decompressed hexadecimal string
|
|
28
|
+
*/
|
|
29
|
+
export declare function decompressHex(compressedHex: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Compress a principal string for storage
|
|
32
|
+
*
|
|
33
|
+
* @param principalString the full principal string
|
|
34
|
+
* @returns the compressed principal string
|
|
35
|
+
*/
|
|
36
|
+
export declare function compressPrincipalString(principalString: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Decompress a principal string
|
|
39
|
+
*
|
|
40
|
+
* @param compressedString the compressed principal string
|
|
41
|
+
* @param prefix the ARN prefix to use
|
|
42
|
+
* @returns the decompressed principal string
|
|
43
|
+
*/
|
|
44
|
+
export declare function decompressPrincipalString(compressedString: string, prefix?: string): string;
|
|
45
|
+
//# sourceMappingURL=bitset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../../src/utils/bitset.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAchD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CA2BjD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAgBvE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,gBAAgB,EAAE,MAAM,EACxB,MAAM,GAAE,MAAwB,GAC/B,MAAM,CAuBR"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import BitSet from 'bitset';
|
|
2
|
+
/**
|
|
3
|
+
* Encode a BitSet into a more compact representation
|
|
4
|
+
*
|
|
5
|
+
* @param bitset the BitSet to encode
|
|
6
|
+
* @returns the encoded representation
|
|
7
|
+
*/
|
|
8
|
+
export function encodeBitSet(bitset) {
|
|
9
|
+
const rawHex = bitset.toString(16);
|
|
10
|
+
const compressedHex = compressHex(rawHex);
|
|
11
|
+
const sparseString = bitset.toArray().join(',');
|
|
12
|
+
if (sparseString.length < compressedHex.length && sparseString.length < rawHex.length) {
|
|
13
|
+
return sparseString;
|
|
14
|
+
}
|
|
15
|
+
if (compressedHex.length < rawHex.length) {
|
|
16
|
+
return compressedHex;
|
|
17
|
+
}
|
|
18
|
+
return rawHex;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Decode a BitSet from a compact representation
|
|
22
|
+
*
|
|
23
|
+
* @param encoded the encoded representation
|
|
24
|
+
* @returns the decoded BitSet
|
|
25
|
+
*/
|
|
26
|
+
export function decodeBitSet(encoded) {
|
|
27
|
+
if (Array.isArray(encoded)) {
|
|
28
|
+
const bitset = new BitSet();
|
|
29
|
+
bitset.setRange(encoded[0], encoded[1], 1);
|
|
30
|
+
return bitset;
|
|
31
|
+
}
|
|
32
|
+
else if (typeof encoded === 'string') {
|
|
33
|
+
// Check if it's a sparse array (comma-separated numbers)
|
|
34
|
+
if (encoded.includes(',')) {
|
|
35
|
+
// It's a sparse array - convert to BitSet
|
|
36
|
+
const positions = encoded.split(',').map(Number);
|
|
37
|
+
const bitset = new BitSet();
|
|
38
|
+
positions.forEach((pos) => bitset.set(pos, 1));
|
|
39
|
+
return bitset;
|
|
40
|
+
}
|
|
41
|
+
else if (encoded.includes('z')) {
|
|
42
|
+
// It's compressed hex - decompress first
|
|
43
|
+
const decompressedHex = decompressHex(encoded);
|
|
44
|
+
return BitSet.fromHexString(decompressedHex);
|
|
45
|
+
}
|
|
46
|
+
else if (encoded === '') {
|
|
47
|
+
return new BitSet();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Assume it's raw hex
|
|
51
|
+
return BitSet.fromHexString(encoded);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Handle other formats if needed
|
|
55
|
+
return BitSet.fromHexString(encoded);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Compress a hexadecimal string by replacing runs of zeros with a compact representation
|
|
59
|
+
*
|
|
60
|
+
* @param rawHex the original hexadecimal string
|
|
61
|
+
* @returns the compressed hexadecimal string
|
|
62
|
+
*/
|
|
63
|
+
export function compressHex(rawHex) {
|
|
64
|
+
const repeatedZeroPattern = /((0){4,})/g;
|
|
65
|
+
return rawHex.replace(repeatedZeroPattern, (match) => {
|
|
66
|
+
return `z${match.length} `;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Decompress a hexadecimal string
|
|
71
|
+
*
|
|
72
|
+
* @param compressedHex the compressed hexadecimal string
|
|
73
|
+
* @returns the decompressed hexadecimal string
|
|
74
|
+
*/
|
|
75
|
+
export function decompressHex(compressedHex) {
|
|
76
|
+
// Handle the "z" compression pattern (z followed by number of zeros)
|
|
77
|
+
const zeroPattern = /z(\d+)\s*/g;
|
|
78
|
+
return compressedHex.replace(zeroPattern, (match, count) => {
|
|
79
|
+
return '0'.repeat(parseInt(count, 10));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Compress a principal string for storage
|
|
84
|
+
*
|
|
85
|
+
* @param principalString the full principal string
|
|
86
|
+
* @returns the compressed principal string
|
|
87
|
+
*/
|
|
88
|
+
export function compressPrincipalString(principalString) {
|
|
89
|
+
const parts = principalString.split(':');
|
|
90
|
+
let accountId = parts[4];
|
|
91
|
+
let end = parts.slice(5).join(':');
|
|
92
|
+
if (end.startsWith('role/aws-reserved/')) {
|
|
93
|
+
end = end.replace('role/aws-reserved/', 'ar/');
|
|
94
|
+
}
|
|
95
|
+
else if (end.startsWith('role/aws-service-role/')) {
|
|
96
|
+
end = end.replace('role/aws-service-role/', 'asr/');
|
|
97
|
+
}
|
|
98
|
+
else if (end.startsWith('role/service-role/')) {
|
|
99
|
+
end = end.replace('role/service-role/', 'sr/');
|
|
100
|
+
}
|
|
101
|
+
else if (end.startsWith('role/')) {
|
|
102
|
+
end = end.replace('role/', 'r/');
|
|
103
|
+
}
|
|
104
|
+
else if (end.startsWith('user/')) {
|
|
105
|
+
end = end.replace('user/', 'u/');
|
|
106
|
+
}
|
|
107
|
+
return `${accountId}:${end}`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Decompress a principal string
|
|
111
|
+
*
|
|
112
|
+
* @param compressedString the compressed principal string
|
|
113
|
+
* @param prefix the ARN prefix to use
|
|
114
|
+
* @returns the decompressed principal string
|
|
115
|
+
*/
|
|
116
|
+
export function decompressPrincipalString(compressedString, prefix = 'arn:aws:iam::') {
|
|
117
|
+
const parts = compressedString.split(':');
|
|
118
|
+
if (parts.length !== 2) {
|
|
119
|
+
throw new Error(`Invalid compressed principal format: ${compressedString}`);
|
|
120
|
+
}
|
|
121
|
+
const accountId = parts[0];
|
|
122
|
+
let roleType = parts[1];
|
|
123
|
+
// Expand compressed role types back to full paths
|
|
124
|
+
if (roleType.startsWith('ar/')) {
|
|
125
|
+
roleType = roleType.replace('ar/', 'role/aws-reserved/');
|
|
126
|
+
}
|
|
127
|
+
else if (roleType.startsWith('asr/')) {
|
|
128
|
+
roleType = roleType.replace('asr/', 'role/aws-service-role/');
|
|
129
|
+
}
|
|
130
|
+
else if (roleType.startsWith('sr/')) {
|
|
131
|
+
roleType = roleType.replace('sr/', 'role/service-role/');
|
|
132
|
+
}
|
|
133
|
+
else if (roleType.startsWith('r/')) {
|
|
134
|
+
roleType = roleType.replace('r/', 'role/');
|
|
135
|
+
}
|
|
136
|
+
else if (roleType.startsWith('u/')) {
|
|
137
|
+
roleType = roleType.replace('u/', 'user/');
|
|
138
|
+
}
|
|
139
|
+
return `${prefix}${accountId}:${roleType}`;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=bitset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../../src/utils/bitset.ts"],"names":[],"mappings":"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"}
|