@mnaoumov/typescript-lib 0.0.0 → 1.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 (180) hide show
  1. package/@types/debug/package.json +4 -0
  2. package/LICENSE +21 -0
  3. package/README.md +7 -1
  4. package/dist/lib/cjs/@types/debug.d.cts +21 -0
  5. package/dist/lib/cjs/abort-controller.cjs +202 -0
  6. package/dist/lib/cjs/abort-controller.d.cts +135 -0
  7. package/dist/lib/cjs/aggregate-error.cjs +98 -0
  8. package/dist/lib/cjs/aggregate-error.d.cts +24 -0
  9. package/dist/lib/cjs/array-buffer.cjs +96 -0
  10. package/dist/lib/cjs/array-buffer.d.cts +16 -0
  11. package/dist/lib/cjs/array.cjs +134 -0
  12. package/dist/lib/cjs/array.d.cts +46 -0
  13. package/dist/lib/cjs/async-events.cjs +466 -0
  14. package/dist/lib/cjs/async-events.d.cts +456 -0
  15. package/dist/lib/cjs/async-operation-hook.cjs +113 -0
  16. package/dist/lib/cjs/async-operation-hook.d.cts +59 -0
  17. package/dist/lib/cjs/async.cjs +521 -0
  18. package/dist/lib/cjs/async.d.cts +414 -0
  19. package/dist/lib/cjs/beeper.cjs +126 -0
  20. package/dist/lib/cjs/beeper.d.cts +21 -0
  21. package/dist/lib/cjs/blob.cjs +160 -0
  22. package/dist/lib/cjs/blob.d.cts +59 -0
  23. package/dist/lib/cjs/bytes.cjs +114 -0
  24. package/dist/lib/cjs/bytes.d.cts +17 -0
  25. package/dist/lib/cjs/debug-controller.cjs +80 -0
  26. package/dist/lib/cjs/debug-controller.d.cts +87 -0
  27. package/dist/lib/cjs/debug.cjs +235 -0
  28. package/dist/lib/cjs/debug.d.cts +66 -0
  29. package/dist/lib/cjs/desktop-zip-extractor.cjs +215 -0
  30. package/dist/lib/cjs/desktop-zip-extractor.d.cts +95 -0
  31. package/dist/lib/cjs/disposable.cjs +414 -0
  32. package/dist/lib/cjs/disposable.d.cts +387 -0
  33. package/dist/lib/cjs/enum.cjs +100 -0
  34. package/dist/lib/cjs/enum.d.cts +24 -0
  35. package/dist/lib/cjs/error.cjs +297 -0
  36. package/dist/lib/cjs/error.d.cts +181 -0
  37. package/dist/lib/cjs/function.cjs +141 -0
  38. package/dist/lib/cjs/function.d.cts +128 -0
  39. package/dist/lib/cjs/html-element.cjs +341 -0
  40. package/dist/lib/cjs/html-element.d.cts +199 -0
  41. package/dist/lib/cjs/index.cjs +195 -0
  42. package/dist/lib/cjs/index.d.cts +33 -0
  43. package/dist/lib/cjs/jpeg-metadata.cjs +228 -0
  44. package/dist/lib/cjs/jpeg-metadata.d.cts +42 -0
  45. package/dist/lib/cjs/library.cjs +158 -0
  46. package/dist/lib/cjs/library.d.cts +96 -0
  47. package/dist/lib/cjs/object-utils.cjs +617 -0
  48. package/dist/lib/cjs/object-utils.d.cts +298 -0
  49. package/dist/lib/cjs/path.cjs +202 -0
  50. package/dist/lib/cjs/path.d.cts +154 -0
  51. package/dist/lib/cjs/reg-exp.cjs +254 -0
  52. package/dist/lib/cjs/reg-exp.d.cts +87 -0
  53. package/dist/lib/cjs/string.cjs +326 -0
  54. package/dist/lib/cjs/string.d.cts +361 -0
  55. package/dist/lib/cjs/transformers/date-transformer.cjs +129 -0
  56. package/dist/lib/cjs/transformers/date-transformer.d.cts +39 -0
  57. package/dist/lib/cjs/transformers/group-transformer.cjs +173 -0
  58. package/dist/lib/cjs/transformers/group-transformer.d.cts +70 -0
  59. package/dist/lib/cjs/transformers/index.cjs +123 -0
  60. package/dist/lib/cjs/transformers/index.d.cts +9 -0
  61. package/dist/lib/cjs/transformers/map-transformer.cjs +129 -0
  62. package/dist/lib/cjs/transformers/map-transformer.d.cts +41 -0
  63. package/dist/lib/cjs/transformers/set-transformer.cjs +129 -0
  64. package/dist/lib/cjs/transformers/set-transformer.d.cts +39 -0
  65. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +127 -0
  66. package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +36 -0
  67. package/dist/lib/cjs/transformers/transformer.cjs +170 -0
  68. package/dist/lib/cjs/transformers/transformer.d.cts +70 -0
  69. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +130 -0
  70. package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +42 -0
  71. package/dist/lib/cjs/transformers/typed-transformer.cjs +94 -0
  72. package/dist/lib/cjs/transformers/typed-transformer.d.cts +39 -0
  73. package/dist/lib/cjs/two-way-map.cjs +208 -0
  74. package/dist/lib/cjs/two-way-map.d.cts +101 -0
  75. package/dist/lib/cjs/type-guards.cjs +128 -0
  76. package/dist/lib/cjs/type-guards.d.cts +84 -0
  77. package/dist/lib/cjs/type.cjs +121 -0
  78. package/dist/lib/cjs/type.d.cts +122 -0
  79. package/dist/lib/cjs/typescript-lib-state.cjs +126 -0
  80. package/dist/lib/cjs/typescript-lib-state.d.cts +56 -0
  81. package/dist/lib/cjs/url.cjs +136 -0
  82. package/dist/lib/cjs/url.d.cts +74 -0
  83. package/dist/lib/cjs/value-provider.cjs +100 -0
  84. package/dist/lib/cjs/value-provider.d.cts +28 -0
  85. package/dist/lib/cjs/value-wrapper.cjs +144 -0
  86. package/dist/lib/cjs/value-wrapper.d.cts +47 -0
  87. package/dist/lib/esm/@types/debug.d.mts +21 -0
  88. package/dist/lib/esm/abort-controller.d.mts +135 -0
  89. package/dist/lib/esm/abort-controller.mjs +159 -0
  90. package/dist/lib/esm/aggregate-error.d.mts +24 -0
  91. package/dist/lib/esm/aggregate-error.mjs +60 -0
  92. package/dist/lib/esm/array-buffer.d.mts +16 -0
  93. package/dist/lib/esm/array-buffer.mjs +58 -0
  94. package/dist/lib/esm/array.d.mts +46 -0
  95. package/dist/lib/esm/array.mjs +93 -0
  96. package/dist/lib/esm/async-events.d.mts +456 -0
  97. package/dist/lib/esm/async-events.mjs +427 -0
  98. package/dist/lib/esm/async-operation-hook.d.mts +59 -0
  99. package/dist/lib/esm/async-operation-hook.mjs +71 -0
  100. package/dist/lib/esm/async.d.mts +414 -0
  101. package/dist/lib/esm/async.mjs +479 -0
  102. package/dist/lib/esm/beeper.d.mts +21 -0
  103. package/dist/lib/esm/beeper.mjs +88 -0
  104. package/dist/lib/esm/blob.d.mts +59 -0
  105. package/dist/lib/esm/blob.mjs +121 -0
  106. package/dist/lib/esm/bytes.d.mts +17 -0
  107. package/dist/lib/esm/bytes.mjs +76 -0
  108. package/dist/lib/esm/debug-controller.d.mts +87 -0
  109. package/dist/lib/esm/debug-controller.mjs +50 -0
  110. package/dist/lib/esm/debug.d.mts +66 -0
  111. package/dist/lib/esm/debug.mjs +185 -0
  112. package/dist/lib/esm/desktop-zip-extractor.d.mts +95 -0
  113. package/dist/lib/esm/desktop-zip-extractor.mjs +180 -0
  114. package/dist/lib/esm/disposable.d.mts +387 -0
  115. package/dist/lib/esm/disposable.mjs +360 -0
  116. package/dist/lib/esm/enum.d.mts +24 -0
  117. package/dist/lib/esm/enum.mjs +61 -0
  118. package/dist/lib/esm/error.d.mts +181 -0
  119. package/dist/lib/esm/error.mjs +248 -0
  120. package/dist/lib/esm/function.d.mts +128 -0
  121. package/dist/lib/esm/function.mjs +96 -0
  122. package/dist/lib/esm/html-element.d.mts +199 -0
  123. package/dist/lib/esm/html-element.mjs +291 -0
  124. package/dist/lib/esm/index.d.mts +33 -0
  125. package/dist/lib/esm/index.mjs +116 -0
  126. package/dist/lib/esm/jpeg-metadata.d.mts +42 -0
  127. package/dist/lib/esm/jpeg-metadata.mjs +189 -0
  128. package/dist/lib/esm/library.d.mts +96 -0
  129. package/dist/lib/esm/library.mjs +118 -0
  130. package/dist/lib/esm/object-utils.d.mts +298 -0
  131. package/dist/lib/esm/object-utils.mjs +567 -0
  132. package/dist/lib/esm/path.d.mts +154 -0
  133. package/dist/lib/esm/path.mjs +139 -0
  134. package/dist/lib/esm/reg-exp.d.mts +87 -0
  135. package/dist/lib/esm/reg-exp.mjs +213 -0
  136. package/dist/lib/esm/string.d.mts +361 -0
  137. package/dist/lib/esm/string.mjs +274 -0
  138. package/dist/lib/esm/transformers/date-transformer.d.mts +39 -0
  139. package/dist/lib/esm/transformers/date-transformer.mjs +91 -0
  140. package/dist/lib/esm/transformers/group-transformer.d.mts +70 -0
  141. package/dist/lib/esm/transformers/group-transformer.mjs +138 -0
  142. package/dist/lib/esm/transformers/index.d.mts +9 -0
  143. package/dist/lib/esm/transformers/index.mjs +68 -0
  144. package/dist/lib/esm/transformers/map-transformer.d.mts +41 -0
  145. package/dist/lib/esm/transformers/map-transformer.mjs +91 -0
  146. package/dist/lib/esm/transformers/set-transformer.d.mts +39 -0
  147. package/dist/lib/esm/transformers/set-transformer.mjs +91 -0
  148. package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +36 -0
  149. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +89 -0
  150. package/dist/lib/esm/transformers/transformer.d.mts +70 -0
  151. package/dist/lib/esm/transformers/transformer.mjs +132 -0
  152. package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +42 -0
  153. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +92 -0
  154. package/dist/lib/esm/transformers/typed-transformer.d.mts +39 -0
  155. package/dist/lib/esm/transformers/typed-transformer.mjs +56 -0
  156. package/dist/lib/esm/two-way-map.d.mts +101 -0
  157. package/dist/lib/esm/two-way-map.mjs +170 -0
  158. package/dist/lib/esm/type-guards.d.mts +84 -0
  159. package/dist/lib/esm/type-guards.mjs +85 -0
  160. package/dist/lib/esm/type.d.mts +122 -0
  161. package/dist/lib/esm/type.mjs +83 -0
  162. package/dist/lib/esm/typescript-lib-state.d.mts +56 -0
  163. package/dist/lib/esm/typescript-lib-state.mjs +84 -0
  164. package/dist/lib/esm/url.d.mts +74 -0
  165. package/dist/lib/esm/url.mjs +94 -0
  166. package/dist/lib/esm/value-provider.d.mts +28 -0
  167. package/dist/lib/esm/value-provider.mjs +62 -0
  168. package/dist/lib/esm/value-wrapper.d.mts +47 -0
  169. package/dist/lib/esm/value-wrapper.mjs +106 -0
  170. package/package.json +111 -13
  171. package/transformers/date-transformer/package.json +6 -0
  172. package/transformers/group-transformer/package.json +6 -0
  173. package/transformers/index/package.json +6 -0
  174. package/transformers/map-transformer/package.json +6 -0
  175. package/transformers/package.json +6 -0
  176. package/transformers/set-transformer/package.json +6 -0
  177. package/transformers/skip-private-property-transformer/package.json +6 -0
  178. package/transformers/transformer/package.json +6 -0
  179. package/transformers/two-way-map-transformer/package.json +6 -0
  180. package/transformers/typed-transformer/package.json +6 -0
