@milaboratories/pl-model-common 1.25.1 → 1.25.3

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 (288) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/author_marker.d.ts +9 -6
  3. package/dist/base32_encode.cjs +40 -46
  4. package/dist/base32_encode.cjs.map +1 -1
  5. package/dist/base32_encode.js +40 -45
  6. package/dist/base32_encode.js.map +1 -1
  7. package/dist/base64.cjs +5 -4
  8. package/dist/base64.cjs.map +1 -1
  9. package/dist/base64.d.ts +10 -6
  10. package/dist/base64.js +5 -3
  11. package/dist/base64.js.map +1 -1
  12. package/dist/block_state.d.ts +21 -23
  13. package/dist/bmodel/block_config.cjs +9 -10
  14. package/dist/bmodel/block_config.cjs.map +1 -1
  15. package/dist/bmodel/block_config.d.ts +53 -72
  16. package/dist/bmodel/block_config.js +9 -9
  17. package/dist/bmodel/block_config.js.map +1 -1
  18. package/dist/bmodel/code.cjs +7 -6
  19. package/dist/bmodel/code.cjs.map +1 -1
  20. package/dist/bmodel/code.d.ts +17 -13
  21. package/dist/bmodel/code.js +6 -4
  22. package/dist/bmodel/code.js.map +1 -1
  23. package/dist/bmodel/container.d.ts +46 -44
  24. package/dist/bmodel/index.cjs +3 -0
  25. package/dist/bmodel/index.d.ts +5 -6
  26. package/dist/bmodel/index.js +3 -0
  27. package/dist/bmodel/normalization.cjs +90 -106
  28. package/dist/bmodel/normalization.cjs.map +1 -1
  29. package/dist/bmodel/normalization.d.ts +7 -3
  30. package/dist/bmodel/normalization.js +90 -105
  31. package/dist/bmodel/normalization.js.map +1 -1
  32. package/dist/bmodel/types.d.ts +4 -1
  33. package/dist/branding.d.ts +5 -5
  34. package/dist/common_types.d.ts +19 -15
  35. package/dist/driver_kit.d.ts +25 -17
  36. package/dist/drivers/ChunkedStreamReader.cjs +168 -203
  37. package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
  38. package/dist/drivers/ChunkedStreamReader.d.ts +104 -100
  39. package/dist/drivers/ChunkedStreamReader.js +168 -202
  40. package/dist/drivers/ChunkedStreamReader.js.map +1 -1
  41. package/dist/drivers/blob.cjs +15 -17
  42. package/dist/drivers/blob.cjs.map +1 -1
  43. package/dist/drivers/blob.d.ts +35 -35
  44. package/dist/drivers/blob.js +14 -15
  45. package/dist/drivers/blob.js.map +1 -1
  46. package/dist/drivers/index.cjs +18 -0
  47. package/dist/drivers/index.d.ts +29 -9
  48. package/dist/drivers/index.js +18 -0
  49. package/dist/drivers/interfaces.d.ts +17 -14
  50. package/dist/drivers/log.cjs +4 -3
  51. package/dist/drivers/log.cjs.map +1 -1
  52. package/dist/drivers/log.d.ts +52 -49
  53. package/dist/drivers/log.js +4 -2
  54. package/dist/drivers/log.js.map +1 -1
  55. package/dist/drivers/ls.cjs +16 -19
  56. package/dist/drivers/ls.cjs.map +1 -1
  57. package/dist/drivers/ls.d.ts +73 -76
  58. package/dist/drivers/ls.js +16 -17
  59. package/dist/drivers/ls.js.map +1 -1
  60. package/dist/drivers/pframe/column_filter.d.ts +19 -15
  61. package/dist/drivers/pframe/data_info.cjs +201 -252
  62. package/dist/drivers/pframe/data_info.cjs.map +1 -1
  63. package/dist/drivers/pframe/data_info.d.ts +84 -109
  64. package/dist/drivers/pframe/data_info.js +201 -250
  65. package/dist/drivers/pframe/data_info.js.map +1 -1
  66. package/dist/drivers/pframe/data_types.cjs +38 -63
  67. package/dist/drivers/pframe/data_types.cjs.map +1 -1
  68. package/dist/drivers/pframe/data_types.d.ts +91 -93
  69. package/dist/drivers/pframe/data_types.js +38 -61
  70. package/dist/drivers/pframe/data_types.js.map +1 -1
  71. package/dist/drivers/pframe/driver.cjs +7 -0
  72. package/dist/drivers/pframe/driver.cjs.map +1 -0
  73. package/dist/drivers/pframe/driver.d.ts +50 -45
  74. package/dist/drivers/pframe/driver.js +6 -0
  75. package/dist/drivers/pframe/driver.js.map +1 -0
  76. package/dist/drivers/pframe/filter_spec.d.ts +127 -123
  77. package/dist/drivers/pframe/find_columns.d.ts +21 -17
  78. package/dist/drivers/pframe/index.cjs +15 -0
  79. package/dist/drivers/pframe/index.d.ts +23 -16
  80. package/dist/drivers/pframe/index.js +15 -0
  81. package/dist/drivers/pframe/linker_columns.cjs +184 -238
  82. package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
  83. package/dist/drivers/pframe/linker_columns.d.ts +45 -38
  84. package/dist/drivers/pframe/linker_columns.js +184 -236
  85. package/dist/drivers/pframe/linker_columns.js.map +1 -1
  86. package/dist/drivers/pframe/pframe.d.ts +26 -21
  87. package/dist/drivers/pframe/query/index.cjs +1 -0
  88. package/dist/drivers/pframe/query/index.d.ts +3 -4
  89. package/dist/drivers/pframe/query/index.js +1 -0
  90. package/dist/drivers/pframe/query/query_common.d.ts +205 -247
  91. package/dist/drivers/pframe/query/query_data.d.ts +25 -23
  92. package/dist/drivers/pframe/query/query_spec.d.ts +30 -29
  93. package/dist/drivers/pframe/query/utils.cjs +164 -183
  94. package/dist/drivers/pframe/query/utils.cjs.map +1 -1
  95. package/dist/drivers/pframe/query/utils.d.ts +13 -12
  96. package/dist/drivers/pframe/query/utils.js +164 -181
  97. package/dist/drivers/pframe/query/utils.js.map +1 -1
  98. package/dist/drivers/pframe/spec/anchored.cjs +178 -216
  99. package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
  100. package/dist/drivers/pframe/spec/anchored.d.ts +53 -49
  101. package/dist/drivers/pframe/spec/anchored.js +176 -214
  102. package/dist/drivers/pframe/spec/anchored.js.map +1 -1
  103. package/dist/drivers/pframe/spec/filtered_column.cjs +8 -7
  104. package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
  105. package/dist/drivers/pframe/spec/filtered_column.d.ts +20 -17
  106. package/dist/drivers/pframe/spec/filtered_column.js +8 -6
  107. package/dist/drivers/pframe/spec/filtered_column.js.map +1 -1
  108. package/dist/drivers/pframe/spec/ids.cjs +16 -14
  109. package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
  110. package/dist/drivers/pframe/spec/ids.d.ts +13 -8
  111. package/dist/drivers/pframe/spec/ids.js +14 -12
  112. package/dist/drivers/pframe/spec/ids.js.map +1 -1
  113. package/dist/drivers/pframe/spec/index.cjs +6 -0
  114. package/dist/drivers/pframe/spec/index.d.ts +6 -7
  115. package/dist/drivers/pframe/spec/index.js +6 -0
  116. package/dist/drivers/pframe/spec/native_id.cjs +16 -16
  117. package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
  118. package/dist/drivers/pframe/spec/native_id.d.ts +9 -4
  119. package/dist/drivers/pframe/spec/native_id.js +13 -13
  120. package/dist/drivers/pframe/spec/native_id.js.map +1 -1
  121. package/dist/drivers/pframe/spec/selectors.cjs +72 -112
  122. package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
  123. package/dist/drivers/pframe/spec/selectors.d.ts +99 -94
  124. package/dist/drivers/pframe/spec/selectors.js +72 -110
  125. package/dist/drivers/pframe/spec/selectors.js.map +1 -1
  126. package/dist/drivers/pframe/spec/spec.cjs +282 -324
  127. package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
  128. package/dist/drivers/pframe/spec/spec.d.ts +263 -272
  129. package/dist/drivers/pframe/spec/spec.js +281 -322
  130. package/dist/drivers/pframe/spec/spec.js.map +1 -1
  131. package/dist/drivers/pframe/table.d.ts +28 -24
  132. package/dist/drivers/pframe/table_calculate.cjs +117 -147
  133. package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
  134. package/dist/drivers/pframe/table_calculate.d.ts +219 -220
  135. package/dist/drivers/pframe/table_calculate.js +117 -145
  136. package/dist/drivers/pframe/table_calculate.js.map +1 -1
  137. package/dist/drivers/pframe/table_common.cjs +13 -14
  138. package/dist/drivers/pframe/table_common.cjs.map +1 -1
  139. package/dist/drivers/pframe/table_common.d.ts +24 -19
  140. package/dist/drivers/pframe/table_common.js +13 -13
  141. package/dist/drivers/pframe/table_common.js.map +1 -1
  142. package/dist/drivers/pframe/unique_values.d.ts +23 -18
  143. package/dist/drivers/upload.d.ts +21 -18
  144. package/dist/drivers/urls.cjs +5 -6
  145. package/dist/drivers/urls.cjs.map +1 -1
  146. package/dist/drivers/urls.d.ts +12 -9
  147. package/dist/drivers/urls.js +5 -5
  148. package/dist/drivers/urls.js.map +1 -1
  149. package/dist/errors.cjs +65 -86
  150. package/dist/errors.cjs.map +1 -1
  151. package/dist/errors.d.ts +36 -33
  152. package/dist/errors.js +65 -85
  153. package/dist/errors.js.map +1 -1
  154. package/dist/flags/block_flags.cjs +7 -6
  155. package/dist/flags/block_flags.cjs.map +1 -1
  156. package/dist/flags/block_flags.d.ts +12 -8
  157. package/dist/flags/block_flags.js +7 -5
  158. package/dist/flags/block_flags.js.map +1 -1
  159. package/dist/flags/flag_utils.cjs +69 -108
  160. package/dist/flags/flag_utils.cjs.map +1 -1
  161. package/dist/flags/flag_utils.d.ts +40 -42
  162. package/dist/flags/flag_utils.js +70 -107
  163. package/dist/flags/flag_utils.js.map +1 -1
  164. package/dist/flags/type_utils.d.ts +12 -11
  165. package/dist/httpAuth.cjs +16 -20
  166. package/dist/httpAuth.cjs.map +1 -1
  167. package/dist/httpAuth.d.ts +10 -7
  168. package/dist/httpAuth.js +16 -19
  169. package/dist/httpAuth.js.map +1 -1
  170. package/dist/index.cjs +176 -179
  171. package/dist/index.d.ts +58 -20
  172. package/dist/index.js +37 -34
  173. package/dist/json.cjs +10 -8
  174. package/dist/json.cjs.map +1 -1
  175. package/dist/json.d.ts +18 -18
  176. package/dist/json.js +8 -6
  177. package/dist/json.js.map +1 -1
  178. package/dist/navigation.cjs +3 -2
  179. package/dist/navigation.cjs.map +1 -1
  180. package/dist/navigation.d.ts +18 -21
  181. package/dist/navigation.js +3 -1
  182. package/dist/navigation.js.map +1 -1
  183. package/dist/plid.cjs +16 -20
  184. package/dist/plid.cjs.map +1 -1
  185. package/dist/plid.d.ts +11 -7
  186. package/dist/plid.js +15 -18
  187. package/dist/plid.js.map +1 -1
  188. package/dist/pool/entry.d.ts +11 -11
  189. package/dist/pool/index.d.ts +3 -4
  190. package/dist/pool/query.cjs +21 -43
  191. package/dist/pool/query.cjs.map +1 -1
  192. package/dist/pool/query.d.ts +25 -20
  193. package/dist/pool/query.js +20 -40
  194. package/dist/pool/query.js.map +1 -1
  195. package/dist/pool/spec.cjs +40 -47
  196. package/dist/pool/spec.cjs.map +1 -1
  197. package/dist/pool/spec.d.ts +33 -31
  198. package/dist/pool/spec.js +40 -45
  199. package/dist/pool/spec.js.map +1 -1
  200. package/dist/ref.cjs +51 -71
  201. package/dist/ref.cjs.map +1 -1
  202. package/dist/ref.d.ts +36 -33
  203. package/dist/ref.js +50 -69
  204. package/dist/ref.js.map +1 -1
  205. package/dist/utag.d.ts +18 -14
  206. package/dist/util.cjs +8 -7
  207. package/dist/util.cjs.map +1 -1
  208. package/dist/util.d.ts +5 -2
  209. package/dist/util.js +8 -6
  210. package/dist/util.js.map +1 -1
  211. package/dist/value_or_error.cjs +7 -3
  212. package/dist/value_or_error.cjs.map +1 -1
  213. package/dist/value_or_error.d.ts +9 -6
  214. package/dist/value_or_error.js +7 -2
  215. package/dist/value_or_error.js.map +1 -1
  216. package/package.json +6 -6
  217. package/src/flags/block_flags.ts +2 -1
  218. package/src/flags/flag_utils.ts +0 -22
  219. package/dist/author_marker.d.ts.map +0 -1
  220. package/dist/base32_encode.d.ts +0 -8
  221. package/dist/base32_encode.d.ts.map +0 -1
  222. package/dist/base64.d.ts.map +0 -1
  223. package/dist/block_state.d.ts.map +0 -1
  224. package/dist/bmodel/block_config.d.ts.map +0 -1
  225. package/dist/bmodel/code.d.ts.map +0 -1
  226. package/dist/bmodel/container.d.ts.map +0 -1
  227. package/dist/bmodel/index.d.ts.map +0 -1
  228. package/dist/bmodel/normalization.d.ts.map +0 -1
  229. package/dist/bmodel/types.d.ts.map +0 -1
  230. package/dist/branding.d.ts.map +0 -1
  231. package/dist/common_types.d.ts.map +0 -1
  232. package/dist/driver_kit.d.ts.map +0 -1
  233. package/dist/drivers/ChunkedStreamReader.d.ts.map +0 -1
  234. package/dist/drivers/blob.d.ts.map +0 -1
  235. package/dist/drivers/index.d.ts.map +0 -1
  236. package/dist/drivers/interfaces.d.ts.map +0 -1
  237. package/dist/drivers/log.d.ts.map +0 -1
  238. package/dist/drivers/ls.d.ts.map +0 -1
  239. package/dist/drivers/pframe/column_filter.d.ts.map +0 -1
  240. package/dist/drivers/pframe/data_info.d.ts.map +0 -1
  241. package/dist/drivers/pframe/data_types.d.ts.map +0 -1
  242. package/dist/drivers/pframe/driver.d.ts.map +0 -1
  243. package/dist/drivers/pframe/filter_spec.d.ts.map +0 -1
  244. package/dist/drivers/pframe/find_columns.d.ts.map +0 -1
  245. package/dist/drivers/pframe/index.d.ts.map +0 -1
  246. package/dist/drivers/pframe/linker_columns.d.ts.map +0 -1
  247. package/dist/drivers/pframe/pframe.d.ts.map +0 -1
  248. package/dist/drivers/pframe/query/index.d.ts.map +0 -1
  249. package/dist/drivers/pframe/query/query_common.d.ts.map +0 -1
  250. package/dist/drivers/pframe/query/query_data.d.ts.map +0 -1
  251. package/dist/drivers/pframe/query/query_spec.d.ts.map +0 -1
  252. package/dist/drivers/pframe/query/utils.d.ts.map +0 -1
  253. package/dist/drivers/pframe/spec/anchored.d.ts.map +0 -1
  254. package/dist/drivers/pframe/spec/filtered_column.d.ts.map +0 -1
  255. package/dist/drivers/pframe/spec/ids.d.ts.map +0 -1
  256. package/dist/drivers/pframe/spec/index.d.ts.map +0 -1
  257. package/dist/drivers/pframe/spec/native_id.d.ts.map +0 -1
  258. package/dist/drivers/pframe/spec/selectors.d.ts.map +0 -1
  259. package/dist/drivers/pframe/spec/spec.d.ts.map +0 -1
  260. package/dist/drivers/pframe/table.d.ts.map +0 -1
  261. package/dist/drivers/pframe/table_calculate.d.ts.map +0 -1
  262. package/dist/drivers/pframe/table_common.d.ts.map +0 -1
  263. package/dist/drivers/pframe/type_util.d.ts +0 -5
  264. package/dist/drivers/pframe/type_util.d.ts.map +0 -1
  265. package/dist/drivers/pframe/unique_values.d.ts.map +0 -1
  266. package/dist/drivers/upload.d.ts.map +0 -1
  267. package/dist/drivers/urls.d.ts.map +0 -1
  268. package/dist/errors.d.ts.map +0 -1
  269. package/dist/flags/block_flags.d.ts.map +0 -1
  270. package/dist/flags/flag_utils.d.ts.map +0 -1
  271. package/dist/flags/index.d.ts +0 -4
  272. package/dist/flags/index.d.ts.map +0 -1
  273. package/dist/flags/type_utils.d.ts.map +0 -1
  274. package/dist/httpAuth.d.ts.map +0 -1
  275. package/dist/index.cjs.map +0 -1
  276. package/dist/index.d.ts.map +0 -1
  277. package/dist/index.js.map +0 -1
  278. package/dist/json.d.ts.map +0 -1
  279. package/dist/navigation.d.ts.map +0 -1
  280. package/dist/plid.d.ts.map +0 -1
  281. package/dist/pool/entry.d.ts.map +0 -1
  282. package/dist/pool/index.d.ts.map +0 -1
  283. package/dist/pool/query.d.ts.map +0 -1
  284. package/dist/pool/spec.d.ts.map +0 -1
  285. package/dist/ref.d.ts.map +0 -1
  286. package/dist/utag.d.ts.map +0 -1
  287. package/dist/util.d.ts.map +0 -1
  288. package/dist/value_or_error.d.ts.map +0 -1
