@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,83 @@
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 { castTo } from "./object-utils.mjs";
51
+ class TypeAsserter {
52
+ /**
53
+ * Asserts that all keys of an object type are present in a list of keys.
54
+ *
55
+ * @remarks Only available when `[Type] extends [object]`.
56
+ */
57
+ assertAllKeys;
58
+ /**
59
+ * Asserts that all members of a union type are present in a list of members.
60
+ *
61
+ * @remarks Only available when `[Type] extends [LiteralKey]`.
62
+ */
63
+ assertAllMembers;
64
+ /**
65
+ * Creates a type asserter that captures {@link Type} for compile-time exhaustiveness checks.
66
+ */
67
+ constructor() {
68
+ const assertions = castTo({
69
+ assertAllKeys(keys) {
70
+ return Object.freeze(Array.from(keys));
71
+ },
72
+ assertAllMembers(keys) {
73
+ return Object.freeze(Array.from(keys));
74
+ }
75
+ });
76
+ this.assertAllKeys = assertions.assertAllKeys;
77
+ this.assertAllMembers = assertions.assertAllMembers;
78
+ }
79
+ }
80
+ export {
81
+ TypeAsserter
82
+ };
83
+ //# 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+LCBLZXlzPlxuICAgICAgKTogcmVhZG9ubHkgKGtleW9mIChvYmplY3QgJiBUeXBlKSlbXSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1zcHJlYWQgLS0gYFR5cGVgIG1heSBiZSBhIHN0cmluZywgYW5kIHNwcmVhZGluZyBvbmUgc3BsaXRzIHN1cnJvZ2F0ZSBwYWlycyAoYEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXNwcmVhZGApLlxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGtleXMpIGFzIChrZXlvZiAob2JqZWN0ICYgVHlwZSkpW10pO1xuICAgICAgfSxcbiAgICAgIGFzc2VydEFsbE1lbWJlcnM8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IExpdGVyYWxLZXlbXT4oXG4gICAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxMaXRlcmFsS2V5ICYgVHlwZSwgS2V5cz5cbiAgICAgICk6IHJlYWRvbmx5IChMaXRlcmFsS2V5ICYgVHlwZSlbXSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3ByZWZlci1zcHJlYWQgLS0gYFR5cGVgIG1heSBiZSBhIHN0cmluZywgYW5kIHNwcmVhZGluZyBvbmUgc3BsaXRzIHN1cnJvZ2F0ZSBwYWlycyAoYEB0eXBlc2NyaXB0LWVzbGludC9uby1taXN1c2VkLXNwcmVhZGApLlxuICAgICAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGtleXMpIGFzIChMaXRlcmFsS2V5ICYgVHlwZSlbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hc3NlcnRBbGxLZXlzID0gYXNzZXJ0aW9ucy5hc3NlcnRBbGxLZXlzO1xuICAgIHRoaXMuYXNzZXJ0QWxsTWVtYmVycyA9IGFzc2VydGlvbnMuYXNzZXJ0QWxsTWVtYmVycztcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsY0FBYztBQThKaEIsTUFBTSxhQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1kO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtULGNBQWM7QUFDbkIsVUFBTSxhQUFhLE9BQTZCO0FBQUEsTUFDOUMsY0FDRSxNQUNvQztBQUVwQyxlQUFPLE9BQU8sT0FBTyxNQUFNLEtBQUssSUFBSSxDQUE4QjtBQUFBLE1BQ3BFO0FBQUEsTUFDQSxpQkFDRSxNQUNnQztBQUVoQyxlQUFPLE9BQU8sT0FBTyxNQUFNLEtBQUssSUFBSSxDQUEwQjtBQUFBLE1BQ2hFO0FBQUEsSUFDRixDQUFDO0FBQ0QsU0FBSyxnQkFBZ0IsV0FBVztBQUNoQyxTQUFLLG1CQUFtQixXQUFXO0FBQUEsRUFDckM7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,56 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Provides access to the process-wide shared-state bag of the generic, non-Obsidian part of the library.
6
+ *
7
+ * The bag lives on `globalThis` under a `Symbol.for` key, so every copy of this module loaded in one realm shares
8
+ * it, whichever version it is. It holds what must exist once per realm: the debuggers, the `debug` instance and the
9
+ * shared abort controller. Obsidian-specific state stays in `obsidian-dev-utils-state.ts`.
10
+ *
11
+ * The slot is a cross-version wire format: its key and the {@link TypescriptLibStateSlot} shape only ever change
12
+ * additively.
13
+ */
14
+ import { ValueWrapper } from './value-wrapper.mjs';
15
+ /**
16
+ * The version of the {@link TypescriptLibStateSlot} shape this copy writes.
17
+ */
18
+ export declare const TYPESCRIPT_LIB_STATE_VERSION = 1;
19
+ /**
20
+ * The key of the global slot holding the {@link TypescriptLibStateSlot}.
21
+ */
22
+ export declare const TYPESCRIPT_LIB_STATE_KEY: unique symbol;
23
+ /**
24
+ * The shared-state slot stored on `globalThis`.
25
+ */
26
+ export interface TypescriptLibStateSlot {
27
+ /**
28
+ * The shared values, each in a {@link ValueWrapper} so a holder can replace the value in place.
29
+ */
30
+ readonly values: Record<string, ValueWrapper>;
31
+ /**
32
+ * The version of the slot shape the creator wrote. Informational: the shape only changes additively.
33
+ */
34
+ readonly version: number;
35
+ }
36
+ /**
37
+ * Retrieves or creates a shared-state {@link ValueWrapper} for a given key.
38
+ *
39
+ * @typeParam T - The type of the shared state value.
40
+ * @param key - The key to store or retrieve the shared state under.
41
+ * @param defaultValue - The default value to use if the shared state does not exist yet.
42
+ * @returns The {@link ValueWrapper} that stores the shared state.
43
+ */
44
+ export declare function getTypescriptLibState<T>(key: string, defaultValue: T): ValueWrapper<T>;
45
+ /**
46
+ * Retrieves or creates the shared-state slot.
47
+ *
48
+ * @returns The {@link TypescriptLibStateSlot}.
49
+ */
50
+ export declare function getTypescriptLibStateSlot(): TypescriptLibStateSlot;
51
+ /**
52
+ * Clears the shared-state bag.
53
+ *
54
+ * Intended for test isolation: call it before each test so accumulated state does not leak between tests.
55
+ */
56
+ export declare function resetTypescriptLibState(): void;
@@ -0,0 +1,84 @@
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 { ValueWrapper } from "./value-wrapper.mjs";
51
+ const TYPESCRIPT_LIB_STATE_VERSION = 1;
52
+ const TYPESCRIPT_LIB_STATE_KEY = /* @__PURE__ */ Symbol.for("@mnaoumov/typescript-lib/state");
53
+ function getTypescriptLibState(key, defaultValue) {
54
+ return getTypescriptLibStateSlot().values[key] ??= ValueWrapper.of(defaultValue);
55
+ }
56
+ function getTypescriptLibStateSlot() {
57
+ const global = getGlobal();
58
+ let slot = global[TYPESCRIPT_LIB_STATE_KEY];
59
+ if (!slot) {
60
+ slot = createSlot();
61
+ global[TYPESCRIPT_LIB_STATE_KEY] = slot;
62
+ }
63
+ return slot;
64
+ }
65
+ function resetTypescriptLibState() {
66
+ getGlobal()[TYPESCRIPT_LIB_STATE_KEY] = createSlot();
67
+ }
68
+ function createSlot() {
69
+ return {
70
+ values: {},
71
+ version: TYPESCRIPT_LIB_STATE_VERSION
72
+ };
73
+ }
74
+ function getGlobal() {
75
+ return globalThis;
76
+ }
77
+ export {
78
+ TYPESCRIPT_LIB_STATE_KEY,
79
+ TYPESCRIPT_LIB_STATE_VERSION,
80
+ getTypescriptLibState,
81
+ getTypescriptLibStateSlot,
82
+ resetTypescriptLibState
83
+ };
84
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvZiB0aGUgZ2VuZXJpYywgbm9uLU9ic2lkaWFuIHBhcnQgb2YgdGhlIGxpYnJhcnkuXG4gKlxuICogVGhlIGJhZyBsaXZlcyBvbiBgZ2xvYmFsVGhpc2AgdW5kZXIgYSBgU3ltYm9sLmZvcmAga2V5LCBzbyBldmVyeSBjb3B5IG9mIHRoaXMgbW9kdWxlIGxvYWRlZCBpbiBvbmUgcmVhbG0gc2hhcmVzXG4gKiBpdCwgd2hpY2hldmVyIHZlcnNpb24gaXQgaXMuIEl0IGhvbGRzIHdoYXQgbXVzdCBleGlzdCBvbmNlIHBlciByZWFsbTogdGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZVxuICogc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIuIE9ic2lkaWFuLXNwZWNpZmljIHN0YXRlIHN0YXlzIGluIGBvYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHNgLlxuICpcbiAqIFRoZSBzbG90IGlzIGEgY3Jvc3MtdmVyc2lvbiB3aXJlIGZvcm1hdDogaXRzIGtleSBhbmQgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSBvbmx5IGV2ZXIgY2hhbmdlXG4gKiBhZGRpdGl2ZWx5LlxuICovXG5cbmltcG9ydCB7IFZhbHVlV3JhcHBlciB9IGZyb20gJy4vdmFsdWUtd3JhcHBlci50cyc7XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fSBzaGFwZSB0aGlzIGNvcHkgd3JpdGVzLlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTiA9IDE7XG5cbi8qKlxuICogVGhlIGtleSBvZiB0aGUgZ2xvYmFsIHNsb3QgaG9sZGluZyB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9LlxuICovXG5leHBvcnQgY29uc3QgVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sLmZvcignQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0YXRlJyk7XG5cbi8qKlxuICogVGhlIHNoYXJlZC1zdGF0ZSBzbG90IHN0b3JlZCBvbiBgZ2xvYmFsVGhpc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIHZhbHVlcywgZWFjaCBpbiBhIHtAbGluayBWYWx1ZVdyYXBwZXJ9IHNvIGEgaG9sZGVyIGNhbiByZXBsYWNlIHRoZSB2YWx1ZSBpbiBwbGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlczogUmVjb3JkPHN0cmluZywgVmFsdWVXcmFwcGVyPjtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNsb3Qgc2hhcGUgdGhlIGNyZWF0b3Igd3JvdGUuIEluZm9ybWF0aW9uYWw6IHRoZSBzaGFwZSBvbmx5IGNoYW5nZXMgYWRkaXRpdmVseS5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IG51bWJlcjtcbn1cblxudHlwZSBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlID0gUGFydGlhbDxSZWNvcmQ8dHlwZW9mIFRZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWSwgVHlwZXNjcmlwdExpYlN0YXRlU2xvdD4+O1xuXG4vKipcbiAqIFJldHJpZXZlcyBvciBjcmVhdGVzIGEgc2hhcmVkLXN0YXRlIHtAbGluayBWYWx1ZVdyYXBwZXJ9IGZvciBhIGdpdmVuIGtleS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgc2hhcmVkIHN0YXRlIHZhbHVlLlxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gc3RvcmUgb3IgcmV0cmlldmUgdGhlIHNoYXJlZCBzdGF0ZSB1bmRlci5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgLSBUaGUgZGVmYXVsdCB2YWx1ZSB0byB1c2UgaWYgdGhlIHNoYXJlZCBzdGF0ZSBkb2VzIG5vdCBleGlzdCB5ZXQuXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gdGhhdCBzdG9yZXMgdGhlIHNoYXJlZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVzY3JpcHRMaWJTdGF0ZTxUPihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBUKTogVmFsdWVXcmFwcGVyPFQ+IHtcbiAgcmV0dXJuIChnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCkudmFsdWVzW2tleV0gPz89IFZhbHVlV3JhcHBlci5vZihkZWZhdWx0VmFsdWUpKSBhcyBWYWx1ZVdyYXBwZXI8VD47XG59XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgdGhlIHNoYXJlZC1zdGF0ZSBzbG90LlxuICpcbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgVHlwZXNjcmlwdExpYlN0YXRlU2xvdH0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlc2NyaXB0TGliU3RhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICBjb25zdCBnbG9iYWwgPSBnZXRHbG9iYWwoKTtcbiAgbGV0IHNsb3QgPSBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXTtcbiAgaWYgKCFzbG90KSB7XG4gICAgc2xvdCA9IGNyZWF0ZVNsb3QoKTtcbiAgICBnbG9iYWxbVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZXSA9IHNsb3Q7XG4gIH1cbiAgcmV0dXJuIHNsb3Q7XG59XG5cbi8qKlxuICogQ2xlYXJzIHRoZSBzaGFyZWQtc3RhdGUgYmFnLlxuICpcbiAqIEludGVuZGVkIGZvciB0ZXN0IGlzb2xhdGlvbjogY2FsbCBpdCBiZWZvcmUgZWFjaCB0ZXN0IHNvIGFjY3VtdWxhdGVkIHN0YXRlIGRvZXMgbm90IGxlYWsgYmV0d2VlbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0VHlwZXNjcmlwdExpYlN0YXRlKCk6IHZvaWQge1xuICBnZXRHbG9iYWwoKVtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldID0gY3JlYXRlU2xvdCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTbG90KCk6IFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3Qge1xuICByZXR1cm4ge1xuICAgIHZhbHVlczoge30sXG4gICAgdmVyc2lvbjogVFlQRVNDUklQVF9MSUJfU1RBVEVfVkVSU0lPTlxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRHbG9iYWwoKTogR2xvYmFsV2l0aFR5cGVzY3JpcHRMaWJTdGF0ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzIC0tIFRoZSBzaGFyZWQgc3RhdGUgaW50ZW50aW9uYWxseSBsaXZlcyBvbiB0aGUgcmVhbG0gZ2xvYmFsLlxuICByZXR1cm4gZ2xvYmFsVGhpcyBhcyBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFBLFNBQVMsb0JBQW9CO0FBS3RCLE1BQU0sK0JBQStCO0FBS3JDLE1BQU0sMkJBQTBDLHVCQUFPLElBQUksZ0NBQWdDO0FBMkIzRixTQUFTLHNCQUF5QixLQUFhLGNBQWtDO0FBQ3RGLFNBQVEsMEJBQTBCLEVBQUUsT0FBTyxHQUFHLE1BQU0sYUFBYSxHQUFHLFlBQVk7QUFDbEY7QUFPTyxTQUFTLDRCQUFvRDtBQUNsRSxRQUFNLFNBQVMsVUFBVTtBQUN6QixNQUFJLE9BQU8sT0FBTyx3QkFBd0I7QUFDMUMsTUFBSSxDQUFDLE1BQU07QUFDVCxXQUFPLFdBQVc7QUFDbEIsV0FBTyx3QkFBd0IsSUFBSTtBQUFBLEVBQ3JDO0FBQ0EsU0FBTztBQUNUO0FBT08sU0FBUywwQkFBZ0M7QUFDOUMsWUFBVSxFQUFFLHdCQUF3QixJQUFJLFdBQVc7QUFDckQ7QUFFQSxTQUFTLGFBQXFDO0FBQzVDLFNBQU87QUFBQSxJQUNMLFFBQVEsQ0FBQztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQ1g7QUFDRjtBQUVBLFNBQVMsWUFBMEM7QUFFakQsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,74 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Contains utility functions for validating, encoding and normalizing URLs.
6
+ */
7
+ /**
8
+ * Percent-encodes the symbols that break a URL: backslashes, spaces and the control characters. Every
9
+ * other character — including non-ASCII ones and a literal `%` — is left as is, so the result stays
10
+ * readable.
11
+ *
12
+ * A literal `%` is only encoded when `shouldEncodePercent` is set. Leaving it alone is the default
13
+ * because it keeps the encoding idempotent for already-encoded input; the cost is that a path which
14
+ * genuinely contains `%` (a folder actually named `a%20b`) decodes back to something else. Turn the flag
15
+ * on whenever the input is a raw filesystem path that may contain `%`.
16
+ *
17
+ * @param url - The URL to encode.
18
+ * @param shouldEncodePercent - Whether to encode a literal `%` as `%25`. Defaults to `false`.
19
+ * @returns The encoded URL.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * encodeUrl(String.raw`path\to the\file.md`) // 'path%5Cto%20the%5Cfile.md'
24
+ * encodeUrl('a%20b') // 'a%20b'
25
+ * encodeUrl('a%20b', true) // 'a%2520b'
26
+ * ```
27
+ */
28
+ export declare function encodeUrl(url: string, shouldEncodePercent?: boolean): string;
29
+ /**
30
+ * Determines whether a given string is a `file://` URL.
31
+ *
32
+ * @param $string - The string to check.
33
+ * @returns `true` if the string uses the `file:` scheme, otherwise `false`.
34
+ */
35
+ export declare function isFileUrl($string: string): boolean;
36
+ /**
37
+ * Determines whether a given string is a valid URL
38
+ *
39
+ * @param $string - The string to validate as a URL.
40
+ * @returns `true` if the string is a valid URL, otherwise `false`.
41
+ */
42
+ export declare function isUrl($string: string): boolean;
43
+ /**
44
+ * Normalizes a `file://` URL to a pretty form by converting backslashes to forward slashes. The URL is
45
+ * expected to already be decoded. Non-`file://` URLs are returned unchanged.
46
+ *
47
+ * @param url - The URL to normalize.
48
+ * @returns The normalized URL.
49
+ */
50
+ export declare function normalizeFileUrl(url: string): string;
51
+ /**
52
+ * Converts a filesystem path into a `file:///` URL, percent-encoding it with {@link encodeUrl}.
53
+ *
54
+ * The backslashes are turned into forward slashes **after** the encoding, not before — a Windows path is
55
+ * encoded to `%5C` first and only then rewritten to `/`, which is what makes `C:\a b\c` produce the
56
+ * working `file:///C:/a%20b/c` rather than a link broken at the first space.
57
+ *
58
+ * The `file:///` prefix always ends up with exactly three slashes: any leading slashes the path already
59
+ * has are dropped first, because `file:////home/x` parses as the path `//home/x`, not `/home/x`. A
60
+ * Windows UNC path (`\\server\share`) is therefore rendered as `file:///server/share` rather than the
61
+ * canonical host form `file://server/share`, which this function deliberately does not produce.
62
+ *
63
+ * @param path - The filesystem path to convert.
64
+ * @param shouldEncodePercent - Whether to encode a literal `%` in the path as `%25`. Defaults to `false`.
65
+ * See {@link encodeUrl} for the trade-off.
66
+ * @returns The `file:///` URL.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * pathToFileUrl(String.raw`C:\a b\c.txt`) // 'file:///C:/a%20b/c.txt'
71
+ * pathToFileUrl('/home/user/a b.txt') // 'file:///home/user/a%20b.txt'
72
+ * ```
73
+ */
74
+ export declare function pathToFileUrl(path: string, shouldEncodePercent?: boolean): string;
@@ -0,0 +1,94 @@
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 { replaceAll } from "./string.mjs";
51
+ const SCHEME_REG_EXP = /^[A-Za-z][A-Za-z0-9+\-.]*:\S+$/;
52
+ const FILE_SCHEME_REG_EXP = /^file:/i;
53
+ const LEADING_SLASHES_REG_EXP = /^\/+/;
54
+ const SPECIAL_URL_SYMBOLS_REG_EXP = /[\\\x00\x08\x0B\x0C\x0E-\x1F ]/g;
55
+ const SPECIAL_URL_SYMBOLS_WITH_PERCENT_REG_EXP = /[%\\\x00\x08\x0B\x0C\x0E-\x1F ]/g;
56
+ function encodeUrl(url, shouldEncodePercent) {
57
+ return replaceAll({
58
+ $string: url,
59
+ replacer: ({ substring: specialUrlSymbol }) => encodeURIComponent(specialUrlSymbol),
60
+ searchValue: shouldEncodePercent ? SPECIAL_URL_SYMBOLS_WITH_PERCENT_REG_EXP : SPECIAL_URL_SYMBOLS_REG_EXP
61
+ });
62
+ }
63
+ function isFileUrl($string) {
64
+ return FILE_SCHEME_REG_EXP.test($string);
65
+ }
66
+ function isUrl($string) {
67
+ if (/\s/.test($string)) {
68
+ return false;
69
+ }
70
+ if ($string.includes("://")) {
71
+ try {
72
+ new URL($string);
73
+ return true;
74
+ } catch {
75
+ return false;
76
+ }
77
+ }
78
+ return SCHEME_REG_EXP.test($string);
79
+ }
80
+ function normalizeFileUrl(url) {
81
+ return isFileUrl(url) ? url.replaceAll("\\", "/") : url;
82
+ }
83
+ function pathToFileUrl(path, shouldEncodePercent) {
84
+ const encodedPath = encodeUrl(path, shouldEncodePercent).replaceAll("%5C", "/");
85
+ return `file:///${encodedPath.replace(LEADING_SLASHES_REG_EXP, "")}`;
86
+ }
87
+ export {
88
+ encodeUrl,
89
+ isFileUrl,
90
+ isUrl,
91
+ normalizeFileUrl,
92
+ pathToFileUrl
93
+ };
94
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3VybC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB2YWxpZGF0aW5nLCBlbmNvZGluZyBhbmQgbm9ybWFsaXppbmcgVVJMcy5cbiAqL1xuXG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi9zdHJpbmcudHMnO1xuXG5jb25zdCBTQ0hFTUVfUkVHX0VYUCA9IC9eW0EtWmEtel1bQS1aYS16MC05K1xcLS5dKjpcXFMrJC87XG5cbmNvbnN0IEZJTEVfU0NIRU1FX1JFR19FWFAgPSAvXmZpbGU6L2k7XG5cbmNvbnN0IExFQURJTkdfU0xBU0hFU19SRUdfRVhQID0gL15cXC8rLztcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIHRoZSBzeW1ib2xzIHRoYXQgaGF2ZSB0byBiZSBwZXJjZW50LWVuY29kZWQgaW4gYSBVUkwuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4LCB1bmljb3JuL3ByZWZlci11bmljb2RlLWNvZGUtcG9pbnQtZXNjYXBlcyAtLSBUaGUgcmVndWxhciBleHByZXNzaW9uIGlzIHdyaXR0ZW4gdG8gY2FwdHVyZSBjb250cm9sIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSBjb252ZW50aW9uYWxseSBzcGVsbGVkIGFzIGBcXHhgIGVzY2FwZXM7IGBcXHV7MH1gLXN0eWxlIGVzY2FwZXMgd291bGQgb2JzY3VyZSB0aGUgYFxceDBFLVxceDFGYCByYW5nZSB3aXRob3V0IGV4cHJlc3NpbmcgYW55dGhpbmcgdGhlIHR3by1kaWdpdCBmb3JtIGNhbm5vdC5cbmNvbnN0IFNQRUNJQUxfVVJMX1NZTUJPTFNfUkVHX0VYUCA9IC9bXFxcXFxceDAwXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUYgXS9nO1xuXG4vKipcbiAqIFNhbWUgYXMge0BsaW5rIFNQRUNJQUxfVVJMX1NZTUJPTFNfUkVHX0VYUH0sIGJ1dCBhZGRpdGlvbmFsbHkgbWF0Y2hlcyBhIGxpdGVyYWwgYCVgLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleCwgdW5pY29ybi9wcmVmZXItdW5pY29kZS1jb2RlLXBvaW50LWVzY2FwZXMgLS0gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyB3cml0dGVuIHRvIGNhcHR1cmUgY29udHJvbCBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgY29udmVudGlvbmFsbHkgc3BlbGxlZCBhcyBgXFx4YCBlc2NhcGVzOyBgXFx1ezB9YC1zdHlsZSBlc2NhcGVzIHdvdWxkIG9ic2N1cmUgdGhlIGBcXHgwRS1cXHgxRmAgcmFuZ2Ugd2l0aG91dCBleHByZXNzaW5nIGFueXRoaW5nIHRoZSB0d28tZGlnaXQgZm9ybSBjYW5ub3QuXG5jb25zdCBTUEVDSUFMX1VSTF9TWU1CT0xTX1dJVEhfUEVSQ0VOVF9SRUdfRVhQID0gL1slXFxcXFxceDAwXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUYgXS9nO1xuXG4vKipcbiAqIFBlcmNlbnQtZW5jb2RlcyB0aGUgc3ltYm9scyB0aGF0IGJyZWFrIGEgVVJMOiBiYWNrc2xhc2hlcywgc3BhY2VzIGFuZCB0aGUgY29udHJvbCBjaGFyYWN0ZXJzLiBFdmVyeVxuICogb3RoZXIgY2hhcmFjdGVyIFx1MjAxNCBpbmNsdWRpbmcgbm9uLUFTQ0lJIG9uZXMgYW5kIGEgbGl0ZXJhbCBgJWAgXHUyMDE0IGlzIGxlZnQgYXMgaXMsIHNvIHRoZSByZXN1bHQgc3RheXNcbiAqIHJlYWRhYmxlLlxuICpcbiAqIEEgbGl0ZXJhbCBgJWAgaXMgb25seSBlbmNvZGVkIHdoZW4gYHNob3VsZEVuY29kZVBlcmNlbnRgIGlzIHNldC4gTGVhdmluZyBpdCBhbG9uZSBpcyB0aGUgZGVmYXVsdFxuICogYmVjYXVzZSBpdCBrZWVwcyB0aGUgZW5jb2RpbmcgaWRlbXBvdGVudCBmb3IgYWxyZWFkeS1lbmNvZGVkIGlucHV0OyB0aGUgY29zdCBpcyB0aGF0IGEgcGF0aCB3aGljaFxuICogZ2VudWluZWx5IGNvbnRhaW5zIGAlYCAoYSBmb2xkZXIgYWN0dWFsbHkgbmFtZWQgYGElMjBiYCkgZGVjb2RlcyBiYWNrIHRvIHNvbWV0aGluZyBlbHNlLiBUdXJuIHRoZSBmbGFnXG4gKiBvbiB3aGVuZXZlciB0aGUgaW5wdXQgaXMgYSByYXcgZmlsZXN5c3RlbSBwYXRoIHRoYXQgbWF5IGNvbnRhaW4gYCVgLlxuICpcbiAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIHRvIGVuY29kZS5cbiAqIEBwYXJhbSBzaG91bGRFbmNvZGVQZXJjZW50IC0gV2hldGhlciB0byBlbmNvZGUgYSBsaXRlcmFsIGAlYCBhcyBgJTI1YC4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAqIEByZXR1cm5zIFRoZSBlbmNvZGVkIFVSTC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGVuY29kZVVybChTdHJpbmcucmF3YHBhdGhcXHRvIHRoZVxcZmlsZS5tZGApIC8vICdwYXRoJTVDdG8lMjB0aGUlNUNmaWxlLm1kJ1xuICogZW5jb2RlVXJsKCdhJTIwYicpIC8vICdhJTIwYidcbiAqIGVuY29kZVVybCgnYSUyMGInLCB0cnVlKSAvLyAnYSUyNTIwYidcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlVXJsKHVybDogc3RyaW5nLCBzaG91bGRFbmNvZGVQZXJjZW50PzogYm9vbGVhbik6IHN0cmluZyB7XG4gIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiB1cmwsXG4gICAgcmVwbGFjZXI6ICh7IHN1YnN0cmluZzogc3BlY2lhbFVybFN5bWJvbCB9KSA9PiBlbmNvZGVVUklDb21wb25lbnQoc3BlY2lhbFVybFN5bWJvbCksXG4gICAgc2VhcmNoVmFsdWU6IHNob3VsZEVuY29kZVBlcmNlbnQgPyBTUEVDSUFMX1VSTF9TWU1CT0xTX1dJVEhfUEVSQ0VOVF9SRUdfRVhQIDogU1BFQ0lBTF9VUkxfU1lNQk9MU19SRUdfRVhQXG4gIH0pO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGdpdmVuIHN0cmluZyBpcyBhIGBmaWxlOi8vYCBVUkwuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgdXNlcyB0aGUgYGZpbGU6YCBzY2hlbWUsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlVXJsKCRzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gRklMRV9TQ0hFTUVfUkVHX0VYUC50ZXN0KCRzdHJpbmcpO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIFVSTFxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byB2YWxpZGF0ZSBhcyBhIFVSTC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgVVJMLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVXJsKCRzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoL1xccy8udGVzdCgkc3RyaW5nKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoJHN0cmluZy5pbmNsdWRlcygnOi8vJykpIHtcbiAgICB0cnkge1xuICAgICAgbmV3IFVSTCgkc3RyaW5nKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTQ0hFTUVfUkVHX0VYUC50ZXN0KCRzdHJpbmcpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBgZmlsZTovL2AgVVJMIHRvIGEgcHJldHR5IGZvcm0gYnkgY29udmVydGluZyBiYWNrc2xhc2hlcyB0byBmb3J3YXJkIHNsYXNoZXMuIFRoZSBVUkwgaXNcbiAqIGV4cGVjdGVkIHRvIGFscmVhZHkgYmUgZGVjb2RlZC4gTm9uLWBmaWxlOi8vYCBVUkxzIGFyZSByZXR1cm5lZCB1bmNoYW5nZWQuXG4gKlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgVVJMLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRmlsZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpc0ZpbGVVcmwodXJsKSA/IHVybC5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKSA6IHVybDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGVzeXN0ZW0gcGF0aCBpbnRvIGEgYGZpbGU6Ly8vYCBVUkwsIHBlcmNlbnQtZW5jb2RpbmcgaXQgd2l0aCB7QGxpbmsgZW5jb2RlVXJsfS5cbiAqXG4gKiBUaGUgYmFja3NsYXNoZXMgYXJlIHR1cm5lZCBpbnRvIGZvcndhcmQgc2xhc2hlcyAqKmFmdGVyKiogdGhlIGVuY29kaW5nLCBub3QgYmVmb3JlIFx1MjAxNCBhIFdpbmRvd3MgcGF0aCBpc1xuICogZW5jb2RlZCB0byBgJTVDYCBmaXJzdCBhbmQgb25seSB0aGVuIHJld3JpdHRlbiB0byBgL2AsIHdoaWNoIGlzIHdoYXQgbWFrZXMgYEM6XFxhIGJcXGNgIHByb2R1Y2UgdGhlXG4gKiB3b3JraW5nIGBmaWxlOi8vL0M6L2ElMjBiL2NgIHJhdGhlciB0aGFuIGEgbGluayBicm9rZW4gYXQgdGhlIGZpcnN0IHNwYWNlLlxuICpcbiAqIFRoZSBgZmlsZTovLy9gIHByZWZpeCBhbHdheXMgZW5kcyB1cCB3aXRoIGV4YWN0bHkgdGhyZWUgc2xhc2hlczogYW55IGxlYWRpbmcgc2xhc2hlcyB0aGUgcGF0aCBhbHJlYWR5XG4gKiBoYXMgYXJlIGRyb3BwZWQgZmlyc3QsIGJlY2F1c2UgYGZpbGU6Ly8vL2hvbWUveGAgcGFyc2VzIGFzIHRoZSBwYXRoIGAvL2hvbWUveGAsIG5vdCBgL2hvbWUveGAuIEFcbiAqIFdpbmRvd3MgVU5DIHBhdGggKGBcXFxcc2VydmVyXFxzaGFyZWApIGlzIHRoZXJlZm9yZSByZW5kZXJlZCBhcyBgZmlsZTovLy9zZXJ2ZXIvc2hhcmVgIHJhdGhlciB0aGFuIHRoZVxuICogY2Fub25pY2FsIGhvc3QgZm9ybSBgZmlsZTovL3NlcnZlci9zaGFyZWAsIHdoaWNoIHRoaXMgZnVuY3Rpb24gZGVsaWJlcmF0ZWx5IGRvZXMgbm90IHByb2R1Y2UuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgZmlsZXN5c3RlbSBwYXRoIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gc2hvdWxkRW5jb2RlUGVyY2VudCAtIFdoZXRoZXIgdG8gZW5jb2RlIGEgbGl0ZXJhbCBgJWAgaW4gdGhlIHBhdGggYXMgYCUyNWAuIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gKiAgIFNlZSB7QGxpbmsgZW5jb2RlVXJsfSBmb3IgdGhlIHRyYWRlLW9mZi5cbiAqIEByZXR1cm5zIFRoZSBgZmlsZTovLy9gIFVSTC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHBhdGhUb0ZpbGVVcmwoU3RyaW5nLnJhd2BDOlxcYSBiXFxjLnR4dGApIC8vICdmaWxlOi8vL0M6L2ElMjBiL2MudHh0J1xuICogcGF0aFRvRmlsZVVybCgnL2hvbWUvdXNlci9hIGIudHh0JykgLy8gJ2ZpbGU6Ly8vaG9tZS91c2VyL2ElMjBiLnR4dCdcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0aFRvRmlsZVVybChwYXRoOiBzdHJpbmcsIHNob3VsZEVuY29kZVBlcmNlbnQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgY29uc3QgZW5jb2RlZFBhdGggPSBlbmNvZGVVcmwocGF0aCwgc2hvdWxkRW5jb2RlUGVyY2VudCkucmVwbGFjZUFsbCgnJTVDJywgJy8nKTtcbiAgcmV0dXJuIGBmaWxlOi8vLyR7ZW5jb2RlZFBhdGgucmVwbGFjZShMRUFESU5HX1NMQVNIRVNfUkVHX0VYUCwgJycpfWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUEsU0FBUyxrQkFBa0I7QUFFM0IsTUFBTSxpQkFBaUI7QUFFdkIsTUFBTSxzQkFBc0I7QUFFNUIsTUFBTSwwQkFBMEI7QUFNaEMsTUFBTSw4QkFBOEI7QUFNcEMsTUFBTSwyQ0FBMkM7QUF1QjFDLFNBQVMsVUFBVSxLQUFhLHFCQUF1QztBQUM1RSxTQUFPLFdBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVLENBQUMsRUFBRSxXQUFXLGlCQUFpQixNQUFNLG1CQUFtQixnQkFBZ0I7QUFBQSxJQUNsRixhQUFhLHNCQUFzQiwyQ0FBMkM7QUFBQSxFQUNoRixDQUFDO0FBQ0g7QUFRTyxTQUFTLFVBQVUsU0FBMEI7QUFDbEQsU0FBTyxvQkFBb0IsS0FBSyxPQUFPO0FBQ3pDO0FBUU8sU0FBUyxNQUFNLFNBQTBCO0FBQzlDLE1BQUksS0FBSyxLQUFLLE9BQU8sR0FBRztBQUN0QixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksUUFBUSxTQUFTLEtBQUssR0FBRztBQUMzQixRQUFJO0FBQ0YsVUFBSSxJQUFJLE9BQU87QUFDZixhQUFPO0FBQUEsSUFDVCxRQUFRO0FBQ04sYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTyxlQUFlLEtBQUssT0FBTztBQUNwQztBQVNPLFNBQVMsaUJBQWlCLEtBQXFCO0FBQ3BELFNBQU8sVUFBVSxHQUFHLElBQUksSUFBSSxXQUFXLE1BQU0sR0FBRyxJQUFJO0FBQ3REO0FBeUJPLFNBQVMsY0FBYyxNQUFjLHFCQUF1QztBQUNqRixRQUFNLGNBQWMsVUFBVSxNQUFNLG1CQUFtQixFQUFFLFdBQVcsT0FBTyxHQUFHO0FBQzlFLFNBQU8sV0FBVyxZQUFZLFFBQVEseUJBQXlCLEVBQUUsQ0FBQztBQUNwRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,28 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Contains utility types and functions for handling value providers, which can be either direct values or functions that return values.
6
+ */
7
+ import type { Promisable } from 'type-fest';
8
+ /**
9
+ * Value provider that can either be a direct value of type {@link Value} or a function that returns a value of type {@link Value}.
10
+ *
11
+ * @typeParam Value - The type of the value provided.
12
+ * @typeParam Arguments - The types of arguments passed to the function if the provider is a function.
13
+ */
14
+ export type ValueProvider<Value, Arguments extends object = object> = (($arguments: Arguments & CommonArguments) => Promisable<Value>) | Value;
15
+ interface CommonArguments {
16
+ abortSignal: AbortSignal;
17
+ }
18
+ /**
19
+ * Resolves a value from a value provider, which can be either a direct value or a function that returns a value.
20
+ *
21
+ * @typeParam Arguments - The types of arguments passed to the function if the provider is a function.
22
+ * @typeParam Value - The type of the value provided.
23
+ * @param provider - The value provider to resolve.
24
+ * @param $arguments - The arguments to pass to the function if the provider is a function.
25
+ * @returns A {@link Promise} that resolves with the value provided by the value provider.
26
+ */
27
+ export declare function resolveValue<Value, Arguments extends object = object>(provider: ValueProvider<Value, Arguments>, $arguments: Arguments & Partial<CommonArguments>): Promise<Value>;
28
+ export {};
@@ -0,0 +1,62 @@
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 { abortSignalNever } from "./abort-controller.mjs";
51
+ async function resolveValue(provider, $arguments) {
52
+ const fullArguments = { ...$arguments, abortSignal: $arguments.abortSignal ?? abortSignalNever() };
53
+ fullArguments.abortSignal.throwIfAborted();
54
+ return isFunction(provider) ? await provider(fullArguments) : provider;
55
+ }
56
+ function isFunction(value) {
57
+ return typeof value === "function";
58
+ }
59
+ export {
60
+ resolveValue
61
+ };
62
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhbHVlLXByb3ZpZGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSB0eXBlcyBhbmQgZnVuY3Rpb25zIGZvciBoYW5kbGluZyB2YWx1ZSBwcm92aWRlcnMsIHdoaWNoIGNhbiBiZSBlaXRoZXIgZGlyZWN0IHZhbHVlcyBvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdmFsdWVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IGFib3J0U2lnbmFsTmV2ZXIgfSBmcm9tICcuL2Fib3J0LWNvbnRyb2xsZXIudHMnO1xuXG4vKipcbiAqIFZhbHVlIHByb3ZpZGVyIHRoYXQgY2FuIGVpdGhlciBiZSBhIGRpcmVjdCB2YWx1ZSBvZiB0eXBlIHtAbGluayBWYWx1ZX0gb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIHtAbGluayBWYWx1ZX0uXG4gKlxuICogQHR5cGVQYXJhbSBWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBwcm92aWRlZC5cbiAqIEB0eXBlUGFyYW0gQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlmIHRoZSBwcm92aWRlciBpcyBhIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBWYWx1ZVByb3ZpZGVyPFZhbHVlLCBBcmd1bWVudHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+ID0gKCgkYXJndW1lbnRzOiBBcmd1bWVudHMgJiBDb21tb25Bcmd1bWVudHMpID0+IFByb21pc2FibGU8VmFsdWU+KSB8IFZhbHVlO1xuXG5pbnRlcmZhY2UgQ29tbW9uQXJndW1lbnRzIHtcbiAgYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgdmFsdWUgZnJvbSBhIHZhbHVlIHByb3ZpZGVyLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgZGlyZWN0IHZhbHVlIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgdmFsdWUuXG4gKlxuICogQHR5cGVQYXJhbSBBcmd1bWVudHMgLSBUaGUgdHlwZXMgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gaWYgdGhlIHByb3ZpZGVyIGlzIGEgZnVuY3Rpb24uXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHByb3ZpZGVkLlxuICogQHBhcmFtIHByb3ZpZGVyIC0gVGhlIHZhbHVlIHByb3ZpZGVyIHRvIHJlc29sdmUuXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgZnVuY3Rpb24gaWYgdGhlIHByb3ZpZGVyIGlzIGEgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSB2YWx1ZSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVWYWx1ZTxWYWx1ZSwgQXJndW1lbnRzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihcbiAgcHJvdmlkZXI6IFZhbHVlUHJvdmlkZXI8VmFsdWUsIEFyZ3VtZW50cz4sXG4gICRhcmd1bWVudHM6IEFyZ3VtZW50cyAmIFBhcnRpYWw8Q29tbW9uQXJndW1lbnRzPlxuKTogUHJvbWlzZTxWYWx1ZT4ge1xuICBjb25zdCBmdWxsQXJndW1lbnRzID0geyAuLi4kYXJndW1lbnRzLCBhYm9ydFNpZ25hbDogJGFyZ3VtZW50cy5hYm9ydFNpZ25hbCA/PyBhYm9ydFNpZ25hbE5ldmVyKCkgfTtcbiAgZnVsbEFyZ3VtZW50cy5hYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICByZXR1cm4gaXNGdW5jdGlvbihwcm92aWRlcikgPyAoYXdhaXQgcHJvdmlkZXIoZnVsbEFyZ3VtZW50cykpIDogcHJvdmlkZXI7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gdmFsdWUgcHJvdmlkZXIgaXMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHByb3ZpZGVkLlxuICogQHR5cGVQYXJhbSBBcmd1bWVudHMgLSBUaGUgdHlwZXMgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gaWYgdGhlIHByb3ZpZGVyIGlzIGEgZnVuY3Rpb24uXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgcHJvdmlkZXIgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlIHByb3ZpZGVyIGlzIGEgZnVuY3Rpb24sIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uPFZhbHVlLCBBcmd1bWVudHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+KHZhbHVlOiBWYWx1ZVByb3ZpZGVyPFZhbHVlLCBBcmd1bWVudHM+KTogdmFsdWUgaXMgKCRhcmd1bWVudHM6IEFyZ3VtZW50cyAmIENvbW1vbkFyZ3VtZW50cykgPT4gUHJvbWlzYWJsZTxWYWx1ZT4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMsd0JBQXdCO0FBdUJqQyxlQUFzQixhQUNwQixVQUNBLFlBQ2dCO0FBQ2hCLFFBQU0sZ0JBQWdCLEVBQUUsR0FBRyxZQUFZLGFBQWEsV0FBVyxlQUFlLGlCQUFpQixFQUFFO0FBQ2pHLGdCQUFjLFlBQVksZUFBZTtBQUN6QyxTQUFPLFdBQVcsUUFBUSxJQUFLLE1BQU0sU0FBUyxhQUFhLElBQUs7QUFDbEU7QUFVQSxTQUFTLFdBQXFELE9BQWlIO0FBQzdLLFNBQU8sT0FBTyxVQUFVO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,47 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Wrapper type for storing values.
6
+ */
7
+ /**
8
+ * Wrapper type for storing values.
9
+ *
10
+ * @typeParam T - The type of the wrapped value.
11
+ */
12
+ export declare class ValueWrapper<T = unknown> {
13
+ /**
14
+ * Gets the wrapped value.
15
+ *
16
+ * @returns The wrapped value.
17
+ * @throws An {@link Error} if the value has not been set.
18
+ */
19
+ get value(): T;
20
+ /**
21
+ * Sets the wrapped value.
22
+ *
23
+ * @param value - The value to wrap.
24
+ */
25
+ set value(value: T);
26
+ private _value;
27
+ private hasValue;
28
+ /**
29
+ * Creates a new value wrapper. Use {@link ValueWrapper.of} or {@link ValueWrapper.unset} instead.
30
+ */
31
+ private constructor();
32
+ /**
33
+ * Make wrapper from the value.
34
+ *
35
+ * @typeParam T - Type of the value to wrap.
36
+ * @param value - The value to wrap.
37
+ * @returns The wrapper.
38
+ */
39
+ static of<T>(value: T): ValueWrapper<T>;
40
+ /**
41
+ * Make the wrapper with unset value.
42
+ *
43
+ * @typeParam T - Type of the value to wrap.
44
+ * @returns The wrapper.
45
+ */
46
+ static unset<T>(): ValueWrapper<T>;
47
+ }