@sudoplatform/sudo-common 7.1.3 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/bin/outdated-with-suppression.sh +203 -0
  2. package/bin/suppress-audit.sh +15 -0
  3. package/bin/suppress-outdated.sh +60 -0
  4. package/bin/yarn-audit-with-suppression.sh +19 -0
  5. package/cjs/configurationManager/defaultConfigurationManager.d.ts +123 -0
  6. package/cjs/configurationManager/defaultConfigurationManager.js +122 -0
  7. package/cjs/configurationManager/defaultConfigurationManager.js.map +1 -0
  8. package/cjs/errors/error.d.ts +263 -0
  9. package/cjs/errors/error.js +442 -0
  10. package/cjs/errors/error.js.map +1 -0
  11. package/cjs/index.d.ts +9 -0
  12. package/cjs/index.js +13 -0
  13. package/cjs/index.js.map +1 -0
  14. package/cjs/logging/bunyanLogger.d.ts +8 -0
  15. package/cjs/logging/bunyanLogger.js +36 -0
  16. package/cjs/logging/bunyanLogger.js.map +1 -0
  17. package/cjs/logging/logger.d.ts +87 -0
  18. package/cjs/logging/logger.js +77 -0
  19. package/cjs/logging/logger.js.map +1 -0
  20. package/cjs/sudoKeyArchive/index.d.ts +4 -0
  21. package/cjs/sudoKeyArchive/index.js +8 -0
  22. package/cjs/sudoKeyArchive/index.js.map +1 -0
  23. package/cjs/sudoKeyArchive/keyArchive.d.ts +137 -0
  24. package/cjs/sudoKeyArchive/keyArchive.js +84 -0
  25. package/cjs/sudoKeyArchive/keyArchive.js.map +1 -0
  26. package/cjs/sudoKeyArchive/keyInfo.d.ts +41 -0
  27. package/cjs/sudoKeyArchive/keyInfo.js +17 -0
  28. package/cjs/sudoKeyArchive/keyInfo.js.map +1 -0
  29. package/cjs/sudoKeyArchive/keyType.d.ts +13 -0
  30. package/cjs/sudoKeyArchive/keyType.js +39 -0
  31. package/cjs/sudoKeyArchive/keyType.js.map +1 -0
  32. package/cjs/sudoKeyArchive/sudoKeyArchive.d.ts +190 -0
  33. package/cjs/sudoKeyArchive/sudoKeyArchive.js +373 -0
  34. package/cjs/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
  35. package/cjs/sudoKeyManager/index.d.ts +4 -0
  36. package/cjs/sudoKeyManager/index.js +8 -0
  37. package/cjs/sudoKeyManager/index.js.map +1 -0
  38. package/cjs/sudoKeyManager/keyData.d.ts +56 -0
  39. package/cjs/sudoKeyManager/keyData.js +46 -0
  40. package/cjs/sudoKeyManager/keyData.js.map +1 -0
  41. package/cjs/sudoKeyManager/publicKey.d.ts +8 -0
  42. package/cjs/sudoKeyManager/publicKey.js +9 -0
  43. package/cjs/sudoKeyManager/publicKey.js.map +1 -0
  44. package/cjs/sudoKeyManager/sudoCryptoProvider.d.ts +324 -0
  45. package/cjs/sudoKeyManager/sudoCryptoProvider.js +12 -0
  46. package/cjs/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
  47. package/cjs/sudoKeyManager/sudoKeyManager.d.ts +344 -0
  48. package/cjs/sudoKeyManager/sudoKeyManager.js +140 -0
  49. package/cjs/sudoKeyManager/sudoKeyManager.js.map +1 -0
  50. package/cjs/types/types.d.ts +115 -0
  51. package/cjs/types/types.js +45 -0
  52. package/cjs/types/types.js.map +1 -0
  53. package/cjs/utils/base64.d.ts +44 -0
  54. package/cjs/utils/base64.js +71 -0
  55. package/cjs/utils/base64.js.map +1 -0
  56. package/cjs/utils/buffer.d.ts +13 -0
  57. package/cjs/utils/buffer.js +37 -0
  58. package/cjs/utils/buffer.js.map +1 -0
  59. package/cjs/utils/stream.d.ts +6 -0
  60. package/cjs/utils/stream.js +70 -0
  61. package/cjs/utils/stream.js.map +1 -0
  62. package/lib/configurationManager/defaultConfigurationManager.js +106 -156
  63. package/lib/configurationManager/defaultConfigurationManager.js.map +1 -0
  64. package/lib/errors/error.js +226 -438
  65. package/lib/errors/error.js.map +1 -0
  66. package/lib/index.d.ts +1 -0
  67. package/lib/index.js +10 -109
  68. package/lib/index.js.map +1 -0
  69. package/lib/logging/bunyanLogger.js +29 -41
  70. package/lib/logging/bunyanLogger.js.map +1 -0
  71. package/lib/logging/logger.js +66 -92
  72. package/lib/logging/logger.js.map +1 -0
  73. package/lib/sudoKeyArchive/index.js +5 -57
  74. package/lib/sudoKeyArchive/index.js.map +1 -0
  75. package/lib/sudoKeyArchive/keyArchive.d.ts +8 -8
  76. package/lib/sudoKeyArchive/keyArchive.js +69 -96
  77. package/lib/sudoKeyArchive/keyArchive.js.map +1 -0
  78. package/lib/sudoKeyArchive/keyInfo.js +11 -49
  79. package/lib/sudoKeyArchive/keyInfo.js.map +1 -0
  80. package/lib/sudoKeyArchive/keyType.js +27 -37
  81. package/lib/sudoKeyArchive/keyType.js.map +1 -0
  82. package/lib/sudoKeyArchive/sudoKeyArchive.js +351 -444
  83. package/lib/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
  84. package/lib/sudoKeyManager/index.js +5 -57
  85. package/lib/sudoKeyManager/index.js.map +1 -0
  86. package/lib/sudoKeyManager/keyData.js +38 -33
  87. package/lib/sudoKeyManager/keyData.js.map +1 -0
  88. package/lib/sudoKeyManager/publicKey.js +5 -12
  89. package/lib/sudoKeyManager/publicKey.js.map +1 -0
  90. package/lib/sudoKeyManager/sudoCryptoProvider.js +8 -26
  91. package/lib/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
  92. package/lib/sudoKeyManager/sudoKeyManager.js +135 -173
  93. package/lib/sudoKeyManager/sudoKeyManager.js.map +1 -0
  94. package/lib/types/types.js +27 -33
  95. package/lib/types/types.js.map +1 -0
  96. package/lib/utils/base64.js +63 -93
  97. package/lib/utils/base64.js.map +1 -0
  98. package/lib/utils/buffer.js +28 -46
  99. package/lib/utils/buffer.js.map +1 -0
  100. package/lib/utils/stream.d.ts +6 -0
  101. package/lib/utils/stream.js +63 -0
  102. package/lib/utils/stream.js.map +1 -0
  103. package/package.json +35 -27
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Utility class for Base64 encoding and decoding.
3
+ */
4
+ export declare class Base64 {
5
+ private static URLSafeEncodeTransform;
6
+ private static URLSafeDecodeTransform;
7
+ static decode(encoded: string): ArrayBuffer;
8
+ static encode(buffer: ArrayBuffer): string;
9
+ static decodeString(encoded: string): string;
10
+ static encodeString(string: string): string;
11
+ /**
12
+ * Encode a URL safe ArrayBuffer
13
+ * @param {ArrayBuffer} input buffer to be encoded
14
+ * @returns {string} encoded string
15
+ */
16
+ static urlSafeEncode({ input }: {
17
+ input: ArrayBuffer;
18
+ }): string;
19
+ /**
20
+ * Decode into a URL safe ArrayBuffer
21
+ * @param {string} input string to be decoded
22
+ * @returns {ArrayBuffer} decoded ArrayBuffer
23
+ */
24
+ static urlSafeDecode({ encoded }: {
25
+ encoded: string;
26
+ }): ArrayBuffer;
27
+ /**
28
+ * Encode a URL safe string
29
+ * @param {string} input string to be encoded
30
+ * @returns {string} encoded string
31
+ */
32
+ static urlSafeEncodeString({ input }: {
33
+ input: string;
34
+ }): string;
35
+ /**
36
+ * Decode a URL safe string
37
+ * @param {string} input string to be decoded
38
+ * @returns {string} decoded string
39
+ */
40
+ static urlSafeDecodeString({ encoded }: {
41
+ encoded: string;
42
+ }): string;
43
+ static UrlSafeValidate(encoded: string): boolean;
44
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Base64 = void 0;
4
+ const buffer_1 = require("./buffer");
5
+ /**
6
+ * Utility class for Base64 encoding and decoding.
7
+ */
8
+ class Base64 {
9
+ static URLSafeEncodeTransform(input) {
10
+ return input
11
+ .replace(/\+/g, '-') // Convert '+' to '-'
12
+ .replace(/\//g, '_') // Convert '/' to '_'
13
+ .replace(/=+$/, ''); // Remove ending '='
14
+ }
15
+ static URLSafeDecodeTransform(input) {
16
+ return input
17
+ .replace(/\-/g, '+') // Convert '-' to '+'
18
+ .replace(/\_/g, '/'); // Convert '_' to '/'
19
+ }
20
+ static decode(encoded) {
21
+ return buffer_1.Buffer.fromString(atob(encoded));
22
+ }
23
+ static encode(buffer) {
24
+ return btoa(buffer_1.Buffer.toString(buffer));
25
+ }
26
+ static decodeString(encoded) {
27
+ return atob(encoded);
28
+ }
29
+ static encodeString(string) {
30
+ return btoa(string);
31
+ }
32
+ /**
33
+ * Encode a URL safe ArrayBuffer
34
+ * @param {ArrayBuffer} input buffer to be encoded
35
+ * @returns {string} encoded string
36
+ */
37
+ static urlSafeEncode({ input }) {
38
+ return this.URLSafeEncodeTransform(this.encode(input));
39
+ }
40
+ /**
41
+ * Decode into a URL safe ArrayBuffer
42
+ * @param {string} input string to be decoded
43
+ * @returns {ArrayBuffer} decoded ArrayBuffer
44
+ */
45
+ static urlSafeDecode({ encoded }) {
46
+ encoded = this.URLSafeDecodeTransform(encoded);
47
+ return this.decode(encoded);
48
+ }
49
+ /**
50
+ * Encode a URL safe string
51
+ * @param {string} input string to be encoded
52
+ * @returns {string} encoded string
53
+ */
54
+ static urlSafeEncodeString({ input }) {
55
+ return this.URLSafeEncodeTransform(this.encodeString(input));
56
+ }
57
+ /**
58
+ * Decode a URL safe string
59
+ * @param {string} input string to be decoded
60
+ * @returns {string} decoded string
61
+ */
62
+ static urlSafeDecodeString({ encoded }) {
63
+ encoded = this.URLSafeDecodeTransform(encoded);
64
+ return Buffer.from(this.decode(encoded)).toString('utf8');
65
+ }
66
+ static UrlSafeValidate(encoded) {
67
+ return /^[A-Za-z0-9\-_]+$/.test(encoded);
68
+ }
69
+ }
70
+ exports.Base64 = Base64;
71
+ //# sourceMappingURL=base64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64.js","sourceRoot":"","sources":["../../src/utils/base64.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAC/C;;GAEG;AACH,MAAa,MAAM;IACT,MAAM,CAAC,sBAAsB,CAAC,KAAa;QACjD,OAAO,KAAK;aACT,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB;aACzC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB;aACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAC,oBAAoB;IAC5C,CAAC;IACO,MAAM,CAAC,sBAAsB,CAAC,KAAa;QACjD,OAAO,KAAK;aACT,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB;aACzC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA,CAAC,qBAAqB;IAC9C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAe;QAC3B,OAAO,eAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAmB;QAC/B,OAAO,IAAI,CAAC,eAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAA0B;QACpD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAuB;QACnD,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAqB;QACrD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAuB;QACzD,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAe;QACpC,OAAO,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;CACF;AAtED,wBAsEC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Utility class for operating on ArrayBuffer.
3
+ */
4
+ export declare class Buffer {
5
+ static concat(lhs: ArrayBuffer, rhs: ArrayBuffer): ArrayBuffer;
6
+ static split(buffer: ArrayBuffer, lhsLength: number): {
7
+ lhs: ArrayBuffer;
8
+ rhs: ArrayBuffer;
9
+ };
10
+ static toString(buffer: ArrayBuffer): string;
11
+ static fromString(s: string): Uint8Array;
12
+ static isArrayBuffer(u: unknown): u is ArrayBuffer;
13
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Buffer = void 0;
4
+ /**
5
+ * Utility class for operating on ArrayBuffer.
6
+ */
7
+ class Buffer {
8
+ static concat(lhs, rhs) {
9
+ const combined = new Uint8Array(lhs.byteLength + rhs.byteLength);
10
+ combined.set(new Uint8Array(lhs), 0);
11
+ combined.set(new Uint8Array(rhs), lhs.byteLength);
12
+ return combined.buffer;
13
+ }
14
+ static split(buffer, lhsLength) {
15
+ const array = new Uint8Array(buffer);
16
+ const lhs = array.slice(0, lhsLength);
17
+ const rhs = array.slice(lhsLength, array.length);
18
+ return { lhs, rhs };
19
+ }
20
+ static toString(buffer) {
21
+ let s = '';
22
+ const bytes = new Uint8Array(buffer);
23
+ const len = bytes.byteLength;
24
+ for (let i = 0; i < len; i++) {
25
+ s += String.fromCharCode(bytes[i]);
26
+ }
27
+ return s;
28
+ }
29
+ static fromString(s) {
30
+ return Uint8Array.from(s, (c) => c.charCodeAt(0));
31
+ }
32
+ static isArrayBuffer(u) {
33
+ return ArrayBuffer.isView(u);
34
+ }
35
+ }
36
+ exports.Buffer = Buffer;
37
+ //# sourceMappingURL=buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/utils/buffer.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,MAAM;IACjB,MAAM,CAAC,MAAM,CAAC,GAAgB,EAAE,GAAgB;QAC9C,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,CAAA;QAChE,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACjD,OAAO,QAAQ,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CACV,MAAmB,EACnB,SAAiB;QAEjB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;IACrB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAmB;QACjC,IAAI,CAAC,GAAG,EAAE,CAAA;QACV,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAA;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;SACnC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,CAAS;QACzB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,CAAU;QAC7B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;CACF;AAnCD,wBAmCC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'stream';
3
+ export declare function isBodyReadableStream(body: ReadableStream | Readable | Blob): body is ReadableStream;
4
+ export declare function isBodyBlob(body: ReadableStream | Readable | Blob): body is Blob;
5
+ export declare function isBodyReadable(body: ReadableStream | Readable | Blob): body is Readable;
6
+ export declare const bodyToString: (body: ReadableStream | Readable | Blob) => Promise<string>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bodyToString = exports.isBodyReadable = exports.isBodyBlob = exports.isBodyReadableStream = void 0;
4
+ const error_1 = require("../errors/error");
5
+ /**
6
+ * Read a ReadableStream in to a string.
7
+ *
8
+ * This is used in browser environments
9
+ *
10
+ * @param stream The ReadableStream to read
11
+ *
12
+ * @returns The string
13
+ */
14
+ const readableStreamToString = async (stream) => {
15
+ const reader = stream.getReader();
16
+ const decoder = new TextDecoder('utf-8');
17
+ let string = '';
18
+ while (true) {
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
20
+ const { done, value } = await reader.read();
21
+ if (done) {
22
+ break;
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
25
+ string += decoder.decode(value, { stream: true });
26
+ }
27
+ string += decoder.decode();
28
+ return string;
29
+ };
30
+ /**
31
+ * Read a Readable in to a string.
32
+ *
33
+ * This is used in node environments
34
+ *
35
+ * @param readable The Readable to read
36
+ *
37
+ * @returns The string
38
+ */
39
+ const readableToString = (readable) => new Promise((resolve, reject) => {
40
+ const chunks = [];
41
+ readable.on('data', (chunk) => chunks.push(chunk));
42
+ readable.on('error', reject);
43
+ readable.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
44
+ });
45
+ function isBodyReadableStream(body) {
46
+ return typeof body.getReader === 'function';
47
+ }
48
+ exports.isBodyReadableStream = isBodyReadableStream;
49
+ function isBodyBlob(body) {
50
+ return typeof body === 'object' && body.hasOwnProperty('size');
51
+ }
52
+ exports.isBodyBlob = isBodyBlob;
53
+ function isBodyReadable(body) {
54
+ return !isBodyReadableStream(body) && !isBodyBlob(body);
55
+ }
56
+ exports.isBodyReadable = isBodyReadable;
57
+ const bodyToString = async (body) => {
58
+ if (isBodyReadableStream(body)) {
59
+ return readableStreamToString(body);
60
+ }
61
+ if (isBodyReadable(body)) {
62
+ return readableToString(body);
63
+ }
64
+ if (isBodyBlob(body)) {
65
+ return body.text();
66
+ }
67
+ throw new error_1.FatalError('Unknown body type');
68
+ };
69
+ exports.bodyToString = bodyToString;
70
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":";;;AACA,2CAA4C;AAE5C;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAClC,MAAsB,EACL,EAAE;IACnB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IAEjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,OAAO,IAAI,EAAE;QACX,mEAAmE;QACnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAC3C,IAAI,IAAI,EAAE;YACR,MAAK;SACN;QACD,iEAAiE;QACjE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;KAClD;IACD,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAA;IAC1B,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAAmB,EAAE,CAC/D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3E,CAAC,CAAC,CAAA;AAEJ,SAAgB,oBAAoB,CAClC,IAAsC;IAEtC,OAAO,OAAQ,IAAuB,CAAC,SAAS,KAAK,UAAU,CAAA;AACjE,CAAC;AAJD,oDAIC;AAED,SAAgB,UAAU,CACxB,IAAsC;IAEtC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC;AAJD,gCAIC;AAED,SAAgB,cAAc,CAC5B,IAAsC;IAEtC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACzD,CAAC;AAJD,wCAIC;AAEM,MAAM,YAAY,GAAG,KAAK,EAC/B,IAAsC,EACrB,EAAE;IACnB,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE;QAC9B,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAA;KACpC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;QACxB,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAA;KAC9B;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;QACpB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;KACnB;IAED,MAAM,IAAI,kBAAU,CAAC,mBAAmB,CAAC,CAAA;AAC3C,CAAC,CAAA;AAhBY,QAAA,YAAY,gBAgBxB"}
@@ -1,168 +1,118 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.DefaultConfigurationManager = void 0;
7
-
8
- var _Either = require("fp-ts/lib/Either");
9
-
10
- var _pipeable = require("fp-ts/lib/pipeable");
11
-
12
- var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
13
-
14
- var _PathReporter = require("io-ts/lib/PathReporter");
15
-
16
- var _error = require("../errors/error");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
-
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-call */
4
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
5
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
6
+ import { fold, left } from 'fp-ts/lib/Either';
7
+ import { pipe } from 'fp-ts/lib/pipeable';
8
+ import { PathReporter } from 'io-ts/lib/PathReporter';
9
+ import { ConfigurationNotSetError, DecodeError, ConfigurationSetNotFoundError, FatalError, } from '../errors/error';
10
+ import { S3Client, ListObjectsCommand, GetObjectCommand, } from '@aws-sdk/client-s3';
11
+ import { bodyToString } from '../utils/stream';
22
12
  /**
23
13
  * Singleton to manage configuration
24
14
  */
25
- class DefaultConfigurationManager {
26
- constructor() {// Do Nothing.
27
-
28
- _defineProperty(this, "_config", void 0);
29
- }
30
-
31
- static getInstance() {
32
- if (!DefaultConfigurationManager.instance) {
33
- DefaultConfigurationManager.instance = new DefaultConfigurationManager();
15
+ export class DefaultConfigurationManager {
16
+ constructor() {
17
+ // Do Nothing.
34
18
  }
35
-
36
- return DefaultConfigurationManager.instance;
37
- }
38
-
39
- setConfig(config) {
40
- this._config = config;
41
- return DefaultConfigurationManager.instance;
42
- }
43
-
44
- getConfigSet(namespace) {
45
- if (!this._config) {
46
- throw new _error.ConfigurationNotSetError();
19
+ static getInstance() {
20
+ if (!DefaultConfigurationManager.instance) {
21
+ DefaultConfigurationManager.instance = new DefaultConfigurationManager();
22
+ }
23
+ return DefaultConfigurationManager.instance;
47
24
  }
48
-
49
- const parsed = JSON.parse(this._config);
50
- const configSet = namespace ? parsed[namespace] : parsed;
51
- return configSet;
52
- }
53
-
54
- bind(configSet, codec) {
55
- // Decode and validate config
56
- return (0, _pipeable.pipe)(codec.decode(configSet), (0, _Either.fold)(errors => {
57
- throw new _error.DecodeError(_PathReporter.PathReporter.report((0, _Either.left)(errors)).join('\n'));
58
- }, v => v));
59
- }
60
-
61
- bindConfigSet(codec, namespace) {
62
- const configSet = this.getConfigSet(namespace);
63
-
64
- if (!configSet) {
65
- throw new _error.ConfigurationSetNotFoundError(namespace);
25
+ setConfig(config) {
26
+ this._config = config;
27
+ return DefaultConfigurationManager.instance;
66
28
  }
67
-
68
- return this.bind(configSet, codec);
69
- }
70
-
71
- async validateConfig() {
72
- var _config$identityServi, _config$identityServi2, _objects$Contents;
73
-
74
- if (!this._config) {
75
- return {
76
- incompatible: [],
77
- deprecated: []
78
- };
29
+ getConfigSet(namespace) {
30
+ if (!this._config) {
31
+ throw new ConfigurationNotSetError();
32
+ }
33
+ const parsed = JSON.parse(this._config);
34
+ const configSet = namespace ? parsed[namespace] : parsed;
35
+ return configSet;
79
36
  }
80
-
81
- const config = JSON.parse(this._config);
82
- const region = (_config$identityServi = config.identityService) === null || _config$identityServi === void 0 ? void 0 : _config$identityServi.region;
83
- const bucket = (_config$identityServi2 = config.identityService) === null || _config$identityServi2 === void 0 ? void 0 : _config$identityServi2.serviceInfoBucket;
84
-
85
- if (!(region && bucket)) {
86
- return {
87
- incompatible: [],
88
- deprecated: []
89
- };
37
+ bind(configSet, codec) {
38
+ // Decode and validate config
39
+ return pipe(codec.decode(configSet), fold((errors) => {
40
+ throw new DecodeError(PathReporter.report(left(errors)).join('\n'));
41
+ }, (v) => v));
90
42
  }
91
-
92
- const s3Client = new _s.default({
93
- region: region
94
- });
95
- const incompatible = [];
96
- const deprecated = [];
97
- const objects = await s3Client.makeUnauthenticatedRequest('listObjects', {
98
- Bucket: bucket
99
- }).promise();
100
-
101
- if (!((_objects$Contents = objects.Contents) !== null && _objects$Contents !== void 0 && _objects$Contents.length)) {
102
- return {
103
- incompatible: [],
104
- deprecated: []
105
- };
43
+ bindConfigSet(codec, namespace) {
44
+ const configSet = this.getConfigSet(namespace);
45
+ if (!configSet) {
46
+ throw new ConfigurationSetNotFoundError(namespace);
47
+ }
48
+ return this.bind(configSet, codec);
106
49
  }
107
-
108
- const keys = objects.Contents.map(object => object.Key); // Only fetch the service info docs for the services that are present in client config
109
- // to minimize the network calls.
110
-
111
- const keysToFetch = keys.filter(key => key.endsWith('.json') && config[key.replace('.json', '')]);
112
-
113
- for (const key of keysToFetch) {
114
- const object = await s3Client.makeUnauthenticatedRequest('getObject', {
115
- Key: key,
116
- Bucket: bucket
117
- }).promise();
118
- let body;
119
-
120
- if (typeof object.Body === 'string') {
121
- body = object.Body;
122
- } else if (ArrayBuffer.isView(object.Body)) {
123
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
124
- body = new TextDecoder().decode(object.Body);
125
- } else {
126
- continue;
127
- }
128
-
129
- const json = JSON.parse(body);
130
- const serviceName = key.replace('.json', '');
131
- const serviceInfo = json[serviceName];
132
- const serviceConfig = config[serviceName];
133
-
134
- if (serviceInfo && serviceConfig) {
135
- const currentVersion = serviceConfig.version ?? 1;
136
- const deprecationGrace = serviceInfo.deprecationGrace ?? -1;
137
- const compatibilityInfo = {
138
- name: serviceName,
139
- configVersion: currentVersion,
140
- minSupportedVersion: serviceInfo.minVersion,
141
- deprecatedVersion: serviceInfo.deprecated,
142
- deprecationGrace: deprecationGrace != -1 ? new Date(deprecationGrace) : undefined
143
- }; // If the service config in `sudoplatformconfig.json` is less than the
144
- // minimum supported version then the client is incompatible.
145
-
146
- if (currentVersion < (compatibilityInfo.minSupportedVersion ?? 0)) {
147
- incompatible.push(compatibilityInfo);
148
- } // If the service config is less than or equal to the deprecated version
149
- // then it will be made incompatible after the deprecation grace.
150
-
151
-
152
- if (currentVersion <= (compatibilityInfo.deprecatedVersion ?? 0)) {
153
- deprecated.push(compatibilityInfo);
50
+ async validateConfig() {
51
+ if (!this._config) {
52
+ return { incompatible: [], deprecated: [] };
53
+ }
54
+ const config = JSON.parse(this._config);
55
+ const region = config.identityService?.region;
56
+ const bucket = config.identityService?.serviceInfoBucket;
57
+ if (!(region && bucket)) {
58
+ return { incompatible: [], deprecated: [] };
59
+ }
60
+ const s3Client = new S3Client({
61
+ region: region,
62
+ // We want these request to be unauthenticated
63
+ // so we provide a no-op signer for the requests
64
+ signer: { sign: (request) => Promise.resolve(request) },
65
+ });
66
+ const incompatible = [];
67
+ const deprecated = [];
68
+ const listObjectsCommand = new ListObjectsCommand({
69
+ Bucket: bucket,
70
+ });
71
+ const objects = await s3Client.send(listObjectsCommand);
72
+ if (!objects.Contents?.length) {
73
+ return { incompatible: [], deprecated: [] };
74
+ }
75
+ const keys = objects.Contents.map((object) => object.Key);
76
+ // Only fetch the service info docs for the services that are present in client config
77
+ // to minimize the network calls.
78
+ const keysToFetch = keys.filter((key) => key.endsWith('.json') && config[key.replace('.json', '')]);
79
+ for (const key of keysToFetch) {
80
+ const getObject = new GetObjectCommand({
81
+ Key: key,
82
+ Bucket: bucket,
83
+ });
84
+ const object = await s3Client.send(getObject);
85
+ if (!object.Body) {
86
+ throw new FatalError('No S3 object body');
87
+ }
88
+ const body = await bodyToString(object.Body);
89
+ const json = JSON.parse(body);
90
+ const serviceName = key.replace('.json', '');
91
+ const serviceInfo = json[serviceName];
92
+ const serviceConfig = config[serviceName];
93
+ if (serviceInfo && serviceConfig) {
94
+ const currentVersion = serviceConfig.version ?? 1;
95
+ const deprecationGrace = serviceInfo.deprecationGrace ?? -1;
96
+ const compatibilityInfo = {
97
+ name: serviceName,
98
+ configVersion: currentVersion,
99
+ minSupportedVersion: serviceInfo.minVersion,
100
+ deprecatedVersion: serviceInfo.deprecated,
101
+ deprecationGrace: deprecationGrace != -1 ? new Date(deprecationGrace) : undefined,
102
+ };
103
+ // If the service config in `sudoplatformconfig.json` is less than the
104
+ // minimum supported version then the client is incompatible.
105
+ if (currentVersion < (compatibilityInfo.minSupportedVersion ?? 0)) {
106
+ incompatible.push(compatibilityInfo);
107
+ }
108
+ // If the service config is less than or equal to the deprecated version
109
+ // then it will be made incompatible after the deprecation grace.
110
+ if (currentVersion <= (compatibilityInfo.deprecatedVersion ?? 0)) {
111
+ deprecated.push(compatibilityInfo);
112
+ }
113
+ }
154
114
  }
155
- }
115
+ return { incompatible, deprecated };
156
116
  }
157
-
158
- return {
159
- incompatible,
160
- deprecated
161
- };
162
- }
163
-
164
117
  }
165
-
166
- exports.DefaultConfigurationManager = DefaultConfigurationManager;
167
-
168
- _defineProperty(DefaultConfigurationManager, "instance", void 0);
118
+ //# sourceMappingURL=defaultConfigurationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultConfigurationManager.js","sourceRoot":"","sources":["../../src/configurationManager/defaultConfigurationManager.ts"],"names":[],"mappings":"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"}