@@ -1,116 +1,79 @@
1
+ //#region src/flags/flag_utils.ts
1
2
  function checkBlockFlag(flags, flag, flagValue = true) {
2
- if (flags === undefined)
3
- return false;
4
- return flags[flag] === flagValue;
3
+ if (flags === void 0) return false;
4
+ return flags[flag] === flagValue;
5
5
  }
6
6
  /**
7
- * Extracts all requirements from the feature flags.
8
- * @param flags - The feature flags.
9
- * @returns A set of requirements.
10
- */
7
+ * Extracts all requirements from the feature flags.
8
+ * @param flags - The feature flags.
9
+ * @returns A set of requirements.
10
+ */
11
11
  function extractAllRequirements(flags) {
12
- if (flags === undefined)
13
- return new Set();
14
- return new Set(Object.entries(flags)
15
- .filter(([key, value]) => key.startsWith("requires") && value === true)
16
- .map(([key]) => key));
12
+ if (flags === void 0) return /* @__PURE__ */ new Set();
13
+ return new Set(Object.entries(flags).filter(([key, value]) => key.startsWith("requires") && value === true).map(([key]) => key));
17
14
  }
18
15
  /**
19
- * Extracts all supports from the feature flags.
20
- * @param flags - The feature flags.
21
- * @returns A set of supports.
22
- */
16
+ * Extracts all supports from the feature flags.
17
+ * @param flags - The feature flags.
18
+ * @returns A set of supports.
19
+ */
23
20
  function extractAllSupports(flags) {
24
- if (flags === undefined)
25
- return new Set();
26
- return new Set(Object.entries(flags)
27
- .filter(([key, value]) => key.startsWith("supports") && value === true)
28
- .map(([key]) => key));
29
- }
30
- /**
31
- * Merges two feature flag objects with type-aware logic:
32
- * - `supports*` (boolean): OR — `true` if either side is `true`
33
- * - `requires*` (numeric): MAX — take the higher version requirement
34
- */
35
- function mergeFeatureFlags(base, override) {
36
- const result = { ...base };
37
- for (const [key, value] of Object.entries(override)) {
38
- if (value === undefined)
39
- continue;
40
- const existing = result[key];
41
- if (typeof value === "boolean") {
42
- result[key] = existing || value;
43
- }
44
- else if (typeof value === "number") {
45
- result[key] = Math.max(existing ?? 0, value);
46
- }
47
- }
48
- return result;
49
- }
50
- class IncompatibleFlagsError extends Error {
51
- incompatibleFlags;
52
- name = "IncompatibleFlagsError";
53
- constructor(incompatibleFlags) {
54
- super(`Some of the block requirements are not supported by the runtime: ${Array.from(incompatibleFlags.entries())
55
- .map(([key, value]) => `${key}: ${value}`)
56
- .join(", ")}`);
57
- this.incompatibleFlags = incompatibleFlags;
58
- }
59
- }
60
- class RuntimeCapabilities {
61
- supportedRequirements = new Map();
62
- /**
63
- * Adds a supported requirement to the runtime capabilities.
64
- * @param requirement - The requirement.
65
- * @param value - The value of the requirement. If not provided, defaults to true.
66
- */
67
- addSupportedRequirement(requirement, value = true) {
68
- if (!this.supportedRequirements.has(requirement)) {
69
- this.supportedRequirements.set(requirement, new Set());
70
- }
71
- this.supportedRequirements.get(requirement).add(value);
72
- return this;
73
- }
74
- /**
75
- * Returns a map of incompatible flags. If the block flags are compatible, returns undefined.
76
- * @param blockFlags - The block flags.
77
- * @returns A map of incompatible flags, or undefined if the block flags are compatible.
78
- */
79
- getIncompatibleFlags(blockFlags) {
80
- if (blockFlags === undefined)
81
- return undefined;
82
- const incompatibleFlags = new Map();
83
- for (const [key, value] of Object.entries(blockFlags)) {
84
- if (key.startsWith("requires")) {
85
- if (value === undefined)
86
- continue;
87
- const supportedValues = this.supportedRequirements.get(key);
88
- if (supportedValues === undefined || !supportedValues.has(value)) {
89
- incompatibleFlags.set(key, value);
90
- }
91
- }
92
- }
93
- return incompatibleFlags.size === 0 ? undefined : incompatibleFlags;
94
- }
95
- /**
96
- * Checks if the block flags are compatible with the runtime capabilities.
97
- * @param blockFlags - The block flags.
98
- * @returns True if the block flags are compatible, false otherwise.
99
- */
100
- checkCompatibility(blockFlags) {
101
- return this.getIncompatibleFlags(blockFlags) === undefined;
102
- }
103
- /**
104
- * Throws an error if the block flags are incompatible with the runtime capabilities.
105
- * @param blockFlags - The block flags.
106
- * @throws IncompatibleFlagsError if the block flags are incompatible with the runtime capabilities.
107
- */
108
- throwIfIncompatible(blockFlags) {
109
- const incompatibleFlags = this.getIncompatibleFlags(blockFlags);
110
- if (incompatibleFlags !== undefined)
111
- throw new IncompatibleFlagsError(incompatibleFlags);
112
- }
21
+ if (flags === void 0) return /* @__PURE__ */ new Set();
22
+ return new Set(Object.entries(flags).filter(([key, value]) => key.startsWith("supports") && value === true).map(([key]) => key));
113
23
  }
