@fgv/ts-res 4.5.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/ts-res.d.ts +4282 -0
  4. package/dist/tsdoc-metadata.json +11 -0
  5. package/lib/index.d.ts +12 -0
  6. package/lib/index.d.ts.map +1 -0
  7. package/lib/index.js +79 -0
  8. package/lib/index.js.map +1 -0
  9. package/lib/packlets/common/conditions.d.ts +148 -0
  10. package/lib/packlets/common/conditions.d.ts.map +1 -0
  11. package/lib/packlets/common/conditions.js +50 -0
  12. package/lib/packlets/common/conditions.js.map +1 -0
  13. package/lib/packlets/common/convert.d.ts +111 -0
  14. package/lib/packlets/common/convert.d.ts.map +1 -0
  15. package/lib/packlets/common/convert.js +173 -0
  16. package/lib/packlets/common/convert.js.map +1 -0
  17. package/lib/packlets/common/helpers/conditions.d.ts +39 -0
  18. package/lib/packlets/common/helpers/conditions.d.ts.map +1 -0
  19. package/lib/packlets/common/helpers/conditions.js +105 -0
  20. package/lib/packlets/common/helpers/conditions.js.map +1 -0
  21. package/lib/packlets/common/helpers/index.d.ts +3 -0
  22. package/lib/packlets/common/helpers/index.d.ts.map +1 -0
  23. package/lib/packlets/common/helpers/index.js +40 -0
  24. package/lib/packlets/common/helpers/index.js.map +1 -0
  25. package/lib/packlets/common/helpers/resources.d.ts +34 -0
  26. package/lib/packlets/common/helpers/resources.d.ts.map +1 -0
  27. package/lib/packlets/common/helpers/resources.js +81 -0
  28. package/lib/packlets/common/helpers/resources.js.map +1 -0
  29. package/lib/packlets/common/index.d.ts +7 -0
  30. package/lib/packlets/common/index.d.ts.map +1 -0
  31. package/lib/packlets/common/index.js +69 -0
  32. package/lib/packlets/common/index.js.map +1 -0
  33. package/lib/packlets/common/resources.d.ts +41 -0
  34. package/lib/packlets/common/resources.d.ts.map +1 -0
  35. package/lib/packlets/common/resources.js +30 -0
  36. package/lib/packlets/common/resources.js.map +1 -0
  37. package/lib/packlets/common/validate/conditions.d.ts +248 -0
  38. package/lib/packlets/common/validate/conditions.d.ts.map +1 -0
  39. package/lib/packlets/common/validate/conditions.js +436 -0
  40. package/lib/packlets/common/validate/conditions.js.map +1 -0
  41. package/lib/packlets/common/validate/index.d.ts +5 -0
  42. package/lib/packlets/common/validate/index.d.ts.map +1 -0
  43. package/lib/packlets/common/validate/index.js +65 -0
  44. package/lib/packlets/common/validate/index.js.map +1 -0
  45. package/lib/packlets/common/validate/regularExpressions.d.ts +39 -0
  46. package/lib/packlets/common/validate/regularExpressions.d.ts.map +1 -0
  47. package/lib/packlets/common/validate/regularExpressions.js +63 -0
  48. package/lib/packlets/common/validate/regularExpressions.js.map +1 -0
  49. package/lib/packlets/common/validate/resources.d.ts +97 -0
  50. package/lib/packlets/common/validate/resources.d.ts.map +1 -0
  51. package/lib/packlets/common/validate/resources.js +171 -0
  52. package/lib/packlets/common/validate/resources.js.map +1 -0
  53. package/lib/packlets/conditions/condition.d.ts +91 -0
  54. package/lib/packlets/conditions/condition.d.ts.map +1 -0
  55. package/lib/packlets/conditions/condition.js +146 -0
  56. package/lib/packlets/conditions/condition.js.map +1 -0
  57. package/lib/packlets/conditions/conditionCollector.d.ts +54 -0
  58. package/lib/packlets/conditions/conditionCollector.d.ts.map +1 -0
  59. package/lib/packlets/conditions/conditionCollector.js +72 -0
  60. package/lib/packlets/conditions/conditionCollector.js.map +1 -0
  61. package/lib/packlets/conditions/conditionDecls.d.ts +26 -0
  62. package/lib/packlets/conditions/conditionDecls.d.ts.map +1 -0
  63. package/lib/packlets/conditions/conditionDecls.js +24 -0
  64. package/lib/packlets/conditions/conditionDecls.js.map +1 -0
  65. package/lib/packlets/conditions/conditionSet.d.ts +99 -0
  66. package/lib/packlets/conditions/conditionSet.d.ts.map +1 -0
  67. package/lib/packlets/conditions/conditionSet.js +164 -0
  68. package/lib/packlets/conditions/conditionSet.js.map +1 -0
  69. package/lib/packlets/conditions/conditionSetCollector.d.ts +65 -0
  70. package/lib/packlets/conditions/conditionSetCollector.d.ts.map +1 -0
  71. package/lib/packlets/conditions/conditionSetCollector.js +90 -0
  72. package/lib/packlets/conditions/conditionSetCollector.js.map +1 -0
  73. package/lib/packlets/conditions/conditionSetDecls.d.ts +18 -0
  74. package/lib/packlets/conditions/conditionSetDecls.d.ts.map +1 -0
  75. package/lib/packlets/conditions/conditionSetDecls.js +24 -0
  76. package/lib/packlets/conditions/conditionSetDecls.js.map +1 -0
  77. package/lib/packlets/conditions/conditionToken.d.ts +86 -0
  78. package/lib/packlets/conditions/conditionToken.d.ts.map +1 -0
  79. package/lib/packlets/conditions/conditionToken.js +150 -0
  80. package/lib/packlets/conditions/conditionToken.js.map +1 -0
  81. package/lib/packlets/conditions/convert/conditionSetDecls.d.ts +24 -0
  82. package/lib/packlets/conditions/convert/conditionSetDecls.d.ts.map +1 -0
  83. package/lib/packlets/conditions/convert/conditionSetDecls.js +54 -0
  84. package/lib/packlets/conditions/convert/conditionSetDecls.js.map +1 -0
  85. package/lib/packlets/conditions/convert/decls.d.ts +24 -0
  86. package/lib/packlets/conditions/convert/decls.d.ts.map +1 -0
  87. package/lib/packlets/conditions/convert/decls.js +111 -0
  88. package/lib/packlets/conditions/convert/decls.js.map +1 -0
  89. package/lib/packlets/conditions/convert/index.d.ts +3 -0
  90. package/lib/packlets/conditions/convert/index.d.ts.map +1 -0
  91. package/lib/packlets/conditions/convert/index.js +40 -0
  92. package/lib/packlets/conditions/convert/index.js.map +1 -0
  93. package/lib/packlets/conditions/index.d.ts +10 -0
  94. package/lib/packlets/conditions/index.d.ts.map +1 -0
  95. package/lib/packlets/conditions/index.js +70 -0
  96. package/lib/packlets/conditions/index.js.map +1 -0
  97. package/lib/packlets/decisions/abstractDecision.d.ts +39 -0
  98. package/lib/packlets/decisions/abstractDecision.d.ts.map +1 -0
  99. package/lib/packlets/decisions/abstractDecision.js +63 -0
  100. package/lib/packlets/decisions/abstractDecision.js.map +1 -0
  101. package/lib/packlets/decisions/abstractDecisionCollector.d.ts +59 -0
  102. package/lib/packlets/decisions/abstractDecisionCollector.d.ts.map +1 -0
  103. package/lib/packlets/decisions/abstractDecisionCollector.js +92 -0
  104. package/lib/packlets/decisions/abstractDecisionCollector.js.map +1 -0
  105. package/lib/packlets/decisions/candidate.d.ts +58 -0
  106. package/lib/packlets/decisions/candidate.d.ts.map +1 -0
  107. package/lib/packlets/decisions/candidate.js +80 -0
  108. package/lib/packlets/decisions/candidate.js.map +1 -0
  109. package/lib/packlets/decisions/common.d.ts +15 -0
  110. package/lib/packlets/decisions/common.d.ts.map +1 -0
  111. package/lib/packlets/decisions/common.js +24 -0
  112. package/lib/packlets/decisions/common.js.map +1 -0
  113. package/lib/packlets/decisions/concreteDecision.d.ts +74 -0
  114. package/lib/packlets/decisions/concreteDecision.d.ts.map +1 -0
  115. package/lib/packlets/decisions/concreteDecision.js +114 -0
  116. package/lib/packlets/decisions/concreteDecision.js.map +1 -0
  117. package/lib/packlets/decisions/decision.d.ts +91 -0
  118. package/lib/packlets/decisions/decision.d.ts.map +1 -0
  119. package/lib/packlets/decisions/decision.js +126 -0
  120. package/lib/packlets/decisions/decision.js.map +1 -0
  121. package/lib/packlets/decisions/index.d.ts +7 -0
  122. package/lib/packlets/decisions/index.d.ts.map +1 -0
  123. package/lib/packlets/decisions/index.js +44 -0
  124. package/lib/packlets/decisions/index.js.map +1 -0
  125. package/lib/packlets/import/fsItem.d.ts +99 -0
  126. package/lib/packlets/import/fsItem.d.ts.map +1 -0
  127. package/lib/packlets/import/fsItem.js +174 -0
  128. package/lib/packlets/import/fsItem.js.map +1 -0
  129. package/lib/packlets/import/importContext.d.ts +85 -0
  130. package/lib/packlets/import/importContext.d.ts.map +1 -0
  131. package/lib/packlets/import/importContext.js +94 -0
  132. package/lib/packlets/import/importContext.js.map +1 -0
  133. package/lib/packlets/import/importManager.d.ts +93 -0
  134. package/lib/packlets/import/importManager.d.ts.map +1 -0
  135. package/lib/packlets/import/importManager.js +133 -0
  136. package/lib/packlets/import/importManager.js.map +1 -0
  137. package/lib/packlets/import/importable.d.ts +71 -0
  138. package/lib/packlets/import/importable.d.ts.map +1 -0
  139. package/lib/packlets/import/importable.js +35 -0
  140. package/lib/packlets/import/importable.js.map +1 -0
  141. package/lib/packlets/import/importers/collectionImporter.d.ts +60 -0
  142. package/lib/packlets/import/importers/collectionImporter.d.ts.map +1 -0
  143. package/lib/packlets/import/importers/collectionImporter.js +146 -0
  144. package/lib/packlets/import/importers/collectionImporter.js.map +1 -0
  145. package/lib/packlets/import/importers/fsItemImporter.d.ts +49 -0
  146. package/lib/packlets/import/importers/fsItemImporter.d.ts.map +1 -0
  147. package/lib/packlets/import/importers/fsItemImporter.js +120 -0
  148. package/lib/packlets/import/importers/fsItemImporter.js.map +1 -0
  149. package/lib/packlets/import/importers/importer.d.ts +31 -0
  150. package/lib/packlets/import/importers/importer.d.ts.map +1 -0
  151. package/lib/packlets/import/importers/importer.js +24 -0
  152. package/lib/packlets/import/importers/importer.js.map +1 -0
  153. package/lib/packlets/import/importers/index.d.ts +6 -0
  154. package/lib/packlets/import/importers/index.d.ts.map +1 -0
  155. package/lib/packlets/import/importers/index.js +43 -0
  156. package/lib/packlets/import/importers/index.js.map +1 -0
  157. package/lib/packlets/import/importers/jsonImporter.d.ts +32 -0
  158. package/lib/packlets/import/importers/jsonImporter.d.ts.map +1 -0
  159. package/lib/packlets/import/importers/jsonImporter.js +140 -0
  160. package/lib/packlets/import/importers/jsonImporter.js.map +1 -0
  161. package/lib/packlets/import/importers/pathImporter.d.ts +61 -0
  162. package/lib/packlets/import/importers/pathImporter.d.ts.map +1 -0
  163. package/lib/packlets/import/importers/pathImporter.js +87 -0
  164. package/lib/packlets/import/importers/pathImporter.js.map +1 -0
  165. package/lib/packlets/import/index.d.ts +7 -0
  166. package/lib/packlets/import/index.d.ts.map +1 -0
  167. package/lib/packlets/import/index.js +67 -0
  168. package/lib/packlets/import/index.js.map +1 -0
  169. package/lib/packlets/qualifier-types/convert.d.ts +19 -0
  170. package/lib/packlets/qualifier-types/convert.d.ts.map +1 -0
  171. package/lib/packlets/qualifier-types/convert.js +45 -0
  172. package/lib/packlets/qualifier-types/convert.js.map +1 -0
  173. package/lib/packlets/qualifier-types/index.d.ts +8 -0
  174. package/lib/packlets/qualifier-types/index.d.ts.map +1 -0
  175. package/lib/packlets/qualifier-types/index.js +68 -0
  176. package/lib/packlets/qualifier-types/index.js.map +1 -0
  177. package/lib/packlets/qualifier-types/languageQualifierType.d.ts +56 -0
  178. package/lib/packlets/qualifier-types/languageQualifierType.d.ts.map +1 -0
  179. package/lib/packlets/qualifier-types/languageQualifierType.js +87 -0
  180. package/lib/packlets/qualifier-types/languageQualifierType.js.map +1 -0
  181. package/lib/packlets/qualifier-types/literalQualifierType.d.ts +92 -0
  182. package/lib/packlets/qualifier-types/literalQualifierType.d.ts.map +1 -0
  183. package/lib/packlets/qualifier-types/literalQualifierType.js +114 -0
  184. package/lib/packlets/qualifier-types/literalQualifierType.js.map +1 -0
  185. package/lib/packlets/qualifier-types/qualifierType.d.ts +184 -0
  186. package/lib/packlets/qualifier-types/qualifierType.d.ts.map +1 -0
  187. package/lib/packlets/qualifier-types/qualifierType.js +173 -0
  188. package/lib/packlets/qualifier-types/qualifierType.js.map +1 -0
  189. package/lib/packlets/qualifier-types/qualifierTypeCollector.d.ts +40 -0
  190. package/lib/packlets/qualifier-types/qualifierTypeCollector.d.ts.map +1 -0
  191. package/lib/packlets/qualifier-types/qualifierTypeCollector.js +102 -0
  192. package/lib/packlets/qualifier-types/qualifierTypeCollector.js.map +1 -0
  193. package/lib/packlets/qualifier-types/territoryQualifierType.d.ts +74 -0
  194. package/lib/packlets/qualifier-types/territoryQualifierType.d.ts.map +1 -0
  195. package/lib/packlets/qualifier-types/territoryQualifierType.js +113 -0
  196. package/lib/packlets/qualifier-types/territoryQualifierType.js.map +1 -0
  197. package/lib/packlets/qualifiers/convert/decls.d.ts +23 -0
  198. package/lib/packlets/qualifiers/convert/decls.d.ts.map +1 -0
  199. package/lib/packlets/qualifiers/convert/decls.js +71 -0
  200. package/lib/packlets/qualifiers/convert/decls.js.map +1 -0
  201. package/lib/packlets/qualifiers/convert/index.d.ts +3 -0
  202. package/lib/packlets/qualifiers/convert/index.d.ts.map +1 -0
  203. package/lib/packlets/qualifiers/convert/index.js +40 -0
  204. package/lib/packlets/qualifiers/convert/index.js.map +1 -0
  205. package/lib/packlets/qualifiers/convert/qualifier.d.ts +17 -0
  206. package/lib/packlets/qualifiers/convert/qualifier.d.ts.map +1 -0
  207. package/lib/packlets/qualifiers/convert/qualifier.js +43 -0
  208. package/lib/packlets/qualifiers/convert/qualifier.js.map +1 -0
  209. package/lib/packlets/qualifiers/index.d.ts +6 -0
  210. package/lib/packlets/qualifiers/index.d.ts.map +1 -0
  211. package/lib/packlets/qualifiers/index.js +66 -0
  212. package/lib/packlets/qualifiers/index.js.map +1 -0
  213. package/lib/packlets/qualifiers/qualifier.d.ts +68 -0
  214. package/lib/packlets/qualifiers/qualifier.d.ts.map +1 -0
  215. package/lib/packlets/qualifiers/qualifier.js +87 -0
  216. package/lib/packlets/qualifiers/qualifier.js.map +1 -0
  217. package/lib/packlets/qualifiers/qualifierCollector.d.ts +90 -0
  218. package/lib/packlets/qualifiers/qualifierCollector.d.ts.map +1 -0
  219. package/lib/packlets/qualifiers/qualifierCollector.js +157 -0
  220. package/lib/packlets/qualifiers/qualifierCollector.js.map +1 -0
  221. package/lib/packlets/qualifiers/qualifierDecl.d.ts +46 -0
  222. package/lib/packlets/qualifiers/qualifierDecl.d.ts.map +1 -0
  223. package/lib/packlets/qualifiers/qualifierDecl.js +24 -0
  224. package/lib/packlets/qualifiers/qualifierDecl.js.map +1 -0
  225. package/lib/packlets/resource-json/convert.d.ts +54 -0
  226. package/lib/packlets/resource-json/convert.d.ts.map +1 -0
  227. package/lib/packlets/resource-json/convert.js +139 -0
  228. package/lib/packlets/resource-json/convert.js.map +1 -0
  229. package/lib/packlets/resource-json/helpers.d.ts +41 -0
  230. package/lib/packlets/resource-json/helpers.d.ts.map +1 -0
  231. package/lib/packlets/resource-json/helpers.js +96 -0
  232. package/lib/packlets/resource-json/helpers.js.map +1 -0
  233. package/lib/packlets/resource-json/index.d.ts +9 -0
  234. package/lib/packlets/resource-json/index.d.ts.map +1 -0
  235. package/lib/packlets/resource-json/index.js +72 -0
  236. package/lib/packlets/resource-json/index.js.map +1 -0
  237. package/lib/packlets/resource-json/json.d.ts +182 -0
  238. package/lib/packlets/resource-json/json.d.ts.map +1 -0
  239. package/lib/packlets/resource-json/json.js +24 -0
  240. package/lib/packlets/resource-json/json.js.map +1 -0
  241. package/lib/packlets/resource-json/normalized.d.ts +123 -0
  242. package/lib/packlets/resource-json/normalized.d.ts.map +1 -0
  243. package/lib/packlets/resource-json/normalized.js +24 -0
  244. package/lib/packlets/resource-json/normalized.js.map +1 -0
  245. package/lib/packlets/resource-json/resourceDeclCollection.d.ts +39 -0
  246. package/lib/packlets/resource-json/resourceDeclCollection.d.ts.map +1 -0
  247. package/lib/packlets/resource-json/resourceDeclCollection.js +121 -0
  248. package/lib/packlets/resource-json/resourceDeclCollection.js.map +1 -0
  249. package/lib/packlets/resource-json/resourceDeclContainer.d.ts +11 -0
  250. package/lib/packlets/resource-json/resourceDeclContainer.d.ts.map +1 -0
  251. package/lib/packlets/resource-json/resourceDeclContainer.js +24 -0
  252. package/lib/packlets/resource-json/resourceDeclContainer.js.map +1 -0
  253. package/lib/packlets/resource-json/resourceDeclTree.d.ts +39 -0
  254. package/lib/packlets/resource-json/resourceDeclTree.d.ts.map +1 -0
  255. package/lib/packlets/resource-json/resourceDeclTree.js +122 -0
  256. package/lib/packlets/resource-json/resourceDeclTree.js.map +1 -0
  257. package/lib/packlets/resource-types/index.d.ts +4 -0
  258. package/lib/packlets/resource-types/index.d.ts.map +1 -0
  259. package/lib/packlets/resource-types/index.js +41 -0
  260. package/lib/packlets/resource-types/index.js.map +1 -0
  261. package/lib/packlets/resource-types/jsonResourceType.d.ts +65 -0
  262. package/lib/packlets/resource-types/jsonResourceType.d.ts.map +1 -0
  263. package/lib/packlets/resource-types/jsonResourceType.js +63 -0
  264. package/lib/packlets/resource-types/jsonResourceType.js.map +1 -0
  265. package/lib/packlets/resource-types/resourceType.d.ts +87 -0
  266. package/lib/packlets/resource-types/resourceType.d.ts.map +1 -0
  267. package/lib/packlets/resource-types/resourceType.js +62 -0
  268. package/lib/packlets/resource-types/resourceType.js.map +1 -0
  269. package/lib/packlets/resource-types/resourceTypeCollector.d.ts +30 -0
  270. package/lib/packlets/resource-types/resourceTypeCollector.d.ts.map +1 -0
  271. package/lib/packlets/resource-types/resourceTypeCollector.js +65 -0
  272. package/lib/packlets/resource-types/resourceTypeCollector.js.map +1 -0
  273. package/lib/packlets/resources/index.d.ts +5 -0
  274. package/lib/packlets/resources/index.d.ts.map +1 -0
  275. package/lib/packlets/resources/index.js +42 -0
  276. package/lib/packlets/resources/index.js.map +1 -0
  277. package/lib/packlets/resources/resource.d.ts +75 -0
  278. package/lib/packlets/resources/resource.d.ts.map +1 -0
  279. package/lib/packlets/resources/resource.js +109 -0
  280. package/lib/packlets/resources/resource.js.map +1 -0
  281. package/lib/packlets/resources/resourceBuilder.d.ts +112 -0
  282. package/lib/packlets/resources/resourceBuilder.d.ts.map +1 -0
  283. package/lib/packlets/resources/resourceBuilder.js +162 -0
  284. package/lib/packlets/resources/resourceBuilder.js.map +1 -0
  285. package/lib/packlets/resources/resourceCandidate.d.ts +102 -0
  286. package/lib/packlets/resources/resourceCandidate.d.ts.map +1 -0
  287. package/lib/packlets/resources/resourceCandidate.js +180 -0
  288. package/lib/packlets/resources/resourceCandidate.js.map +1 -0
  289. package/lib/packlets/resources/resourceManager.d.ts +104 -0
  290. package/lib/packlets/resources/resourceManager.d.ts.map +1 -0
  291. package/lib/packlets/resources/resourceManager.js +193 -0
  292. package/lib/packlets/resources/resourceManager.js.map +1 -0
  293. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../../../src/packlets/common/validate/conditions.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (c) 2025 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { Result, fail, succeed } from '@fgv/ts-utils';\nimport {\n ConditionPriority,\n QualifierName,\n QualifierTypeName,\n QualifierIndex,\n QualifierTypeIndex,\n ConditionIndex,\n ConditionSetIndex,\n QualifierMatchScore,\n ConditionKey,\n ConditionSetKey,\n DecisionKey,\n DecisionIndex,\n ConditionSetHash,\n NoMatch,\n PerfectMatch,\n MinConditionPriority,\n MaxConditionPriority,\n ConditionOperator,\n allConditionOperators,\n ConditionToken,\n ConditionSetToken\n} from '../conditions';\nimport {\n conditionKey,\n conditionSetHash,\n conditionToken,\n decisionKey,\n identifier\n} from './regularExpressions';\n\n/**\n * Determines whether a string is a valid qualifier name.\n * @param name - the string to validate\n * @returns true if the string is a valid qualifier name, false otherwise.\n * @public\n */\nexport function isValidQualifierName(name: string): name is QualifierName {\n return identifier.test(name);\n}\n\n/***\n * Determines whether a string is a valid qualifier type name.\n * @param name - the string to validate\n * @returns true if the string is a valid qualifier type name, false otherwise.\n * @public\n */\nexport function isValidQualifierTypeName(name: string): name is QualifierTypeName {\n return identifier.test(name);\n}\n\n/**\n * Determines whether a number is a valid priority.\n * @param priority - the number to validate\n * @returns true if the number is a valid priority, false otherwise.\n * @public\n */\nexport function isValidConditionPriority(priority: number): priority is ConditionPriority {\n return priority >= MinConditionPriority && priority <= MaxConditionPriority;\n}\n\n/**\n * Determines whether a number is a valid qualifier index.\n * @param index - the number to validate\n * @returns true if the number is a valid qualifier index, false otherwise.\n * @public\n */\nexport function isValidQualifierIndex(index: number): index is QualifierIndex {\n return index >= 0;\n}\n\n/**\n * Determines whether a number is a valid qualifier type index.\n * @param index - the number to validate\n * @returns true if the number is a valid qualifier type index, false otherwise.\n * @public\n */\nexport function isValidQualifierTypeIndex(index: number): index is QualifierTypeIndex {\n return index >= 0;\n}\n\n/**\n * Determines whether a supplied value is a valid {@link QualifierMatchScore | match score}.\n * @param value - The value to validate.\n * @returns - `true` if the value is a valid match score, `false` otherwise.\n * @public\n */\nexport function isValidQualifierMatchScore(value: number): value is QualifierMatchScore {\n return value >= NoMatch && value <= PerfectMatch;\n}\n\n/**\n * Determines whether a number is a valid condition index.\n * @param index - the number to validate\n * @returns true if the number is a valid condition index, false otherwise.\n * @public\n */\nexport function isValidConditionIndex(index: number): index is ConditionIndex {\n return index >= 0;\n}\n\n/**\n * Determines whether a string is a valid condition operator.\n * @param operator - the string to validate\n * @returns true if the string is a valid condition operator, false otherwise.\n * @public\n */\nexport function isValidConditionOperator(operator: string): operator is ConditionOperator {\n return allConditionOperators.includes(operator as ConditionOperator);\n}\n\n/**\n * Determines whether a string is a valid condition key. A condition key has\n * the format:\n * `<qualifierName>(-<operator>)?-[<value>]@<priority>`\n * where operator is omitted for the default 'matches' operator.\n * @param key - the string to validate\n * @returns `true` if the string is a valid condition key, `false` otherwise.\n * @public\n */\nexport function isValidConditionKey(key: string): key is ConditionKey {\n return conditionKey.test(key);\n}\n\n/**\n * Determines whether a string is a valid {@link ConditionToken | condition token}.\n * A condition token has the format:\n * `<qualifierName>=<value>` or `<value>`\n * @param token -\n * @returns `true` if the string is a valid condition token, `false` otherwise.\n * @public\n */\nexport function isValidConditionToken(token: string): token is ConditionToken {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (token === '') {\n return true;\n }\n return conditionToken.test(token);\n}\n\n/**\n * Determines whether a number is a valid condition set index.\n * @param index - the number to validate\n * @returns true if the number is a valid condition set index, false otherwise.\n * @public\n */\nexport function isValidConditionSetIndex(index: number): index is ConditionSetIndex {\n return index >= 0;\n}\n\n/**\n * Determines whether a string is a valid condition set key.\n * @param key - the string to validate.\n * @returns `true` if the string is a valid condition set key, `false` otherwise.\n * @public\n */\nexport function isValidConditionSetKey(key: string): key is ConditionSetKey {\n if (key === '') {\n return true;\n }\n // a condition set key is a `+` separated list of condition keys\n return key.split('+').every(isValidConditionKey);\n}\n\n/**\n * Determines whether a string is a valid condition set token.\n * @param token - the string to validate.\n * @returns `true` if the string is a valid condition set token, `false` otherwise.\n * @public\n */\nexport function isValidConditionSetToken(token: string): token is ConditionSetToken {\n return token.split(',').every(isValidConditionToken);\n}\n\n/**\n * Determines whether a string is a valid condition set hash.\n * @param hash - the string to validate.\n * @returns `true` if the string is a valid condition set hash, `false` otherwise.\n * @public\n */\nexport function isValidConditionSetHash(hash: string): hash is ConditionSetHash {\n return conditionSetHash.test(hash);\n}\n\n/**\n * Determines whether a string is a valid decision key.\n * @param key - the string to validate\n * @returns `true` if the string is a valid decision key, `false` otherwise.\n * @public\n */\nexport function isValidDecisionKey(key: string): key is DecisionKey {\n if (key === '') {\n return true;\n }\n return decisionKey.test(key);\n}\n\n/**\n * Determines whether a number is a valid decision index.\n * @param index - the number to validate\n * @returns `true` if the number is a valid decision index, `false` otherwise.\n * @public\n */\nexport function isValidDecisionIndex(index: number): index is DecisionIndex {\n return index >= 0;\n}\n\n/**\n * Converts a string to a {@link QualifierName} if it is a valid qualifier name.\n * @param name - the string to convert\n * @returns `Success` with the converted {@link QualifierName} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toQualifierName(name: string): Result<QualifierName> {\n if (!isValidQualifierName(name)) {\n return fail(`${name}: not a valid qualifier name`);\n }\n return succeed(name);\n}\n\n/**\n * Converts a number to a {@link QualifierIndex} if it is a valid qualifier index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link QualifierIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toQualifierIndex(index: number): Result<QualifierIndex> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidQualifierIndex(index)) {\n return fail(`${index}: not a valid qualifier index`);\n }\n return succeed(index as QualifierIndex);\n}\n\n/**\n * Converts a string to a {@link QualifierTypeName} if it is a valid qualifier type name.\n * @param name - the string to convert\n * @returns `Success` with the converted {@link QualifierTypeName} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toQualifierTypeName(name: string): Result<QualifierTypeName> {\n if (!isValidQualifierTypeName(name)) {\n return fail(`${name}: not a valid qualifier type name`);\n }\n return succeed(name);\n}\n\n/**\n * Converts a number to a {@link QualifierTypeIndex} if it is a valid qualifier type index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link QualifierTypeIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toQualifierTypeIndex(index: number): Result<QualifierTypeIndex> {\n if (!isValidQualifierTypeIndex(index)) {\n return fail(`${index}: not a valid qualifier type index`);\n }\n return succeed(index);\n}\n\n/**\n * Converts a number to a {@link QualifierMatchScore | match score} if it is a valid score.\n * @param value - The number to convert.\n * @returns `Success` with the converted score if successful, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toQualifierMatchScore(value: number): Result<QualifierMatchScore> {\n if (!isValidQualifierMatchScore(value)) {\n return fail(`${value}: not a valid match score`);\n }\n return succeed(value as QualifierMatchScore);\n}\n\n/**\n * Converts a number to a {@link ConditionPriority} if it is a valid priority.\n * @param priority - the number to convert\n * @returns `Success` with the converted {@link ConditionPriority} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionPriority(priority: number): Result<ConditionPriority> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionPriority(priority)) {\n return fail(`${priority}: not a valid priority`);\n }\n return succeed(priority);\n}\n\n/**\n * Converts a number to a {@link ConditionIndex} if it is a valid condition index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link ConditionIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionIndex(index: number): Result<ConditionIndex> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionIndex(index)) {\n return fail(`${index}: not a valid condition index`);\n }\n return succeed(index);\n}\n\n/**\n * Converts a string to a {@link ConditionOperator} if it is a valid condition operator.\n * @param operator - the string to convert\n * @returns `Success` with the converted {@link ConditionOperator} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionOperator(operator: string): Result<ConditionOperator> {\n if (!isValidConditionOperator(operator)) {\n return fail(`${operator}: not a valid condition operator`);\n }\n return succeed(operator as ConditionOperator);\n}\n\n/**\n * Converts a string to a {@link ConditionKey} if it is a valid condition key.\n * @param key - the string to convert\n * @returns `Success` with the converted {@link ConditionKey} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionKey(key: string): Result<ConditionKey> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionKey(key)) {\n return fail(`${key}: not a valid condition key`);\n }\n return succeed(key);\n}\n\n/**\n * Converts a string to a {@link ConditionToken} if it is a valid condition token.\n * @param token - the string to convert\n * @returns `Success` with the converted {@link ConditionToken} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionToken(token: string): Result<ConditionToken> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionToken(token)) {\n return fail(`${token}: not a valid condition token`);\n }\n return succeed(token);\n}\n\n/**\n * Converts a number to a {@link ConditionSetIndex} if it is a valid condition set index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link ConditionSetIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionSetIndex(index: number): Result<ConditionSetIndex> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionSetIndex(index)) {\n return fail(`${index}: not a valid condition set index`);\n }\n return succeed(index);\n}\n\n/**\n * Converts a string to a {@link ConditionSetKey} if it is a valid condition set key.\n * @param key - the string to convert\n * @returns `Success` with the converted {@link ConditionSetKey} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionSetKey(key: string): Result<ConditionSetKey> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidConditionSetKey(key)) {\n return fail(`${key}: not a valid condition set key`);\n }\n return succeed(key);\n}\n\n/**\n * Converts a string to a {@link ConditionSetToken} if it is a valid condition set token.\n * @param token - the string to convert\n * @returns `Success` with the converted {@link ConditionSetToken} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionSetToken(token: string): Result<ConditionSetToken> {\n if (!isValidConditionSetToken(token)) {\n return fail(`${token}: not a valid condition set token`);\n }\n return succeed(token);\n}\n\n/**\n * Converts a string to a {@link ConditionSetHash} if it is a valid condition set hash.\n * @param key - the string to convert\n * @returns `Success` with the converted {@link ConditionSetHash} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toConditionSetHash(hash: string): Result<ConditionSetHash> {\n if (!isValidConditionSetHash(hash)) {\n return fail(`${hash}: not a valid condition set hash`);\n }\n return succeed(hash);\n}\n\n/**\n * Converts a number to a {@link DecisionIndex} if it is a valid decision index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link DecisionIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toDecisionKey(key: string): Result<DecisionKey> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidDecisionKey(key)) {\n return fail(`${key}: not a valid decision key`);\n }\n return succeed(key);\n}\n\n/**\n * Converts a number to a {@link DecisionIndex} if it is a valid decision index.\n * @param index - the number to convert\n * @returns `Success` with the converted {@link DecisionIndex} if successful, or `Failure` with an\n * error message if not.\n * @public\n */\nexport function toDecisionIndex(index: number): Result<DecisionIndex> {\n /* c8 ignore next 3 - coverage is having a bad day */\n if (!isValidDecisionIndex(index)) {\n return fail(`${index}: not a valid decision index`);\n }\n return succeed(index);\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export * from './conditions';
2
+ export * from './resources';
3
+ import * as RegularExpressions from './regularExpressions';
4
+ export { RegularExpressions };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/packlets/common/validate/index.ts"],"names":[],"mappings":"AAsBA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
40
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
41
+ };
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ Object.defineProperty(exports, "__esModule", { value: true });
60
+ exports.RegularExpressions = void 0;
61
+ __exportStar(require("./conditions"), exports);
62
+ __exportStar(require("./resources"), exports);
63
+ const RegularExpressions = __importStar(require("./regularExpressions"));
64
+ exports.RegularExpressions = RegularExpressions;
65
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/packlets/common/validate/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,8CAA4B;AAE5B,yEAA2D;AAClD,gDAAkB","sourcesContent":["/*\n * Copyright (c) 2025 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport * from './conditions';\nexport * from './resources';\n\nimport * as RegularExpressions from './regularExpressions';\nexport { RegularExpressions };\n"]}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare const identifier: RegExp;
5
+ /**
6
+ * @internal
7
+ */
8
+ export declare const segmentedIdentifier: RegExp;
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const identifierList: RegExp;
13
+ /**
14
+ * The format of a {@link ConditionKey | condition key} is:
15
+ * <qualifierName>-[<value>][\@<priority>](<scoreAsDefault>) where operator is `matches`, or
16
+ * <qualifierName>-<operator>-[<value>][\@<priority>](<scoreAsDefault>)
17
+ * @internal
18
+ */
19
+ export declare const conditionKey: RegExp;
20
+ /**
21
+ * A {@link ConditionToken | condition token} is a comma-separated list of one or more
22
+ * condition specifiers, where a condition specifier has either the form
23
+ * `<qualifierName>=<value>` or `<value>`.
24
+ * @internal
25
+ */
26
+ export declare const conditionToken: RegExp;
27
+ /**
28
+ * @internal
29
+ */
30
+ export declare const conditionSetHash: RegExp;
31
+ /**
32
+ * @internal
33
+ */
34
+ export declare const decisionKey: RegExp;
35
+ /**
36
+ * @internal
37
+ */
38
+ export declare const territoryCode: RegExp;
39
+ //# sourceMappingURL=regularExpressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regularExpressions.d.ts","sourceRoot":"","sources":["../../../../src/packlets/common/validate/regularExpressions.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAAqC,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAkE,CAAC;AAErG;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAiE,CAAC;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,MAC+D,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAA0D,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAqE,CAAC;AAEhG;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAwB,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.territoryCode = exports.decisionKey = exports.conditionSetHash = exports.conditionToken = exports.conditionKey = exports.identifierList = exports.segmentedIdentifier = exports.identifier = void 0;
25
+ /**
26
+ * @internal
27
+ */
28
+ exports.identifier = /^[a-zA-Z_][a-zA-Z0-9_\-]*$/;
29
+ /**
30
+ * @internal
31
+ */
32
+ exports.segmentedIdentifier = /^[a-zA-Z_][a-zA-Z0-9_\-]*(\.[a-zA-Z_][a-zA-Z0-9_\-]*)*$/;
33
+ /**
34
+ * @internal
35
+ */
36
+ exports.identifierList = /^[a-zA-Z_][a-zA-Z0-9_\-]*(,[a-zA-Z_][a-zA-Z0-9_\-]*)*$/;
37
+ /**
38
+ * The format of a {@link ConditionKey | condition key} is:
39
+ * <qualifierName>-[<value>][\@<priority>](<scoreAsDefault>) where operator is `matches`, or
40
+ * <qualifierName>-<operator>-[<value>][\@<priority>](<scoreAsDefault>)
41
+ * @internal
42
+ */
43
+ exports.conditionKey = /^[a-zA-Z_][a-zA-Z0-9_\-]*(-matches)?-\[.*\](?:@[0-9]{1,4})?(?:\([01](?:\.[0-9]+)?\))?$/;
44
+ /**
45
+ * A {@link ConditionToken | condition token} is a comma-separated list of one or more
46
+ * condition specifiers, where a condition specifier has either the form
47
+ * `<qualifierName>=<value>` or `<value>`.
48
+ * @internal
49
+ */
50
+ exports.conditionToken = /^[a-zA-Z_][a-zA-Z0-9_\-]*(?:=[a-zA-Z0-9_\-]+)?$/;
51
+ /**
52
+ * @internal
53
+ */
54
+ exports.conditionSetHash = /^[a-zA-Z0-9]{8}$/;
55
+ /**
56
+ * @internal
57
+ */
58
+ exports.decisionKey = /^[a-zA-Z0-9]{8}(?:\+[a-zA-Z0-9]{8})*(?:\|[a-zA-Z0-9]{8})?$/;
59
+ /**
60
+ * @internal
61
+ */
62
+ exports.territoryCode = /^[a-zA-Z]{2}$/;
63
+ //# sourceMappingURL=regularExpressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regularExpressions.js","sourceRoot":"","sources":["../../../../src/packlets/common/validate/regularExpressions.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH;;GAEG;AACU,QAAA,UAAU,GAAW,4BAA4B,CAAC;AAE/D;;GAEG;AACU,QAAA,mBAAmB,GAAW,yDAAyD,CAAC;AAErG;;GAEG;AACU,QAAA,cAAc,GAAW,wDAAwD,CAAC;AAE/F;;;;;GAKG;AACU,QAAA,YAAY,GACvB,wFAAwF,CAAC;AAE3F;;;;;GAKG;AACU,QAAA,cAAc,GAAW,iDAAiD,CAAC;AAExF;;GAEG;AACU,QAAA,gBAAgB,GAAW,kBAAkB,CAAC;AAE3D;;GAEG;AACU,QAAA,WAAW,GAAW,4DAA4D,CAAC;AAEhG;;GAEG;AACU,QAAA,aAAa,GAAW,eAAe,CAAC","sourcesContent":["/*\n * Copyright (c) 2025 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n/**\n * @internal\n */\nexport const identifier: RegExp = /^[a-zA-Z_][a-zA-Z0-9_\\-]*$/;\n\n/**\n * @internal\n */\nexport const segmentedIdentifier: RegExp = /^[a-zA-Z_][a-zA-Z0-9_\\-]*(\\.[a-zA-Z_][a-zA-Z0-9_\\-]*)*$/;\n\n/**\n * @internal\n */\nexport const identifierList: RegExp = /^[a-zA-Z_][a-zA-Z0-9_\\-]*(,[a-zA-Z_][a-zA-Z0-9_\\-]*)*$/;\n\n/**\n * The format of a {@link ConditionKey | condition key} is:\n * <qualifierName>-[<value>][\\@<priority>](<scoreAsDefault>) where operator is `matches`, or\n * <qualifierName>-<operator>-[<value>][\\@<priority>](<scoreAsDefault>)\n * @internal\n */\nexport const conditionKey: RegExp =\n /^[a-zA-Z_][a-zA-Z0-9_\\-]*(-matches)?-\\[.*\\](?:@[0-9]{1,4})?(?:\\([01](?:\\.[0-9]+)?\\))?$/;\n\n/**\n * A {@link ConditionToken | condition token} is a comma-separated list of one or more\n * condition specifiers, where a condition specifier has either the form\n * `<qualifierName>=<value>` or `<value>`.\n * @internal\n */\nexport const conditionToken: RegExp = /^[a-zA-Z_][a-zA-Z0-9_\\-]*(?:=[a-zA-Z0-9_\\-]+)?$/;\n\n/**\n * @internal\n */\nexport const conditionSetHash: RegExp = /^[a-zA-Z0-9]{8}$/;\n\n/**\n * @internal\n */\nexport const decisionKey: RegExp = /^[a-zA-Z0-9]{8}(?:\\+[a-zA-Z0-9]{8})*(?:\\|[a-zA-Z0-9]{8})?$/;\n\n/**\n * @internal\n */\nexport const territoryCode: RegExp = /^[a-zA-Z]{2}$/;\n"]}
@@ -0,0 +1,97 @@
1
+ import { Result } from '@fgv/ts-utils';
2
+ import { ResourceId, ResourceIndex, ResourceName, ResourceTypeIndex, ResourceTypeName } from '../resources';
3
+ /**
4
+ * Checks if the given name is a valid resource name.
5
+ *
6
+ * @param name - The name to validate.
7
+ * @returns `true` if the name is a valid resource name, otherwise `false`.
8
+ * @public
9
+ */
10
+ export declare function isValidResourceName(name: string): name is ResourceName;
11
+ /**
12
+ * Checks if the given ID is a valid resource ID.
13
+ *
14
+ * @param id - The ID to validate.
15
+ * @returns `true` if the ID is a valid resource ID, otherwise `false`.
16
+ * @public
17
+ */
18
+ export declare function isValidResourceId(id: string): id is ResourceId;
19
+ /**
20
+ * Checks if the given index is a valid resource index.
21
+ *
22
+ * @param index - The index to validate.
23
+ * @returns `true` if the index is a valid resource index, otherwise `false`.
24
+ * @public
25
+ */
26
+ export declare function isValidResourceIndex(index: number): index is ResourceIndex;
27
+ /**
28
+ * Checks if the given name is a valid resource type name.
29
+ *
30
+ * @param name - The name to validate.
31
+ * @returns `true` if the name is a valid resource type name, otherwise `false`.
32
+ * @public
33
+ */
34
+ export declare function isValidResourceTypeName(name: string): name is ResourceTypeName;
35
+ /**
36
+ * Checks if the given index is a valid resource type index.
37
+ *
38
+ * @param index - The index to validate.
39
+ * @returns `true` if the index is a valid resource type index, otherwise `false`.
40
+ * @public
41
+ */
42
+ export declare function isValidResourceTypeIndex(index: number): index is ResourceTypeIndex;
43
+ /**
44
+ * Converts a string to a {@link ResourceName | resource name}.
45
+ *
46
+ * @param id - The string to convert.
47
+ * @returns `Success` with the converted name if valid, or `Failure` with an error message
48
+ * if not.
49
+ * @public
50
+ */
51
+ export declare function toResourceName(name: string): Result<ResourceName>;
52
+ /**
53
+ * Converts a string to a {@link ResourceId | resource ID}.
54
+ *
55
+ * @param id - The string to convert.
56
+ * @returns `Success` with the converted ID if valid, or `Failure` with an error message
57
+ * if not.
58
+ * @public
59
+ */
60
+ export declare function toResourceId(id: string): Result<ResourceId>;
61
+ /**
62
+ * Converts an optional string to an optional {@link ResourceId | resource ID}.
63
+ *
64
+ * @param id - The string to convert.
65
+ * @returns `Success` with the converted ID if valid, or `Failure` with an error message
66
+ * if not.
67
+ * @public
68
+ */
69
+ export declare function toOptionalResourceId(id?: string): Result<ResourceId | undefined>;
70
+ /**
71
+ * Converts a number to a {@link ResourceIndex | resource index}.
72
+ *
73
+ * @param index - The number to convert.
74
+ * @returns `Success` with the converted index if valid, or `Failure` with an error message
75
+ * if not.
76
+ * @public
77
+ */
78
+ export declare function toResourceIndex(index: number): Result<ResourceIndex>;
79
+ /**
80
+ * Converts a string to a {@link ResourceTypeName | resource type name}.
81
+ *
82
+ * @param name - The string to convert.
83
+ * @returns `Success` with the converted name if valid, or `Failure` with an error message
84
+ * if not.
85
+ * @public
86
+ */
87
+ export declare function toResourceTypeName(name: string): Result<ResourceTypeName>;
88
+ /**
89
+ * Converts a number to a {@link ResourceTypeIndex | resource type index}.
90
+ *
91
+ * @param index - The number to convert.
92
+ * @returns `Success` with the converted index if valid, or `Failure` with an error message
93
+ * if not.
94
+ * @public
95
+ */
96
+ export declare function toResourceTypeIndex(index: number): Result<ResourceTypeIndex>;
97
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../src/packlets/common/validate/resources.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG5G;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,UAAU,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAE1E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAElF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,CAMjE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAK3D;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAKpE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAMzE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAM5E"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2025 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.isValidResourceName = isValidResourceName;
25
+ exports.isValidResourceId = isValidResourceId;
26
+ exports.isValidResourceIndex = isValidResourceIndex;
27
+ exports.isValidResourceTypeName = isValidResourceTypeName;
28
+ exports.isValidResourceTypeIndex = isValidResourceTypeIndex;
29
+ exports.toResourceName = toResourceName;
30
+ exports.toResourceId = toResourceId;
31
+ exports.toOptionalResourceId = toOptionalResourceId;
32
+ exports.toResourceIndex = toResourceIndex;
33
+ exports.toResourceTypeName = toResourceTypeName;
34
+ exports.toResourceTypeIndex = toResourceTypeIndex;
35
+ const ts_utils_1 = require("@fgv/ts-utils");
36
+ const regularExpressions_1 = require("./regularExpressions");
37
+ /**
38
+ * Checks if the given name is a valid resource name.
39
+ *
40
+ * @param name - The name to validate.
41
+ * @returns `true` if the name is a valid resource name, otherwise `false`.
42
+ * @public
43
+ */
44
+ function isValidResourceName(name) {
45
+ return regularExpressions_1.identifier.test(name);
46
+ }
47
+ /**
48
+ * Checks if the given ID is a valid resource ID.
49
+ *
50
+ * @param id - The ID to validate.
51
+ * @returns `true` if the ID is a valid resource ID, otherwise `false`.
52
+ * @public
53
+ */
54
+ function isValidResourceId(id) {
55
+ return regularExpressions_1.segmentedIdentifier.test(id);
56
+ }
57
+ /**
58
+ * Checks if the given index is a valid resource index.
59
+ *
60
+ * @param index - The index to validate.
61
+ * @returns `true` if the index is a valid resource index, otherwise `false`.
62
+ * @public
63
+ */
64
+ function isValidResourceIndex(index) {
65
+ return index >= 0;
66
+ }
67
+ /**
68
+ * Checks if the given name is a valid resource type name.
69
+ *
70
+ * @param name - The name to validate.
71
+ * @returns `true` if the name is a valid resource type name, otherwise `false`.
72
+ * @public
73
+ */
74
+ function isValidResourceTypeName(name) {
75
+ return regularExpressions_1.identifier.test(name);
76
+ }
77
+ /**
78
+ * Checks if the given index is a valid resource type index.
79
+ *
80
+ * @param index - The index to validate.
81
+ * @returns `true` if the index is a valid resource type index, otherwise `false`.
82
+ * @public
83
+ */
84
+ function isValidResourceTypeIndex(index) {
85
+ return index >= 0;
86
+ }
87
+ /**
88
+ * Converts a string to a {@link ResourceName | resource name}.
89
+ *
90
+ * @param id - The string to convert.
91
+ * @returns `Success` with the converted name if valid, or `Failure` with an error message
92
+ * if not.
93
+ * @public
94
+ */
95
+ function toResourceName(name) {
96
+ /* c8 ignore next 3 - coverage having issues */
97
+ if (!isValidResourceName(name)) {
98
+ return (0, ts_utils_1.fail)(`${name}: not a valid resource name.`);
99
+ }
100
+ return (0, ts_utils_1.succeed)(name);
101
+ }
102
+ /**
103
+ * Converts a string to a {@link ResourceId | resource ID}.
104
+ *
105
+ * @param id - The string to convert.
106
+ * @returns `Success` with the converted ID if valid, or `Failure` with an error message
107
+ * if not.
108
+ * @public
109
+ */
110
+ function toResourceId(id) {
111
+ if (!isValidResourceId(id)) {
112
+ return (0, ts_utils_1.fail)(`${id}: not a valid resource ID.`);
113
+ }
114
+ return (0, ts_utils_1.succeed)(id);
115
+ }
116
+ /**
117
+ * Converts an optional string to an optional {@link ResourceId | resource ID}.
118
+ *
119
+ * @param id - The string to convert.
120
+ * @returns `Success` with the converted ID if valid, or `Failure` with an error message
121
+ * if not.
122
+ * @public
123
+ */
124
+ function toOptionalResourceId(id) {
125
+ return id ? toResourceId(id) : (0, ts_utils_1.succeed)(undefined);
126
+ }
127
+ /**
128
+ * Converts a number to a {@link ResourceIndex | resource index}.
129
+ *
130
+ * @param index - The number to convert.
131
+ * @returns `Success` with the converted index if valid, or `Failure` with an error message
132
+ * if not.
133
+ * @public
134
+ */
135
+ function toResourceIndex(index) {
136
+ if (!isValidResourceIndex(index)) {
137
+ return (0, ts_utils_1.fail)(`${index}: not a valid resource index.`);
138
+ }
139
+ return (0, ts_utils_1.succeed)(index);
140
+ }
141
+ /**
142
+ * Converts a string to a {@link ResourceTypeName | resource type name}.
143
+ *
144
+ * @param name - The string to convert.
145
+ * @returns `Success` with the converted name if valid, or `Failure` with an error message
146
+ * if not.
147
+ * @public
148
+ */
149
+ function toResourceTypeName(name) {
150
+ /* c8 ignore next 3 - coverage having issues */
151
+ if (!isValidResourceTypeName(name)) {
152
+ return (0, ts_utils_1.fail)(`${name}: not a valid resource type name.`);
153
+ }
154
+ return (0, ts_utils_1.succeed)(name);
155
+ }
156
+ /**
157
+ * Converts a number to a {@link ResourceTypeIndex | resource type index}.
158
+ *
159
+ * @param index - The number to convert.
160
+ * @returns `Success` with the converted index if valid, or `Failure` with an error message
161
+ * if not.
162
+ * @public
163
+ */
164
+ function toResourceTypeIndex(index) {
165
+ /* c8 ignore next 3 - coverage having issues */
166
+ if (!isValidResourceTypeIndex(index)) {
167
+ return (0, ts_utils_1.fail)(`${index}: not a valid resource type index.`);
168
+ }
169
+ return (0, ts_utils_1.succeed)(index);
170
+ }
171
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../src/packlets/common/validate/resources.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAaH,kDAEC;AASD,8CAEC;AASD,oDAEC;AASD,0DAEC;AASD,4DAEC;AAUD,wCAMC;AAUD,oCAKC;AAUD,oDAEC;AAUD,0CAKC;AAUD,gDAMC;AAUD,kDAMC;AAnJD,4CAAsD;AAEtD,6DAAuE;AAEvE;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,+BAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,EAAU;IAC1C,OAAO,wCAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO,+BAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,KAAa;IACpD,OAAO,KAAK,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,+CAA+C;IAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAA,eAAI,EAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,EAAU;IACrC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAA,eAAI,EAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAA,kBAAO,EAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,EAAW;IAC9C,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAO,EAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,KAAa;IAC3C,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAA,eAAI,EAAC,GAAG,KAAK,+BAA+B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,+CAA+C;IAC/C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAA,eAAI,EAAC,GAAG,IAAI,mCAAmC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAA,kBAAO,EAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,+CAA+C;IAC/C,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAA,eAAI,EAAC,GAAG,KAAK,oCAAoC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAA,kBAAO,EAAC,KAAK,CAAC,CAAC;AACxB,CAAC","sourcesContent":["/*\n * Copyright (c) 2025 Erik Fortune\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { fail, succeed, Result } from '@fgv/ts-utils';\nimport { ResourceId, ResourceIndex, ResourceName, ResourceTypeIndex, ResourceTypeName } from '../resources';\nimport { identifier, segmentedIdentifier } from './regularExpressions';\n\n/**\n * Checks if the given name is a valid resource name.\n *\n * @param name - The name to validate.\n * @returns `true` if the name is a valid resource name, otherwise `false`.\n * @public\n */\nexport function isValidResourceName(name: string): name is ResourceName {\n return identifier.test(name);\n}\n\n/**\n * Checks if the given ID is a valid resource ID.\n *\n * @param id - The ID to validate.\n * @returns `true` if the ID is a valid resource ID, otherwise `false`.\n * @public\n */\nexport function isValidResourceId(id: string): id is ResourceId {\n return segmentedIdentifier.test(id);\n}\n\n/**\n * Checks if the given index is a valid resource index.\n *\n * @param index - The index to validate.\n * @returns `true` if the index is a valid resource index, otherwise `false`.\n * @public\n */\nexport function isValidResourceIndex(index: number): index is ResourceIndex {\n return index >= 0;\n}\n\n/**\n * Checks if the given name is a valid resource type name.\n *\n * @param name - The name to validate.\n * @returns `true` if the name is a valid resource type name, otherwise `false`.\n * @public\n */\nexport function isValidResourceTypeName(name: string): name is ResourceTypeName {\n return identifier.test(name);\n}\n\n/**\n * Checks if the given index is a valid resource type index.\n *\n * @param index - The index to validate.\n * @returns `true` if the index is a valid resource type index, otherwise `false`.\n * @public\n */\nexport function isValidResourceTypeIndex(index: number): index is ResourceTypeIndex {\n return index >= 0;\n}\n\n/**\n * Converts a string to a {@link ResourceName | resource name}.\n *\n * @param id - The string to convert.\n * @returns `Success` with the converted name if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toResourceName(name: string): Result<ResourceName> {\n /* c8 ignore next 3 - coverage having issues */\n if (!isValidResourceName(name)) {\n return fail(`${name}: not a valid resource name.`);\n }\n return succeed(name);\n}\n\n/**\n * Converts a string to a {@link ResourceId | resource ID}.\n *\n * @param id - The string to convert.\n * @returns `Success` with the converted ID if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toResourceId(id: string): Result<ResourceId> {\n if (!isValidResourceId(id)) {\n return fail(`${id}: not a valid resource ID.`);\n }\n return succeed(id);\n}\n\n/**\n * Converts an optional string to an optional {@link ResourceId | resource ID}.\n *\n * @param id - The string to convert.\n * @returns `Success` with the converted ID if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toOptionalResourceId(id?: string): Result<ResourceId | undefined> {\n return id ? toResourceId(id) : succeed(undefined);\n}\n\n/**\n * Converts a number to a {@link ResourceIndex | resource index}.\n *\n * @param index - The number to convert.\n * @returns `Success` with the converted index if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toResourceIndex(index: number): Result<ResourceIndex> {\n if (!isValidResourceIndex(index)) {\n return fail(`${index}: not a valid resource index.`);\n }\n return succeed(index);\n}\n\n/**\n * Converts a string to a {@link ResourceTypeName | resource type name}.\n *\n * @param name - The string to convert.\n * @returns `Success` with the converted name if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toResourceTypeName(name: string): Result<ResourceTypeName> {\n /* c8 ignore next 3 - coverage having issues */\n if (!isValidResourceTypeName(name)) {\n return fail(`${name}: not a valid resource type name.`);\n }\n return succeed(name);\n}\n\n/**\n * Converts a number to a {@link ResourceTypeIndex | resource type index}.\n *\n * @param index - The number to convert.\n * @returns `Success` with the converted index if valid, or `Failure` with an error message\n * if not.\n * @public\n */\nexport function toResourceTypeIndex(index: number): Result<ResourceTypeIndex> {\n /* c8 ignore next 3 - coverage having issues */\n if (!isValidResourceTypeIndex(index)) {\n return fail(`${index}: not a valid resource type index.`);\n }\n return succeed(index);\n}\n"]}
@@ -0,0 +1,91 @@
1
+ import { Collections, Result } from '@fgv/ts-utils';
2
+ import { ConditionIndex, ConditionKey, ConditionOperator, ConditionPriority, ConditionToken, QualifierConditionValue, QualifierMatchScore } from '../common';
3
+ import { Qualifier } from '../qualifiers';
4
+ import { IValidatedConditionDecl } from './conditionDecls';
5
+ /**
6
+ * Represents a single condition applied to some resource instance.
7
+ * @public
8
+ */
9
+ export declare class Condition implements IValidatedConditionDecl {
10
+ /**
11
+ * The {@link Qualifiers.Qualifier | qualifier} used in this condition.
12
+ */
13
+ readonly qualifier: Qualifier;
14
+ /**
15
+ * The value to be matched in this condition.
16
+ */
17
+ readonly value: QualifierConditionValue;
18
+ /**
19
+ * The {@link ConditionOperator | operator} used when matching context value to condition value.
20
+ */
21
+ readonly operator: ConditionOperator;
22
+ /**
23
+ * The {@link ConditionPriority | relative priority} of this condition.
24
+ */
25
+ readonly priority: ConditionPriority;
26
+ /**
27
+ * The {@link QualifierMatchScore | score} to be used when this condition is the default.
28
+ */
29
+ readonly scoreAsDefault?: QualifierMatchScore;
30
+ protected _collectible: Collections.Collectible<ConditionKey, ConditionIndex>;
31
+ /**
32
+ * Constructs a new {@link Conditions.Condition | Condition} object.
33
+ * @param qualifier - The {@link Qualifiers.Qualifier | qualifier} used in this condition.
34
+ * @param value - The value to be matched in this condition.
35
+ * @param operator - The {@link ConditionOperator | operator} used when matching context value to condition value.
36
+ * @param priority - The {@link ConditionPriority | relative priority} of this condition.
37
+ * @public
38
+ */
39
+ protected constructor({ qualifier, value, operator, priority, scoreAsDefault, index }: IValidatedConditionDecl);
40
+ get key(): ConditionKey;
41
+ get index(): ConditionIndex | undefined;
42
+ setIndex(index: ConditionIndex): Result<ConditionIndex>;
43
+ /**
44
+ * Creates a new {@link Conditions.Condition | Condition} object from the supplied
45
+ * {@link Conditions.IValidatedConditionDecl | validated condition declaration}.
46
+ * @param decl - The {@link Conditions.IValidatedConditionDecl | validated condition declaration}
47
+ * describing the condition to create.
48
+ * @returns `Success` with the new {@link Conditions.Condition | Condition} if successful,
49
+ * `Failure` otherwise.
50
+ * @public
51
+ */
52
+ static create(decl: IValidatedConditionDecl): Result<Condition>;
53
+ /**
54
+ * Compares two conditions for sorting purposes.
55
+ * @param c1 - The first {@link Conditions.Condition | condition} to compare.
56
+ * @param c2 - The second {@link Conditions.Condition | condition} to compare.
57
+ * @returns A negative number if c1 should come before c2, a positive number
58
+ * if c2 should come before c1, or zero if they are equivalent.
59
+ * @public
60
+ */
61
+ static compare(c1: Condition, c2: Condition): number;
62
+ /**
63
+ * Gets a {@link ConditionToken | condition token} for this condition, if possible.
64
+ * It is not possible to get a token for a condition with an operator other than `matches`,
65
+ * with other-than-default priority, or with a name or value that contains other than alphanumeric
66
+ * characters, underscore or non-leading hyphen.
67
+ * @param terse - if `true` and if the qualifier token is optional, the token will be omitted
68
+ * from the generated {@link ConditionToken | condition token}.
69
+ * @returns
70
+ */
71
+ toToken(terse?: boolean): Result<ConditionToken>;
72
+ /**
73
+ * Gets the {@link ConditionKey | key} for this condition.
74
+ * @returns -
75
+ */
76
+ toKey(): ConditionKey;
77
+ /**
78
+ * Get a human-readable string representation of the condition.
79
+ * @returns A string representation of the condition.
80
+ * @public
81
+ */
82
+ toString(): string;
83
+ /**
84
+ * Gets the {@link ConditionKey | condition key} for a supplied {@link Conditions.IValidatedConditionDecl | condition declaration}.
85
+ * @param decl - The {@link Conditions.IValidatedConditionDecl | condition declaration} for which to get the key.
86
+ * @returns `Success` with the condition key if successful, `Failure` otherwise.
87
+ * @public
88
+ */
89
+ static getKeyForDecl(decl: IValidatedConditionDecl): Result<ConditionKey>;
90
+ }
91
+ //# sourceMappingURL=condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/packlets/conditions/condition.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiB,WAAW,EAAE,MAAM,EAAQ,MAAM,eAAe,CAAC;AACzE,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EAEpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAK3D;;;GAGG;AACH,qBAAa,SAAU,YAAW,uBAAuB;IACvD;;OAEG;IACH,SAAgB,SAAS,EAAE,SAAS,CAAC;IAErC;;OAEG;IACH,SAAgB,KAAK,EAAE,uBAAuB,CAAC;IAE/C;;OAEG;IACH,SAAgB,QAAQ,EAAE,iBAAiB,CAAC;IAE5C;;OAEG;IACH,SAAgB,QAAQ,EAAE,iBAAiB,CAAC;IAE5C;;OAEG;IACH,SAAgB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAErD,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE9E;;;;;;;OAOG;IACH,SAAS,aAAa,EACpB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,KAAK,EACN,EAAE,uBAAuB;IAa1B,IAAW,GAAG,IAAI,YAAY,CAE7B;IAED,IAAW,KAAK,IAAI,cAAc,GAAG,SAAS,CAE7C;IAEM,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAI9D;;;;;;;;OAQG;WACW,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC,SAAS,CAAC;IAItE;;;;;;;OAOG;WACW,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,MAAM;IAQ3D;;;;;;;;OAQG;IACI,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;IAgBvD;;;OAGG;IACI,KAAK,IAAI,YAAY;IAI5B;;;;OAIG;IACI,QAAQ,IAAI,MAAM;IAIzB;;;;;OAKG;WACW,aAAa,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC,YAAY,CAAC;CAQjF"}