@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,128 @@
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 keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+
64
+ "use strict";
65
+ var __defProp = Object.defineProperty;
66
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
67
+ var __getOwnPropNames = Object.getOwnPropertyNames;
68
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
69
+ var __export = (target, all) => {
70
+ for (var name in all)
71
+ __defProp(target, name, { get: all[name], enumerable: true });
72
+ };
73
+ var __copyProps = (to, from, except, desc) => {
74
+ if (from && typeof from === "object" || typeof from === "function") {
75
+ for (let key of __getOwnPropNames(from))
76
+ if (!__hasOwnProp.call(to, key) && key !== except)
77
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
78
+ }
79
+ return to;
80
+ };
81
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
82
+ var type_guards_exports = {};
83
+ __export(type_guards_exports, {
84
+ assert: () => assert,
85
+ assertGenericObject: () => assertGenericObject,
86
+ assertNever: () => assertNever,
87
+ assertNonNullable: () => assertNonNullable,
88
+ ensureGenericObject: () => ensureGenericObject,
89
+ ensureNonNullable: () => ensureNonNullable
90
+ });
91
+ module.exports = __toCommonJS(type_guards_exports);
92
+ var import_function = require('./function.cjs');
93
+ function assert(isTrue, errorOrMessage) {
94
+ if (!isTrue) {
95
+ throw typeof errorOrMessage === "string" ? new Error(errorOrMessage) : errorOrMessage;
96
+ }
97
+ }
98
+ function assertGenericObject(_object) {
99
+ (0, import_function.noop)();
100
+ }
101
+ function assertNever(value) {
102
+ throw new Error(`Unhandled value: ${String(value)}`);
103
+ }
104
+ function assertNonNullable(value, errorOrMessage) {
105
+ if (value !== null && value !== void 0) {
106
+ return;
107
+ }
108
+ errorOrMessage ??= value === null ? "Value is null" : "Value is undefined";
109
+ const error = typeof errorOrMessage === "string" ? new Error(errorOrMessage) : errorOrMessage;
110
+ throw error;
111
+ }
112
+ function ensureGenericObject($object) {
113
+ return $object;
114
+ }
115
+ function ensureNonNullable(value, errorOrMessage) {
116
+ assertNonNullable(value, errorOrMessage);
117
+ return value;
118
+ }
119
+ // Annotate the CommonJS export names for ESM import in node:
120
+ 0 && (module.exports = {
121
+ assert,
122
+ assertGenericObject,
123
+ assertNever,
124
+ assertNonNullable,
125
+ ensureGenericObject,
126
+ ensureNonNullable
127
+ });
128
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbmltcG9ydCB7IG5vb3AgfSBmcm9tICcuL2Z1bmN0aW9uLnRzJztcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGJhc2UgdHlwZSB0byBpbnRlcnNlY3Qgd2l0aC5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY09iamVjdDxUID0gdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiAmIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSBjb25kaXRpb24gaXMgYHRydWVgLiBUaHJvd3MgaWYgaXQgaXMgbm90LlxuICpcbiAqIFVzZSBpbiBwbGFjZSBvZiBgLyogdjggaWdub3JlICpcXC9gIGZvciBkZWZlbnNpdmUgZ3VhcmRzIHRoYXQgc2hvdWxkXG4gKiBuZXZlciB0cmlnZ2VyIGF0IHJ1bnRpbWUgYnV0IHdvdWxkIG90aGVyd2lzZSBjcmVhdGUgdW5jb3ZlcmVkIGJyYW5jaGVzLlxuICpcbiAqIEBwYXJhbSBpc1RydWUgLSBUaGUgY29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIFRoZSBlcnJvciBvciBtZXNzYWdlIHRvIHRocm93IGlmIHRoZSBjb25kaXRpb24gaXMgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChpc1RydWU6IGJvb2xlYW4sIGVycm9yT3JNZXNzYWdlOiBFcnJvciB8IHN0cmluZyk6IGFzc2VydHMgaXNUcnVlIHtcbiAgaWYgKCFpc1RydWUpIHtcbiAgICB0aHJvdyB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgbmFycm93aW5nIGl0cyB0eXBlIGluIHBsYWNlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSBfb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEdlbmVyaWNPYmplY3Q8VD4oX29iamVjdDogVCk6IGFzc2VydHMgX29iamVjdCBpcyBHZW5lcmljT2JqZWN0PFQ+IHtcbiAgbm9vcCgpO1xufVxuXG4vKipcbiAqIEFzc2VydHMgYXQgY29tcGlsZSB0aW1lIHRoYXQgZXZlcnkgY2FzZSBvZiBhIGRpc2NyaW1pbmF0ZWQgdW5pb24gaGFzIGJlZW5cbiAqIGhhbmRsZWQuIFBsYWNlIGF0IHRoZSBgZGVmYXVsdGAgYnJhbmNoIG9mIGEgYHN3aXRjaGAgb3ZlciBhIHVuaW9uIG9yIGVudW0uXG4gKlxuICogSWYgYSBuZXcgdmFyaWFudCBpcyBhZGRlZCB0byB0aGUgdW5pb24gd2l0aG91dCBhIG1hdGNoaW5nIGBjYXNlYCwgdGhlIGNhbGxcbiAqIHRvIHtAbGluayBhc3NlcnROZXZlcn0gZmFpbHMgdG8gY29tcGlsZSBiZWNhdXNlIGB2YWx1ZWAgaXMgbm8gbG9uZ2VyIGBuZXZlcmAuXG4gKiBJZiByZWFjaGVkIGF0IHJ1bnRpbWUgKGUuZy4gYmVjYXVzZSB0aGUgdmFsdWUgd2FzIGJ5cGFzc2VkIHZpYSBKU09OIG9yIGFcbiAqIHR5cGUgYXNzZXJ0aW9uKSwgaXQgdGhyb3dzIGEgZGVzY3JpcHRpdmUgYEVycm9yYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHN3aXRjaCAobW9kZSkge1xuICogICBjYXNlICdhJzogcmV0dXJuIGRvQSgpO1xuICogICBjYXNlICdiJzogcmV0dXJuIGRvQigpO1xuICogICBkZWZhdWx0OiBhc3NlcnROZXZlcihtb2RlKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBleGhhdXN0aXZlbHktaGFuZGxlZCB2YWx1ZSwgbmFycm93ZWQgdG8gYG5ldmVyYCBieSBjb250cm9sIGZsb3cuXG4gKiBAdGhyb3dzIEFsd2F5cywgaWYgcmVhY2hlZCBhdCBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIodmFsdWU6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCB2YWx1ZTogJHtTdHJpbmcodmFsdWUpfWApO1xufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIHZhbHVlIGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlcnJvck9yTWVzc2FnZSA/Pz0gdmFsdWUgPT09IG51bGwgPyAnVmFsdWUgaXMgbnVsbCcgOiAnVmFsdWUgaXMgdW5kZWZpbmVkJztcbiAgY29uc3QgZXJyb3IgPSB0eXBlb2YgZXJyb3JPck1lc3NhZ2UgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yT3JNZXNzYWdlKSA6IGVycm9yT3JNZXNzYWdlO1xuICB0aHJvdyBlcnJvcjtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBhIGdlbmVyaWMgb2JqZWN0LCByZXR1cm5pbmcgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIHZhbHVlIHRvIGVuc3VyZS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBhcyBhIGdlbmVyaWMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlR2VuZXJpY09iamVjdDxUPigkb2JqZWN0OiBUKTogR2VuZXJpY09iamVjdDxUPiB7XG4gIHJldHVybiAkb2JqZWN0IGFzIEdlbmVyaWNPYmplY3Q8VD47XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgbm90IGBudWxsYCBvciBgdW5kZWZpbmVkYCBhbmQgcmV0dXJucyBpdCB3aXRoIG5hcnJvd2VkIHR5cGUuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSB3aXRoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAgZXhjbHVkZWQgZnJvbSBpdHMgdHlwZS5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogTm9uTnVsbGFibGU8VD4ge1xuICBhc3NlcnROb25OdWxsYWJsZSh2YWx1ZSwgZXJyb3JPck1lc3NhZ2UpO1xuICByZXR1cm4gdmFsdWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHNCQUFxQjtBQW9CZCxTQUFTLE9BQU8sUUFBaUIsZ0JBQWdEO0FBQ3RGLE1BQUksQ0FBQyxRQUFRO0FBQ1gsVUFBTSxPQUFPLG1CQUFtQixXQUFXLElBQUksTUFBTSxjQUFjLElBQUk7QUFBQSxFQUN6RTtBQUNGO0FBUU8sU0FBUyxvQkFBdUIsU0FBaUQ7QUFDdEYsNEJBQUs7QUFDUDtBQXVCTyxTQUFTLFlBQVksT0FBcUI7QUFDL0MsUUFBTSxJQUFJLE1BQU0sb0JBQW9CLE9BQU8sS0FBSyxDQUFDLEVBQUU7QUFDckQ7QUFZTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFrRTtBQUM3SSxNQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekM7QUFBQSxFQUNGO0FBRUEscUJBQW1CLFVBQVUsT0FBTyxrQkFBa0I7QUFDdEQsUUFBTSxRQUFRLE9BQU8sbUJBQW1CLFdBQVcsSUFBSSxNQUFNLGNBQWMsSUFBSTtBQUMvRSxRQUFNO0FBQ1I7QUFTTyxTQUFTLG9CQUF1QixTQUE4QjtBQUNuRSxTQUFPO0FBQ1Q7QUFhTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFpRDtBQUM1SCxvQkFBa0IsT0FBTyxjQUFjO0FBQ3ZDLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,84 @@
1
+ /// <reference path="./library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Contains utility functions for type guards.
6
+ */
7
+ /**
8
+ * A type that represents a generic object.
9
+ *
10
+ * @typeParam T - The base type to intersect with.
11
+ */
12
+ export type GenericObject<T = unknown> = Record<string | symbol, unknown> & T;
13
+ type NullableConstraint<T> = null extends T ? unknown : undefined extends T ? unknown : never;
14
+ /**
15
+ * Asserts that a condition is `true`. Throws if it is not.
16
+ *
17
+ * Use in place of `/* v8 ignore *\/` for defensive guards that should
18
+ * never trigger at runtime but would otherwise create uncovered branches.
19
+ *
20
+ * @param isTrue - The condition to assert.
21
+ * @param errorOrMessage - The error or message to throw if the condition is `false`.
22
+ */
23
+ export declare function assert(isTrue: boolean, errorOrMessage: Error | string): asserts isTrue;
24
+ /**
25
+ * Asserts that a value is a generic object, narrowing its type in place.
26
+ *
27
+ * @typeParam T - The type of the value.
28
+ * @param _object - The value to assert.
29
+ */
30
+ export declare function assertGenericObject<T>(_object: T): asserts _object is GenericObject<T>;
31
+ /**
32
+ * Asserts at compile time that every case of a discriminated union has been
33
+ * handled. Place at the `default` branch of a `switch` over a union or enum.
34
+ *
35
+ * If a new variant is added to the union without a matching `case`, the call
36
+ * to {@link assertNever} fails to compile because `value` is no longer `never`.
37
+ * If reached at runtime (e.g. because the value was bypassed via JSON or a
38
+ * type assertion), it throws a descriptive `Error`.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * switch (mode) {
43
+ * case 'a': return doA();
44
+ * case 'b': return doB();
45
+ * default: assertNever(mode);
46
+ * }
47
+ * ```
48
+ *
49
+ * @param value - The exhaustively-handled value, narrowed to `never` by control flow.
50
+ * @throws Always, if reached at runtime.
51
+ */
52
+ export declare function assertNever(value: never): never;
53
+ /**
54
+ * Asserts that a value is not `null` or `undefined`, narrowing its type in place.
55
+ *
56
+ * Only callable when `T` includes `null` or `undefined`. Passing an already non-nullable type is a compile error.
57
+ *
58
+ * @typeParam T - The type of the value.
59
+ * @param value - The value to check.
60
+ * @param errorOrMessage - Optional {@link Error} or error message string.
61
+ * @throws If the value is `null` or `undefined`.
62
+ */
63
+ export declare function assertNonNullable<T extends NullableConstraint<T>>(value: T, errorOrMessage?: Error | string): asserts value is NonNullable<T>;
64
+ /**
65
+ * Ensures that a value is a generic object, returning it with narrowed type.
66
+ *
67
+ * @typeParam T - The type of the value.
68
+ * @param $object - The value to ensure.
69
+ * @returns The value as a generic object.
70
+ */
71
+ export declare function ensureGenericObject<T>($object: T): GenericObject<T>;
72
+ /**
73
+ * Ensures that a value is not `null` or `undefined` and returns it with narrowed type.
74
+ *
75
+ * Only callable when `T` includes `null` or `undefined`. Passing an already non-nullable type is a compile error.
76
+ *
77
+ * @typeParam T - The type of the value.
78
+ * @param value - The value to check.
79
+ * @param errorOrMessage - Optional {@link Error} or error message string.
80
+ * @returns The value with `null` and `undefined` excluded from its type.
81
+ * @throws If the value is `null` or `undefined`.
82
+ */
83
+ export declare function ensureNonNullable<T extends NullableConstraint<T>>(value: T, errorOrMessage?: Error | string): NonNullable<T>;
84
+ export {};
@@ -0,0 +1,121 @@
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 keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+
64
+ "use strict";
65
+ var __defProp = Object.defineProperty;
66
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
67
+ var __getOwnPropNames = Object.getOwnPropertyNames;
68
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
69
+ var __export = (target, all) => {
70
+ for (var name in all)
71
+ __defProp(target, name, { get: all[name], enumerable: true });
72
+ };
73
+ var __copyProps = (to, from, except, desc) => {
74
+ if (from && typeof from === "object" || typeof from === "function") {
75
+ for (let key of __getOwnPropNames(from))
76
+ if (!__hasOwnProp.call(to, key) && key !== except)
77
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
78
+ }
79
+ return to;
80
+ };
81
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
82
+ var type_exports = {};
83
+ __export(type_exports, {
84
+ TypeAsserter: () => TypeAsserter
85
+ });
86
+ module.exports = __toCommonJS(type_exports);
87
+ var import_object_utils = require('./object-utils.cjs');
88
+ class TypeAsserter {
89
+ /**
90
+ * Asserts that all keys of an object type are present in a list of keys.
91
+ *
92
+ * @remarks Only available when `[Type] extends [object]`.
93
+ */
94
+ assertAllKeys;
95
+ /**
96
+ * Asserts that all members of a union type are present in a list of members.
97
+ *
98
+ * @remarks Only available when `[Type] extends [LiteralKey]`.
99
+ */
100
+ assertAllMembers;
101
+ /**
102
+ * Creates a type asserter that captures {@link Type} for compile-time exhaustiveness checks.
103
+ */
104
+ constructor() {
105
+ const assertions = (0, import_object_utils.castTo)({
106
+ assertAllKeys(keys) {
107
+ return Object.freeze(Array.from(keys));
108
+ },
109
+ assertAllMembers(keys) {
110
+ return Object.freeze(Array.from(keys));
111
+ }
112
+ });
113
+ this.assertAllKeys = assertions.assertAllKeys;
114
+ this.assertAllMembers = assertions.assertAllMembers;
115
+ }
116
+ }
117
+ // Annotate the CommonJS export names for ESM import in node:
118
+ 0 && (module.exports = {
119
+ TypeAsserter
120
+ });
121
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlIHV0aWxpdGllcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICcuL29iamVjdC11dGlscy50cyc7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncyBhbmQgYXNzZXJ0cyB0aGF0IGFsbCBrZXlzIGFyZSBwcmVzZW50IGluIGEgbGlzdCBvZiBrZXlzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBrZXlzIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IHR5cGUgRXhhY3RLZXlzPFR5cGUgZXh0ZW5kcyBvYmplY3QsIEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4gPSBFeGFjdE1lbWJlcnM8U3RyaW5nS2V5czxUeXBlPiwgS2V5cz47XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgbWVtYmVycyBvZiBhIHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gYXNzZXJ0IHRoZSBtZW1iZXJzIG9mLlxuICogQHR5cGVQYXJhbSBLZXlzIC0gVGhlIGxpc3Qgb2YgbWVtYmVycyB0byBhc3NlcnQuXG4gKi9cbmV4cG9ydCB0eXBlIEV4YWN0TWVtYmVyczxcbiAgVHlwZSBleHRlbmRzIExpdGVyYWxLZXksXG4gIEtleXMgZXh0ZW5kcyByZWFkb25seSBMaXRlcmFsS2V5W11cbj4gPSBFeGNsdWRlPEtleXNbbnVtYmVyXSwgVHlwZT4gZXh0ZW5kcyBuZXZlciA/IEV4Y2x1ZGU8VHlwZSwgS2V5c1tudW1iZXJdPiBleHRlbmRzIG5ldmVyID8gRHVwbGljYXRlczxLZXlzPiBleHRlbmRzIFtdID8gS2V5c1xuICAgIDogYEVSUk9SOiBEdXBsaWNhdGUgbWVtYmVyczogJHtUdXBsZVRvQ1NWPER1cGxpY2F0ZXM8S2V5cz4+fWBcbiAgOiBgRVJST1I6IE1pc3NpbmcgbWVtYmVyczogJHtUdXBsZVRvQ1NWPFVuaW9uVG9UdXBsZTxFeGNsdWRlPFR5cGUsIEtleXNbbnVtYmVyXT4+Pn1gXG4gIDogYEVSUk9SOiBJbnZhbGlkIG1lbWJlcnM6ICR7VHVwbGVUb0NTVjxVbmlvblRvVHVwbGU8RXhjbHVkZTxLZXlzW251bWJlcl0sIFR5cGU+Pj59YDtcblxuLyoqXG4gKiBEZXJpdmVzIGFuIGV2ZW50IG1hcCAoYHsgZXZlbnROYW1lOiBbY2FsbGJhY2tBcmdzXSB9YCkgZnJvbSBhIHR5cGUgZXhwb3NpbmcgYW4gb3ZlcmxvYWRlZCBgb24obmFtZSwgY2FsbGJhY2spYFxuICogbWV0aG9kIFx1MjAxNCBlLmcuIE9ic2lkaWFuJ3MgYFdvcmtzcGFjZWAgLyBgVmF1bHRgIC8gYE1ldGFkYXRhQ2FjaGVgLiBFYWNoIGBvbmAgb3ZlcmxvYWQgYmVjb21lcyBvbmUgZW50cnkga2V5ZWQgYnlcbiAqIHRoZSBldmVudCBuYW1lLCB3aXRoIHRoZSBjYWxsYmFjaydzIHBhcmFtZXRlcnMgYXMgYSBsYWJlbGVkIHR1cGxlOyB0aGUgd2lkZSBgb24obmFtZTogc3RyaW5nLCBcdTIwMjYpYCBjYXRjaC1hbGxcbiAqIG92ZXJsb2FkIGlzIGRyb3BwZWQuIFRoZSBtYXAgYXV0by10cmFja3MgdXBzdHJlYW0gb3ZlcmxvYWRzIChubyBoYW5kLWF1dGhvcmluZykuIEl0IGNhbm5vdCByZWNvbnN0cnVjdFxuICogZ2VudWluZWx5IGdlbmVyaWMgb3ZlcmxvYWRzLCBidXQgT2JzaWRpYW4ncyBldmVudCBvdmVybG9hZHMgYXJlIGFsbCBjb25jcmV0ZSBzdHJpbmctbGl0ZXJhbCBvbmVzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIEEgdHlwZSBleHBvc2luZyBhbiBgb24obmFtZSwgY2FsbGJhY2ssIFx1MjAyNilgIG1ldGhvZCAoZS5nLiBhbiBPYnNpZGlhbiBgRXZlbnRzYCBzdWJjbGFzcykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0eXBlIFdvcmtzcGFjZUV2ZW50TWFwID0gRXh0cmFjdEV2ZW50TWFwPFdvcmtzcGFjZT47XG4gKiAvLyB7ICdmaWxlLW1lbnUnOiBbbWVudTogTWVudSwgZmlsZTogVEFic3RyYWN0RmlsZSwgc291cmNlOiBzdHJpbmcsIGxlYWY/OiBXb3Jrc3BhY2VMZWFmXTsgXHUyMDI2IH1cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBFeHRyYWN0RXZlbnRNYXA8VCBleHRlbmRzIEV2ZW50c1dpdGhPbj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPEVudHJ5T2ZPdmVybG9hZDxPdmVybG9hZFVuaW9uPFRbJ29uJ10+Pj47XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIHJldHVybiB2YWx1ZSB0aGF0IG1heSBiZSBgdm9pZGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHRoYXQgbWF5IGJlIHJldHVybmVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBgdm9pZGAgcmV0dXJuIHR5cGUuXG5leHBvcnQgdHlwZSBNYXliZVJldHVybjxUPiA9IFQgfCB2b2lkO1xuXG4vKipcbiAqIEEgdHlwZSB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvcGVydHlWYWx1ZXM8VCBleHRlbmRzIG9iamVjdD4gPSBUW1N0cmluZ0tleXM8VD5dO1xuXG4vKipcbiAqIEEgdHlwZSB0aGF0IHJlcHJlc2VudHMgdGhlIGtleXMgb2YgYW4gb2JqZWN0IGFzIHN0cmluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPjtcblxudHlwZSBEdXBsaWNhdGVzPFxuICBUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdLFxuICBTZWVuIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIEFkZGVkIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIE91dCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA9IFtdXG4+ID0gVCBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCwgLi4uaW5mZXIgUmVzdF0gPyBJbmNsdWRlczxTZWVuLCBGaXJzdD4gZXh0ZW5kcyB0cnVlID8gSW5jbHVkZXM8QWRkZWQsIEZpcnN0PiBleHRlbmRzIHRydWUgPyBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIEFkZGVkLCBPdXQ+XG4gICAgOiBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIFsuLi5BZGRlZCwgRmlyc3RdLCBbLi4uT3V0LCBGaXJzdF0+XG4gIDogRHVwbGljYXRlczxSZXN0LCBbLi4uU2VlbiwgRmlyc3RdLCBBZGRlZCwgT3V0PlxuICA6IE91dDtcblxuLy8gTWFwcyBvbmUgYG9uKG5hbWUsIGNhbGxiYWNrLCBcdTIwMjYpYCBvdmVybG9hZCB0byBhIGB7IFtuYW1lXTogW2NhbGxiYWNrQXJnc10gfWAgZW50cnk7IGRyb3BzIHRoZSB3aWRlIGBuYW1lOiBzdHJpbmdgIGNhdGNoLWFsbC5cbnR5cGUgRW50cnlPZk92ZXJsb2FkPFRPdmVybG9hZD4gPSBUT3ZlcmxvYWQgZXh0ZW5kcyAobmFtZTogaW5mZXIgTmFtZSwgY2FsbGJhY2s6ICguLi4kYXJndW1lbnRzOiBpbmZlciBBcmd1bWVudHMpID0+IHVua25vd24sIC4uLnJlc3Q6IG5ldmVyW10pID0+IHVua25vd24gPyBOYW1lIGV4dGVuZHMgc3RyaW5nID8gc3RyaW5nIGV4dGVuZHMgTmFtZSA/IG5ldmVyIDogUmVjb3JkPE5hbWUsIEFyZ3VtZW50cz5cbiAgOiBuZXZlclxuICA6IG5ldmVyO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyxuby1tYWdpYy1udW1iZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxudHlwZSBFcXVhbDxYLCBZPiA9ICg8VD4oKSA9PiBUIGV4dGVuZHMgWCA/IDEgOiAyKSBleHRlbmRzICg8VD4oKSA9PiBUIGV4dGVuZHMgWSA/IDEgOiAyKSA/IHRydWUgOiBmYWxzZTtcblxuLy8gVGhlIG1pbmltYWwgc2hhcGUge0BsaW5rIEV4dHJhY3RFdmVudE1hcH0gb3BlcmF0ZXMgb246IGEgdHlwZSBleHBvc2luZyBhbiBvdmVybG9hZGVkIGBvbmAgbWV0aG9kLlxuaW50ZXJmYWNlIEV2ZW50c1dpdGhPbiB7XG4gIG9uOiBHZW5lcmljRnVuY3Rpb247XG59XG5cbnR5cGUgSW5jbHVkZXM8VHlwZSBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSwgTWVtYmVyPiA9IFR5cGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgRmlyc3QsIC4uLmluZmVyIFJlc3RdID8gRXF1YWw8Rmlyc3QsIE1lbWJlcj4gZXh0ZW5kcyB0cnVlID8gdHJ1ZSA6IEluY2x1ZGVzPFJlc3QsIE1lbWJlcj5cbiAgOiBmYWxzZTtcblxudHlwZSBMYXN0SW5VbmlvbjxVbmlvbj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uIGV4dGVuZHMgdW5rbm93biA/ICgpID0+IFVuaW9uIDogbmV2ZXI+IGV4dGVuZHMgKCkgPT4gaW5mZXIgTGFzdCA/IExhc3QgOiBuZXZlcjtcblxudHlwZSBMaXRlcmFsS2V5ID0gbnVtYmVyIHwgc3RyaW5nO1xuXG4vLyBTcGxpdHMgYW4gb3ZlcmxvYWRlZCBjYWxsIHNpZ25hdHVyZSBpbnRvIGEgdW5pb24gb2YgaXRzIGluZGl2aWR1YWwgY2FsbCBzaWduYXR1cmVzIChhIHdlbGwta25vd24gb3ZlcmxvYWQtdG8tdW5pb24gdHJpY2spLlxuLyogZXNsaW50LWRpc2FibGUgcGVyZmVjdGlvbmlzdC9zb3J0LWludGVyc2VjdGlvbi10eXBlcywgcGVyZmVjdGlvbmlzdC9zb3J0LXVuaW9uLXR5cGVzLCBAc3R5bGlzdGljL29wZXJhdG9yLWxpbmVicmVhayAtLSBUaGUgT3ZlcmxvYWRVbmlvbiByZWN1cnNpb24gcmVsaWVzIG9uIHRoaXMgZXhhY3Qgb3BlcmFuZCBvcmRlcjsgcmVvcmRlcmluZyBicmVha3MgdGVybWluYXRpb24gKFRTMjU4OSksIGFuZCB0aGUgbGluZS1icmVhayBzaGFwZSBpcyBsZWZ0IHRvIGRwcmludC4gKi9cbnR5cGUgT3ZlcmxvYWRVbmlvbjxUT3ZlcmxvYWQgZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+ID0gRXhjbHVkZTxcbiAgT3ZlcmxvYWRVbmlvblJlY3Vyc2l2ZTwoKCkgPT4gbmV2ZXIpICYgVE92ZXJsb2FkPixcbiAgVE92ZXJsb2FkIGV4dGVuZHMgKCkgPT4gbmV2ZXIgPyBuZXZlciA6ICgpID0+IG5ldmVyXG4+O1xuXG50eXBlIE92ZXJsb2FkVW5pb25SZWN1cnNpdmU8VE92ZXJsb2FkLCBUUGFydGlhbE92ZXJsb2FkID0gdW5rbm93bj4gPSBUT3ZlcmxvYWQgZXh0ZW5kcyAoLi4uJGFyZ3VtZW50czogaW5mZXIgQXJndW1lbnRzKSA9PiBpbmZlciBSZXR1cm4gPyBUUGFydGlhbE92ZXJsb2FkIGV4dGVuZHMgVE92ZXJsb2FkID8gbmV2ZXJcbiAgOlxuICAgIHwgT3ZlcmxvYWRVbmlvblJlY3Vyc2l2ZTxUUGFydGlhbE92ZXJsb2FkICYgVE92ZXJsb2FkLCBUUGFydGlhbE92ZXJsb2FkICYgKCguLi4kYXJndW1lbnRzOiBBcmd1bWVudHMpID0+IFJldHVybikgJiBQaWNrPFRPdmVybG9hZCwga2V5b2YgVE92ZXJsb2FkPj5cbiAgICB8ICgoLi4uJGFyZ3VtZW50czogQXJndW1lbnRzKSA9PiBSZXR1cm4pXG4gIDogbmV2ZXI7XG4vKiBlc2xpbnQtZW5hYmxlIHBlcmZlY3Rpb25pc3Qvc29ydC1pbnRlcnNlY3Rpb24tdHlwZXMsIHBlcmZlY3Rpb25pc3Qvc29ydC11bmlvbi10eXBlcywgQHN0eWxpc3RpYy9vcGVyYXRvci1saW5lYnJlYWsgLS0gVGhlIE92ZXJsb2FkVW5pb24gcmVjdXJzaW9uIHJlbGllcyBvbiB0aGlzIGV4YWN0IG9wZXJhbmQgb3JkZXI7IHJlb3JkZXJpbmcgYnJlYWtzIHRlcm1pbmF0aW9uIChUUzI1ODkpLCBhbmQgdGhlIGxpbmUtYnJlYWsgc2hhcGUgaXMgbGVmdCB0byBkcHJpbnQuICovXG5cbnR5cGUgVG9TdHJpbmc8VD4gPSBUIGV4dGVuZHMgbnVtYmVyIHwgc3RyaW5nID8gYCR7VH1gIDogbmV2ZXI7XG5cbnR5cGUgVHVwbGVUb0NTVjxUdXBsZSBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSBUdXBsZSBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCwgLi4uaW5mZXIgUmVzdF0gPyBGaXJzdCBleHRlbmRzIExpdGVyYWxLZXkgPyBSZXN0IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gUmVzdFsnbGVuZ3RoJ10gZXh0ZW5kcyAwID8gVG9TdHJpbmc8Rmlyc3Q+IDogYCR7VG9TdHJpbmc8Rmlyc3Q+fSwke1R1cGxlVG9DU1Y8UmVzdD59YFxuICAgIDogbmV2ZXJcbiAgOiBuZXZlclxuICA6ICcnO1xuXG4vKipcbiAqIEludGVybmFsIG1ldGhvZCBzaGFwZXMgZm9yIHtAbGluayBUeXBlQXNzZXJ0ZXJ9OiBhIGNvbmRpdGlvbmFsIHR5cGUgZGlzYWJsZXMgZWFjaCBtZXRob2Qgd2hlbiB0aGVcbiAqIGNhcHR1cmVkIHR5cGUgZG9lcyBub3Qgc3VwcG9ydCBpdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgY2FwdHVyZWQgdHlwZS5cbiAqL1xuaW50ZXJmYWNlIFR5cGVBc3NlcnRpb25zPFR5cGU+IHtcbiAgYXNzZXJ0QWxsS2V5czogW1R5cGVdIGV4dGVuZHMgW29iamVjdF0gPyA8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxTdHJpbmdLZXlzPFR5cGU+LCBLZXlzPlxuICAgICkgPT4gcmVhZG9ubHkgKGtleW9mIFR5cGUpW11cbiAgICA6IG5ldmVyO1xuICBhc3NlcnRBbGxNZW1iZXJzOiBbVHlwZV0gZXh0ZW5kcyBbTGl0ZXJhbEtleV0gPyA8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IExpdGVyYWxLZXlbXT4oXG4gICAgICBrZXlzOiBFeGFjdE1lbWJlcnM8VHlwZSwgS2V5cz5cbiAgICApID0+IHJlYWRvbmx5IFR5cGVbXVxuICAgIDogbmV2ZXI7XG59XG5cbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxVbmlvbj4gPSAoVW5pb24gZXh0ZW5kcyB1bmtub3duID8gKGtleTogVW5pb24pID0+IHZvaWQgOiBuZXZlcikgZXh0ZW5kcyAoa2V5OiBpbmZlciBJbnRlcnNlY3Rpb24pID0+IHZvaWQgPyBJbnRlcnNlY3Rpb24gOiBuZXZlcjtcblxudHlwZSBVbmlvblRvVHVwbGU8VW5pb24sIExhc3QgPSBMYXN0SW5VbmlvbjxVbmlvbj4+ID0gW1VuaW9uXSBleHRlbmRzIFtuZXZlcl0gPyBbXSA6IFsuLi5VbmlvblRvVHVwbGU8RXhjbHVkZTxVbmlvbiwgTGFzdD4+LCBMYXN0XTtcblxuLyoqXG4gKiBBIGhlbHBlciB0aGF0IGNhcHR1cmVzIGEgdHlwZSBwYXJhbWV0ZXIgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIGNvbXBpbGUtdGltZSBleGhhdXN0aXZlbmVzcyBjaGVja3MuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIGNhcHR1cmVkIHR5cGUuXG4gKlxuICogQHJlbWFya3NcbiAqIC0gYGFzc2VydEFsbEtleXNgIGlzIGF2YWlsYWJsZSB3aGVuIGBUeXBlYCBpcyBhbiBvYmplY3QgdHlwZS5cbiAqIC0gYGFzc2VydEFsbE1lbWJlcnNgIGlzIGF2YWlsYWJsZSB3aGVuIGBUeXBlYCBpcyBhIGxpdGVyYWwga2V5IHVuaW9uIChgc3RyaW5nIHwgbnVtYmVyYCkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0eXBlIEEgPSB7IGE6IDEsIGI6IDIsIGM6IDMgfTtcbiAqIG5ldyBUeXBlQXNzZXJ0ZXI8QT4oKS5hc3NlcnRBbGxLZXlzKFsnYScsICdiJywgJ2MnXSk7IC8vIE9LXG4gKiBuZXcgVHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2MnLCAnYScsICdiJ10pOyAvLyBPSywgb3JkZXIgaXMgaWdub3JlZFxuICogbmV3IFR5cGVBc3NlcnRlcjxBPigpLmFzc2VydEFsbEtleXMoWydhJywgJ2InLCAnYycsICdkJ10pOyAvLyBFcnJvcjogSW52YWxpZCBtZW1iZXJzOiBkXG4gKiBuZXcgVHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2EnLCAnYiddKTsgLy8gRXJyb3I6IE1pc3NpbmcgbWVtYmVyczogY1xuICpcbiAqIHR5cGUgQiA9IDEgfCAyIHwgMyB8ICdhJztcbiAqIG5ldyBUeXBlQXNzZXJ0ZXI8Qj4oKS5hc3NlcnRBbGxNZW1iZXJzKFsxLCAyLCAzLCAnYSddKTsgLy8gT0tcbiAqIG5ldyBUeXBlQXNzZXJ0ZXI8Qj4oKS5hc3NlcnRBbGxNZW1iZXJzKFsxLCAyLCAzLCAnYScsIDRdKTsgLy8gRXJyb3I6IEludmFsaWQgbWVtYmVyczogNFxuICogbmV3IFR5cGVBc3NlcnRlcjxCPigpLmFzc2VydEFsbE1lbWJlcnMoWzEsIDIsIDNdKTsgLy8gRXJyb3I6IE1pc3NpbmcgbWVtYmVyczogYVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlQXNzZXJ0ZXI8VHlwZT4ge1xuICAvKipcbiAgICogQXNzZXJ0cyB0aGF0IGFsbCBrZXlzIG9mIGFuIG9iamVjdCB0eXBlIGFyZSBwcmVzZW50IGluIGEgbGlzdCBvZiBrZXlzLlxuICAgKlxuICAgKiBAcmVtYXJrcyBPbmx5IGF2YWlsYWJsZSB3aGVuIGBbVHlwZV0gZXh0ZW5kcyBbb2JqZWN0XWAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXNzZXJ0QWxsS2V5czogVHlwZUFzc2VydGlvbnM8VHlwZT5bJ2Fzc2VydEFsbEtleXMnXTtcblxuICAvKipcbiAgICogQXNzZXJ0cyB0aGF0IGFsbCBtZW1iZXJzIG9mIGEgdW5pb24gdHlwZSBhcmUgcHJlc2VudCBpbiBhIGxpc3Qgb2YgbWVtYmVycy5cbiAgICpcbiAgICogQHJlbWFya3MgT25seSBhdmFpbGFibGUgd2hlbiBgW1R5cGVdIGV4dGVuZHMgW0xpdGVyYWxLZXldYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhc3NlcnRBbGxNZW1iZXJzOiBUeXBlQXNzZXJ0aW9uczxUeXBlPlsnYXNzZXJ0QWxsTWVtYmVycyddO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdHlwZSBhc3NlcnRlciB0aGF0IGNhcHR1cmVzIHtAbGluayBUeXBlfSBmb3IgY29tcGlsZS10aW1lIGV4aGF1c3RpdmVuZXNzIGNoZWNrcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBhc3NlcnRpb25zID0gY2FzdFRvPFR5cGVBc3NlcnRpb25zPFR5cGU+Pih7XG4gICAgICBhc3NlcnRBbGxLZXlzPGNvbnN0IEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4oXG4gICAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxTdHJpbmdLZXlzPG9iamVjdCAmIFR5cGU+LCBLZXlzPlxuICAgICAgKTogcmVhZG9ubHkgKGtleW9mIChvYmplY3QgJiBUeXBlKSlbXSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1zcHJlYWQgLS0gYFR5cGVgIG1heSBiZSBhIHN0cmluZywgYW5kIHNwcmVhZGluZyBvbmUgc3BsaXRzIHN1cnJvZ2F0ZSBwYWlycyAoYEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXNwcmVhZGApLlxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGtleXMpIGFzIChrZXlvZiAob2JqZWN0ICYgVHlwZSkpW10pO1xuICAgICAgfSxcbiAgICAgIGFzc2VydEFsbE1lbWJlcnM8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IExpdGVyYWxLZXlbXT4oXG4gICAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxMaXRlcmFsS2V5ICYgVHlwZSwgS2V5cz5cbiAgICAgICk6IHJlYWRvbmx5IChMaXRlcmFsS2V5ICYgVHlwZSlbXSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1zcHJlYWQgLS0gYFR5cGVgIG1heSBiZSBhIHN0cmluZywgYW5kIHNwcmVhZGluZyBvbmUgc3BsaXRzIHN1cnJvZ2F0ZSBwYWlycyAoYEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXNwcmVhZGApLlxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGtleXMpIGFzIChMaXRlcmFsS2V5ICYgVHlwZSlbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hc3NlcnRBbGxLZXlzID0gYXNzZXJ0aW9ucy5hc3NlcnRBbGxLZXlzO1xuICAgIHRoaXMuYXNzZXJ0QWxsTWVtYmVycyA9IGFzc2VydGlvbnMuYXNzZXJ0QWxsTWVtYmVycztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLDBCQUF1QjtBQThKaEIsTUFBTSxhQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1kO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtULGNBQWM7QUFDbkIsVUFBTSxpQkFBYSw0QkFBNkI7QUFBQSxNQUM5QyxjQUNFLE1BQ29DO0FBRXBDLGVBQU8sT0FBTyxPQUFPLE1BQU0sS0FBSyxJQUFJLENBQThCO0FBQUEsTUFDcEU7QUFBQSxNQUNBLGlCQUNFLE1BQ2dDO0FBRWhDLGVBQU8sT0FBTyxPQUFPLE1BQU0sS0FBSyxJQUFJLENBQTBCO0FBQUEsTUFDaEU7QUFBQSxJQUNGLENBQUM7QUFDRCxTQUFLLGdCQUFnQixXQUFXO0FBQ2hDLFNBQUssbUJBQW1CLFdBQVc7QUFBQSxFQUNyQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,122 @@
1
+ /// <reference path="./library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Type utilities.
6
+ */
7
+ import type { GenericFunction } from './function.cjs';
8
+ /**
9
+ * A type that represents the keys of an object as strings and asserts that all keys are present in a list of keys.
10
+ *
11
+ * @typeParam Type - The type of the object.
12
+ * @typeParam Keys - The list of keys to assert.
13
+ */
14
+ export type ExactKeys<Type extends object, Keys extends readonly string[]> = ExactMembers<StringKeys<Type>, Keys>;
15
+ /**
16
+ * A type that represents the members of a type.
17
+ *
18
+ * @typeParam Type - The type to assert the members of.
19
+ * @typeParam Keys - The list of members to assert.
20
+ */
21
+ export type ExactMembers<Type extends LiteralKey, Keys extends readonly LiteralKey[]> = Exclude<Keys[number], Type> extends never ? Exclude<Type, Keys[number]> extends never ? Duplicates<Keys> extends [] ? Keys : `ERROR: Duplicate members: ${TupleToCSV<Duplicates<Keys>>}` : `ERROR: Missing members: ${TupleToCSV<UnionToTuple<Exclude<Type, Keys[number]>>>}` : `ERROR: Invalid members: ${TupleToCSV<UnionToTuple<Exclude<Keys[number], Type>>>}`;
22
+ /**
23
+ * Derives an event map (`{ eventName: [callbackArgs] }`) from a type exposing an overloaded `on(name, callback)`
24
+ * method — e.g. Obsidian's `Workspace` / `Vault` / `MetadataCache`. Each `on` overload becomes one entry keyed by
25
+ * the event name, with the callback's parameters as a labeled tuple; the wide `on(name: string, …)` catch-all
26
+ * overload is dropped. The map auto-tracks upstream overloads (no hand-authoring). It cannot reconstruct
27
+ * genuinely generic overloads, but Obsidian's event overloads are all concrete string-literal ones.
28
+ *
29
+ * @typeParam T - A type exposing an `on(name, callback, …)` method (e.g. an Obsidian `Events` subclass).
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * type WorkspaceEventMap = ExtractEventMap<Workspace>;
34
+ * // { 'file-menu': [menu: Menu, file: TAbstractFile, source: string, leaf?: WorkspaceLeaf]; … }
35
+ * ```
36
+ */
37
+ export type ExtractEventMap<T extends EventsWithOn> = UnionToIntersection<EntryOfOverload<OverloadUnion<T['on']>>>;
38
+ /**
39
+ * A type that represents a return value that may be `void`.
40
+ *
41
+ * @typeParam T - The type of the value that may be returned.
42
+ */
43
+ export type MaybeReturn<T> = T | void;
44
+ /**
45
+ * A type that represents the values of an object.
46
+ *
47
+ * @typeParam T - The type of the object.
48
+ */
49
+ export type PropertyValues<T extends object> = T[StringKeys<T>];
50
+ /**
51
+ * A type that represents the keys of an object as strings.
52
+ *
53
+ * @typeParam T - The type of the object.
54
+ */
55
+ export type StringKeys<T extends object> = Extract<keyof T, string>;
56
+ type Duplicates<T extends readonly unknown[], Seen extends readonly unknown[] = [], Added extends readonly unknown[] = [], Out extends readonly unknown[] = []> = T extends readonly [infer First, ...infer Rest] ? Includes<Seen, First> extends true ? Includes<Added, First> extends true ? Duplicates<Rest, Seen, Added, Out> : Duplicates<Rest, Seen, [...Added, First], [...Out, First]> : Duplicates<Rest, [...Seen, First], Added, Out> : Out;
57
+ type EntryOfOverload<TOverload> = TOverload extends (name: infer Name, callback: (...$arguments: infer Arguments) => unknown, ...rest: never[]) => unknown ? Name extends string ? string extends Name ? never : Record<Name, Arguments> : never : never;
58
+ type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
59
+ interface EventsWithOn {
60
+ on: GenericFunction;
61
+ }
62
+ type Includes<Type extends readonly unknown[], Member> = Type extends readonly [infer First, ...infer Rest] ? Equal<First, Member> extends true ? true : Includes<Rest, Member> : false;
63
+ type LastInUnion<Union> = UnionToIntersection<Union extends unknown ? () => Union : never> extends () => infer Last ? Last : never;
64
+ type LiteralKey = number | string;
65
+ type OverloadUnion<TOverload extends GenericFunction> = Exclude<OverloadUnionRecursive<(() => never) & TOverload>, TOverload extends () => never ? never : () => never>;
66
+ type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (...$arguments: infer Arguments) => infer Return ? TPartialOverload extends TOverload ? never : OverloadUnionRecursive<TPartialOverload & TOverload, TPartialOverload & ((...$arguments: Arguments) => Return) & Pick<TOverload, keyof TOverload>> | ((...$arguments: Arguments) => Return) : never;
67
+ type ToString<T> = T extends number | string ? `${T}` : never;
68
+ type TupleToCSV<Tuple extends readonly unknown[]> = Tuple extends readonly [infer First, ...infer Rest] ? First extends LiteralKey ? Rest extends readonly unknown[] ? Rest['length'] extends 0 ? ToString<First> : `${ToString<First>},${TupleToCSV<Rest>}` : never : never : '';
69
+ /**
70
+ * Internal method shapes for {@link TypeAsserter}: a conditional type disables each method when the
71
+ * captured type does not support it.
72
+ *
73
+ * @typeParam Type - The captured type.
74
+ */
75
+ interface TypeAssertions<Type> {
76
+ assertAllKeys: [Type] extends [object] ? <const Keys extends readonly string[]>(keys: ExactMembers<StringKeys<Type>, Keys>) => readonly (keyof Type)[] : never;
77
+ assertAllMembers: [Type] extends [LiteralKey] ? <const Keys extends readonly LiteralKey[]>(keys: ExactMembers<Type, Keys>) => readonly Type[] : never;
78
+ }
79
+ type UnionToIntersection<Union> = (Union extends unknown ? (key: Union) => void : never) extends (key: infer Intersection) => void ? Intersection : never;
80
+ type UnionToTuple<Union, Last = LastInUnion<Union>> = [Union] extends [never] ? [] : [...UnionToTuple<Exclude<Union, Last>>, Last];
81
+ /**
82
+ * A helper that captures a type parameter and provides methods for compile-time exhaustiveness checks.
83
+ *
84
+ * @typeParam Type - The captured type.
85
+ *
86
+ * @remarks
87
+ * - `assertAllKeys` is available when `Type` is an object type.
88
+ * - `assertAllMembers` is available when `Type` is a literal key union (`string | number`).
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * type A = { a: 1, b: 2, c: 3 };
93
+ * new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c']); // OK
94
+ * new TypeAsserter<A>().assertAllKeys(['c', 'a', 'b']); // OK, order is ignored
95
+ * new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c', 'd']); // Error: Invalid members: d
96
+ * new TypeAsserter<A>().assertAllKeys(['a', 'b']); // Error: Missing members: c
97
+ *
98
+ * type B = 1 | 2 | 3 | 'a';
99
+ * new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a']); // OK
100
+ * new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a', 4]); // Error: Invalid members: 4
101
+ * new TypeAsserter<B>().assertAllMembers([1, 2, 3]); // Error: Missing members: a
102
+ * ```
103
+ */
104
+ export declare class TypeAsserter<Type> {
105
+ /**
106
+ * Asserts that all keys of an object type are present in a list of keys.
107
+ *
108
+ * @remarks Only available when `[Type] extends [object]`.
109
+ */
110
+ readonly assertAllKeys: TypeAssertions<Type>['assertAllKeys'];
111
+ /**
112
+ * Asserts that all members of a union type are present in a list of members.
113
+ *
114
+ * @remarks Only available when `[Type] extends [LiteralKey]`.
115
+ */
116
+ readonly assertAllMembers: TypeAssertions<Type>['assertAllMembers'];
117
+ /**
118
+ * Creates a type asserter that captures {@link Type} for compile-time exhaustiveness checks.
119
+ */
120
+ constructor();
121
+ }
122
+ export {};
@@ -0,0 +1,126 @@
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 keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+
64
+ "use strict";
65
+ var __defProp = Object.defineProperty;
66
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
67
+ var __getOwnPropNames = Object.getOwnPropertyNames;
68
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
69
+ var __export = (target, all) => {
70
+ for (var name in all)
71
+ __defProp(target, name, { get: all[name], enumerable: true });
72
+ };
73
+ var __copyProps = (to, from, except, desc) => {
74
+ if (from && typeof from === "object" || typeof from === "function") {
75
+ for (let key of __getOwnPropNames(from))
76
+ if (!__hasOwnProp.call(to, key) && key !== except)
77
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
78
+ }
79
+ return to;
80
+ };
81
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
82
+ var typescript_lib_state_exports = {};
83
+ __export(typescript_lib_state_exports, {
84
+ TYPESCRIPT_LIB_STATE_KEY: () => TYPESCRIPT_LIB_STATE_KEY,
85
+ TYPESCRIPT_LIB_STATE_VERSION: () => TYPESCRIPT_LIB_STATE_VERSION,
86
+ getTypescriptLibState: () => getTypescriptLibState,
87
+ getTypescriptLibStateSlot: () => getTypescriptLibStateSlot,
88
+ resetTypescriptLibState: () => resetTypescriptLibState
89
+ });
90
+ module.exports = __toCommonJS(typescript_lib_state_exports);
91
+ var import_value_wrapper = require('./value-wrapper.cjs');
92
+ const TYPESCRIPT_LIB_STATE_VERSION = 1;
93
+ const TYPESCRIPT_LIB_STATE_KEY = /* @__PURE__ */ Symbol.for("@mnaoumov/typescript-lib/state");
94
+ function getTypescriptLibState(key, defaultValue) {
95
+ return getTypescriptLibStateSlot().values[key] ??= import_value_wrapper.ValueWrapper.of(defaultValue);
96
+ }
97
+ function getTypescriptLibStateSlot() {
98
+ const global = getGlobal();
99
+ let slot = global[TYPESCRIPT_LIB_STATE_KEY];
100
+ if (!slot) {
101
+ slot = createSlot();
102
+ global[TYPESCRIPT_LIB_STATE_KEY] = slot;
103
+ }
104
+ return slot;
105
+ }
106
+ function resetTypescriptLibState() {
107
+ getGlobal()[TYPESCRIPT_LIB_STATE_KEY] = createSlot();
108
+ }
109
+ function createSlot() {
110
+ return {
111
+ values: {},
112
+ version: TYPESCRIPT_LIB_STATE_VERSION
113
+ };
114
+ }
115
+ function getGlobal() {
116
+ return globalThis;
117
+ }
118
+ // Annotate the CommonJS export names for ESM import in node:
119
+ 0 && (module.exports = {
120
+ TYPESCRIPT_LIB_STATE_KEY,
121
+ TYPESCRIPT_LIB_STATE_VERSION,
122
+ getTypescriptLibState,
123
+ getTypescriptLibStateSlot,
124
+ resetTypescriptLibState
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvZiB0aGUgZ2VuZXJpYywgbm9uLU9ic2lkaWFuIHBhcnQgb2YgdGhlIGxpYnJhcnkuXG4gKlxuICogVGhlIGJhZyBsaXZlcyBvbiBgZ2xvYmFsVGhpc2AgdW5kZXIgYSBgU3ltYm9sLmZvcmAga2V5LCBzbyBldmVyeSBjb3B5IG9mIHRoaXMgbW9kdWxlIGxvYWRlZCBpbiBvbmUgcmVhbG0gc2hhcmVzXG4gKiBpdCwgd2hpY2hldmVyIHZlcnNpb24gaXQgaXMuIEl0IGhvbGRzIHdoYXQgbXVzdCBleGlzdCBvbmNlIHBlciByZWFsbTogdGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZVxuICogc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIuIE9ic2lkaWFuLXNwZWNpZmljIHN0YXRlIHN0YXlzIGluIGBvYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHNgLlxuICpcbiAqIFRoZSBzbG90IGlzIGEgY3Jvc3MtdmVyc2lvbiB3aXJlIGZvcm1hdDogaXRzIGtleSBhbmQgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSBvbmx5IGV2ZXIgY2hhbmdlXG4gKiBhZGRpdGl2ZWx5LlxuICovXG5cbmltcG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSB0aGlzIGNvcHkgd3JpdGVzLlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTiA9IDE7XG5cbi8qKlxuICogVGhlIGtleSBvZiB0aGUgZ2xvYmFsIHNsb3QgaG9sZGluZyB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9LlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcignQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0YXRlJyk7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBzbG90IHN0b3JlZCBvbiBgZ2xvYmFsVGhpc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIHZhbHVlcywgZWFjaCBpbiBhIHtAbGluayBWYWx1ZVdyYXBwZXJ9IHNvIGEgaG9sZGVyIGNhbiByZXBsYWNlIHRoZSB2YWx1ZSBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogUmVjb3JkPHN0cmluZywgVmFsdWVXcmFwcGVyPjtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNsb3Qgc2hhcGUgdGhlIGNyZWF0b3Igd3JvdGUuIEluZm9ybWF0aW9uYWw6IHRoZSBzaGFwZSBvbmx5IGNoYW5nZXMgYWRkaXRpdmVseS5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IG51bWJlcjtcbn1cblxudHlwZSBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlID0gUGFydGlhbDxSZWNvcmQ8dHlwZW9mIFRZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWSwgVHlwZXNjcmlwdExpYlN0YXRlU2xvdD4+O1xuXG4vKipcbiAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGEgc2hhcmVkLXN0YXRlIHtAbGluayBWYWx1ZVdyYXBwZXJ9IGZvciBhIGdpdmVuIGtleS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2hhcmVkIHN0YXRlIHZhbHVlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZSB1bmRlci5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVzY3JpcHRMaWJTdGF0ZTxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgcmV0dXJuIChnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCkudmFsdWVzW2tleV0gPz89IFZhbHVlV3JhcHBlci5vZihkZWZhdWx0VmFsdWUpKSBhcyBWYWx1ZVdyYXBwZXI8VD47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgdGhlIHNoYXJlZC1zdGF0ZSBzbG90LlxuICpcbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgVHlwZXNjcmlwdExpYlN0YXRlU2xvdH0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICBjb25zdCBnbG9iYWwgPSBnZXRHbG9iYWwoKTtcbiAgbGV0IHNsb3QgPSBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXTtcbiAgaWYgKCFzbG90KSB7XG4gICAgc2xvdCA9IGNyZWF0ZVNsb3QoKTtcbiAgICBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXSA9IHNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3Q7XG59XG5cbi8qKlxuICogQ2xlYXJzIHRoZSBzaGFyZWQtc3RhdGUgYmFnLlxuICpcbiAqIEludGVuZGVkIGZvciB0ZXN0IGlzb2xhdGlvbjogY2FsbCBpdCBiZWZvcmUgZWFjaCB0ZXN0IHNvIGFjY3VtdWxhdGVkIHN0YXRlIGRvZXMgbm90IGxlYWsgYmV0d2VlbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0VHlwZXNjcmlwdExpYlN0YXRlKCk6IHZvaWQge1xuICBnZXRHbG9iYWwoKVtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldID0gY3JlYXRlU2xvdCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICByZXR1cm4ge1xuICAgIHZhbHVlczoge30sXG4gICAgdmVyc2lvbjogVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTlxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWwoKTogR2xvYmFsV2l0aFR5cGVzY3JpcHRMaWJTdGF0ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIFRoZSBzaGFyZWQgc3RhdGUgaW50ZW50aW9uYWxseSBsaXZlcyBvbiB0aGUgcmVhbG0gZ2xvYmFsLlxuICByZXR1cm4gZ2xvYmFsVGhpcyBhcyBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsMkJBQTZCO0FBS3RCLE1BQU0sK0JBQStCO0FBS3JDLE1BQU0sMkJBQTBDLHVCQUFPLElBQUksZ0NBQWdDO0FBMkIzRixTQUFTLHNCQUF5QixLQUFhLGNBQWtDO0FBQ3RGLFNBQVEsMEJBQTBCLEVBQUUsT0FBTyxHQUFHLE1BQU0sa0NBQWEsR0FBRyxZQUFZO0FBQ2xGO0FBT08sU0FBUyw0QkFBb0Q7QUFDbEUsUUFBTSxTQUFTLFVBQVU7QUFDekIsTUFBSSxPQUFPLE9BQU8sd0JBQXdCO0FBQzFDLE1BQUksQ0FBQyxNQUFNO0FBQ1QsV0FBTyxXQUFXO0FBQ2xCLFdBQU8sd0JBQXdCLElBQUk7QUFBQSxFQUNyQztBQUNBLFNBQU87QUFDVDtBQU9PLFNBQVMsMEJBQWdDO0FBQzlDLFlBQVUsRUFBRSx3QkFBd0IsSUFBSSxXQUFXO0FBQ3JEO0FBRUEsU0FBUyxhQUFxQztBQUM1QyxTQUFPO0FBQUEsSUFDTCxRQUFRLENBQUM7QUFBQSxJQUNULFNBQVM7QUFBQSxFQUNYO0FBQ0Y7QUFFQSxTQUFTLFlBQTBDO0FBRWpELFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K