24
+ var IncompatibleFlagsError = class extends Error {
25
+ name = "IncompatibleFlagsError";
26
+ constructor(incompatibleFlags) {
27
+ super(`Some of the block requirements are not supported by the runtime: ${Array.from(incompatibleFlags.entries()).map(([key, value]) => `${key}: ${value}`).join(", ")}`);
28
+ this.incompatibleFlags = incompatibleFlags;
29
+ }
30
+ };
31
+ var RuntimeCapabilities = class {
32
+ supportedRequirements = /* @__PURE__ */ new Map();
33
+ /**
34
+ * Adds a supported requirement to the runtime capabilities.
35
+ * @param requirement - The requirement.
36
+ * @param value - The value of the requirement. If not provided, defaults to true.
37
+ */
38
+ addSupportedRequirement(requirement, value = true) {
39
+ if (!this.supportedRequirements.has(requirement)) this.supportedRequirements.set(requirement, /* @__PURE__ */ new Set());
40
+ this.supportedRequirements.get(requirement).add(value);
41
+ return this;
42
+ }
43
+ /**
44
+ * Returns a map of incompatible flags. If the block flags are compatible, returns undefined.
45
+ * @param blockFlags - The block flags.
46
+ * @returns A map of incompatible flags, or undefined if the block flags are compatible.
47
+ */
48
+ getIncompatibleFlags(blockFlags) {
49
+ if (blockFlags === void 0) return void 0;
50
+ const incompatibleFlags = /* @__PURE__ */ new Map();
51
+ for (const [key, value] of Object.entries(blockFlags)) if (key.startsWith("requires")) {
52
+ if (value === void 0) continue;
53
+ const supportedValues = this.supportedRequirements.get(key);
54
+ if (supportedValues === void 0 || !supportedValues.has(value)) incompatibleFlags.set(key, value);
55
+ }
56
+ return incompatibleFlags.size === 0 ? void 0 : incompatibleFlags;
57
+ }
58
+ /**
59
+ * Checks if the block flags are compatible with the runtime capabilities.
60
+ * @param blockFlags - The block flags.
61
+ * @returns True if the block flags are compatible, false otherwise.
62
+ */
63
+ checkCompatibility(blockFlags) {
64
+ return this.getIncompatibleFlags(blockFlags) === void 0;
65
+ }
66
+ /**
67
+ * Throws an error if the block flags are incompatible with the runtime capabilities.
68
+ * @param blockFlags - The block flags.
69
+ * @throws IncompatibleFlagsError if the block flags are incompatible with the runtime capabilities.
70
+ */
71
+ throwIfIncompatible(blockFlags) {
72
+ const incompatibleFlags = this.getIncompatibleFlags(blockFlags);
73
+ if (incompatibleFlags !== void 0) throw new IncompatibleFlagsError(incompatibleFlags);
74
+ }
75
+ };
114
76
 