@@ -0,0 +1,91 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { TypedTransformer } from "./typed-transformer.mjs";
51
+ class SetTransformer extends TypedTransformer {
52
+ /**
53
+ * An id of the transformer.
54
+ *
55
+ * @returns The ID of the transformer.
56
+ */
57
+ get id() {
58
+ return "set";
59
+ }
60
+ /**
61
+ * Checks if the value is a Set.
62
+ *
63
+ * @param value - The value to check.
64
+ * @returns `true` if the value is a Set, `false` otherwise.
65
+ */
66
+ canTransform(value) {
67
+ return value instanceof Set;
68
+ }
69
+ /**
70
+ * Restores the value from an array.
71
+ *
72
+ * @param transformedValue - The array to restore the value from.
73
+ * @returns The restored value.
74
+ */
75
+ restoreValue(transformedValue) {
76
+ return new Set(transformedValue);
77
+ }
78
+ /**
79
+ * Transforms the value to an array.
80
+ *
81
+ * @param value - The value to transform.
82
+ * @returns The transformed value.
83
+ */
84
+ transformValue(value) {
85
+ return [...value];
86
+ }
87
+ }
88
+ export {
89
+ SetTransformer
90
+ };
91
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9zZXQtdHJhbnNmb3JtZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBhIFNldCB0byBhbiBhcnJheSBhbmQgYmFjay5cbiAqL1xuXG5pbXBvcnQgeyBUeXBlZFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90eXBlZC10cmFuc2Zvcm1lci50cyc7XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gYSBTZXQgdG8gYW4gYXJyYXkgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXRUcmFuc2Zvcm1lciBleHRlbmRzIFR5cGVkVHJhbnNmb3JtZXI8U2V0PHVua25vd24+LCB1bmtub3duW10+IHtcbiAgLyoqXG4gICAqIEFuIGlkIG9mIHRoZSB0cmFuc2Zvcm1lci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIElEIG9mIHRoZSB0cmFuc2Zvcm1lci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NldCc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIFNldC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgU2V0LCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTZXQ8dW5rbm93bj4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgdmFsdWUgZnJvbSBhbiBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zZm9ybWVkVmFsdWUgLSBUaGUgYXJyYXkgdG8gcmVzdG9yZSB0aGUgdmFsdWUgZnJvbS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiB1bmtub3duW10pOiBTZXQ8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgU2V0KHRyYW5zZm9ybWVkVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIHZhbHVlIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdHJhbnNmb3JtVmFsdWUodmFsdWU6IFNldDx1bmtub3duPik6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIFsuLi52YWx1ZV07XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxTQUFTLHdCQUF3QjtBQUsxQixNQUFNLHVCQUF1QixpQkFBMEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNNUUsSUFBb0IsS0FBYTtBQUMvQixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsT0FBdUM7QUFDbEUsV0FBTyxpQkFBaUI7QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsa0JBQTJDO0FBQ3RFLFdBQU8sSUFBSSxJQUFJLGdCQUFnQjtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxPQUFnQztBQUM3RCxXQUFPLENBQUMsR0FBRyxLQUFLO0FBQUEsRUFDbEI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,36 @@
1
+ /// <reference path="../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * A transformer that skips private properties.
6
+ */
7
+ import { Transformer } from './transformer.mjs';
8
+ /**
9
+ * A transformer that skips private properties.
10
+ */
11
+ export declare class SkipPrivatePropertyTransformer extends Transformer {
12
+ /**
13
+ * An id of the transformer.
14
+ *
15
+ * @returns `skip-private-property`.
16
+ */
17
+ get id(): string;
18
+ /**
19
+ * Determines if the transformer can transform the given value.
20
+ *
21
+ * @param _value - The value to check.
22
+ * @param key - The key of the value to check.
23
+ * @returns A boolean indicating if the transformer can transform the value.
24
+ */
25
+ canTransform(_value: unknown, key: string): boolean;
26
+ /**
27
+ * Transforms the given value.
28
+ *
29
+ * @returns The transformed value.
30
+ */
31
+ transformValue(): unknown;
32
+ /**
33
+ * Restores the given value.
34
+ */
35
+ protected restoreValue(): unknown;
36
+ }
@@ -0,0 +1,89 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { Transformer } from "./transformer.mjs";
51
+ const PRIVATE_PROPERTY_PREFIX = "_";
52
+ class SkipPrivatePropertyTransformer extends Transformer {
53
+ /**
54
+ * An id of the transformer.
55
+ *
56
+ * @returns `skip-private-property`.
57
+ */
58
+ get id() {
59
+ return "skip-private-property";
60
+ }
61
+ /**
62
+ * Determines if the transformer can transform the given value.
63
+ *
64
+ * @param _value - The value to check.
65
+ * @param key - The key of the value to check.
66
+ * @returns A boolean indicating if the transformer can transform the value.
67
+ */
68
+ canTransform(_value, key) {
69
+ return key.startsWith(PRIVATE_PROPERTY_PREFIX);
70
+ }
71
+ /**
72
+ * Transforms the given value.
73
+ *
74
+ * @returns The transformed value.
75
+ */
76
+ transformValue() {
77
+ return void 0;
78
+ }
79
+ /**
80
+ * Restores the given value.
81
+ */
82
+ restoreValue() {
83
+ throw new Error("SkipPrivatePropertyTransformer does not support restoring values");
84
+ }
85
+ }
86
+ export {
87
+ SkipPrivatePropertyTransformer
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9za2lwLXByaXZhdGUtcHJvcGVydHktdHJhbnNmb3JtZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgc2tpcHMgcHJpdmF0ZSBwcm9wZXJ0aWVzLlxuICovXG5cbmltcG9ydCB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lci50cyc7XG5cbmNvbnN0IFBSSVZBVEVfUFJPUEVSVFlfUFJFRklYID0gJ18nO1xuXG4vKipcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBza2lwcyBwcml2YXRlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXIgZXh0ZW5kcyBUcmFuc2Zvcm1lciB7XG4gIC8qKlxuICAgKiBBbiBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIGBza2lwLXByaXZhdGUtcHJvcGVydHlgLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc2tpcC1wcml2YXRlLXByb3BlcnR5JztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0cmFuc2Zvcm1lciBjYW4gdHJhbnNmb3JtIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIF92YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgdHJhbnNmb3JtZXIgY2FuIHRyYW5zZm9ybSB0aGUgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2FuVHJhbnNmb3JtKF92YWx1ZTogdW5rbm93biwga2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4ga2V5LnN0YXJ0c1dpdGgoUFJJVkFURV9QUk9QRVJUWV9QUkVGSVgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIHZhbHVlLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdHJhbnNmb3JtVmFsdWUoKTogdW5rbm93biB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKCk6IHVua25vd24ge1xuICAgIHRocm93IG5ldyBFcnJvcignU2tpcFByaXZhdGVQcm9wZXJ0eVRyYW5zZm9ybWVyIGRvZXMgbm90IHN1cHBvcnQgcmVzdG9yaW5nIHZhbHVlcycpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxtQkFBbUI7QUFFNUIsTUFBTSwwQkFBMEI7QUFLekIsTUFBTSx1Q0FBdUMsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU05RCxJQUFvQixLQUFhO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNnQixhQUFhLFFBQWlCLEtBQXNCO0FBQ2xFLFdBQU8sSUFBSSxXQUFXLHVCQUF1QjtBQUFBLEVBQy9DO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT2dCLGlCQUEwQjtBQUN4QyxXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CLGVBQXdCO0FBQ3pDLFVBQU0sSUFBSSxNQUFNLGtFQUFrRTtBQUFBLEVBQ3BGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,70 @@
1
+ /// <reference path="../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * A base class for transformers.
6
+ */
7
+ import type { GenericObject } from '../type-guards.mjs';
8
+ /**
9
+ * A base class for transformers.
10
+ */
11
+ export declare abstract class Transformer {
12
+ /**
13
+ * An id of the transformer.
14
+ */
15
+ abstract get id(): string;
16
+ /**
17
+ * Determines if the transformer can transform the given value.
18
+ *
19
+ * @param value - The value to check.
20
+ * @param key - The key of the value to check.
21
+ * @returns A boolean indicating if the transformer can transform the value.
22
+ */
23
+ abstract canTransform(value: unknown, key: string): boolean;
24
+ /**
25
+ * Gets the transformer with the given id.
26
+ *
27
+ * @param transformerId - The id of the transformer to get.
28
+ * @returns The transformer with the given id.
29
+ */
30
+ getTransformer(transformerId: string): Transformer;
31
+ /**
32
+ * Transforms the given object recursively.
33
+ *
34
+ * @param value - The value to transform.
35
+ * @returns The transformed value.
36
+ */
37
+ transformObjectRecursively(value: object): GenericObject;
38
+ /**
39
+ * Transforms the given value.
40
+ *
41
+ * @param value - The value to transform.
42
+ * @param key - The key of the value to transform.
43
+ * @returns The transformed value.
44
+ */
45
+ abstract transformValue(value: unknown, key: string): unknown;
46
+ /**
47
+ * Gets the id of the transformer that can transform the given value.
48
+ *
49
+ * @param value - The value to get the transformer id for.
50
+ * @param key - The key of the value to get the transformer id for.
51
+ * @returns The id of the transformer that can transform the given value.
52
+ */
53
+ protected getTransformerId(value: unknown, key: string): null | string;
54
+ /**
55
+ * Restores the given value.
56
+ *
57
+ * @param transformedValue - The value to restore.
58
+ * @param key - The key of the value to restore.
59
+ * @returns The restored value.
60
+ */
61
+ protected abstract restoreValue(transformedValue: unknown, key: string): unknown;
62
+ /**
63
+ * Transforms the given value recursively.
64
+ *
65
+ * @param value - The value to transform.
66
+ * @param key - The key of the value to transform.
67
+ * @returns The transformed value.
68
+ */
69
+ private transformValueRecursively;
70
+ }
@@ -0,0 +1,132 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { getAllKeys } from "../object-utils.mjs";
51
+ class Transformer {
52
+ /**
53
+ * Gets the transformer with the given id.
54
+ *
55
+ * @param transformerId - The id of the transformer to get.
56
+ * @returns The transformer with the given id.
57
+ */
58
+ // eslint-disable-next-line @typescript-eslint/prefer-return-this-type -- The overridden method might return a different type.
59
+ getTransformer(transformerId) {
60
+ if (transformerId === this.id) {
61
+ return this;
62
+ }
63
+ throw new Error(`Transformer with id ${transformerId} not found`);
64
+ }
65
+ /**
66
+ * Transforms the given object recursively.
67
+ *
68
+ * @param value - The value to transform.
69
+ * @returns The transformed value.
70
+ */
71
+ transformObjectRecursively(value) {
72
+ return this.transformValueRecursively(value, "");
73
+ }
74
+ /**
75
+ * Gets the id of the transformer that can transform the given value.
76
+ *
77
+ * @param value - The value to get the transformer id for.
78
+ * @param key - The key of the value to get the transformer id for.
79
+ * @returns The id of the transformer that can transform the given value.
80
+ */
81
+ getTransformerId(value, key) {
82
+ return this.canTransform(value, key) ? this.id : null;
83
+ }
84
+ /**
85
+ * Transforms the given value recursively.
86
+ *
87
+ * @param value - The value to transform.
88
+ * @param key - The key of the value to transform.
89
+ * @returns The transformed value.
90
+ */
91
+ transformValueRecursively(value, key) {
92
+ const transformerId = this.getTransformerId(value, key);
93
+ if (transformerId) {
94
+ const transformedValue = this.transformValue(value, key);
95
+ if (transformedValue === void 0) {
96
+ return void 0;
97
+ }
98
+ const wrapper = {
99
+ __transformerId: transformerId,
100
+ transformedValue
101
+ };
102
+ return wrapper;
103
+ }
104
+ if (value === null) {
105
+ return null;
106
+ }
107
+ if (typeof value !== "object") {
108
+ return value;
109
+ }
110
+ if (Array.isArray(value)) {
111
+ return value.map((childValue, index) => this.transformValueRecursively(childValue, String(index)));
112
+ }
113
+ const transformedValueWrapper = value;
114
+ if (transformedValueWrapper.__transformerId) {
115
+ return this.getTransformer(transformedValueWrapper.__transformerId).restoreValue(transformedValueWrapper.transformedValue, key);
116
+ }
117
+ const record = {};
118
+ for (const childKey of getAllKeys(value)) {
119
+ const childValue = value[childKey];
120
+ const transformedChildValue = this.transformValueRecursively(childValue, childKey);
121
+ if (transformedChildValue === void 0) {
122
+ continue;
123
+ }
124
+ record[childKey] = transformedChildValue;
125
+ }
126
+ return record;
127
+ }
128
+ }
129
+ export {
130
+ Transformer
131
+ };
132
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy90cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgYmFzZSBjbGFzcyBmb3IgdHJhbnNmb3JtZXJzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY09iamVjdCB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcblxuaW1wb3J0IHsgZ2V0QWxsS2V5cyB9IGZyb20gJy4uL29iamVjdC11dGlscy50cyc7XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBhIHRyYW5zZm9ybWVkIHZhbHVlLlxuICovXG5pbnRlcmZhY2UgVHJhbnNmb3JtZWRWYWx1ZVdyYXBwZXIge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyIHRoYXQgdHJhbnNmb3JtZWQgdGhlIHZhbHVlLlxuICAgKi9cbiAgX190cmFuc2Zvcm1lcklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdHJhbnNmb3JtZWQgdmFsdWUuXG4gICAqL1xuICB0cmFuc2Zvcm1lZFZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIEEgYmFzZSBjbGFzcyBmb3IgdHJhbnNmb3JtZXJzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNmb3JtZXIge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldCBpZCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHRyYW5zZm9ybWVyIGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHRyYW5zZm9ybWVyIGNhbiB0cmFuc2Zvcm0gdGhlIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNhblRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwga2V5OiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0cmFuc2Zvcm1lciB3aXRoIHRoZSBnaXZlbiBpZC5cbiAgICpcbiAgICogQHBhcmFtIHRyYW5zZm9ybWVySWQgLSBUaGUgaWQgb2YgdGhlIHRyYW5zZm9ybWVyIHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVyIHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItcmV0dXJuLXRoaXMtdHlwZSAtLSBUaGUgb3ZlcnJpZGRlbiBtZXRob2QgbWlnaHQgcmV0dXJuIGEgZGlmZmVyZW50IHR5cGUuXG4gIHB1YmxpYyBnZXRUcmFuc2Zvcm1lcih0cmFuc2Zvcm1lcklkOiBzdHJpbmcpOiBUcmFuc2Zvcm1lciB7XG4gICAgaWYgKHRyYW5zZm9ybWVySWQgPT09IHRoaXMuaWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVHJhbnNmb3JtZXIgd2l0aCBpZCAke3RyYW5zZm9ybWVySWR9IG5vdCBmb3VuZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIG9iamVjdCByZWN1cnNpdmVseS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybU9iamVjdFJlY3Vyc2l2ZWx5KHZhbHVlOiBvYmplY3QpOiBHZW5lcmljT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1WYWx1ZVJlY3Vyc2l2ZWx5KHZhbHVlLCAnJykgYXMgR2VuZXJpY09iamVjdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHRyYW5zZm9ybVZhbHVlKHZhbHVlOiB1bmtub3duLCBrZXk6IHN0cmluZyk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlkIG9mIHRoZSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gZ2V0IHRoZSB0cmFuc2Zvcm1lciBpZCBmb3IuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQgdGhlIHRyYW5zZm9ybWVyIGlkIGZvci5cbiAgICogQHJldHVybnMgVGhlIGlkIG9mIHRoZSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zZm9ybWVySWQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2FuVHJhbnNmb3JtKHZhbHVlLCBrZXkpID8gdGhpcy5pZCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZXMgdGhlIGdpdmVuIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB2YWx1ZSB0byByZXN0b3JlLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVzdG9yZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiB1bmtub3duLCBrZXk6IHN0cmluZyk6IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIHZhbHVlIHJlY3Vyc2l2ZWx5LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gdHJhbnNmb3JtLlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZWQgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlUmVjdXJzaXZlbHkodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXJJZCA9IHRoaXMuZ2V0VHJhbnNmb3JtZXJJZCh2YWx1ZSwga2V5KTtcbiAgICBpZiAodHJhbnNmb3JtZXJJZCkge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMudHJhbnNmb3JtVmFsdWUodmFsdWUsIGtleSk7XG4gICAgICBpZiAodHJhbnNmb3JtZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdyYXBwZXI6IFRyYW5zZm9ybWVkVmFsdWVXcmFwcGVyID0ge1xuICAgICAgICBfX3RyYW5zZm9ybWVySWQ6IHRyYW5zZm9ybWVySWQsXG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGNoaWxkVmFsdWUsIGluZGV4KSA9PiB0aGlzLnRyYW5zZm9ybVZhbHVlUmVjdXJzaXZlbHkoY2hpbGRWYWx1ZSwgU3RyaW5nKGluZGV4KSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWVXcmFwcGVyID0gdmFsdWUgYXMgUGFydGlhbDxUcmFuc2Zvcm1lZFZhbHVlV3JhcHBlcj47XG4gICAgaWYgKHRyYW5zZm9ybWVkVmFsdWVXcmFwcGVyLl9fdHJhbnNmb3JtZXJJZCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmb3JtZXIodHJhbnNmb3JtZWRWYWx1ZVdyYXBwZXIuX190cmFuc2Zvcm1lcklkKS5yZXN0b3JlVmFsdWUodHJhbnNmb3JtZWRWYWx1ZVdyYXBwZXIudHJhbnNmb3JtZWRWYWx1ZSwga2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNvcmQ6IEdlbmVyaWNPYmplY3QgPSB7fTtcblxuICAgIGZvciAoY29uc3QgY2hpbGRLZXkgb2YgZ2V0QWxsS2V5cyh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IGNoaWxkVmFsdWUgPSB2YWx1ZVtjaGlsZEtleV07XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZENoaWxkVmFsdWUgPSB0aGlzLnRyYW5zZm9ybVZhbHVlUmVjdXJzaXZlbHkoY2hpbGRWYWx1ZSwgY2hpbGRLZXkpO1xuICAgICAgLy8gSlNPTiBjYW5ub3QgaG9sZCBgdW5kZWZpbmVkYCwgc28gYSBrZXkga2VwdCB3aXRoIHRoYXQgdmFsdWUgdmFuaXNoZXMgb24gdGhlIGZpcnN0IHNhdmUgYW5kIG1ha2VzIHRoZVxuICAgICAgLy8gc2F2ZWQgcmVjb3JkIGRpZmZlciBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZyb20gLS0gd2hpY2ggaXMgd2hhdCBtYWRlIGV2ZXJ5IHNldHRpbmdzIGxvYWQgcmV3cml0ZVxuICAgICAgLy8gYGRhdGEuanNvbmAuIGBTa2lwUHJpdmF0ZVByb3BlcnR5VHJhbnNmb3JtZXJgIHJldHVybnMgYHVuZGVmaW5lZGAgZm9yIGV2ZXJ5IGBfYC1wcmVmaXhlZCBrZXkuXG4gICAgICBpZiAodHJhbnNmb3JtZWRDaGlsZFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHJlY29yZFtjaGlsZEtleV0gPSB0cmFuc2Zvcm1lZENoaWxkVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsa0JBQWtCO0FBb0JwQixNQUFlLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBc0J6QixlQUFlLGVBQW9DO0FBQ3hELFFBQUksa0JBQWtCLEtBQUssSUFBSTtBQUM3QixhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sSUFBSSxNQUFNLHVCQUF1QixhQUFhLFlBQVk7QUFBQSxFQUNsRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sMkJBQTJCLE9BQThCO0FBQzlELFdBQU8sS0FBSywwQkFBMEIsT0FBTyxFQUFFO0FBQUEsRUFDakQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0JVLGlCQUFpQixPQUFnQixLQUE0QjtBQUNyRSxXQUFPLEtBQUssYUFBYSxPQUFPLEdBQUcsSUFBSSxLQUFLLEtBQUs7QUFBQSxFQUNuRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrQlEsMEJBQTBCLE9BQWdCLEtBQXNCO0FBQ3RFLFVBQU0sZ0JBQWdCLEtBQUssaUJBQWlCLE9BQU8sR0FBRztBQUN0RCxRQUFJLGVBQWU7QUFDakIsWUFBTSxtQkFBbUIsS0FBSyxlQUFlLE9BQU8sR0FBRztBQUN2RCxVQUFJLHFCQUFxQixRQUFXO0FBQ2xDLGVBQU87QUFBQSxNQUNUO0FBRUEsWUFBTSxVQUFtQztBQUFBLFFBQ3ZDLGlCQUFpQjtBQUFBLFFBQ2pCO0FBQUEsTUFDRjtBQUVBLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxVQUFVLE1BQU07QUFDbEIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3hCLGFBQU8sTUFBTSxJQUFJLENBQUMsWUFBWSxVQUFVLEtBQUssMEJBQTBCLFlBQVksT0FBTyxLQUFLLENBQUMsQ0FBQztBQUFBLElBQ25HO0FBRUEsVUFBTSwwQkFBMEI7QUFDaEMsUUFBSSx3QkFBd0IsaUJBQWlCO0FBQzNDLGFBQU8sS0FBSyxlQUFlLHdCQUF3QixlQUFlLEVBQUUsYUFBYSx3QkFBd0Isa0JBQWtCLEdBQUc7QUFBQSxJQUNoSTtBQUVBLFVBQU0sU0FBd0IsQ0FBQztBQUUvQixlQUFXLFlBQVksV0FBVyxLQUFLLEdBQUc7QUFDeEMsWUFBTSxhQUFhLE1BQU0sUUFBUTtBQUNqQyxZQUFNLHdCQUF3QixLQUFLLDBCQUEwQixZQUFZLFFBQVE7QUFJakYsVUFBSSwwQkFBMEIsUUFBVztBQUN2QztBQUFBLE1BQ0Y7QUFFQSxhQUFPLFFBQVEsSUFBSTtBQUFBLElBQ3JCO0FBRUEsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,42 @@
1
+ /// <reference path="../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * A transformer that can transform a TwoWayMap to an array of entries and back.
6
+ */
7
+ import { TwoWayMap } from '../two-way-map.mjs';
8
+ import { TypedTransformer } from './typed-transformer.mjs';
9
+ type MapEntry = readonly [key: unknown, value: unknown];
10
+ /**
11
+ * A transformer that can transform a TwoWayMap to an array of entries and back.
12
+ */
13
+ export declare class TwoWayMapTransformer extends TypedTransformer<TwoWayMap<unknown, unknown>, MapEntry[]> {
14
+ /**
15
+ * Gets the ID of the transformer.
16
+ *
17
+ * @returns The ID of the transformer.
18
+ */
19
+ get id(): string;
20
+ /**
21
+ * Checks if the value is a TwoWayMap.
22
+ *
23
+ * @param value - The value to check.
24
+ * @returns `true` if the value is a TwoWayMap, `false` otherwise.
25
+ */
26
+ canTransform(value: unknown): value is TwoWayMap<unknown, unknown>;
27
+ /**
28
+ * Restores a TwoWayMap from an array of entries.
29
+ *
30
+ * @param transformedValue - The array of entries.
31
+ * @returns The TwoWayMap.
32
+ */
33
+ restoreValue(transformedValue: MapEntry[]): TwoWayMap<unknown, unknown>;
34
+ /**
35
+ * Transforms a TwoWayMap to an array of entries.
36
+ *
37
+ * @param value - The TwoWayMap.
38
+ * @returns The array of entries.
39
+ */
40
+ transformValue(value: TwoWayMap<unknown, unknown>): MapEntry[];
41
+ }
42
+ export {};
@@ -0,0 +1,92 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { TwoWayMap } from "../two-way-map.mjs";
51
+ import { TypedTransformer } from "./typed-transformer.mjs";
52
+ class TwoWayMapTransformer extends TypedTransformer {
53
+ /**
54
+ * Gets the ID of the transformer.
55
+ *
56
+ * @returns The ID of the transformer.
57
+ */
58
+ get id() {
59
+ return "two-way-map";
60
+ }
61
+ /**
62
+ * Checks if the value is a TwoWayMap.
63
+ *
64
+ * @param value - The value to check.
65
+ * @returns `true` if the value is a TwoWayMap, `false` otherwise.
66
+ */
67
+ canTransform(value) {
68
+ return value instanceof TwoWayMap;
69
+ }
70
+ /**
71
+ * Restores a TwoWayMap from an array of entries.
72
+ *
73
+ * @param transformedValue - The array of entries.
74
+ * @returns The TwoWayMap.
75
+ */
76
+ restoreValue(transformedValue) {
77
+ return new TwoWayMap(transformedValue);
78
+ }
79
+ /**
80
+ * Transforms a TwoWayMap to an array of entries.
81
+ *
82
+ * @param value - The TwoWayMap.
83
+ * @returns The array of entries.
84
+ */
85
+ transformValue(value) {
86
+ return [...value.entries()];
87
+ }
88
+ }
89
+ export {
90
+ TwoWayMapTransformer
91
+ };
92
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy90d28td2F5LW1hcC10cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBjYW4gdHJhbnNmb3JtIGEgVHdvV2F5TWFwIHRvIGFuIGFycmF5IG9mIGVudHJpZXMgYW5kIGJhY2suXG4gKi9cblxuaW1wb3J0IHsgVHdvV2F5TWFwIH0gZnJvbSAnLi4vdHdvLXdheS1tYXAudHMnO1xuaW1wb3J0IHsgVHlwZWRUcmFuc2Zvcm1lciB9IGZyb20gJy4vdHlwZWQtdHJhbnNmb3JtZXIudHMnO1xuXG50eXBlIE1hcEVudHJ5ID0gcmVhZG9ubHkgW2tleTogdW5rbm93biwgdmFsdWU6IHVua25vd25dO1xuXG4vKipcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBjYW4gdHJhbnNmb3JtIGEgVHdvV2F5TWFwIHRvIGFuIGFycmF5IG9mIGVudHJpZXMgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBUd29XYXlNYXBUcmFuc2Zvcm1lciBleHRlbmRzIFR5cGVkVHJhbnNmb3JtZXI8VHdvV2F5TWFwPHVua25vd24sIHVua25vd24+LCBNYXBFbnRyeVtdPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBJRCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBJRCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICd0d28td2F5LW1hcCc7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIFR3b1dheU1hcC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgVHdvV2F5TWFwLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUd29XYXlNYXA8dW5rbm93biwgdW5rbm93bj4ge1xuICAgIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFR3b1dheU1hcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyBhIFR3b1dheU1hcCBmcm9tIGFuIGFycmF5IG9mIGVudHJpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1lZFZhbHVlIC0gVGhlIGFycmF5IG9mIGVudHJpZXMuXG4gICAqIEByZXR1cm5zIFRoZSBUd29XYXlNYXAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKHRyYW5zZm9ybWVkVmFsdWU6IE1hcEVudHJ5W10pOiBUd29XYXlNYXA8dW5rbm93biwgdW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgVHdvV2F5TWFwPHVua25vd24sIHVua25vd24+KHRyYW5zZm9ybWVkVmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBUd29XYXlNYXAgdG8gYW4gYXJyYXkgb2YgZW50cmllcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIFR3b1dheU1hcC5cbiAgICogQHJldHVybnMgVGhlIGFycmF5IG9mIGVudHJpZXMuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgdHJhbnNmb3JtVmFsdWUodmFsdWU6IFR3b1dheU1hcDx1bmtub3duLCB1bmtub3duPik6IE1hcEVudHJ5W10ge1xuICAgIHJldHVybiBbLi4udmFsdWUuZW50cmllcygpXTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMsaUJBQWlCO0FBQzFCLFNBQVMsd0JBQXdCO0FBTzFCLE1BQU0sNkJBQTZCLGlCQUEwRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sRyxJQUFvQixLQUFhO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxPQUFzRDtBQUNqRixXQUFPLGlCQUFpQjtBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsYUFBYSxrQkFBMkQ7QUFDdEYsV0FBTyxJQUFJLFVBQTRCLGdCQUFnQjtBQUFBLEVBQ3pEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxPQUFnRDtBQUM3RSxXQUFPLENBQUMsR0FBRyxNQUFNLFFBQVEsQ0FBQztBQUFBLEVBQzVCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,39 @@
1
+ /// <reference path="../library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * A base class for transformers that can transform and restore a specific type.
6
+ */
7
+ import { Transformer } from './transformer.mjs';
8
+ /**
9
+ * A transformer that can transform and restore a specific type.
10
+ *
11
+ * @typeParam Source - The type of the source value.
12
+ * @typeParam Transformed - The type of the transformed value.
13
+ */
14
+ export declare abstract class TypedTransformer<Source, Transformed> extends Transformer {
15
+ /**
16
+ * Determines if the transformer can transform the given value.
17
+ *
18
+ * @param value - The value to check.
19
+ * @param key - The key of the value to check.
20
+ * @returns A boolean indicating if the transformer can transform the value.
21
+ */
22
+ abstract canTransform(value: unknown, key: string): value is Source;
23
+ /**
24
+ * Restores the given value.
25
+ *
26
+ * @param transformedValue - The value to restore.
27
+ * @param key - The key of the value to restore.
28
+ * @returns The restored value.
29
+ */
30
+ abstract restoreValue(transformedValue: Transformed, key: string): Source;
31
+ /**
32
+ * Transforms the given value.
33
+ *
34
+ * @param value - The value to transform.
35
+ * @param key - The key of the value to transform.
36
+ * @returns The transformed value.
37
+ */
38
+ abstract transformValue(value: Source, key: string): Transformed;
39
+ }
@@ -0,0 +1,56 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
+ symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return '/';
17
+ },
18
+ env: {},
19
+ platform: 'android'
20
+ };
21
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ (function initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { Transformer } from "./transformer.mjs";
51
+ class TypedTransformer extends Transformer {
52
+ }
53
+ export {
54
+ TypedTransformer
55
+ };
56
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy90eXBlZC10cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgYmFzZSBjbGFzcyBmb3IgdHJhbnNmb3JtZXJzIHRoYXQgY2FuIHRyYW5zZm9ybSBhbmQgcmVzdG9yZSBhIHNwZWNpZmljIHR5cGUuXG4gKi9cblxuaW1wb3J0IHsgVHJhbnNmb3JtZXIgfSBmcm9tICcuL3RyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBhbmQgcmVzdG9yZSBhIHNwZWNpZmljIHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBTb3VyY2UgLSBUaGUgdHlwZSBvZiB0aGUgc291cmNlIHZhbHVlLlxuICogQHR5cGVQYXJhbSBUcmFuc2Zvcm1lZCAtIFRoZSB0eXBlIG9mIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFR5cGVkVHJhbnNmb3JtZXI8U291cmNlLCBUcmFuc2Zvcm1lZD4gZXh0ZW5kcyBUcmFuc2Zvcm1lciB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB0cmFuc2Zvcm1lciBjYW4gdHJhbnNmb3JtIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB0cmFuc2Zvcm1lciBjYW4gdHJhbnNmb3JtIHRoZSB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogdmFsdWUgaXMgU291cmNlO1xuXG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1lZFZhbHVlIC0gVGhlIHZhbHVlIHRvIHJlc3RvcmUuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZXN0b3JlLlxuICAgKiBAcmV0dXJucyBUaGUgcmVzdG9yZWQgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKHRyYW5zZm9ybWVkVmFsdWU6IFRyYW5zZm9ybWVkLCBrZXk6IHN0cmluZyk6IFNvdXJjZTtcblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogU291cmNlLCBrZXk6IHN0cmluZyk6IFRyYW5zZm9ybWVkO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1BLFNBQVMsbUJBQW1CO0FBUXJCLE1BQWUseUJBQThDLFlBQVk7QUEyQmhGOyIsCiAgIm5hbWVzIjogW10KfQo=