@fgv/ts-res 5.0.0-2 → 5.0.0-21

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 (557) hide show
  1. package/.vscode/4.json +3 -0
  2. package/.vscode/launch.json +16 -0
  3. package/.vscode/settings.json +3 -0
  4. package/config/api-extractor.json +343 -0
  5. package/config/rig.json +16 -0
  6. package/dist/ts-res.d.ts +1528 -161
  7. package/dist/tsdoc-metadata.json +1 -1
  8. package/lib/index.d.ts +11 -2
  9. package/lib/index.js +25 -2
  10. package/lib/packlets/bundle/bundleBuilder.d.ts +41 -0
  11. package/lib/packlets/bundle/bundleBuilder.js +134 -0
  12. package/lib/packlets/bundle/bundleLoader.d.ts +72 -0
  13. package/lib/packlets/bundle/bundleLoader.js +105 -0
  14. package/lib/packlets/bundle/bundleNormalizer.d.ts +73 -0
  15. package/lib/packlets/bundle/bundleNormalizer.js +142 -0
  16. package/lib/packlets/bundle/bundleUtils.d.ts +70 -0
  17. package/lib/packlets/bundle/bundleUtils.js +117 -0
  18. package/lib/packlets/bundle/convert.d.ts +33 -0
  19. package/lib/packlets/bundle/convert.js +78 -0
  20. package/lib/packlets/bundle/index.d.ts +21 -0
  21. package/lib/packlets/bundle/index.js +83 -0
  22. package/lib/packlets/bundle/model.d.ts +100 -0
  23. package/lib/packlets/bundle/model.js +24 -0
  24. package/lib/packlets/common/helpers/resources.d.ts +7 -0
  25. package/lib/packlets/common/helpers/resources.js +12 -0
  26. package/lib/packlets/common/resources.d.ts +8 -0
  27. package/lib/packlets/conditions/conditionSet.d.ts +9 -0
  28. package/lib/packlets/conditions/conditionSet.js +74 -1
  29. package/lib/packlets/config/configInitFactory.d.ts +78 -0
  30. package/lib/packlets/config/configInitFactory.js +147 -0
  31. package/lib/packlets/config/convert.d.ts +9 -0
  32. package/lib/packlets/config/convert.js +11 -0
  33. package/lib/packlets/config/index.d.ts +1 -0
  34. package/lib/packlets/config/index.js +1 -0
  35. package/lib/packlets/config/systemConfiguration.d.ts +16 -3
  36. package/lib/packlets/config/systemConfiguration.js +19 -40
  37. package/lib/packlets/import/fsItem.js +8 -13
  38. package/lib/packlets/import/importers/jsonImporter.js +1 -0
  39. package/lib/packlets/qualifier-types/config/json.d.ts +13 -0
  40. package/lib/packlets/qualifier-types/config/json.js +11 -0
  41. package/lib/packlets/qualifier-types/literalValueHierarchy.js +1 -1
  42. package/lib/packlets/qualifiers/qualifierCollector.js +1 -2
  43. package/lib/packlets/resource-types/jsonResourceType.d.ts +9 -4
  44. package/lib/packlets/resource-types/jsonResourceType.js +8 -1
  45. package/lib/packlets/resource-types/resourceType.d.ts +102 -13
  46. package/lib/packlets/resource-types/resourceType.js +34 -2
  47. package/lib/packlets/resources/common.d.ts +26 -0
  48. package/lib/packlets/resources/resource.d.ts +6 -6
  49. package/lib/packlets/resources/resource.js +3 -8
  50. package/lib/packlets/resources/resourceCandidate.d.ts +5 -1
  51. package/lib/packlets/resources/resourceCandidate.js +6 -0
  52. package/lib/packlets/resources/resourceManagerBuilder.d.ts +182 -11
  53. package/lib/packlets/resources/resourceManagerBuilder.js +469 -15
  54. package/lib/packlets/runtime/cacheListener.d.ts +9 -0
  55. package/lib/packlets/runtime/cacheListener.js +6 -0
  56. package/lib/packlets/runtime/cacheMetrics.d.ts +6 -0
  57. package/lib/packlets/runtime/cacheMetrics.js +11 -0
  58. package/lib/packlets/runtime/compiledResourceCollection.d.ts +3 -3
  59. package/lib/packlets/runtime/compiledResourceCollection.js +7 -0
  60. package/lib/packlets/runtime/iResourceManager.d.ts +13 -5
  61. package/lib/packlets/runtime/resource-tree/resourceTreeChildrenValidator.d.ts +7 -7
  62. package/lib/packlets/runtime/resource-tree/resourceTreeChildrenValidator.js +5 -5
  63. package/lib/packlets/runtime/resourceResolver.d.ts +21 -0
  64. package/lib/packlets/runtime/resourceResolver.js +39 -17
  65. package/lib/packlets/runtime/validate.js +1 -0
  66. package/lib/packlets/zip-archive/convert.d.ts +52 -0
  67. package/lib/packlets/zip-archive/convert.js +104 -0
  68. package/lib/packlets/zip-archive/index.d.ts +23 -0
  69. package/lib/packlets/zip-archive/index.js +95 -0
  70. package/lib/packlets/zip-archive/json.d.ts +64 -0
  71. package/lib/packlets/zip-archive/json.js +24 -0
  72. package/lib/packlets/zip-archive/types.d.ts +98 -0
  73. package/lib/packlets/zip-archive/types.js +39 -0
  74. package/lib/packlets/zip-archive/zipArchiveCreator.d.ts +35 -0
  75. package/lib/packlets/zip-archive/zipArchiveCreator.js +194 -0
  76. package/lib/packlets/zip-archive/zipArchiveFormat.d.ts +70 -0
  77. package/lib/packlets/zip-archive/zipArchiveFormat.js +184 -0
  78. package/lib/packlets/zip-archive/zipArchiveLoader.d.ts +70 -0
  79. package/lib/packlets/zip-archive/zipArchiveLoader.js +285 -0
  80. package/lib/test/data/sample.json +32 -0
  81. package/lib/test/unit/bundle/bundleBuilder.test.d.ts +2 -0
  82. package/lib/test/unit/bundle/bundleLoader.test.d.ts +2 -0
  83. package/lib/test/unit/bundle/bundleUtils.test.d.ts +2 -0
  84. package/lib/test/unit/bundle/convert.test.d.ts +2 -0
  85. package/lib/test/unit/bundle/integration.test.d.ts +2 -0
  86. package/lib/test/unit/bundle/model.test.d.ts +2 -0
  87. package/lib/test/unit/bundle/normalization.test.d.ts +2 -0
  88. package/lib/test/unit/common/conditions.test.d.ts +2 -0
  89. package/lib/test/unit/common/helpers/conditions.test.d.ts +2 -0
  90. package/lib/test/unit/common/helpers/contexts.test.d.ts +2 -0
  91. package/lib/test/unit/common/helpers/qualifierDefaultValues.test.d.ts +2 -0
  92. package/lib/test/unit/common/resources.test.d.ts +2 -0
  93. package/lib/test/unit/conditions/condition.test.d.ts +2 -0
  94. package/lib/test/unit/conditions/conditionCollector.test.d.ts +2 -0
  95. package/lib/test/unit/conditions/conditionScoreAsDefault.test.d.ts +2 -0
  96. package/lib/test/unit/conditions/conditionSet.test.d.ts +2 -0
  97. package/lib/test/unit/conditions/conditionSetCollector.test.d.ts +2 -0
  98. package/lib/test/unit/conditions/conditionToken.test.d.ts +2 -0
  99. package/lib/test/unit/conditions/convert.test.d.ts +2 -0
  100. package/lib/test/unit/config/common.test.d.ts +2 -0
  101. package/lib/test/unit/config/convert.test.d.ts +2 -0
  102. package/lib/test/unit/config/predefined/default.test.d.ts +2 -0
  103. package/lib/test/unit/config/predefined/extended.test.d.ts +2 -0
  104. package/lib/test/unit/config/systemConfiguration.test.d.ts +2 -0
  105. package/lib/test/unit/config/systemConfigurationInitParams.test.d.ts +2 -0
  106. package/lib/test/unit/context/contextToken.test.d.ts +2 -0
  107. package/lib/test/unit/context/convert.test.d.ts +2 -0
  108. package/lib/test/unit/decisions/abstractDecision.test.d.ts +2 -0
  109. package/lib/test/unit/decisions/abstractDecisionCollector.test.d.ts +2 -0
  110. package/lib/test/unit/decisions/candidate.test.d.ts +2 -0
  111. package/lib/test/unit/decisions/concreteDecision.test.d.ts +2 -0
  112. package/lib/test/unit/decisions/decision.test.d.ts +2 -0
  113. package/lib/test/unit/import/collectionImporter.test.d.ts +2 -0
  114. package/lib/test/unit/import/fsItem.test.d.ts +2 -0
  115. package/lib/test/unit/import/fsItemImporter.test.d.ts +2 -0
  116. package/lib/test/unit/import/importContext.test.d.ts +2 -0
  117. package/lib/test/unit/import/importManager.test.d.ts +2 -0
  118. package/lib/test/unit/import/jsonImporter.test.d.ts +2 -0
  119. package/lib/test/unit/import/pathImporter.test.d.ts +2 -0
  120. package/lib/test/unit/qualifier-types/convert.test.d.ts +2 -0
  121. package/lib/test/unit/qualifier-types/helpers.test.d.ts +2 -0
  122. package/lib/test/unit/qualifier-types/languageQualifierType.test.d.ts +2 -0
  123. package/lib/test/unit/qualifier-types/literalQualifierType.test.d.ts +2 -0
  124. package/lib/test/unit/qualifier-types/literalValueHierarchy.test.d.ts +2 -0
  125. package/lib/test/unit/qualifier-types/qualifierType.test.d.ts +2 -0
  126. package/lib/test/unit/qualifier-types/qualifierTypeCollector.test.d.ts +2 -0
  127. package/lib/test/unit/qualifier-types/territoryQualifierType.test.d.ts +2 -0
  128. package/lib/test/unit/qualifier-types/testQualifierType.d.ts +15 -0
  129. package/lib/test/unit/qualifier-types/testQualifierType.js +89 -0
  130. package/lib/test/unit/qualifiers/convert.test.d.ts +2 -0
  131. package/lib/test/unit/qualifiers/qualifierCollector.test.d.ts +2 -0
  132. package/lib/test/unit/qualifiers/qualifierDefaultValue.test.d.ts +2 -0
  133. package/lib/test/unit/qualifiers/qualifierDefaultValueToken.test.d.ts +2 -0
  134. package/lib/test/unit/resource-json/convert.test.d.ts +2 -0
  135. package/lib/test/unit/resource-json/nameInheritance.test.d.ts +2 -0
  136. package/lib/test/unit/resource-json/resourceDeclCollection.test.d.ts +2 -0
  137. package/lib/test/unit/resource-json/resourceDeclTree.test.d.ts +2 -0
  138. package/lib/test/unit/resource-types/jsonResourceType.test.d.ts +2 -0
  139. package/lib/test/unit/resource-types/resourceTypeCollector.test.d.ts +2 -0
  140. package/lib/test/unit/resources/candidateReducer.integration.test.d.ts +2 -0
  141. package/lib/test/unit/resources/candidateReducer.test.d.ts +2 -0
  142. package/lib/test/unit/resources/reduceCandidates.test.d.ts +2 -0
  143. package/lib/test/unit/resources/reduceQualifiers.comprehensive.test.d.ts +2 -0
  144. package/lib/test/unit/resources/reduceQualifiers.test.d.ts +2 -0
  145. package/lib/test/unit/resources/resource.test.d.ts +2 -0
  146. package/lib/test/unit/resources/resourceBuilder.test.d.ts +2 -0
  147. package/lib/test/unit/resources/resourceCandidate.test.d.ts +2 -0
  148. package/lib/test/unit/resources/resourceManagerBuilder.clone.test.d.ts +2 -0
  149. package/lib/test/unit/resources/resourceManagerBuilder.getBuiltResourceTree.test.d.ts +2 -0
  150. package/lib/test/unit/resources/resourceManagerBuilder.test.d.ts +2 -0
  151. package/lib/test/unit/runtime/cacheListener.test.d.ts +2 -0
  152. package/lib/test/unit/runtime/cacheMetrics.test.d.ts +2 -0
  153. package/lib/test/unit/runtime/compiledResourceCollection.test.d.ts +2 -0
  154. package/lib/test/unit/runtime/conditionSetResolutionResult.comprehensive.test.d.ts +2 -0
  155. package/lib/test/unit/runtime/conditionSetResolutionResult.test.d.ts +2 -0
  156. package/lib/test/unit/runtime/context/contextQualifierProvider.test.d.ts +2 -0
  157. package/lib/test/unit/runtime/context/contextQualifierProviderValidator.test.d.ts +2 -0
  158. package/lib/test/unit/runtime/context/simpleContextQualifierProvider.test.d.ts +2 -0
  159. package/lib/test/unit/runtime/context/validatingSimpleContextQualifierProvider.test.d.ts +2 -0
  160. package/lib/test/unit/runtime/resource-tree/readOnlyResourceTree.test.d.ts +2 -0
  161. package/lib/test/unit/runtime/resource-tree/resourceTreeChildren.test.d.ts +2 -0
  162. package/lib/test/unit/runtime/resource-tree/resourceTreeChildrenValidator.test.d.ts +2 -0
  163. package/lib/test/unit/runtime/resourceResolver.defaultResolution.test.d.ts +2 -0
  164. package/lib/test/unit/runtime/resourceResolver.test.d.ts +2 -0
  165. package/lib/test/unit/runtime/validate.test.d.ts +2 -0
  166. package/lib/test/unit/zip-archive/convert.test.d.ts +2 -0
  167. package/lib/test/unit/zip-archive/json.test.d.ts +2 -0
  168. package/lib/test/unit/zip-archive/zipArchiveCreator.test.d.ts +2 -0
  169. package/lib/test/unit/zip-archive/zipArchiveFormat.test.d.ts +2 -0
  170. package/lib/test/unit/zip-archive/zipArchiveIdempotency.test.d.ts +2 -0
  171. package/lib/test/unit/zip-archive/zipArchiveLoader.test.d.ts +2 -0
  172. package/package.json +19 -25
  173. package/src/index.ts +75 -0
  174. package/src/packlets/bundle/bundleBuilder.ts +159 -0
  175. package/src/packlets/bundle/bundleLoader.ts +157 -0
  176. package/src/packlets/bundle/bundleNormalizer.ts +173 -0
  177. package/src/packlets/bundle/bundleUtils.ts +142 -0
  178. package/src/packlets/bundle/convert.ts +87 -0
  179. package/src/packlets/bundle/index.ts +52 -0
  180. package/src/packlets/bundle/model.ts +138 -0
  181. package/src/packlets/common/conditions.ts +226 -0
  182. package/src/packlets/common/convert.ts +184 -0
  183. package/src/packlets/common/helpers/conditions.ts +84 -0
  184. package/src/packlets/common/helpers/context.ts +88 -0
  185. package/src/packlets/common/helpers/index.ts +26 -0
  186. package/src/packlets/common/helpers/qualifierDefaultValues.ts +91 -0
  187. package/src/packlets/common/helpers/resources.ts +96 -0
  188. package/src/packlets/common/index.ts +30 -0
  189. package/src/packlets/common/resources.ts +78 -0
  190. package/src/packlets/common/validate/conditions.ts +595 -0
  191. package/src/packlets/common/validate/index.ts +27 -0
  192. package/src/packlets/common/validate/regularExpressions.ts +92 -0
  193. package/src/packlets/common/validate/resources.ts +170 -0
  194. package/src/packlets/conditions/condition.ts +351 -0
  195. package/src/packlets/conditions/conditionCollector.ts +103 -0
  196. package/src/packlets/conditions/conditionDecls.ts +50 -0
  197. package/src/packlets/conditions/conditionSet.ts +318 -0
  198. package/src/packlets/conditions/conditionSetCollector.ts +127 -0
  199. package/src/packlets/conditions/conditionSetDecls.ts +41 -0
  200. package/src/packlets/conditions/conditionToken.ts +180 -0
  201. package/src/packlets/conditions/convert/conditionSetDecls.ts +72 -0
  202. package/src/packlets/conditions/convert/decls.ts +95 -0
  203. package/src/packlets/conditions/convert/index.ts +24 -0
  204. package/src/packlets/conditions/index.ts +33 -0
  205. package/src/packlets/config/common.ts +107 -0
  206. package/src/packlets/config/configInitFactory.ts +142 -0
  207. package/src/packlets/config/convert.ts +61 -0
  208. package/src/packlets/config/index.ts +30 -0
  209. package/src/packlets/config/json.ts +43 -0
  210. package/src/packlets/config/predefined/default.ts +150 -0
  211. package/src/packlets/config/predefined/extended.ts +198 -0
  212. package/src/packlets/config/predefined/index.ts +26 -0
  213. package/src/packlets/config/systemConfiguration.ts +217 -0
  214. package/src/packlets/context/contextDecls.ts +76 -0
  215. package/src/packlets/context/contextToken.ts +252 -0
  216. package/src/packlets/context/convert/decls.ts +126 -0
  217. package/src/packlets/context/convert/index.ts +23 -0
  218. package/src/packlets/context/index.ts +27 -0
  219. package/src/packlets/decisions/abstractDecision.ts +87 -0
  220. package/src/packlets/decisions/abstractDecisionCollector.ts +122 -0
  221. package/src/packlets/decisions/candidate.ts +101 -0
  222. package/src/packlets/decisions/common.ts +37 -0
  223. package/src/packlets/decisions/concreteDecision.ts +157 -0
  224. package/src/packlets/decisions/decision.ts +172 -0
  225. package/src/packlets/decisions/index.ts +28 -0
  226. package/src/packlets/import/fsItem.ts +212 -0
  227. package/src/packlets/import/importContext.ts +183 -0
  228. package/src/packlets/import/importManager.ts +187 -0
  229. package/src/packlets/import/importable.ts +107 -0
  230. package/src/packlets/import/importers/collectionImporter.ts +153 -0
  231. package/src/packlets/import/importers/fsItemImporter.ts +154 -0
  232. package/src/packlets/import/importers/importer.ts +58 -0
  233. package/src/packlets/import/importers/index.ts +27 -0
  234. package/src/packlets/import/importers/jsonImporter.ts +133 -0
  235. package/src/packlets/import/importers/pathImporter.ts +134 -0
  236. package/src/packlets/import/index.ts +29 -0
  237. package/src/packlets/qualifier-types/config/convert.ts +108 -0
  238. package/src/packlets/qualifier-types/config/index.ts +27 -0
  239. package/src/packlets/qualifier-types/config/json.ts +126 -0
  240. package/src/packlets/qualifier-types/convert.ts +77 -0
  241. package/src/packlets/qualifier-types/helpers.ts +94 -0
  242. package/src/packlets/qualifier-types/index.ts +34 -0
  243. package/src/packlets/qualifier-types/languageQualifierType.ts +143 -0
  244. package/src/packlets/qualifier-types/literalQualifierType.ts +244 -0
  245. package/src/packlets/qualifier-types/literalValueHierarchy.ts +332 -0
  246. package/src/packlets/qualifier-types/qualifierType.ts +360 -0
  247. package/src/packlets/qualifier-types/qualifierTypeCollector.ts +102 -0
  248. package/src/packlets/qualifier-types/territoryQualifierType.ts +255 -0
  249. package/src/packlets/qualifiers/convert/decls.ts +90 -0
  250. package/src/packlets/qualifiers/convert/index.ts +24 -0
  251. package/src/packlets/qualifiers/convert/qualifier.ts +55 -0
  252. package/src/packlets/qualifiers/index.ts +31 -0
  253. package/src/packlets/qualifiers/qualifier.ts +169 -0
  254. package/src/packlets/qualifiers/qualifierCollector.ts +194 -0
  255. package/src/packlets/qualifiers/qualifierDecl.ts +80 -0
  256. package/src/packlets/qualifiers/qualifierDefaultValueDecls.ts +57 -0
  257. package/src/packlets/qualifiers/qualifierDefaultValueToken.ts +230 -0
  258. package/src/packlets/resource-json/compiled/common.ts +35 -0
  259. package/src/packlets/resource-json/compiled/convert.ts +143 -0
  260. package/src/packlets/resource-json/compiled/index.ts +27 -0
  261. package/src/packlets/resource-json/compiled/json.ts +239 -0
  262. package/src/packlets/resource-json/convert.ts +236 -0
  263. package/src/packlets/resource-json/helpers.ts +284 -0
  264. package/src/packlets/resource-json/index.ts +33 -0
  265. package/src/packlets/resource-json/json.ts +295 -0
  266. package/src/packlets/resource-json/normalized.ts +211 -0
  267. package/src/packlets/resource-json/resourceDeclCollection.ts +117 -0
  268. package/src/packlets/resource-json/resourceDeclContainer.ts +48 -0
  269. package/src/packlets/resource-json/resourceDeclTree.ts +116 -0
  270. package/src/packlets/resource-types/config/convert.ts +36 -0
  271. package/src/packlets/resource-types/config/index.ts +27 -0
  272. package/src/packlets/resource-types/config/json.ts +30 -0
  273. package/src/packlets/resource-types/helpers.ts +44 -0
  274. package/src/packlets/resource-types/index.ts +30 -0
  275. package/src/packlets/resource-types/jsonResourceType.ts +104 -0
  276. package/src/packlets/resource-types/resourceType.ts +259 -0
  277. package/src/packlets/resource-types/resourceTypeCollector.ts +79 -0
  278. package/src/packlets/resources/candidateReducer.ts +331 -0
  279. package/src/packlets/resources/common.ts +114 -0
  280. package/src/packlets/resources/index.ts +28 -0
  281. package/src/packlets/resources/resource.ts +307 -0
  282. package/src/packlets/resources/resourceBuilder.ts +269 -0
  283. package/src/packlets/resources/resourceCandidate.ts +333 -0
  284. package/src/packlets/resources/resourceManagerBuilder.ts +1169 -0
  285. package/src/packlets/runtime/cacheListener.ts +113 -0
  286. package/src/packlets/runtime/cacheMetrics.ts +206 -0
  287. package/src/packlets/runtime/compiledResourceCollection.ts +607 -0
  288. package/src/packlets/runtime/conditionSetResolutionResult.ts +160 -0
  289. package/src/packlets/runtime/context/contextQualifierProvider.ts +117 -0
  290. package/src/packlets/runtime/context/contextQualifierProviderValidator.ts +281 -0
  291. package/src/packlets/runtime/context/index.ts +26 -0
  292. package/src/packlets/runtime/context/simpleContextQualifierProvider.ts +225 -0
  293. package/src/packlets/runtime/context/validatingSimpleContextQualifierProvider.ts +96 -0
  294. package/src/packlets/runtime/iResourceManager.ts +130 -0
  295. package/src/packlets/runtime/index.ts +35 -0
  296. package/src/packlets/runtime/resource-tree/common.ts +126 -0
  297. package/src/packlets/runtime/resource-tree/index.ts +26 -0
  298. package/src/packlets/runtime/resource-tree/readOnlyResourceTree.ts +342 -0
  299. package/src/packlets/runtime/resource-tree/resourceTreeChildren.ts +125 -0
  300. package/src/packlets/runtime/resource-tree/resourceTreeChildrenValidator.ts +187 -0
  301. package/src/packlets/runtime/resourceResolver.ts +626 -0
  302. package/src/packlets/runtime/validate.ts +63 -0
  303. package/src/packlets/zip-archive/convert.ts +121 -0
  304. package/src/packlets/zip-archive/index.ts +76 -0
  305. package/src/packlets/zip-archive/json.ts +91 -0
  306. package/src/packlets/zip-archive/types.ts +140 -0
  307. package/src/packlets/zip-archive/zipArchiveCreator.ts +229 -0
  308. package/src/packlets/zip-archive/zipArchiveFormat.ts +158 -0
  309. package/src/packlets/zip-archive/zipArchiveLoader.ts +370 -0
  310. package/CHANGELOG.md +0 -14
  311. package/CLAUDE.md +0 -186
  312. package/EXAMPLE_INIT_PARAMS.md +0 -88
  313. package/PROGRESS_SUMMARY.md +0 -48
  314. package/lib/index.d.ts.map +0 -1
  315. package/lib/index.js.map +0 -1
  316. package/lib/packlets/common/conditions.d.ts.map +0 -1
  317. package/lib/packlets/common/conditions.js.map +0 -1
  318. package/lib/packlets/common/convert.d.ts.map +0 -1
  319. package/lib/packlets/common/convert.js.map +0 -1
  320. package/lib/packlets/common/helpers/conditions.d.ts.map +0 -1
  321. package/lib/packlets/common/helpers/conditions.js.map +0 -1
  322. package/lib/packlets/common/helpers/context.d.ts.map +0 -1
  323. package/lib/packlets/common/helpers/context.js.map +0 -1
  324. package/lib/packlets/common/helpers/index.d.ts.map +0 -1
  325. package/lib/packlets/common/helpers/index.js.map +0 -1
  326. package/lib/packlets/common/helpers/qualifierDefaultValues.d.ts.map +0 -1
  327. package/lib/packlets/common/helpers/qualifierDefaultValues.js.map +0 -1
  328. package/lib/packlets/common/helpers/resources.d.ts.map +0 -1
  329. package/lib/packlets/common/helpers/resources.js.map +0 -1
  330. package/lib/packlets/common/index.d.ts.map +0 -1
  331. package/lib/packlets/common/index.js.map +0 -1
  332. package/lib/packlets/common/resources.d.ts.map +0 -1
  333. package/lib/packlets/common/resources.js.map +0 -1
  334. package/lib/packlets/common/validate/conditions.d.ts.map +0 -1
  335. package/lib/packlets/common/validate/conditions.js.map +0 -1
  336. package/lib/packlets/common/validate/index.d.ts.map +0 -1
  337. package/lib/packlets/common/validate/index.js.map +0 -1
  338. package/lib/packlets/common/validate/regularExpressions.d.ts.map +0 -1
  339. package/lib/packlets/common/validate/regularExpressions.js.map +0 -1
  340. package/lib/packlets/common/validate/resources.d.ts.map +0 -1
  341. package/lib/packlets/common/validate/resources.js.map +0 -1
  342. package/lib/packlets/conditions/condition.d.ts.map +0 -1
  343. package/lib/packlets/conditions/condition.js.map +0 -1
  344. package/lib/packlets/conditions/conditionCollector.d.ts.map +0 -1
  345. package/lib/packlets/conditions/conditionCollector.js.map +0 -1
  346. package/lib/packlets/conditions/conditionDecls.d.ts.map +0 -1
  347. package/lib/packlets/conditions/conditionDecls.js.map +0 -1
  348. package/lib/packlets/conditions/conditionSet.d.ts.map +0 -1
  349. package/lib/packlets/conditions/conditionSet.js.map +0 -1
  350. package/lib/packlets/conditions/conditionSetCollector.d.ts.map +0 -1
  351. package/lib/packlets/conditions/conditionSetCollector.js.map +0 -1
  352. package/lib/packlets/conditions/conditionSetDecls.d.ts.map +0 -1
  353. package/lib/packlets/conditions/conditionSetDecls.js.map +0 -1
  354. package/lib/packlets/conditions/conditionToken.d.ts.map +0 -1
  355. package/lib/packlets/conditions/conditionToken.js.map +0 -1
  356. package/lib/packlets/conditions/convert/conditionSetDecls.d.ts.map +0 -1
  357. package/lib/packlets/conditions/convert/conditionSetDecls.js.map +0 -1
  358. package/lib/packlets/conditions/convert/decls.d.ts.map +0 -1
  359. package/lib/packlets/conditions/convert/decls.js.map +0 -1
  360. package/lib/packlets/conditions/convert/index.d.ts.map +0 -1
  361. package/lib/packlets/conditions/convert/index.js.map +0 -1
  362. package/lib/packlets/conditions/index.d.ts.map +0 -1
  363. package/lib/packlets/conditions/index.js.map +0 -1
  364. package/lib/packlets/config/common.d.ts.map +0 -1
  365. package/lib/packlets/config/common.js.map +0 -1
  366. package/lib/packlets/config/convert.d.ts.map +0 -1
  367. package/lib/packlets/config/convert.js.map +0 -1
  368. package/lib/packlets/config/index.d.ts.map +0 -1
  369. package/lib/packlets/config/index.js.map +0 -1
  370. package/lib/packlets/config/json.d.ts.map +0 -1
  371. package/lib/packlets/config/json.js.map +0 -1
  372. package/lib/packlets/config/predefined/default.d.ts.map +0 -1
  373. package/lib/packlets/config/predefined/default.js.map +0 -1
  374. package/lib/packlets/config/predefined/extended.d.ts.map +0 -1
  375. package/lib/packlets/config/predefined/extended.js.map +0 -1
  376. package/lib/packlets/config/predefined/index.d.ts.map +0 -1
  377. package/lib/packlets/config/predefined/index.js.map +0 -1
  378. package/lib/packlets/config/systemConfiguration.d.ts.map +0 -1
  379. package/lib/packlets/config/systemConfiguration.js.map +0 -1
  380. package/lib/packlets/context/contextDecls.d.ts.map +0 -1
  381. package/lib/packlets/context/contextDecls.js.map +0 -1
  382. package/lib/packlets/context/contextToken.d.ts.map +0 -1
  383. package/lib/packlets/context/contextToken.js.map +0 -1
  384. package/lib/packlets/context/convert/decls.d.ts.map +0 -1
  385. package/lib/packlets/context/convert/decls.js.map +0 -1
  386. package/lib/packlets/context/convert/index.d.ts.map +0 -1
  387. package/lib/packlets/context/convert/index.js.map +0 -1
  388. package/lib/packlets/context/index.d.ts.map +0 -1
  389. package/lib/packlets/context/index.js.map +0 -1
  390. package/lib/packlets/decisions/abstractDecision.d.ts.map +0 -1
  391. package/lib/packlets/decisions/abstractDecision.js.map +0 -1
  392. package/lib/packlets/decisions/abstractDecisionCollector.d.ts.map +0 -1
  393. package/lib/packlets/decisions/abstractDecisionCollector.js.map +0 -1
  394. package/lib/packlets/decisions/candidate.d.ts.map +0 -1
  395. package/lib/packlets/decisions/candidate.js.map +0 -1
  396. package/lib/packlets/decisions/common.d.ts.map +0 -1
  397. package/lib/packlets/decisions/common.js.map +0 -1
  398. package/lib/packlets/decisions/concreteDecision.d.ts.map +0 -1
  399. package/lib/packlets/decisions/concreteDecision.js.map +0 -1
  400. package/lib/packlets/decisions/decision.d.ts.map +0 -1
  401. package/lib/packlets/decisions/decision.js.map +0 -1
  402. package/lib/packlets/decisions/index.d.ts.map +0 -1
  403. package/lib/packlets/decisions/index.js.map +0 -1
  404. package/lib/packlets/import/fsItem.d.ts.map +0 -1
  405. package/lib/packlets/import/fsItem.js.map +0 -1
  406. package/lib/packlets/import/importContext.d.ts.map +0 -1
  407. package/lib/packlets/import/importContext.js.map +0 -1
  408. package/lib/packlets/import/importManager.d.ts.map +0 -1
  409. package/lib/packlets/import/importManager.js.map +0 -1
  410. package/lib/packlets/import/importable.d.ts.map +0 -1
  411. package/lib/packlets/import/importable.js.map +0 -1
  412. package/lib/packlets/import/importers/collectionImporter.d.ts.map +0 -1
  413. package/lib/packlets/import/importers/collectionImporter.js.map +0 -1
  414. package/lib/packlets/import/importers/fsItemImporter.d.ts.map +0 -1
  415. package/lib/packlets/import/importers/fsItemImporter.js.map +0 -1
  416. package/lib/packlets/import/importers/importer.d.ts.map +0 -1
  417. package/lib/packlets/import/importers/importer.js.map +0 -1
  418. package/lib/packlets/import/importers/index.d.ts.map +0 -1
  419. package/lib/packlets/import/importers/index.js.map +0 -1
  420. package/lib/packlets/import/importers/jsonImporter.d.ts.map +0 -1
  421. package/lib/packlets/import/importers/jsonImporter.js.map +0 -1
  422. package/lib/packlets/import/importers/pathImporter.d.ts.map +0 -1
  423. package/lib/packlets/import/importers/pathImporter.js.map +0 -1
  424. package/lib/packlets/import/index.d.ts.map +0 -1
  425. package/lib/packlets/import/index.js.map +0 -1
  426. package/lib/packlets/qualifier-types/config/convert.d.ts.map +0 -1
  427. package/lib/packlets/qualifier-types/config/convert.js.map +0 -1
  428. package/lib/packlets/qualifier-types/config/index.d.ts.map +0 -1
  429. package/lib/packlets/qualifier-types/config/index.js.map +0 -1
  430. package/lib/packlets/qualifier-types/config/json.d.ts.map +0 -1
  431. package/lib/packlets/qualifier-types/config/json.js.map +0 -1
  432. package/lib/packlets/qualifier-types/convert.d.ts.map +0 -1
  433. package/lib/packlets/qualifier-types/convert.js.map +0 -1
  434. package/lib/packlets/qualifier-types/helpers.d.ts.map +0 -1
  435. package/lib/packlets/qualifier-types/helpers.js.map +0 -1
  436. package/lib/packlets/qualifier-types/index.d.ts.map +0 -1
  437. package/lib/packlets/qualifier-types/index.js.map +0 -1
  438. package/lib/packlets/qualifier-types/languageQualifierType.d.ts.map +0 -1
  439. package/lib/packlets/qualifier-types/languageQualifierType.js.map +0 -1
  440. package/lib/packlets/qualifier-types/literalQualifierType.d.ts.map +0 -1
  441. package/lib/packlets/qualifier-types/literalQualifierType.js.map +0 -1
  442. package/lib/packlets/qualifier-types/literalValueHierarchy.d.ts.map +0 -1
  443. package/lib/packlets/qualifier-types/literalValueHierarchy.js.map +0 -1
  444. package/lib/packlets/qualifier-types/qualifierType.d.ts.map +0 -1
  445. package/lib/packlets/qualifier-types/qualifierType.js.map +0 -1
  446. package/lib/packlets/qualifier-types/qualifierTypeCollector.d.ts.map +0 -1
  447. package/lib/packlets/qualifier-types/qualifierTypeCollector.js.map +0 -1
  448. package/lib/packlets/qualifier-types/territoryQualifierType.d.ts.map +0 -1
  449. package/lib/packlets/qualifier-types/territoryQualifierType.js.map +0 -1
  450. package/lib/packlets/qualifiers/convert/decls.d.ts.map +0 -1
  451. package/lib/packlets/qualifiers/convert/decls.js.map +0 -1
  452. package/lib/packlets/qualifiers/convert/index.d.ts.map +0 -1
  453. package/lib/packlets/qualifiers/convert/index.js.map +0 -1
  454. package/lib/packlets/qualifiers/convert/qualifier.d.ts.map +0 -1
  455. package/lib/packlets/qualifiers/convert/qualifier.js.map +0 -1
  456. package/lib/packlets/qualifiers/index.d.ts.map +0 -1
  457. package/lib/packlets/qualifiers/index.js.map +0 -1
  458. package/lib/packlets/qualifiers/qualifier.d.ts.map +0 -1
  459. package/lib/packlets/qualifiers/qualifier.js.map +0 -1
  460. package/lib/packlets/qualifiers/qualifierCollector.d.ts.map +0 -1
  461. package/lib/packlets/qualifiers/qualifierCollector.js.map +0 -1
  462. package/lib/packlets/qualifiers/qualifierDecl.d.ts.map +0 -1
  463. package/lib/packlets/qualifiers/qualifierDecl.js.map +0 -1
  464. package/lib/packlets/qualifiers/qualifierDefaultValueDecls.d.ts.map +0 -1
  465. package/lib/packlets/qualifiers/qualifierDefaultValueDecls.js.map +0 -1
  466. package/lib/packlets/qualifiers/qualifierDefaultValueToken.d.ts.map +0 -1
  467. package/lib/packlets/qualifiers/qualifierDefaultValueToken.js.map +0 -1
  468. package/lib/packlets/resource-json/compiled/common.d.ts.map +0 -1
  469. package/lib/packlets/resource-json/compiled/common.js.map +0 -1
  470. package/lib/packlets/resource-json/compiled/convert.d.ts.map +0 -1
  471. package/lib/packlets/resource-json/compiled/convert.js.map +0 -1
  472. package/lib/packlets/resource-json/compiled/index.d.ts.map +0 -1
  473. package/lib/packlets/resource-json/compiled/index.js.map +0 -1
  474. package/lib/packlets/resource-json/compiled/json.d.ts.map +0 -1
  475. package/lib/packlets/resource-json/compiled/json.js.map +0 -1
  476. package/lib/packlets/resource-json/convert.d.ts.map +0 -1
  477. package/lib/packlets/resource-json/convert.js.map +0 -1
  478. package/lib/packlets/resource-json/helpers.d.ts.map +0 -1
  479. package/lib/packlets/resource-json/helpers.js.map +0 -1
  480. package/lib/packlets/resource-json/index.d.ts.map +0 -1
  481. package/lib/packlets/resource-json/index.js.map +0 -1
  482. package/lib/packlets/resource-json/json.d.ts.map +0 -1
  483. package/lib/packlets/resource-json/json.js.map +0 -1
  484. package/lib/packlets/resource-json/normalized.d.ts.map +0 -1
  485. package/lib/packlets/resource-json/normalized.js.map +0 -1
  486. package/lib/packlets/resource-json/resourceDeclCollection.d.ts.map +0 -1
  487. package/lib/packlets/resource-json/resourceDeclCollection.js.map +0 -1
  488. package/lib/packlets/resource-json/resourceDeclContainer.d.ts.map +0 -1
  489. package/lib/packlets/resource-json/resourceDeclContainer.js.map +0 -1
  490. package/lib/packlets/resource-json/resourceDeclTree.d.ts.map +0 -1
  491. package/lib/packlets/resource-json/resourceDeclTree.js.map +0 -1
  492. package/lib/packlets/resource-types/config/convert.d.ts.map +0 -1
  493. package/lib/packlets/resource-types/config/convert.js.map +0 -1
  494. package/lib/packlets/resource-types/config/index.d.ts.map +0 -1
  495. package/lib/packlets/resource-types/config/index.js.map +0 -1
  496. package/lib/packlets/resource-types/config/json.d.ts.map +0 -1
  497. package/lib/packlets/resource-types/config/json.js.map +0 -1
  498. package/lib/packlets/resource-types/helpers.d.ts.map +0 -1
  499. package/lib/packlets/resource-types/helpers.js.map +0 -1
  500. package/lib/packlets/resource-types/index.d.ts.map +0 -1
  501. package/lib/packlets/resource-types/index.js.map +0 -1
  502. package/lib/packlets/resource-types/jsonResourceType.d.ts.map +0 -1
  503. package/lib/packlets/resource-types/jsonResourceType.js.map +0 -1
  504. package/lib/packlets/resource-types/resourceType.d.ts.map +0 -1
  505. package/lib/packlets/resource-types/resourceType.js.map +0 -1
  506. package/lib/packlets/resource-types/resourceTypeCollector.d.ts.map +0 -1
  507. package/lib/packlets/resource-types/resourceTypeCollector.js.map +0 -1
  508. package/lib/packlets/resources/candidateReducer.d.ts.map +0 -1
  509. package/lib/packlets/resources/candidateReducer.js.map +0 -1
  510. package/lib/packlets/resources/common.d.ts.map +0 -1
  511. package/lib/packlets/resources/common.js.map +0 -1
  512. package/lib/packlets/resources/index.d.ts.map +0 -1
  513. package/lib/packlets/resources/index.js.map +0 -1
  514. package/lib/packlets/resources/resource.d.ts.map +0 -1
  515. package/lib/packlets/resources/resource.js.map +0 -1
  516. package/lib/packlets/resources/resourceBuilder.d.ts.map +0 -1
  517. package/lib/packlets/resources/resourceBuilder.js.map +0 -1
  518. package/lib/packlets/resources/resourceCandidate.d.ts.map +0 -1
  519. package/lib/packlets/resources/resourceCandidate.js.map +0 -1
  520. package/lib/packlets/resources/resourceManagerBuilder.d.ts.map +0 -1
  521. package/lib/packlets/resources/resourceManagerBuilder.js.map +0 -1
  522. package/lib/packlets/runtime/cacheListener.d.ts.map +0 -1
  523. package/lib/packlets/runtime/cacheListener.js.map +0 -1
  524. package/lib/packlets/runtime/cacheMetrics.d.ts.map +0 -1
  525. package/lib/packlets/runtime/cacheMetrics.js.map +0 -1
  526. package/lib/packlets/runtime/compiledResourceCollection.d.ts.map +0 -1
  527. package/lib/packlets/runtime/compiledResourceCollection.js.map +0 -1
  528. package/lib/packlets/runtime/conditionSetResolutionResult.d.ts.map +0 -1
  529. package/lib/packlets/runtime/conditionSetResolutionResult.js.map +0 -1
  530. package/lib/packlets/runtime/context/contextQualifierProvider.d.ts.map +0 -1
  531. package/lib/packlets/runtime/context/contextQualifierProvider.js.map +0 -1
  532. package/lib/packlets/runtime/context/contextQualifierProviderValidator.d.ts.map +0 -1
  533. package/lib/packlets/runtime/context/contextQualifierProviderValidator.js.map +0 -1
  534. package/lib/packlets/runtime/context/index.d.ts.map +0 -1
  535. package/lib/packlets/runtime/context/index.js.map +0 -1
  536. package/lib/packlets/runtime/context/simpleContextQualifierProvider.d.ts.map +0 -1
  537. package/lib/packlets/runtime/context/simpleContextQualifierProvider.js.map +0 -1
  538. package/lib/packlets/runtime/context/validatingSimpleContextQualifierProvider.d.ts.map +0 -1
  539. package/lib/packlets/runtime/context/validatingSimpleContextQualifierProvider.js.map +0 -1
  540. package/lib/packlets/runtime/iResourceManager.d.ts.map +0 -1
  541. package/lib/packlets/runtime/iResourceManager.js.map +0 -1
  542. package/lib/packlets/runtime/index.d.ts.map +0 -1
  543. package/lib/packlets/runtime/index.js.map +0 -1
  544. package/lib/packlets/runtime/resource-tree/common.d.ts.map +0 -1
  545. package/lib/packlets/runtime/resource-tree/common.js.map +0 -1
  546. package/lib/packlets/runtime/resource-tree/index.d.ts.map +0 -1
  547. package/lib/packlets/runtime/resource-tree/index.js.map +0 -1
  548. package/lib/packlets/runtime/resource-tree/readOnlyResourceTree.d.ts.map +0 -1
  549. package/lib/packlets/runtime/resource-tree/readOnlyResourceTree.js.map +0 -1
  550. package/lib/packlets/runtime/resource-tree/resourceTreeChildren.d.ts.map +0 -1
  551. package/lib/packlets/runtime/resource-tree/resourceTreeChildren.js.map +0 -1
  552. package/lib/packlets/runtime/resource-tree/resourceTreeChildrenValidator.d.ts.map +0 -1
  553. package/lib/packlets/runtime/resource-tree/resourceTreeChildrenValidator.js.map +0 -1
  554. package/lib/packlets/runtime/resourceResolver.d.ts.map +0 -1
  555. package/lib/packlets/runtime/resourceResolver.js.map +0 -1
  556. package/lib/packlets/runtime/validate.d.ts.map +0 -1
  557. package/lib/packlets/runtime/validate.js.map +0 -1