115
- export { IncompatibleFlagsError, RuntimeCapabilities, checkBlockFlag, extractAllRequirements, extractAllSupports, mergeFeatureFlags };
116
- //# sourceMappingURL=flag_utils.js.map
77
+ //#endregion
78
+ export { IncompatibleFlagsError, RuntimeCapabilities, checkBlockFlag, extractAllRequirements, extractAllSupports };
79
+ //# sourceMappingURL=flag_utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flag_utils.js","sources":["../../src/flags/flag_utils.ts"],"sourcesContent":["import type { BlockCodeFeatureFlags, BlockCodeKnownFeatureFlags } from \"./block_flags\";\nimport type { FilterKeysByPrefix } from \"./type_utils\";\n\nexport function checkBlockFlag(\n flags: BlockCodeFeatureFlags | undefined,\n flag: keyof BlockCodeKnownFeatureFlags,\n flagValue: boolean | number = true,\n): boolean {\n if (flags === undefined) return false;\n return flags[flag] === flagValue;\n}\n\n/**\n * Extracts all requirements from the feature flags.\n * @param flags - The feature flags.\n * @returns A set of requirements.\n */\nexport function extractAllRequirements(\n flags: BlockCodeFeatureFlags | undefined,\n): Set<`requires${string}`> {\n if (flags === undefined) return new Set();\n return new Set(\n Object.entries(flags)\n .filter(([key, value]) => key.startsWith(\"requires\") && value === true)\n .map(([key]) => key as `requires${string}`),\n );\n}\n\n/**\n * Extracts all supports from the feature flags.\n * @param flags - The feature flags.\n * @returns A set of supports.\n */\nexport function extractAllSupports(\n flags: BlockCodeFeatureFlags | undefined,\n): Set<`supports${string}`> {\n if (flags === undefined) return new Set();\n return new Set(\n Object.entries(flags)\n .filter(([key, value]) => key.startsWith(\"supports\") && value === true)\n .map(([key]) => key as `supports${string}`),\n );\n}\n\n/**\n * Merges two feature flag objects with type-aware logic:\n * - `supports*` (boolean): OR — `true` if either side is `true`\n * - `requires*` (numeric): MAX — take the higher version requirement\n */\nexport function mergeFeatureFlags(\n base: BlockCodeKnownFeatureFlags,\n override: BlockCodeKnownFeatureFlags,\n): BlockCodeKnownFeatureFlags {\n const result: Record<string, boolean | number | undefined> = { ...base };\n for (const [key, value] of Object.entries(override)) {\n if (value === undefined) continue;\n const existing = result[key];\n if (typeof value === \"boolean\") {\n result[key] = (existing as boolean | undefined) || value;\n } else if (typeof value === \"number\") {\n result[key] = Math.max((existing as number) ?? 0, value);\n }\n }\n return result as BlockCodeKnownFeatureFlags;\n}\n\nexport class IncompatibleFlagsError extends Error {\n name = \"IncompatibleFlagsError\";\n constructor(public readonly incompatibleFlags: Map<`requires${string}`, number | boolean>) {\n super(\n `Some of the block requirements are not supported by the runtime: ${Array.from(\n incompatibleFlags.entries(),\n )\n .map(([key, value]) => `${key}: ${value}`)\n .join(\", \")}`,\n );\n }\n}\n\n/**\n * A type that represents a supported requirement.\n * @remarks\n * This type is used to represent a supported requirement.\n * It is a subtype of `BlockCodeKnownFeatureFlags` and is used to represent a supported requirement.\n * It is used to represent a supported requirement.\n */\nexport type SupportedRequirement = FilterKeysByPrefix<BlockCodeKnownFeatureFlags, \"requires\">;\n\nexport class RuntimeCapabilities {\n private readonly supportedRequirements: Map<`requires${string}`, Set<number | boolean>> =\n new Map();\n\n /**\n * Adds a supported requirement to the runtime capabilities.\n * @param requirement - The requirement.\n * @param value - The value of the requirement. If not provided, defaults to true.\n */\n public addSupportedRequirement(\n requirement: SupportedRequirement,\n value: number | boolean = true,\n ): this {\n if (!this.supportedRequirements.has(requirement)) {\n this.supportedRequirements.set(requirement, new Set());\n }\n this.supportedRequirements.get(requirement)!.add(value);\n return this;\n }\n\n /**\n * Returns a map of incompatible flags. If the block flags are compatible, returns undefined.\n * @param blockFlags - The block flags.\n * @returns A map of incompatible flags, or undefined if the block flags are compatible.\n */\n public getIncompatibleFlags(\n blockFlags: BlockCodeFeatureFlags | undefined,\n ): Map<`requires${string}`, number | boolean> | undefined {\n if (blockFlags === undefined) return undefined;\n const incompatibleFlags = new Map<`requires${string}`, number | boolean>();\n for (const [key, value] of Object.entries(blockFlags)) {\n if (key.startsWith(\"requires\")) {\n if (value === undefined) continue;\n const supportedValues = this.supportedRequirements.get(key as `requires${string}`);\n if (supportedValues === undefined || !supportedValues.has(value as number | boolean)) {\n incompatibleFlags.set(key as `requires${string}`, value as number | boolean);\n }\n }\n }\n return incompatibleFlags.size === 0 ? undefined : incompatibleFlags;\n }\n\n /**\n * Checks if the block flags are compatible with the runtime capabilities.\n * @param blockFlags - The block flags.\n * @returns True if the block flags are compatible, false otherwise.\n */\n public checkCompatibility(blockFlags: BlockCodeFeatureFlags | undefined): boolean {\n return this.getIncompatibleFlags(blockFlags) === undefined;\n }\n\n /**\n * Throws an error if the block flags are incompatible with the runtime capabilities.\n * @param blockFlags - The block flags.\n * @throws IncompatibleFlagsError if the block flags are incompatible with the runtime capabilities.\n */\n public throwIfIncompatible(blockFlags: BlockCodeFeatureFlags | undefined) {\n const incompatibleFlags = this.getIncompatibleFlags(blockFlags);\n if (incompatibleFlags !== undefined) throw new IncompatibleFlagsError(incompatibleFlags);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flag_utils.js","names":[],"sources":["../../src/flags/flag_utils.ts"],"sourcesContent":["import type { BlockCodeFeatureFlags, BlockCodeKnownFeatureFlags } from \"./block_flags\";\nimport type { FilterKeysByPrefix } from \"./type_utils\";\n\nexport function checkBlockFlag(\n flags: BlockCodeFeatureFlags | undefined,\n flag: keyof BlockCodeKnownFeatureFlags,\n flagValue: boolean | number = true,\n): boolean {\n if (flags === undefined) return false;\n return flags[flag] === flagValue;\n}\n\n/**\n * Extracts all requirements from the feature flags.\n * @param flags - The feature flags.\n * @returns A set of requirements.\n */\nexport function extractAllRequirements(\n flags: BlockCodeFeatureFlags | undefined,\n): Set<`requires${string}`> {\n if (flags === undefined) return new Set();\n return new Set(\n Object.entries(flags)\n .filter(([key, value]) => key.startsWith(\"requires\") && value === true)\n .map(([key]) => key as `requires${string}`),\n );\n}\n\n/**\n * Extracts all supports from the feature flags.\n * @param flags - The feature flags.\n * @returns A set of supports.\n */\nexport function extractAllSupports(\n flags: BlockCodeFeatureFlags | undefined,\n): Set<`supports${string}`> {\n if (flags === undefined) return new Set();\n return new Set(\n Object.entries(flags)\n .filter(([key, value]) => key.startsWith(\"supports\") && value === true)\n .map(([key]) => key as `supports${string}`),\n );\n}\n\nexport class IncompatibleFlagsError extends Error {\n name = \"IncompatibleFlagsError\";\n constructor(public readonly incompatibleFlags: Map<`requires${string}`, number | boolean>) {\n super(\n `Some of the block requirements are not supported by the runtime: ${Array.from(\n incompatibleFlags.entries(),\n )\n .map(([key, value]) => `${key}: ${value}`)\n .join(\", \")}`,\n );\n }\n}\n\n/**\n * A type that represents a supported requirement.\n * @remarks\n * This type is used to represent a supported requirement.\n * It is a subtype of `BlockCodeKnownFeatureFlags` and is used to represent a supported requirement.\n * It is used to represent a supported requirement.\n */\nexport type SupportedRequirement = FilterKeysByPrefix<BlockCodeKnownFeatureFlags, \"requires\">;\n\nexport class RuntimeCapabilities {\n private readonly supportedRequirements: Map<`requires${string}`, Set<number | boolean>> =\n new Map();\n\n /**\n * Adds a supported requirement to the runtime capabilities.\n * @param requirement - The requirement.\n * @param value - The value of the requirement. If not provided, defaults to true.\n */\n public addSupportedRequirement(\n requirement: SupportedRequirement,\n value: number | boolean = true,\n ): this {\n if (!this.supportedRequirements.has(requirement)) {\n this.supportedRequirements.set(requirement, new Set());\n }\n this.supportedRequirements.get(requirement)!.add(value);\n return this;\n }\n\n /**\n * Returns a map of incompatible flags. If the block flags are compatible, returns undefined.\n * @param blockFlags - The block flags.\n * @returns A map of incompatible flags, or undefined if the block flags are compatible.\n */\n public getIncompatibleFlags(\n blockFlags: BlockCodeFeatureFlags | undefined,\n ): Map<`requires${string}`, number | boolean> | undefined {\n if (blockFlags === undefined) return undefined;\n const incompatibleFlags = new Map<`requires${string}`, number | boolean>();\n for (const [key, value] of Object.entries(blockFlags)) {\n if (key.startsWith(\"requires\")) {\n if (value === undefined) continue;\n const supportedValues = this.supportedRequirements.get(key as `requires${string}`);\n if (supportedValues === undefined || !supportedValues.has(value as number | boolean)) {\n incompatibleFlags.set(key as `requires${string}`, value as number | boolean);\n }\n }\n }\n return incompatibleFlags.size === 0 ? undefined : incompatibleFlags;\n }\n\n /**\n * Checks if the block flags are compatible with the runtime capabilities.\n * @param blockFlags - The block flags.\n * @returns True if the block flags are compatible, false otherwise.\n */\n public checkCompatibility(blockFlags: BlockCodeFeatureFlags | undefined): boolean {\n return this.getIncompatibleFlags(blockFlags) === undefined;\n }\n\n /**\n * Throws an error if the block flags are incompatible with the runtime capabilities.\n * @param blockFlags - The block flags.\n * @throws IncompatibleFlagsError if the block flags are incompatible with the runtime capabilities.\n */\n public throwIfIncompatible(blockFlags: BlockCodeFeatureFlags | undefined) {\n const incompatibleFlags = this.getIncompatibleFlags(blockFlags);\n if (incompatibleFlags !== undefined) throw new IncompatibleFlagsError(incompatibleFlags);\n }\n}\n"],"mappings":";AAGA,SAAgB,eACd,OACA,MACA,YAA8B,MACrB;AACT,KAAI,UAAU,OAAW,QAAO;AAChC,QAAO,MAAM,UAAU;;;;;;;AAQzB,SAAgB,uBACd,OAC0B;AAC1B,KAAI,UAAU,OAAW,wBAAO,IAAI,KAAK;AACzC,QAAO,IAAI,IACT,OAAO,QAAQ,MAAM,CAClB,QAAQ,CAAC,KAAK,WAAW,IAAI,WAAW,WAAW,IAAI,UAAU,KAAK,CACtE,KAAK,CAAC,SAAS,IAA2B,CAC9C;;;;;;;AAQH,SAAgB,mBACd,OAC0B;AAC1B,KAAI,UAAU,OAAW,wBAAO,IAAI,KAAK;AACzC,QAAO,IAAI,IACT,OAAO,QAAQ,MAAM,CAClB,QAAQ,CAAC,KAAK,WAAW,IAAI,WAAW,WAAW,IAAI,UAAU,KAAK,CACtE,KAAK,CAAC,SAAS,IAA2B,CAC9C;;AAGH,IAAa,yBAAb,cAA4C,MAAM;CAChD,OAAO;CACP,YAAY,AAAgB,mBAA+D;AACzF,QACE,oEAAoE,MAAM,KACxE,kBAAkB,SAAS,CAC5B,CACE,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,IAAI,QAAQ,CACzC,KAAK,KAAK,GACd;EAPyB;;;AAoB9B,IAAa,sBAAb,MAAiC;CAC/B,AAAiB,wCACf,IAAI,KAAK;;;;;;CAOX,AAAO,wBACL,aACA,QAA0B,MACpB;AACN,MAAI,CAAC,KAAK,sBAAsB,IAAI,YAAY,CAC9C,MAAK,sBAAsB,IAAI,6BAAa,IAAI,KAAK,CAAC;AAExD,OAAK,sBAAsB,IAAI,YAAY,CAAE,IAAI,MAAM;AACvD,SAAO;;;;;;;CAQT,AAAO,qBACL,YACwD;AACxD,MAAI,eAAe,OAAW,QAAO;EACrC,MAAM,oCAAoB,IAAI,KAA4C;AAC1E,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,WAAW,CACnD,KAAI,IAAI,WAAW,WAAW,EAAE;AAC9B,OAAI,UAAU,OAAW;GACzB,MAAM,kBAAkB,KAAK,sBAAsB,IAAI,IAA2B;AAClF,OAAI,oBAAoB,UAAa,CAAC,gBAAgB,IAAI,MAA0B,CAClF,mBAAkB,IAAI,KAA4B,MAA0B;;AAIlF,SAAO,kBAAkB,SAAS,IAAI,SAAY;;;;;;;CAQpD,AAAO,mBAAmB,YAAwD;AAChF,SAAO,KAAK,qBAAqB,WAAW,KAAK;;;;;;;CAQnD,AAAO,oBAAoB,YAA+C;EACxE,MAAM,oBAAoB,KAAK,qBAAqB,WAAW;AAC/D,MAAI,sBAAsB,OAAW,OAAM,IAAI,uBAAuB,kBAAkB"}
@@ -1,35 +1,36 @@
1
+ //#region src/flags/type_utils.d.ts
1
2
  /**
2
3
  * Helper to filter keys of a type by a prefix.
3
4
  */
4
- export type FilterKeysByPrefix<T, P extends string> = keyof {
5
- [K in keyof T as K extends `${P}${string}` ? K : never]: T[K];
6
- };
5
+ type FilterKeysByPrefix<T, P extends string> = keyof { [K in keyof T as K extends `${P}${string}` ? K : never]: T[K] };
7
6
  /**
8
7
  * Helper to assert that two types are equal. This will cause a compile-time error if they are not.
9
8
  * We use this to ensure all feature flags are accounted for in the arrays below.
10
9
  */
11
- export type AssertKeysEqual<T, U> = (<V>() => V extends T ? 1 : 2) extends <V>() => V extends U ? 1 : 2 ? unknown : {
12
- error: "Feature flag definitions are out of sync";
13
- expected: T;
14
- actual: U;
10
+ type AssertKeysEqual<T, U> = (<V>() => V extends T ? 1 : 2) extends (<V>() => V extends U ? 1 : 2) ? unknown : {
11
+ error: "Feature flag definitions are out of sync";
12
+ expected: T;
13
+ actual: U;
15
14
  };
16
15
  /**
17
16
  * Checks if two types are exactly equal.
18
17
  * Returns 'true' if they are, 'false' otherwise.
19
18
  */
20
- export type Is<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
19
+ type Is<T, U> = (<G>() => G extends T ? 1 : 2) extends (<G>() => G extends U ? 1 : 2) ? true : false;
21
20
  /**
22
21
  * Checks if T is a subtype of U.
23
22
  * Returns 'true' if it is, 'false' otherwise.
24
23
  */
25
- export type IsSubtypeOf<T, U> = T extends U ? true : false;
24
+ type IsSubtypeOf<T, U> = T extends U ? true : false;
26
25
  /**
27
26
  * Asserts that a condition is true at compile time.
28
27
  * Causes a compile error if T is not 'true'.
29
28
  */
30
- export type Assert<T extends true> = T;
29
+ type Assert<T extends true> = T;
31
30
  /**
32
31
  * Helper to create a union type of two array value types.
33
32
  */
34
- export type ArrayTypeUnion<T extends readonly any[], U extends readonly any[]> = T[number] extends never ? U[number] : U[number] extends never ? T[number] : T[number] | U[number];
33
+ type ArrayTypeUnion<T extends readonly any[], U extends readonly any[]> = T[number] extends never ? U[number] : U[number] extends never ? T[number] : T[number] | U[number];
34
+ //#endregion
35
+ export { ArrayTypeUnion, Assert, AssertKeysEqual, FilterKeysByPrefix, Is, IsSubtypeOf };
35
36
  //# sourceMappingURL=type_utils.d.ts.map
package/dist/httpAuth.cjs CHANGED
@@ -1,28 +1,24 @@
1
- 'use strict';
2
1
 
3
- /* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */
2
+ //#region src/httpAuth.ts
4
3
  function parseHttpAuth(input) {
5
- const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);
6
- if (match?.groups?.scheme === "Basic") {
7
- const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));
8
- if (!credentialsMatch?.groups) {
9
- throw new Error(`Malformed credentials.`);
10
- }
11
- return {
12
- scheme: "Basic",
13
- username: credentialsMatch.groups.username,
14
- password: credentialsMatch.groups.password,
15
- };
16
- }
17
- throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);
4
+ const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);
5
+ if (match?.groups?.scheme === "Basic") {
6
+ const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));
7
+ if (!credentialsMatch?.groups) throw new Error(`Malformed credentials.`);
8
+ return {
9
+ scheme: "Basic",
10
+ username: credentialsMatch.groups.username,
11
+ password: credentialsMatch.groups.password
12
+ };
13
+ }
14
+ throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);
18
15
  }