@@ -0,0 +1,595 @@
1
+ /*
2
+ * Copyright (c) 2025 Erik Fortune
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+
23
+ import { Result, fail, succeed } from '@fgv/ts-utils';
24
+ import {
25
+ ConditionPriority,
26
+ QualifierName,
27
+ QualifierTypeName,
28
+ QualifierIndex,
29
+ QualifierTypeIndex,
30
+ ConditionIndex,
31
+ ConditionSetIndex,
32
+ QualifierMatchScore,
33
+ ConditionKey,
34
+ ConditionSetKey,
35
+ DecisionKey,
36
+ DecisionIndex,
37
+ ConditionSetHash,
38
+ NoMatch,
39
+ PerfectMatch,
40
+ MinConditionPriority,
41
+ MaxConditionPriority,
42
+ ConditionOperator,
43
+ allConditionOperators,
44
+ ConditionToken,
45
+ ConditionSetToken,
46
+ ContextQualifierToken,
47
+ ContextToken,
48
+ QualifierDefaultValueToken,
49
+ QualifierDefaultValuesToken
50
+ } from '../conditions';
51
+ import {
52
+ conditionKey,
53
+ conditionSetHash,
54
+ conditionToken,
55
+ contextToken,
56
+ decisionKey,
57
+ identifier,
58
+ qualifierDefaultValueToken,
59
+ qualifierDefaultValuesToken
60
+ } from './regularExpressions';
61
+
62
+ /**
63
+ * Determines whether a string is a valid qualifier name.
64
+ * @param name - the string to validate
65
+ * @returns true if the string is a valid qualifier name, false otherwise.
66
+ * @public
67
+ */
68
+ export function isValidQualifierName(name: string): name is QualifierName {
69
+ return identifier.test(name);
70
+ }
71
+
72
+ /***
73
+ * Determines whether a string is a valid qualifier type name.
74
+ * @param name - the string to validate
75
+ * @returns true if the string is a valid qualifier type name, false otherwise.
76
+ * @public
77
+ */
78
+ export function isValidQualifierTypeName(name: string): name is QualifierTypeName {
79
+ return identifier.test(name);
80
+ }
81
+
82
+ /**
83
+ * Determines whether a number is a valid priority.
84
+ * @param priority - the number to validate
85
+ * @returns true if the number is a valid priority, false otherwise.
86
+ * @public
87
+ */
88
+ export function isValidConditionPriority(priority: number): priority is ConditionPriority {
89
+ return priority >= MinConditionPriority && priority <= MaxConditionPriority;
90
+ }
91
+
92
+ /**
93
+ * Determines whether a number is a valid qualifier index.
94
+ * @param index - the number to validate
95
+ * @returns true if the number is a valid qualifier index, false otherwise.
96
+ * @public
97
+ */
98
+ export function isValidQualifierIndex(index: number): index is QualifierIndex {
99
+ return index >= 0;
100
+ }
101
+
102
+ /**
103
+ * Determines whether a number is a valid qualifier type index.
104
+ * @param index - the number to validate
105
+ * @returns true if the number is a valid qualifier type index, false otherwise.
106
+ * @public
107
+ */
108
+ export function isValidQualifierTypeIndex(index: number): index is QualifierTypeIndex {
109
+ return index >= 0;
110
+ }
111
+
112
+ /**
113
+ * Determines whether a supplied value is a valid {@link QualifierMatchScore | match score}.
114
+ * @param value - The value to validate.
115
+ * @returns - `true` if the value is a valid match score, `false` otherwise.
116
+ * @public
117
+ */
118
+ export function isValidQualifierMatchScore(value: number): value is QualifierMatchScore {
119
+ return value >= NoMatch && value <= PerfectMatch;
120
+ }
121
+
122
+ /**
123
+ * Determines whether a number is a valid condition index.
124
+ * @param index - the number to validate
125
+ * @returns true if the number is a valid condition index, false otherwise.
126
+ * @public
127
+ */
128
+ export function isValidConditionIndex(index: number): index is ConditionIndex {
129
+ return index >= 0;
130
+ }
131
+
132
+ /**
133
+ * Determines whether a string is a valid condition operator.
134
+ * @param operator - the string to validate
135
+ * @returns true if the string is a valid condition operator, false otherwise.
136
+ * @public
137
+ */
138
+ export function isValidConditionOperator(operator: string): operator is ConditionOperator {
139
+ return allConditionOperators.includes(operator as ConditionOperator);
140
+ }
141
+
142
+ /**
143
+ * Determines whether a string is a valid condition key. A condition key has
144
+ * the format:
145
+ * `<qualifierName>(-<operator>)?-[<value>]@<priority>`
146
+ * where operator is omitted for the default 'matches' operator.
147
+ * @param key - the string to validate
148
+ * @returns `true` if the string is a valid condition key, `false` otherwise.
149
+ * @public
150
+ */
151
+ export function isValidConditionKey(key: string): key is ConditionKey {
152
+ return conditionKey.test(key);
153
+ }
154
+
155
+ /**
156
+ * Determines whether a string is a valid {@link ConditionToken | condition token}.
157
+ * A condition token has the format:
158
+ * `<qualifierName>=<value>` or `<value>`
159
+ * @param token -
160
+ * @returns `true` if the string is a valid condition token, `false` otherwise.
161
+ * @public
162
+ */
163
+ export function isValidConditionToken(token: string): token is ConditionToken {
164
+ /* c8 ignore next 3 - coverage is having a bad day */
165
+ if (token === '') {
166
+ return true;
167
+ }
168
+ return conditionToken.test(token);
169
+ }
170
+
171
+ /**
172
+ * Determines whether a number is a valid condition set index.
173
+ * @param index - the number to validate
174
+ * @returns true if the number is a valid condition set index, false otherwise.
175
+ * @public
176
+ */
177
+ export function isValidConditionSetIndex(index: number): index is ConditionSetIndex {
178
+ return index >= 0;
179
+ }
180
+
181
+ /**
182
+ * Determines whether a string is a valid condition set key.
183
+ * @param key - the string to validate.
184
+ * @returns `true` if the string is a valid condition set key, `false` otherwise.
185
+ * @public
186
+ */
187
+ export function isValidConditionSetKey(key: string): key is ConditionSetKey {
188
+ if (key === '') {
189
+ return true;
190
+ }
191
+ // a condition set key is a `+` separated list of condition keys
192
+ return key.split('+').every(isValidConditionKey);
193
+ }
194
+
195
+ /**
196
+ * Determines whether a string is a valid condition set token.
197
+ * @param token - the string to validate.
198
+ * @returns `true` if the string is a valid condition set token, `false` otherwise.
199
+ * @public
200
+ */
201
+ export function isValidConditionSetToken(token: string): token is ConditionSetToken {
202
+ return token.split(',').every(isValidConditionToken);
203
+ }
204
+
205
+ /**
206
+ * Determines whether a string is a valid condition set hash.
207
+ * @param hash - the string to validate.
208
+ * @returns `true` if the string is a valid condition set hash, `false` otherwise.
209
+ * @public
210
+ */
211
+ export function isValidConditionSetHash(hash: string): hash is ConditionSetHash {
212
+ return conditionSetHash.test(hash);
213
+ }
214
+
215
+ /**
216
+ * Determines whether a string is a valid decision key.
217
+ * @param key - the string to validate
218
+ * @returns `true` if the string is a valid decision key, `false` otherwise.
219
+ * @public
220
+ */
221
+ export function isValidDecisionKey(key: string): key is DecisionKey {
222
+ if (key === '') {
223
+ return true;
224
+ }
225
+ return decisionKey.test(key);
226
+ }
227
+
228
+ /**
229
+ * Determines whether a number is a valid decision index.
230
+ * @param index - the number to validate
231
+ * @returns `true` if the number is a valid decision index, `false` otherwise.
232
+ * @public
233
+ */
234
+ export function isValidDecisionIndex(index: number): index is DecisionIndex {
235
+ return index >= 0;
236
+ }
237
+
238
+ /**
239
+ * Converts a string to a {@link QualifierName} if it is a valid qualifier name.
240
+ * @param name - the string to convert
241
+ * @returns `Success` with the converted {@link QualifierName} if successful, or `Failure` with an
242
+ * error message if not.
243
+ * @public
244
+ */
245
+ export function toQualifierName(name: string): Result<QualifierName> {
246
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
247
+ if (!isValidQualifierName(name)) {
248
+ return fail(`${name}: not a valid qualifier name`);
249
+ }
250
+ return succeed(name);
251
+ }
252
+
253
+ /**
254
+ * Converts a number to a {@link QualifierIndex} if it is a valid qualifier index.
255
+ * @param index - the number to convert
256
+ * @returns `Success` with the converted {@link QualifierIndex} if successful, or `Failure` with an
257
+ * error message if not.
258
+ * @public
259
+ */
260
+ export function toQualifierIndex(index: number): Result<QualifierIndex> {
261
+ /* c8 ignore next 3 - coverage is having a bad day */
262
+ if (!isValidQualifierIndex(index)) {
263
+ return fail(`${index}: not a valid qualifier index`);
264
+ }
265
+ return succeed(index as QualifierIndex);
266
+ }
267
+
268
+ /**
269
+ * Converts a string to a {@link QualifierTypeName} if it is a valid qualifier type name.
270
+ * @param name - the string to convert
271
+ * @returns `Success` with the converted {@link QualifierTypeName} if successful, or `Failure` with an
272
+ * error message if not.
273
+ * @public
274
+ */
275
+ export function toQualifierTypeName(name: string): Result<QualifierTypeName> {
276
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
277
+ if (!isValidQualifierTypeName(name)) {
278
+ return fail(`${name}: not a valid qualifier type name`);
279
+ }
280
+ return succeed(name);
281
+ }
282
+
283
+ /**
284
+ * Converts a number to a {@link QualifierTypeIndex} if it is a valid qualifier type index.
285
+ * @param index - the number to convert
286
+ * @returns `Success` with the converted {@link QualifierTypeIndex} if successful, or `Failure` with an
287
+ * error message if not.
288
+ * @public
289
+ */
290
+ export function toQualifierTypeIndex(index: number): Result<QualifierTypeIndex> {
291
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
292
+ if (!isValidQualifierTypeIndex(index)) {
293
+ return fail(`${index}: not a valid qualifier type index`);
294
+ }
295
+ return succeed(index);
296
+ }
297
+
298
+ /**
299
+ * Converts a number to a {@link QualifierMatchScore | match score} if it is a valid score.
300
+ * @param value - The number to convert.
301
+ * @returns `Success` with the converted score if successful, or `Failure` with an error message
302
+ * if not.
303
+ * @public
304
+ */
305
+ export function toQualifierMatchScore(value: number): Result<QualifierMatchScore> {
306
+ /* c8 ignore next 3 - coverage is having a bad day */
307
+ if (!isValidQualifierMatchScore(value)) {
308
+ return fail(`${value}: not a valid match score`);
309
+ }
310
+ return succeed(value as QualifierMatchScore);
311
+ }
312
+
313
+ /**
314
+ * Converts a number to a {@link ConditionPriority} if it is a valid priority.
315
+ * @param priority - the number to convert
316
+ * @returns `Success` with the converted {@link ConditionPriority} if successful, or `Failure` with an
317
+ * error message if not.
318
+ * @public
319
+ */
320
+ export function toConditionPriority(priority: number): Result<ConditionPriority> {
321
+ /* c8 ignore next 3 - coverage is having a bad day */
322
+ if (!isValidConditionPriority(priority)) {
323
+ return fail(`${priority}: not a valid priority`);
324
+ }
325
+ return succeed(priority);
326
+ }
327
+
328
+ /**
329
+ * Converts a number to a {@link ConditionIndex} if it is a valid condition index.
330
+ * @param index - the number to convert
331
+ * @returns `Success` with the converted {@link ConditionIndex} if successful, or `Failure` with an
332
+ * error message if not.
333
+ * @public
334
+ */
335
+ export function toConditionIndex(index: number): Result<ConditionIndex> {
336
+ /* c8 ignore next 3 - coverage is having a bad day */
337
+ if (!isValidConditionIndex(index)) {
338
+ return fail(`${index}: not a valid condition index`);
339
+ }
340
+ return succeed(index);
341
+ }
342
+
343
+ /**
344
+ * Converts a string to a {@link ConditionOperator} if it is a valid condition operator.
345
+ * @param operator - the string to convert
346
+ * @returns `Success` with the converted {@link ConditionOperator} if successful, or `Failure` with an
347
+ * error message if not.
348
+ * @public
349
+ */
350
+ export function toConditionOperator(operator: string): Result<ConditionOperator> {
351
+ if (!isValidConditionOperator(operator)) {
352
+ return fail(`${operator}: not a valid condition operator`);
353
+ }
354
+ return succeed(operator as ConditionOperator);
355
+ }
356
+
357
+ /**
358
+ * Converts a string to a {@link ConditionKey} if it is a valid condition key.
359
+ * @param key - the string to convert
360
+ * @returns `Success` with the converted {@link ConditionKey} if successful, or `Failure` with an
361
+ * error message if not.
362
+ * @public
363
+ */
364
+ export function toConditionKey(key: string): Result<ConditionKey> {
365
+ /* c8 ignore next 3 - coverage is having a bad day */
366
+ if (!isValidConditionKey(key)) {
367
+ return fail(`${key}: not a valid condition key`);
368
+ }
369
+ return succeed(key);
370
+ }
371
+
372
+ /**
373
+ * Converts a string to a {@link ConditionToken} if it is a valid condition token.
374
+ * @param token - the string to convert
375
+ * @returns `Success` with the converted {@link ConditionToken} if successful, or `Failure` with an
376
+ * error message if not.
377
+ * @public
378
+ */
379
+ export function toConditionToken(token: string): Result<ConditionToken> {
380
+ /* c8 ignore next 3 - coverage is having a bad day */
381
+ if (!isValidConditionToken(token)) {
382
+ return fail(`${token}: not a valid condition token`);
383
+ }
384
+ return succeed(token);
385
+ }
386
+
387
+ /**
388
+ * Converts a number to a {@link ConditionSetIndex} if it is a valid condition set index.
389
+ * @param index - the number to convert
390
+ * @returns `Success` with the converted {@link ConditionSetIndex} if successful, or `Failure` with an
391
+ * error message if not.
392
+ * @public
393
+ */
394
+ export function toConditionSetIndex(index: number): Result<ConditionSetIndex> {
395
+ /* c8 ignore next 3 - coverage is having a bad day */
396
+ if (!isValidConditionSetIndex(index)) {
397
+ return fail(`${index}: not a valid condition set index`);
398
+ }
399
+ return succeed(index);
400
+ }
401
+
402
+ /**
403
+ * Converts a string to a {@link ConditionSetKey} if it is a valid condition set key.
404
+ * @param key - the string to convert
405
+ * @returns `Success` with the converted {@link ConditionSetKey} if successful, or `Failure` with an
406
+ * error message if not.
407
+ * @public
408
+ */
409
+ export function toConditionSetKey(key: string): Result<ConditionSetKey> {
410
+ /* c8 ignore next 3 - coverage is having a bad day */
411
+ if (!isValidConditionSetKey(key)) {
412
+ return fail(`${key}: not a valid condition set key`);
413
+ }
414
+ return succeed(key);
415
+ }
416
+
417
+ /**
418
+ * Converts a string to a {@link ConditionSetToken} if it is a valid condition set token.
419
+ * @param token - the string to convert
420
+ * @returns `Success` with the converted {@link ConditionSetToken} if successful, or `Failure` with an
421
+ * error message if not.
422
+ * @public
423
+ */
424
+ export function toConditionSetToken(token: string): Result<ConditionSetToken> {
425
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
426
+ if (!isValidConditionSetToken(token)) {
427
+ return fail(`${token}: not a valid condition set token`);
428
+ }
429
+ return succeed(token);
430
+ }
431
+
432
+ /**
433
+ * Converts a string to a {@link ConditionSetHash} if it is a valid condition set hash.
434
+ * @param key - the string to convert
435
+ * @returns `Success` with the converted {@link ConditionSetHash} if successful, or `Failure` with an
436
+ * error message if not.
437
+ * @public
438
+ */
439
+ export function toConditionSetHash(hash: string): Result<ConditionSetHash> {
440
+ if (!isValidConditionSetHash(hash)) {
441
+ return fail(`${hash}: not a valid condition set hash`);
442
+ }
443
+ return succeed(hash);
444
+ }
445
+
446
+ /**
447
+ * Converts a number to a {@link DecisionIndex} if it is a valid decision index.
448
+ * @param index - the number to convert
449
+ * @returns `Success` with the converted {@link DecisionIndex} if successful, or `Failure` with an
450
+ * error message if not.
451
+ * @public
452
+ */
453
+ export function toDecisionKey(key: string): Result<DecisionKey> {
454
+ /* c8 ignore next 3 - coverage is having a bad day */
455
+ if (!isValidDecisionKey(key)) {
456
+ return fail(`${key}: not a valid decision key`);
457
+ }
458
+ return succeed(key);
459
+ }
460
+
461
+ /**
462
+ * Converts a number to a {@link DecisionIndex} if it is a valid decision index.
463
+ * @param index - the number to convert
464
+ * @returns `Success` with the converted {@link DecisionIndex} if successful, or `Failure` with an
465
+ * error message if not.
466
+ * @public
467
+ */
468
+ export function toDecisionIndex(index: number): Result<DecisionIndex> {
469
+ /* c8 ignore next 3 - coverage is having a bad day */
470
+ if (!isValidDecisionIndex(index)) {
471
+ return fail(`${index}: not a valid decision index`);
472
+ }
473
+ return succeed(index);
474
+ }
475
+
476
+ /**
477
+ * Determines whether a string is a valid {@link ContextQualifierToken | context qualifier token}.
478
+ * A context qualifier token has the format:
479
+ * `<qualifierName>=<value>` or `<value>`
480
+ * Context qualifier tokens allow broader character set including commas for comma-separated values.
481
+ * @param token - the string to validate
482
+ * @returns `true` if the string is a valid context qualifier token, `false` otherwise.
483
+ * @public
484
+ */
485
+ export function isValidContextQualifierToken(token: string): token is ContextQualifierToken {
486
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
487
+ if (token === '') {
488
+ return true;
489
+ }
490
+ return contextToken.test(token);
491
+ }
492
+
493
+ /**
494
+ * Determines whether a string is a valid context token.
495
+ * Context tokens are pipe-separated lists of context qualifier tokens.
496
+ * @param token - the string to validate.
497
+ * @returns `true` if the string is a valid context token, `false` otherwise.
498
+ * @public
499
+ */
500
+ export function isValidContextToken(token: string): token is ContextToken {
501
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
502
+ if (token === '') {
503
+ return true;
504
+ }
505
+ const parts = token.split('|').map((part) => part.trim());
506
+ return parts.every((part) => part !== '' && isValidContextQualifierToken(part));
507
+ }
508
+
509
+ /**
510
+ * Converts a string to a {@link ContextQualifierToken} if it is a valid context qualifier token.
511
+ * @param token - the string to convert
512
+ * @returns `Success` with the converted {@link ContextQualifierToken} if successful, or `Failure` with an
513
+ * error message if not.
514
+ * @public
515
+ */
516
+ export function toContextQualifierToken(token: string): Result<ContextQualifierToken> {
517
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
518
+ if (!isValidContextQualifierToken(token)) {
519
+ return fail(`${token}: not a valid context qualifier token`);
520
+ }
521
+ return succeed(token);
522
+ }
523
+
524
+ /**
525
+ * Converts a string to a {@link ContextToken} if it is a valid context token.
526
+ * @param token - the string to convert
527
+ * @returns `Success` with the converted {@link ContextToken} if successful, or `Failure` with an
528
+ * error message if not.
529
+ * @public
530
+ */
531
+ export function toContextToken(token: string): Result<ContextToken> {
532
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
533
+ if (!isValidContextToken(token)) {
534
+ return fail(`${token}: not a valid context token`);
535
+ }
536
+ return succeed(token);
537
+ }
538
+
539
+ /**
540
+ * Determines whether a string is a valid {@link QualifierDefaultValueToken | qualifier default value token}.
541
+ * A qualifier default value token has the format:
542
+ * `<qualifierName>=<value>` or `<qualifierName>=` (to remove default)
543
+ * Default values allow broader character set including commas for comma-separated values.
544
+ * @param token - the string to validate
545
+ * @returns `true` if the string is a valid qualifier default value token, `false` otherwise.
546
+ * @public
547
+ */
548
+ export function isValidQualifierDefaultValueToken(token: string): token is QualifierDefaultValueToken {
549
+ return qualifierDefaultValueToken.test(token);
550
+ }
551
+
552
+ /**
553
+ * Determines whether a string is a valid qualifier default values token.
554
+ * Qualifier default values tokens are pipe-separated lists of qualifier default value tokens.
555
+ * @param token - the string to validate.
556
+ * @returns `true` if the string is a valid qualifier default values token, `false` otherwise.
557
+ * @public
558
+ */
559
+ export function isValidQualifierDefaultValuesToken(token: string): token is QualifierDefaultValuesToken {
560
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
561
+ if (token === '') {
562
+ return true;
563
+ }
564
+ return qualifierDefaultValuesToken.test(token);
565
+ }
566
+
567
+ /**
568
+ * Converts a string to a {@link QualifierDefaultValueToken} if it is a valid qualifier default value token.
569
+ * @param token - the string to convert
570
+ * @returns `Success` with the converted {@link QualifierDefaultValueToken} if successful, or `Failure` with an
571
+ * error message if not.
572
+ * @public
573
+ */
574
+ export function toQualifierDefaultValueToken(token: string): Result<QualifierDefaultValueToken> {
575
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
576
+ if (!isValidQualifierDefaultValueToken(token)) {
577
+ return fail(`${token}: not a valid qualifier default value token`);
578
+ }
579
+ return succeed(token);
580
+ }
581
+
582
+ /**
583
+ * Converts a string to a {@link QualifierDefaultValuesToken} if it is a valid qualifier default values token.
584
+ * @param token - the string to convert
585
+ * @returns `Success` with the converted {@link QualifierDefaultValuesToken} if successful, or `Failure` with an
586
+ * error message if not.
587
+ * @public
588
+ */
589
+ export function toQualifierDefaultValuesToken(token: string): Result<QualifierDefaultValuesToken> {
590
+ /* c8 ignore next 3 - functional code path tested but coverage intermittently missed */
591
+ if (!isValidQualifierDefaultValuesToken(token)) {
592
+ return fail(`${token}: not a valid qualifier default values token`);
593
+ }
594
+ return succeed(token);
595
+ }
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Copyright (c) 2025 Erik Fortune
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ * SOFTWARE.
21
+ */
22
+
23
+ export * from './conditions';
24
+ export * from './resources';
25
+
26
+ import * as RegularExpressions from './regularExpressions';
27
+ export { RegularExpressions };