19
16
  function serializeHttpAuth(input) {
20
- if (input.scheme === "Basic") {
21
- return `Basic ${btoa(`${input.username}:${input.password}`)}`;
22
- }
23
- throw new Error(`Unsupported auth scheme: ${input.scheme}.`);
17
+ if (input.scheme === "Basic") return `Basic ${btoa(`${input.username}:${input.password}`)}`;
18
+ throw new Error(`Unsupported auth scheme: ${input.scheme}.`);
24
19
  }
25
20
 
21
+ //#endregion
26
22
  exports.parseHttpAuth = parseHttpAuth;
27
23
  exports.serializeHttpAuth = serializeHttpAuth;
28
- //# sourceMappingURL=httpAuth.cjs.map
24
+ //# sourceMappingURL=httpAuth.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpAuth.cjs","sources":["../src/httpAuth.ts"],"sourcesContent":["/* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */\n\nexport function parseHttpAuth(input: string): HttpAuth {\n const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);\n if (match?.groups?.scheme === \"Basic\") {\n const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));\n if (!credentialsMatch?.groups) {\n throw new Error(`Malformed credentials.`);\n }\n return {\n scheme: \"Basic\",\n username: credentialsMatch.groups.username,\n password: credentialsMatch.groups.password,\n };\n }\n throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);\n}\n\nexport function serializeHttpAuth(input: HttpAuth): string {\n if (input.scheme === \"Basic\") {\n return `Basic ${btoa(`${input.username}:${input.password}`)}`;\n }\n throw new Error(`Unsupported auth scheme: ${input.scheme as string}.`);\n}\n\nexport type HttpAuth = BasicHttpAuth;\n\nexport interface BasicHttpAuth {\n scheme: \"Basic\";\n username: string;\n password: string;\n}\n"],"names":[],"mappings":";;AAAA;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;IACzC,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5D,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE;AACrC,QAAA,MAAM,gBAAgB,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;QAC3C;QACA,OAAO;AACL,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ;AAC1C,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ;SAC3C;IACH;IACA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,KAAK,EAAE,MAAM,EAAE,MAAM,CAAA,CAAA,CAAG,CAAC;AACvE;AAEM,SAAU,iBAAiB,CAAC,KAAe,EAAA;AAC/C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAC,QAAQ,CAAA,CAAE,CAAC,EAAE;IAC/D;IACA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,KAAK,CAAC,MAAgB,CAAA,CAAA,CAAG,CAAC;AACxE;;;;;"}
1
+ {"version":3,"file":"httpAuth.cjs","names":[],"sources":["../src/httpAuth.ts"],"sourcesContent":["/* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */\n\nexport function parseHttpAuth(input: string): HttpAuth {\n const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);\n if (match?.groups?.scheme === \"Basic\") {\n const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));\n if (!credentialsMatch?.groups) {\n throw new Error(`Malformed credentials.`);\n }\n return {\n scheme: \"Basic\",\n username: credentialsMatch.groups.username,\n password: credentialsMatch.groups.password,\n };\n }\n throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);\n}\n\nexport function serializeHttpAuth(input: HttpAuth): string {\n if (input.scheme === \"Basic\") {\n return `Basic ${btoa(`${input.username}:${input.password}`)}`;\n }\n throw new Error(`Unsupported auth scheme: ${input.scheme as string}.`);\n}\n\nexport type HttpAuth = BasicHttpAuth;\n\nexport interface BasicHttpAuth {\n scheme: \"Basic\";\n username: string;\n password: string;\n}\n"],"mappings":";;AAEA,SAAgB,cAAc,OAAyB;CACrD,MAAM,QAAQ,mCAAmC,KAAK,MAAM;AAC5D,KAAI,OAAO,QAAQ,WAAW,SAAS;EACrC,MAAM,mBAAmB,mCAAmC,KAAK,KAAK,MAAM,OAAO,WAAW,CAAC;AAC/F,MAAI,CAAC,kBAAkB,OACrB,OAAM,IAAI,MAAM,yBAAyB;AAE3C,SAAO;GACL,QAAQ;GACR,UAAU,iBAAiB,OAAO;GAClC,UAAU,iBAAiB,OAAO;GACnC;;AAEH,OAAM,IAAI,MAAM,4BAA4B,OAAO,QAAQ,OAAO,GAAG;;AAGvE,SAAgB,kBAAkB,OAAyB;AACzD,KAAI,MAAM,WAAW,QACnB,QAAO,SAAS,KAAK,GAAG,MAAM,SAAS,GAAG,MAAM,WAAW;AAE7D,OAAM,IAAI,MAAM,4BAA4B,MAAM,OAAiB,GAAG"}
@@ -1,9 +1,12 @@
1
- export declare function parseHttpAuth(input: string): HttpAuth;
2
- export declare function serializeHttpAuth(input: HttpAuth): string;
3
- export type HttpAuth = BasicHttpAuth;
4
- export interface BasicHttpAuth {
5
- scheme: "Basic";
6
- username: string;
7
- password: string;
1
+ //#region src/httpAuth.d.ts
2
+ declare function parseHttpAuth(input: string): HttpAuth;
3
+ declare function serializeHttpAuth(input: HttpAuth): string;
4
+ type HttpAuth = BasicHttpAuth;
5
+ interface BasicHttpAuth {
6
+ scheme: "Basic";
7
+ username: string;
8
+ password: string;
8
9
  }
10
+ //#endregion
11
+ export { BasicHttpAuth, HttpAuth, parseHttpAuth, serializeHttpAuth };
9
12
  //# sourceMappingURL=httpAuth.d.ts.map
package/dist/httpAuth.js CHANGED
@@ -1,25 +1,22 @@
1
- /* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */
1
+ //#region src/httpAuth.ts
2
2
  function parseHttpAuth(input) {
3
- const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);
4
- if (match?.groups?.scheme === "Basic") {
5
- const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));
6
- if (!credentialsMatch?.groups) {
7
- throw new Error(`Malformed credentials.`);
8
- }
9
- return {
10
- scheme: "Basic",
11
- username: credentialsMatch.groups.username,
12
- password: credentialsMatch.groups.password,
13
- };
14
- }
15
- throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);
3
+ const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);
4
+ if (match?.groups?.scheme === "Basic") {
5
+ const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));
6
+ if (!credentialsMatch?.groups) throw new Error(`Malformed credentials.`);
7
+ return {
8
+ scheme: "Basic",
9
+ username: credentialsMatch.groups.username,
10
+ password: credentialsMatch.groups.password
11
+ };
12
+ }
13
+ throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);
16
14
  }
17
15
  function serializeHttpAuth(input) {
18
- if (input.scheme === "Basic") {
19
- return `Basic ${btoa(`${input.username}:${input.password}`)}`;
20
- }
21
- throw new Error(`Unsupported auth scheme: ${input.scheme}.`);
16
+ if (input.scheme === "Basic") return `Basic ${btoa(`${input.username}:${input.password}`)}`;
17
+ throw new Error(`Unsupported auth scheme: ${input.scheme}.`);
22
18
  }
23
19
 
20
+ //#endregion
24
21
  export { parseHttpAuth, serializeHttpAuth };
25
- //# sourceMappingURL=httpAuth.js.map
22
+ //# sourceMappingURL=httpAuth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpAuth.js","sources":["../src/httpAuth.ts"],"sourcesContent":["/* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */\n\nexport function parseHttpAuth(input: string): HttpAuth {\n const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);\n if (match?.groups?.scheme === \"Basic\") {\n const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));\n if (!credentialsMatch?.groups) {\n throw new Error(`Malformed credentials.`);\n }\n return {\n scheme: \"Basic\",\n username: credentialsMatch.groups.username,\n password: credentialsMatch.groups.password,\n };\n }\n throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);\n}\n\nexport function serializeHttpAuth(input: HttpAuth): string {\n if (input.scheme === \"Basic\") {\n return `Basic ${btoa(`${input.username}:${input.password}`)}`;\n }\n throw new Error(`Unsupported auth scheme: ${input.scheme as string}.`);\n}\n\nexport type HttpAuth = BasicHttpAuth;\n\nexport interface BasicHttpAuth {\n scheme: \"Basic\";\n username: string;\n password: string;\n}\n"],"names":[],"mappings":"AAAA;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;IACzC,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5D,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE;AACrC,QAAA,MAAM,gBAAgB,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC;QAC3C;QACA,OAAO;AACL,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ;AAC1C,YAAA,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,QAAQ;SAC3C;IACH;IACA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,KAAK,EAAE,MAAM,EAAE,MAAM,CAAA,CAAA,CAAG,CAAC;AACvE;AAEM,SAAU,iBAAiB,CAAC,KAAe,EAAA;AAC/C,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;AAC5B,QAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAC,CAAA,EAAG,KAAK,CAAC,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAC,QAAQ,CAAA,CAAE,CAAC,EAAE;IAC/D;IACA,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,KAAK,CAAC,MAAgB,CAAA,CAAA,CAAG,CAAC;AACxE;;;;"}
1
+ {"version":3,"file":"httpAuth.js","names":[],"sources":["../src/httpAuth.ts"],"sourcesContent":["/* TODO: replace atob/btoa with Uint8Array.toBase64/fromBase64 in the future */\n\nexport function parseHttpAuth(input: string): HttpAuth {\n const match = /(?<scheme>.*?) (?<parameters>.*)/.exec(input);\n if (match?.groups?.scheme === \"Basic\") {\n const credentialsMatch = /(?<username>.*?):(?<password>.*)/.exec(atob(match.groups.parameters));\n if (!credentialsMatch?.groups) {\n throw new Error(`Malformed credentials.`);\n }\n return {\n scheme: \"Basic\",\n username: credentialsMatch.groups.username,\n password: credentialsMatch.groups.password,\n };\n }\n throw new Error(`Unsupported auth scheme: ${match?.groups?.scheme}.`);\n}\n\nexport function serializeHttpAuth(input: HttpAuth): string {\n if (input.scheme === \"Basic\") {\n return `Basic ${btoa(`${input.username}:${input.password}`)}`;\n }\n throw new Error(`Unsupported auth scheme: ${input.scheme as string}.`);\n}\n\nexport type HttpAuth = BasicHttpAuth;\n\nexport interface BasicHttpAuth {\n scheme: \"Basic\";\n username: string;\n password: string;\n}\n"],"mappings":";AAEA,SAAgB,cAAc,OAAyB;CACrD,MAAM,QAAQ,mCAAmC,KAAK,MAAM;AAC5D,KAAI,OAAO,QAAQ,WAAW,SAAS;EACrC,MAAM,mBAAmB,mCAAmC,KAAK,KAAK,MAAM,OAAO,WAAW,CAAC;AAC/F,MAAI,CAAC,kBAAkB,OACrB,OAAM,IAAI,MAAM,yBAAyB;AAE3C,SAAO;GACL,QAAQ;GACR,UAAU,iBAAiB,OAAO;GAClC,UAAU,iBAAiB,OAAO;GACnC;;AAEH,OAAM,IAAI,MAAM,4BAA4B,OAAO,QAAQ,OAAO,GAAG;;AAGvE,SAAgB,kBAAkB,OAAyB;AACzD,KAAI,MAAM,WAAW,QACnB,QAAO,SAAS,KAAK,GAAG,MAAM,SAAS,GAAG,MAAM,WAAW;AAE7D,OAAM,IAAI,MAAM,4BAA4B,MAAM,OAAiB,GAAG"}