@entifix/core 0.1.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/base-entities/configuration-client/configuration-client-singleton.d.ts +39 -0
  4. package/dist/base-entities/configuration-client/configuration-client-singleton.d.ts.map +1 -0
  5. package/dist/base-entities/configuration-client/configuration-client-singleton.js +164 -0
  6. package/dist/base-entities/configuration-client/configuration-client-singleton.js.map +1 -0
  7. package/dist/base-entities/configuration-client/index.d.ts +4 -0
  8. package/dist/base-entities/configuration-client/index.d.ts.map +1 -0
  9. package/dist/base-entities/configuration-client/index.js +5 -0
  10. package/dist/base-entities/configuration-client/index.js.map +1 -0
  11. package/dist/base-entities/configuration-client/read-configuration-from-process.d.ts +11 -0
  12. package/dist/base-entities/configuration-client/read-configuration-from-process.d.ts.map +1 -0
  13. package/dist/base-entities/configuration-client/read-configuration-from-process.js +26 -0
  14. package/dist/base-entities/configuration-client/read-configuration-from-process.js.map +1 -0
  15. package/dist/base-entities/configuration-client/types.d.ts +38 -0
  16. package/dist/base-entities/configuration-client/types.d.ts.map +1 -0
  17. package/dist/base-entities/configuration-client/types.js +3 -0
  18. package/dist/base-entities/configuration-client/types.js.map +1 -0
  19. package/dist/base-entities/entifix-error/entifix-error.d.ts +31 -0
  20. package/dist/base-entities/entifix-error/entifix-error.d.ts.map +1 -0
  21. package/dist/base-entities/entifix-error/entifix-error.js +56 -0
  22. package/dist/base-entities/entifix-error/entifix-error.js.map +1 -0
  23. package/dist/base-entities/entifix-error/index.d.ts +2 -0
  24. package/dist/base-entities/entifix-error/index.d.ts.map +1 -0
  25. package/dist/base-entities/entifix-error/index.js +3 -0
  26. package/dist/base-entities/entifix-error/index.js.map +1 -0
  27. package/dist/command-palette/command-matching.d.ts +79 -0
  28. package/dist/command-palette/command-matching.d.ts.map +1 -0
  29. package/dist/command-palette/command-matching.js +116 -0
  30. package/dist/command-palette/command-matching.js.map +1 -0
  31. package/dist/command-palette/command-source.d.ts +109 -0
  32. package/dist/command-palette/command-source.d.ts.map +1 -0
  33. package/dist/command-palette/command-source.js +11 -0
  34. package/dist/command-palette/command-source.js.map +1 -0
  35. package/dist/command-palette/index.d.ts +3 -0
  36. package/dist/command-palette/index.d.ts.map +1 -0
  37. package/dist/command-palette/index.js +4 -0
  38. package/dist/command-palette/index.js.map +1 -0
  39. package/dist/entity-definition/decorators/accessor/accessor.d.ts +3 -0
  40. package/dist/entity-definition/decorators/accessor/accessor.d.ts.map +1 -0
  41. package/dist/entity-definition/decorators/accessor/accessor.js +11 -0
  42. package/dist/entity-definition/decorators/accessor/accessor.js.map +1 -0
  43. package/dist/entity-definition/decorators/accessor/index.d.ts +2 -0
  44. package/dist/entity-definition/decorators/accessor/index.d.ts.map +1 -0
  45. package/dist/entity-definition/decorators/accessor/index.js +3 -0
  46. package/dist/entity-definition/decorators/accessor/index.js.map +1 -0
  47. package/dist/entity-definition/decorators/entity/entity.d.ts +4 -0
  48. package/dist/entity-definition/decorators/entity/entity.d.ts.map +1 -0
  49. package/dist/entity-definition/decorators/entity/entity.js +9 -0
  50. package/dist/entity-definition/decorators/entity/entity.js.map +1 -0
  51. package/dist/entity-definition/decorators/entity/index.d.ts +2 -0
  52. package/dist/entity-definition/decorators/entity/index.d.ts.map +1 -0
  53. package/dist/entity-definition/decorators/entity/index.js +3 -0
  54. package/dist/entity-definition/decorators/entity/index.js.map +1 -0
  55. package/dist/entity-definition/decorators/method/index.d.ts +2 -0
  56. package/dist/entity-definition/decorators/method/index.d.ts.map +1 -0
  57. package/dist/entity-definition/decorators/method/index.js +3 -0
  58. package/dist/entity-definition/decorators/method/index.js.map +1 -0
  59. package/dist/entity-definition/decorators/method/method.d.ts +3 -0
  60. package/dist/entity-definition/decorators/method/method.d.ts.map +1 -0
  61. package/dist/entity-definition/decorators/method/method.js +10 -0
  62. package/dist/entity-definition/decorators/method/method.js.map +1 -0
  63. package/dist/entity-definition/decorators/use-case/index.d.ts +2 -0
  64. package/dist/entity-definition/decorators/use-case/index.d.ts.map +1 -0
  65. package/dist/entity-definition/decorators/use-case/index.js +3 -0
  66. package/dist/entity-definition/decorators/use-case/index.js.map +1 -0
  67. package/dist/entity-definition/decorators/use-case/use-case.d.ts +18 -0
  68. package/dist/entity-definition/decorators/use-case/use-case.d.ts.map +1 -0
  69. package/dist/entity-definition/decorators/use-case/use-case.js +26 -0
  70. package/dist/entity-definition/decorators/use-case/use-case.js.map +1 -0
  71. package/dist/entity-definition/describe/describe-child-columns.d.ts +33 -0
  72. package/dist/entity-definition/describe/describe-child-columns.d.ts.map +1 -0
  73. package/dist/entity-definition/describe/describe-child-columns.js +44 -0
  74. package/dist/entity-definition/describe/describe-child-columns.js.map +1 -0
  75. package/dist/entity-definition/describe/describe-entity-columns.d.ts +83 -0
  76. package/dist/entity-definition/describe/describe-entity-columns.d.ts.map +1 -0
  77. package/dist/entity-definition/describe/describe-entity-columns.js +112 -0
  78. package/dist/entity-definition/describe/describe-entity-columns.js.map +1 -0
  79. package/dist/entity-definition/describe/describe-entity-use-cases.d.ts +34 -0
  80. package/dist/entity-definition/describe/describe-entity-use-cases.d.ts.map +1 -0
  81. package/dist/entity-definition/describe/describe-entity-use-cases.js +24 -0
  82. package/dist/entity-definition/describe/describe-entity-use-cases.js.map +1 -0
  83. package/dist/entity-definition/describe/index.d.ts +4 -0
  84. package/dist/entity-definition/describe/index.d.ts.map +1 -0
  85. package/dist/entity-definition/describe/index.js +5 -0
  86. package/dist/entity-definition/describe/index.js.map +1 -0
  87. package/dist/entity-definition/field-path.d.ts +49 -0
  88. package/dist/entity-definition/field-path.d.ts.map +1 -0
  89. package/dist/entity-definition/field-path.js +58 -0
  90. package/dist/entity-definition/field-path.js.map +1 -0
  91. package/dist/entity-definition/helpers/entity-definition-helpers.d.ts +59 -0
  92. package/dist/entity-definition/helpers/entity-definition-helpers.d.ts.map +1 -0
  93. package/dist/entity-definition/helpers/entity-definition-helpers.js +115 -0
  94. package/dist/entity-definition/helpers/entity-definition-helpers.js.map +1 -0
  95. package/dist/entity-definition/helpers/index.d.ts +2 -0
  96. package/dist/entity-definition/helpers/index.d.ts.map +1 -0
  97. package/dist/entity-definition/helpers/index.js +3 -0
  98. package/dist/entity-definition/helpers/index.js.map +1 -0
  99. package/dist/entity-definition/links/apply-entity-links/apply-entity-links.d.ts +48 -0
  100. package/dist/entity-definition/links/apply-entity-links/apply-entity-links.d.ts.map +1 -0
  101. package/dist/entity-definition/links/apply-entity-links/apply-entity-links.js +88 -0
  102. package/dist/entity-definition/links/apply-entity-links/apply-entity-links.js.map +1 -0
  103. package/dist/entity-definition/links/apply-entity-links/index.d.ts +2 -0
  104. package/dist/entity-definition/links/apply-entity-links/index.d.ts.map +1 -0
  105. package/dist/entity-definition/links/apply-entity-links/index.js +3 -0
  106. package/dist/entity-definition/links/apply-entity-links/index.js.map +1 -0
  107. package/dist/entity-definition/links/entity-collection-link/entity-collection-link.d.ts +29 -0
  108. package/dist/entity-definition/links/entity-collection-link/entity-collection-link.d.ts.map +1 -0
  109. package/dist/entity-definition/links/entity-collection-link/entity-collection-link.js +61 -0
  110. package/dist/entity-definition/links/entity-collection-link/entity-collection-link.js.map +1 -0
  111. package/dist/entity-definition/links/entity-collection-link/index.d.ts +2 -0
  112. package/dist/entity-definition/links/entity-collection-link/index.d.ts.map +1 -0
  113. package/dist/entity-definition/links/entity-collection-link/index.js +3 -0
  114. package/dist/entity-definition/links/entity-collection-link/index.js.map +1 -0
  115. package/dist/entity-definition/links/entity-link/entity-link.d.ts +58 -0
  116. package/dist/entity-definition/links/entity-link/entity-link.d.ts.map +1 -0
  117. package/dist/entity-definition/links/entity-link/entity-link.js +79 -0
  118. package/dist/entity-definition/links/entity-link/entity-link.js.map +1 -0
  119. package/dist/entity-definition/links/entity-link/index.d.ts +2 -0
  120. package/dist/entity-definition/links/entity-link/index.d.ts.map +1 -0
  121. package/dist/entity-definition/links/entity-link/index.js +3 -0
  122. package/dist/entity-definition/links/entity-link/index.js.map +1 -0
  123. package/dist/entity-definition/links/entity-link-source/entity-link-source.d.ts +74 -0
  124. package/dist/entity-definition/links/entity-link-source/entity-link-source.d.ts.map +1 -0
  125. package/dist/entity-definition/links/entity-link-source/entity-link-source.js +11 -0
  126. package/dist/entity-definition/links/entity-link-source/entity-link-source.js.map +1 -0
  127. package/dist/entity-definition/links/entity-link-source/index.d.ts +2 -0
  128. package/dist/entity-definition/links/entity-link-source/index.d.ts.map +1 -0
  129. package/dist/entity-definition/links/entity-link-source/index.js +3 -0
  130. package/dist/entity-definition/links/entity-link-source/index.js.map +1 -0
  131. package/dist/entity-definition/meta-entities/meta-accessor/index.d.ts +2 -0
  132. package/dist/entity-definition/meta-entities/meta-accessor/index.d.ts.map +1 -0
  133. package/dist/entity-definition/meta-entities/meta-accessor/index.js +3 -0
  134. package/dist/entity-definition/meta-entities/meta-accessor/index.js.map +1 -0
  135. package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.d.ts +137 -0
  136. package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.d.ts.map +1 -0
  137. package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.js +52 -0
  138. package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.js.map +1 -0
  139. package/dist/entity-definition/meta-entities/meta-entity/index.d.ts +2 -0
  140. package/dist/entity-definition/meta-entities/meta-entity/index.d.ts.map +1 -0
  141. package/dist/entity-definition/meta-entities/meta-entity/index.js +3 -0
  142. package/dist/entity-definition/meta-entities/meta-entity/index.js.map +1 -0
  143. package/dist/entity-definition/meta-entities/meta-entity/meta-entity.d.ts +17 -0
  144. package/dist/entity-definition/meta-entities/meta-entity/meta-entity.d.ts.map +1 -0
  145. package/dist/entity-definition/meta-entities/meta-entity/meta-entity.js +13 -0
  146. package/dist/entity-definition/meta-entities/meta-entity/meta-entity.js.map +1 -0
  147. package/dist/entity-definition/meta-entities/meta-method/index.d.ts +2 -0
  148. package/dist/entity-definition/meta-entities/meta-method/index.d.ts.map +1 -0
  149. package/dist/entity-definition/meta-entities/meta-method/index.js +3 -0
  150. package/dist/entity-definition/meta-entities/meta-method/index.js.map +1 -0
  151. package/dist/entity-definition/meta-entities/meta-method/meta-method.d.ts +16 -0
  152. package/dist/entity-definition/meta-entities/meta-method/meta-method.d.ts.map +1 -0
  153. package/dist/entity-definition/meta-entities/meta-method/meta-method.js +11 -0
  154. package/dist/entity-definition/meta-entities/meta-method/meta-method.js.map +1 -0
  155. package/dist/entity-definition/meta-entities/meta-use-case/index.d.ts +2 -0
  156. package/dist/entity-definition/meta-entities/meta-use-case/index.d.ts.map +1 -0
  157. package/dist/entity-definition/meta-entities/meta-use-case/index.js +3 -0
  158. package/dist/entity-definition/meta-entities/meta-use-case/index.js.map +1 -0
  159. package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.d.ts +94 -0
  160. package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.d.ts.map +1 -0
  161. package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.js +17 -0
  162. package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.js.map +1 -0
  163. package/dist/entity-definition/metadata/entity-metadata-document.d.ts +23 -0
  164. package/dist/entity-definition/metadata/entity-metadata-document.d.ts.map +1 -0
  165. package/dist/entity-definition/metadata/entity-metadata-document.js +16 -0
  166. package/dist/entity-definition/metadata/entity-metadata-document.js.map +1 -0
  167. package/dist/entity-definition/metadata/entity-metadata-source.d.ts +19 -0
  168. package/dist/entity-definition/metadata/entity-metadata-source.d.ts.map +1 -0
  169. package/dist/entity-definition/metadata/entity-metadata-source.js +15 -0
  170. package/dist/entity-definition/metadata/entity-metadata-source.js.map +1 -0
  171. package/dist/entity-definition/metadata/index.d.ts +3 -0
  172. package/dist/entity-definition/metadata/index.d.ts.map +1 -0
  173. package/dist/entity-definition/metadata/index.js +4 -0
  174. package/dist/entity-definition/metadata/index.js.map +1 -0
  175. package/dist/entity-definition/reconstruct/clone-entity-draft.d.ts +34 -0
  176. package/dist/entity-definition/reconstruct/clone-entity-draft.d.ts.map +1 -0
  177. package/dist/entity-definition/reconstruct/clone-entity-draft.js +75 -0
  178. package/dist/entity-definition/reconstruct/clone-entity-draft.js.map +1 -0
  179. package/dist/entity-definition/reconstruct/coerce-field-value.d.ts +34 -0
  180. package/dist/entity-definition/reconstruct/coerce-field-value.d.ts.map +1 -0
  181. package/dist/entity-definition/reconstruct/coerce-field-value.js +42 -0
  182. package/dist/entity-definition/reconstruct/coerce-field-value.js.map +1 -0
  183. package/dist/entity-definition/reconstruct/index.d.ts +5 -0
  184. package/dist/entity-definition/reconstruct/index.d.ts.map +1 -0
  185. package/dist/entity-definition/reconstruct/index.js +6 -0
  186. package/dist/entity-definition/reconstruct/index.js.map +1 -0
  187. package/dist/entity-definition/reconstruct/reconstruct-child.d.ts +35 -0
  188. package/dist/entity-definition/reconstruct/reconstruct-child.d.ts.map +1 -0
  189. package/dist/entity-definition/reconstruct/reconstruct-child.js +47 -0
  190. package/dist/entity-definition/reconstruct/reconstruct-child.js.map +1 -0
  191. package/dist/entity-definition/reconstruct/reconstruct-entity.d.ts +49 -0
  192. package/dist/entity-definition/reconstruct/reconstruct-entity.d.ts.map +1 -0
  193. package/dist/entity-definition/reconstruct/reconstruct-entity.js +116 -0
  194. package/dist/entity-definition/reconstruct/reconstruct-entity.js.map +1 -0
  195. package/dist/entity-definition/serializer/deserialize.d.ts +13 -0
  196. package/dist/entity-definition/serializer/deserialize.d.ts.map +1 -0
  197. package/dist/entity-definition/serializer/deserialize.js +145 -0
  198. package/dist/entity-definition/serializer/deserialize.js.map +1 -0
  199. package/dist/entity-definition/serializer/index.d.ts +3 -0
  200. package/dist/entity-definition/serializer/index.d.ts.map +1 -0
  201. package/dist/entity-definition/serializer/index.js +4 -0
  202. package/dist/entity-definition/serializer/index.js.map +1 -0
  203. package/dist/entity-definition/serializer/serialize.d.ts +26 -0
  204. package/dist/entity-definition/serializer/serialize.d.ts.map +1 -0
  205. package/dist/entity-definition/serializer/serialize.js +64 -0
  206. package/dist/entity-definition/serializer/serialize.js.map +1 -0
  207. package/dist/envelope/event-pattern.d.ts +14 -0
  208. package/dist/envelope/event-pattern.d.ts.map +1 -0
  209. package/dist/envelope/event-pattern.js +30 -0
  210. package/dist/envelope/event-pattern.js.map +1 -0
  211. package/dist/envelope/index.d.ts +5 -0
  212. package/dist/envelope/index.d.ts.map +1 -0
  213. package/dist/envelope/index.js +6 -0
  214. package/dist/envelope/index.js.map +1 -0
  215. package/dist/envelope/make-envelope.d.ts +45 -0
  216. package/dist/envelope/make-envelope.d.ts.map +1 -0
  217. package/dist/envelope/make-envelope.js +111 -0
  218. package/dist/envelope/make-envelope.js.map +1 -0
  219. package/dist/envelope/read-envelope.d.ts +48 -0
  220. package/dist/envelope/read-envelope.d.ts.map +1 -0
  221. package/dist/envelope/read-envelope.js +138 -0
  222. package/dist/envelope/read-envelope.js.map +1 -0
  223. package/dist/envelope/types.d.ts +173 -0
  224. package/dist/envelope/types.d.ts.map +1 -0
  225. package/dist/envelope/types.js +6 -0
  226. package/dist/envelope/types.js.map +1 -0
  227. package/dist/http/session-cookies.d.ts +25 -0
  228. package/dist/http/session-cookies.d.ts.map +1 -0
  229. package/dist/http/session-cookies.js +22 -0
  230. package/dist/http/session-cookies.js.map +1 -0
  231. package/dist/i18n/format.d.ts +22 -0
  232. package/dist/i18n/format.d.ts.map +1 -0
  233. package/dist/i18n/format.js +49 -0
  234. package/dist/i18n/format.js.map +1 -0
  235. package/dist/i18n/index.d.ts +4 -0
  236. package/dist/i18n/index.d.ts.map +1 -0
  237. package/dist/i18n/index.js +5 -0
  238. package/dist/i18n/index.js.map +1 -0
  239. package/dist/i18n/locales.d.ts +23 -0
  240. package/dist/i18n/locales.d.ts.map +1 -0
  241. package/dist/i18n/locales.js +25 -0
  242. package/dist/i18n/locales.js.map +1 -0
  243. package/dist/i18n/negotiate.d.ts +39 -0
  244. package/dist/i18n/negotiate.d.ts.map +1 -0
  245. package/dist/i18n/negotiate.js +63 -0
  246. package/dist/i18n/negotiate.js.map +1 -0
  247. package/dist/index.d.ts +42 -0
  248. package/dist/index.d.ts.map +1 -0
  249. package/dist/index.js +43 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/rsql/coerce-rsql.d.ts +27 -0
  252. package/dist/rsql/coerce-rsql.d.ts.map +1 -0
  253. package/dist/rsql/coerce-rsql.js +121 -0
  254. package/dist/rsql/coerce-rsql.js.map +1 -0
  255. package/dist/rsql/index.d.ts +8 -0
  256. package/dist/rsql/index.d.ts.map +1 -0
  257. package/dist/rsql/index.js +9 -0
  258. package/dist/rsql/index.js.map +1 -0
  259. package/dist/rsql/load-request-url.d.ts +30 -0
  260. package/dist/rsql/load-request-url.d.ts.map +1 -0
  261. package/dist/rsql/load-request-url.js +67 -0
  262. package/dist/rsql/load-request-url.js.map +1 -0
  263. package/dist/rsql/parse-rsql.d.ts +35 -0
  264. package/dist/rsql/parse-rsql.d.ts.map +1 -0
  265. package/dist/rsql/parse-rsql.js +235 -0
  266. package/dist/rsql/parse-rsql.js.map +1 -0
  267. package/dist/rsql/rsql-operators.d.ts +36 -0
  268. package/dist/rsql/rsql-operators.d.ts.map +1 -0
  269. package/dist/rsql/rsql-operators.js +65 -0
  270. package/dist/rsql/rsql-operators.js.map +1 -0
  271. package/dist/rsql/rsql-values.d.ts +11 -0
  272. package/dist/rsql/rsql-values.d.ts.map +1 -0
  273. package/dist/rsql/rsql-values.js +26 -0
  274. package/dist/rsql/rsql-values.js.map +1 -0
  275. package/dist/rsql/serialize-rsql.d.ts +19 -0
  276. package/dist/rsql/serialize-rsql.d.ts.map +1 -0
  277. package/dist/rsql/serialize-rsql.js +71 -0
  278. package/dist/rsql/serialize-rsql.js.map +1 -0
  279. package/dist/rsql/sort-param.d.ts +20 -0
  280. package/dist/rsql/sort-param.d.ts.map +1 -0
  281. package/dist/rsql/sort-param.js +66 -0
  282. package/dist/rsql/sort-param.js.map +1 -0
  283. package/dist/types/BulkOutcome.d.ts +27 -0
  284. package/dist/types/BulkOutcome.d.ts.map +1 -0
  285. package/dist/types/BulkOutcome.js +8 -0
  286. package/dist/types/BulkOutcome.js.map +1 -0
  287. package/dist/types/Entity.d.ts +6 -0
  288. package/dist/types/Entity.d.ts.map +1 -0
  289. package/dist/types/Entity.js +3 -0
  290. package/dist/types/Entity.js.map +1 -0
  291. package/dist/types/EntityAction.d.ts +15 -0
  292. package/dist/types/EntityAction.d.ts.map +1 -0
  293. package/dist/types/EntityAction.js +18 -0
  294. package/dist/types/EntityAction.js.map +1 -0
  295. package/dist/types/EntityDraft.d.ts +47 -0
  296. package/dist/types/EntityDraft.d.ts.map +1 -0
  297. package/dist/types/EntityDraft.js +14 -0
  298. package/dist/types/EntityDraft.js.map +1 -0
  299. package/dist/types/EntityFiltering.d.ts +45 -0
  300. package/dist/types/EntityFiltering.d.ts.map +1 -0
  301. package/dist/types/EntityFiltering.js +30 -0
  302. package/dist/types/EntityFiltering.js.map +1 -0
  303. package/dist/types/EntityLoadRequest.d.ts +10 -0
  304. package/dist/types/EntityLoadRequest.d.ts.map +1 -0
  305. package/dist/types/EntityLoadRequest.js +3 -0
  306. package/dist/types/EntityLoadRequest.js.map +1 -0
  307. package/dist/types/EntityPage.d.ts +8 -0
  308. package/dist/types/EntityPage.d.ts.map +1 -0
  309. package/dist/types/EntityPage.js +3 -0
  310. package/dist/types/EntityPage.js.map +1 -0
  311. package/dist/types/EntityRowDraft.d.ts +79 -0
  312. package/dist/types/EntityRowDraft.d.ts.map +1 -0
  313. package/dist/types/EntityRowDraft.js +65 -0
  314. package/dist/types/EntityRowDraft.js.map +1 -0
  315. package/dist/types/EntitySelection.d.ts +117 -0
  316. package/dist/types/EntitySelection.d.ts.map +1 -0
  317. package/dist/types/EntitySelection.js +107 -0
  318. package/dist/types/EntitySelection.js.map +1 -0
  319. package/dist/types/EntitySorting.d.ts +7 -0
  320. package/dist/types/EntitySorting.d.ts.map +1 -0
  321. package/dist/types/EntitySorting.js +3 -0
  322. package/dist/types/EntitySorting.js.map +1 -0
  323. package/dist/types/Json.d.ts +37 -0
  324. package/dist/types/Json.d.ts.map +1 -0
  325. package/dist/types/Json.js +43 -0
  326. package/dist/types/Json.js.map +1 -0
  327. package/dist/types/StandardSchema.d.ts +45 -0
  328. package/dist/types/StandardSchema.d.ts.map +1 -0
  329. package/dist/types/StandardSchema.js +15 -0
  330. package/dist/types/StandardSchema.js.map +1 -0
  331. package/dist/types/UseCase.d.ts +10 -0
  332. package/dist/types/UseCase.d.ts.map +1 -0
  333. package/dist/types/UseCase.js +10 -0
  334. package/dist/types/UseCase.js.map +1 -0
  335. package/dist/wizard/index.d.ts +4 -0
  336. package/dist/wizard/index.d.ts.map +1 -0
  337. package/dist/wizard/index.js +5 -0
  338. package/dist/wizard/index.js.map +1 -0
  339. package/dist/wizard/wizard-definition.d.ts +108 -0
  340. package/dist/wizard/wizard-definition.d.ts.map +1 -0
  341. package/dist/wizard/wizard-definition.js +125 -0
  342. package/dist/wizard/wizard-definition.js.map +1 -0
  343. package/dist/wizard/wizard-navigation.d.ts +81 -0
  344. package/dist/wizard/wizard-navigation.d.ts.map +1 -0
  345. package/dist/wizard/wizard-navigation.js +139 -0
  346. package/dist/wizard/wizard-navigation.js.map +1 -0
  347. package/dist/wizard/wizard-state.d.ts +89 -0
  348. package/dist/wizard/wizard-state.d.ts.map +1 -0
  349. package/dist/wizard/wizard-state.js +103 -0
  350. package/dist/wizard/wizard-state.js.map +1 -0
  351. package/package.json +64 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 r10c Technologies
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.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # core
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build core` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test core` to execute the unit tests via [Jest](https://jestjs.io).
@@ -0,0 +1,39 @@
1
+ import { Effect } from 'effect';
2
+ import { EntifixBuildError } from '../entifix-error/index.js';
3
+ import { ConfigurationClient, ConfigurationClientGroup, ConfigurationExtractMode, ConfigurationItem, ConfigurationPlain } from './types.js';
4
+ /**
5
+ * In-memory {@link ConfigurationClientGroup} backed by a group's
6
+ * {@link ConfigurationItem} list.
7
+ *
8
+ * String resolution supports `exact` and `compose`; the numeric/date/array
9
+ * getters resolve the raw value with `exact` semantics (the `compose` mode is
10
+ * URL-oriented and only meaningful for strings). `match` remains unimplemented
11
+ * (no defined semantics / consumer yet) and fails explicitly.
12
+ */
13
+ export declare class ConfigurationClientGroupInMemory implements ConfigurationClientGroup {
14
+ #private;
15
+ constructor(items?: ConfigurationItem[]);
16
+ getString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string, EntifixBuildError>;
17
+ getNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number, EntifixBuildError>;
18
+ getDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date, EntifixBuildError>;
19
+ getArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string[], EntifixBuildError>;
20
+ getArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number[], EntifixBuildError>;
21
+ getArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date[], EntifixBuildError>;
22
+ getOptionalString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string | undefined, EntifixBuildError>;
23
+ getOptionalNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number | undefined, EntifixBuildError>;
24
+ getOptionalDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date | undefined, EntifixBuildError>;
25
+ getOptionalArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number[] | undefined, EntifixBuildError>;
26
+ getOptionalArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string[] | undefined, EntifixBuildError>;
27
+ getOptionalArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date[] | undefined, EntifixBuildError>;
28
+ }
29
+ /**
30
+ * In-memory {@link ConfigurationClient} backed by a loaded
31
+ * {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to
32
+ * that group's items.
33
+ */
34
+ export declare class ConfigurationClientInMemory implements ConfigurationClient {
35
+ #private;
36
+ constructor(plainConfig?: ConfigurationPlain);
37
+ in(group: string): ConfigurationClientGroup;
38
+ }
39
+ //# sourceMappingURL=configuration-client-singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-client-singleton.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/configuration-client-singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAkEpB;;;;;;;;GAQG;AACH,qBAAa,gCAAiC,YAAW,wBAAwB;;gBAGnE,KAAK,GAAE,iBAAiB,EAAO;IA0C3C,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAa3C,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAK3C,OAAO,CACL,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAKzC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC;IAK7C,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC;IAS7C,YAAY,CACV,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC;IAS3C,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAKvD,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC;IASvD,eAAe,CACb,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,iBAAiB,CAAC;IASrD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAazD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAOzD,oBAAoB,CAClB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;CAUxD;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,mBAAmB;;gBAGzD,WAAW,GAAE,kBAAuB;IAIhD,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;CAG5C"}
@@ -0,0 +1,164 @@
1
+ import { _ as _class_private_field_loose_base } from "@swc/helpers/_/_class_private_field_loose_base";
2
+ import { _ as _class_private_field_loose_key } from "@swc/helpers/_/_class_private_field_loose_key";
3
+ import { Effect } from 'effect';
4
+ import { EntifixBuildError } from '../entifix-error/index.js';
5
+ /**
6
+ * Joins a base URL with extra path segments, normalizing slashes so neither
7
+ * doubled nor missing separators appear (e.g. `http://h/api` + `['product']`
8
+ * -> `http://h/api/product`).
9
+ */ function composeUrl(base, segments) {
10
+ return [
11
+ base.replace(/\/+$/, ''),
12
+ ...segments.map((segment)=>segment.replace(/^\/+|\/+$/g, ''))
13
+ ].filter((part)=>part.length > 0).join('/');
14
+ }
15
+ /** Parses a raw string into a finite number, failing on non-numeric input. */ function parseNumber(key, raw) {
16
+ const parsed = Number(raw);
17
+ if (raw.trim() === '' || Number.isNaN(parsed)) {
18
+ return Effect.fail(new EntifixBuildError(`Configuration key "${key}" is not a number`, undefined, {
19
+ key,
20
+ raw
21
+ }));
22
+ }
23
+ return Effect.succeed(parsed);
24
+ }
25
+ /** Parses a raw string into a valid Date, failing on unparseable input. */ function parseDate(key, raw) {
26
+ const parsed = new Date(raw);
27
+ if (Number.isNaN(parsed.getTime())) {
28
+ return Effect.fail(new EntifixBuildError(`Configuration key "${key}" is not a date`, undefined, {
29
+ key,
30
+ raw
31
+ }));
32
+ }
33
+ return Effect.succeed(parsed);
34
+ }
35
+ /** Splits a comma-separated raw value into trimmed, non-empty segments. */ function splitArray(raw) {
36
+ return raw.split(',').map((segment)=>segment.trim()).filter((segment)=>segment.length > 0);
37
+ }
38
+ var _items = /*#__PURE__*/ _class_private_field_loose_key("_items"), _find = /*#__PURE__*/ _class_private_field_loose_key("_find"), _lookup = /*#__PURE__*/ _class_private_field_loose_key("_lookup"), _lookupOptional = /*#__PURE__*/ _class_private_field_loose_key("_lookupOptional"), _unsupportedMode = /*#__PURE__*/ _class_private_field_loose_key("_unsupportedMode");
39
+ /**
40
+ * In-memory {@link ConfigurationClientGroup} backed by a group's
41
+ * {@link ConfigurationItem} list.
42
+ *
43
+ * String resolution supports `exact` and `compose`; the numeric/date/array
44
+ * getters resolve the raw value with `exact` semantics (the `compose` mode is
45
+ * URL-oriented and only meaningful for strings). `match` remains unimplemented
46
+ * (no defined semantics / consumer yet) and fails explicitly.
47
+ */ export class ConfigurationClientGroupInMemory {
48
+ getString(key, extractMode = 'exact') {
49
+ if (extractMode === 'compose') {
50
+ const [head, ...segments] = key.split('.');
51
+ return _class_private_field_loose_base(this, _lookup)[_lookup](head).pipe(Effect.map((base)=>composeUrl(base, segments)));
52
+ }
53
+ if (extractMode === 'exact') {
54
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key);
55
+ }
56
+ return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
57
+ }
58
+ getNumber(key, extractMode = 'exact') {
59
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
60
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>parseNumber(key, raw)));
61
+ }
62
+ getDate(key, extractMode = 'exact') {
63
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
64
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>parseDate(key, raw)));
65
+ }
66
+ getArrayString(key, extractMode = 'exact') {
67
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
68
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.map(splitArray));
69
+ }
70
+ getArrayNumber(key, extractMode = 'exact') {
71
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
72
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>Effect.all(splitArray(raw).map((segment)=>parseNumber(key, segment)))));
73
+ }
74
+ getArrayDate(key, extractMode = 'exact') {
75
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
76
+ return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>Effect.all(splitArray(raw).map((segment)=>parseDate(key, segment)))));
77
+ }
78
+ getOptionalString(key, extractMode = 'exact') {
79
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
80
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key);
81
+ }
82
+ getOptionalNumber(key, extractMode = 'exact') {
83
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
84
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : parseNumber(key, raw)));
85
+ }
86
+ getOptionalDate(key, extractMode = 'exact') {
87
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
88
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : parseDate(key, raw)));
89
+ }
90
+ getOptionalArrayNumber(key, extractMode = 'exact') {
91
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
92
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : Effect.all(splitArray(raw).map((segment)=>parseNumber(key, segment)))));
93
+ }
94
+ getOptionalArrayString(key, extractMode = 'exact') {
95
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
96
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.map((raw)=>raw === undefined ? undefined : splitArray(raw)));
97
+ }
98
+ getOptionalArrayDate(key, extractMode = 'exact') {
99
+ if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
100
+ return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : Effect.all(splitArray(raw).map((segment)=>parseDate(key, segment)))));
101
+ }
102
+ constructor(items = []){
103
+ Object.defineProperty(this, _find, {
104
+ value: find
105
+ });
106
+ Object.defineProperty(this, _lookup, {
107
+ value: lookup
108
+ });
109
+ Object.defineProperty(this, _lookupOptional, {
110
+ value: lookupOptional
111
+ });
112
+ Object.defineProperty(this, _unsupportedMode, {
113
+ value: unsupportedMode
114
+ });
115
+ Object.defineProperty(this, _items, {
116
+ writable: true,
117
+ value: void 0
118
+ });
119
+ _class_private_field_loose_base(this, _items)[_items] = items;
120
+ }
121
+ }
122
+ function find(key) {
123
+ return _class_private_field_loose_base(this, _items)[_items].find((candidate)=>candidate.key === key);
124
+ }
125
+ function lookup(key) {
126
+ const item = _class_private_field_loose_base(this, _find)[_find](key);
127
+ if (item === undefined || item.value == null) {
128
+ return Effect.fail(new EntifixBuildError(`Configuration key "${key}" not found`, undefined, {
129
+ key,
130
+ availableKeys: _class_private_field_loose_base(this, _items)[_items].map((candidate)=>candidate.key)
131
+ }));
132
+ }
133
+ return Effect.succeed(String(item.value));
134
+ }
135
+ function lookupOptional(key) {
136
+ const item = _class_private_field_loose_base(this, _find)[_find](key);
137
+ return Effect.succeed(item === undefined || item.value == null ? undefined : String(item.value));
138
+ }
139
+ function unsupportedMode(key, extractMode) {
140
+ return Effect.fail(new EntifixBuildError(`Configuration extract mode "${extractMode}" is not implemented yet`, undefined, {
141
+ key,
142
+ extractMode
143
+ }));
144
+ }
145
+ var _plainConfig = /*#__PURE__*/ _class_private_field_loose_key("_plainConfig");
146
+ /**
147
+ * In-memory {@link ConfigurationClient} backed by a loaded
148
+ * {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to
149
+ * that group's items.
150
+ */ export class ConfigurationClientInMemory {
151
+ in(group) {
152
+ var _class_private_field_loose_base__plainConfig_group;
153
+ return new ConfigurationClientGroupInMemory((_class_private_field_loose_base__plainConfig_group = _class_private_field_loose_base(this, _plainConfig)[_plainConfig][group]) != null ? _class_private_field_loose_base__plainConfig_group : []);
154
+ }
155
+ constructor(plainConfig = {}){
156
+ Object.defineProperty(this, _plainConfig, {
157
+ writable: true,
158
+ value: void 0
159
+ });
160
+ _class_private_field_loose_base(this, _plainConfig)[_plainConfig] = plainConfig;
161
+ }
162
+ }
163
+
164
+ //# sourceMappingURL=configuration-client-singleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/configuration-client/configuration-client-singleton.ts"],"sourcesContent":["import { Effect } from 'effect';\n\nimport { EntifixBuildError } from '../entifix-error/index.js';\nimport {\n ConfigurationClient,\n ConfigurationClientGroup,\n ConfigurationExtractMode,\n ConfigurationItem,\n ConfigurationPlain,\n} from './types.js';\n\n/**\n * Joins a base URL with extra path segments, normalizing slashes so neither\n * doubled nor missing separators appear (e.g. `http://h/api` + `['product']`\n * -> `http://h/api/product`).\n */\nfunction composeUrl(base: string, segments: string[]): string {\n return [\n base.replace(/\\/+$/, ''),\n ...segments.map(segment => segment.replace(/^\\/+|\\/+$/g, '')),\n ]\n .filter(part => part.length > 0)\n .join('/');\n}\n\n/** Parses a raw string into a finite number, failing on non-numeric input. */\nfunction parseNumber(\n key: string,\n raw: string,\n): Effect.Effect<number, EntifixBuildError> {\n const parsed = Number(raw);\n if (raw.trim() === '' || Number.isNaN(parsed)) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" is not a number`,\n undefined,\n {\n key,\n raw,\n },\n ),\n );\n }\n return Effect.succeed(parsed);\n}\n\n/** Parses a raw string into a valid Date, failing on unparseable input. */\nfunction parseDate(\n key: string,\n raw: string,\n): Effect.Effect<Date, EntifixBuildError> {\n const parsed = new Date(raw);\n if (Number.isNaN(parsed.getTime())) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" is not a date`,\n undefined,\n {\n key,\n raw,\n },\n ),\n );\n }\n return Effect.succeed(parsed);\n}\n\n/** Splits a comma-separated raw value into trimmed, non-empty segments. */\nfunction splitArray(raw: string): string[] {\n return raw\n .split(',')\n .map(segment => segment.trim())\n .filter(segment => segment.length > 0);\n}\n\n/**\n * In-memory {@link ConfigurationClientGroup} backed by a group's\n * {@link ConfigurationItem} list.\n *\n * String resolution supports `exact` and `compose`; the numeric/date/array\n * getters resolve the raw value with `exact` semantics (the `compose` mode is\n * URL-oriented and only meaningful for strings). `match` remains unimplemented\n * (no defined semantics / consumer yet) and fails explicitly.\n */\nexport class ConfigurationClientGroupInMemory implements ConfigurationClientGroup {\n #items: ConfigurationItem[];\n\n constructor(items: ConfigurationItem[] = []) {\n this.#items = items;\n }\n\n #find(key: string): ConfigurationItem | undefined {\n return this.#items.find(candidate => candidate.key === key);\n }\n\n #lookup(key: string): Effect.Effect<string, EntifixBuildError> {\n const item = this.#find(key);\n if (item === undefined || item.value == null) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" not found`,\n undefined,\n { key, availableKeys: this.#items.map(candidate => candidate.key) },\n ),\n );\n }\n return Effect.succeed(String(item.value));\n }\n\n #lookupOptional(key: string): Effect.Effect<string | undefined, never> {\n const item = this.#find(key);\n return Effect.succeed(\n item === undefined || item.value == null ? undefined : String(item.value),\n );\n }\n\n #unsupportedMode(\n key: string,\n extractMode: ConfigurationExtractMode,\n ): Effect.Effect<never, EntifixBuildError> {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration extract mode \"${extractMode}\" is not implemented yet`,\n undefined,\n { key, extractMode },\n ),\n );\n }\n\n getString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string, EntifixBuildError> {\n if (extractMode === 'compose') {\n const [head, ...segments] = key.split('.');\n return this.#lookup(head).pipe(\n Effect.map(base => composeUrl(base, segments)),\n );\n }\n if (extractMode === 'exact') {\n return this.#lookup(key);\n }\n return this.#unsupportedMode(key, extractMode);\n }\n\n getNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.flatMap(raw => parseNumber(key, raw)));\n }\n\n getDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.flatMap(raw => parseDate(key, raw)));\n }\n\n getArrayString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.map(splitArray));\n }\n\n getArrayNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(\n Effect.flatMap(raw =>\n Effect.all(splitArray(raw).map(segment => parseNumber(key, segment))),\n ),\n );\n }\n\n getArrayDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(\n Effect.flatMap(raw =>\n Effect.all(splitArray(raw).map(segment => parseDate(key, segment))),\n ),\n );\n }\n\n getOptionalString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key);\n }\n\n getOptionalNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined ? Effect.succeed(undefined) : parseNumber(key, raw),\n ),\n );\n }\n\n getOptionalDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined ? Effect.succeed(undefined) : parseDate(key, raw),\n ),\n );\n }\n\n getOptionalArrayNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined\n ? Effect.succeed(undefined)\n : Effect.all(\n splitArray(raw).map(segment => parseNumber(key, segment)),\n ),\n ),\n );\n }\n\n getOptionalArrayString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.map(raw => (raw === undefined ? undefined : splitArray(raw))),\n );\n }\n\n getOptionalArrayDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined\n ? Effect.succeed(undefined)\n : Effect.all(splitArray(raw).map(segment => parseDate(key, segment))),\n ),\n );\n }\n}\n\n/**\n * In-memory {@link ConfigurationClient} backed by a loaded\n * {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to\n * that group's items.\n */\nexport class ConfigurationClientInMemory implements ConfigurationClient {\n #plainConfig: ConfigurationPlain;\n\n constructor(plainConfig: ConfigurationPlain = {}) {\n this.#plainConfig = plainConfig;\n }\n\n in(group: string): ConfigurationClientGroup {\n return new ConfigurationClientGroupInMemory(this.#plainConfig[group] ?? []);\n }\n}\n"],"names":["Effect","EntifixBuildError","composeUrl","base","segments","replace","map","segment","filter","part","length","join","parseNumber","key","raw","parsed","Number","trim","isNaN","fail","undefined","succeed","parseDate","Date","getTime","splitArray","split","ConfigurationClientGroupInMemory","getString","extractMode","head","pipe","getNumber","flatMap","getDate","getArrayString","getArrayNumber","all","getArrayDate","getOptionalString","getOptionalNumber","getOptionalDate","getOptionalArrayNumber","getOptionalArrayString","getOptionalArrayDate","items","find","candidate","item","value","availableKeys","String","ConfigurationClientInMemory","in","group","plainConfig"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './configuration-client-singleton.js';
2
+ export * from './read-configuration-from-process.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './configuration-client-singleton.js';
2
+ export * from './read-configuration-from-process.js';
3
+ export * from './types.js';
4
+
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/configuration-client/index.ts"],"sourcesContent":["export * from './configuration-client-singleton.js';\nexport * from './read-configuration-from-process.js';\nexport * from './types.js';\n"],"names":[],"mappings":"AAAA,cAAc,sCAAsC;AACpD,cAAc,uCAAuC;AACrD,cAAc,aAAa"}
@@ -0,0 +1,11 @@
1
+ import { ConfigurationPlain } from './types.js';
2
+ /**
3
+ * Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.
4
+ *
5
+ * The input is expected to be already scoped to a single service (the
6
+ * `SERVICE__` prefix removed by the caller). Each entry's name is split on the
7
+ * first `__` into a group and a key (the key may itself contain `__`). Malformed
8
+ * entries without a group/key pair are skipped.
9
+ */
10
+ export declare const readConfigurationFromProcess: (keys: Record<string, string>) => ConfigurationPlain;
11
+ //# sourceMappingURL=read-configuration-from-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-configuration-from-process.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/read-configuration-from-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,kBAeF,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.
3
+ *
4
+ * The input is expected to be already scoped to a single service (the
5
+ * `SERVICE__` prefix removed by the caller). Each entry's name is split on the
6
+ * first `__` into a group and a key (the key may itself contain `__`). Malformed
7
+ * entries without a group/key pair are skipped.
8
+ */ export const readConfigurationFromProcess = (keys)=>{
9
+ const config = {};
10
+ for (const [name, value] of Object.entries(keys)){
11
+ var _config, _group, _;
12
+ const [group, ...rest] = name.split('__');
13
+ if (!group || rest.length === 0) {
14
+ continue;
15
+ }
16
+ const key = rest.join('__');
17
+ const item = {
18
+ key,
19
+ value
20
+ };
21
+ ((_ = (_config = config)[_group = group]) != null ? _ : _config[_group] = []).push(item);
22
+ }
23
+ return config;
24
+ };
25
+
26
+ //# sourceMappingURL=read-configuration-from-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/configuration-client/read-configuration-from-process.ts"],"sourcesContent":["import { ConfigurationItem, ConfigurationPlain } from './types.js';\n\n/**\n * Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.\n *\n * The input is expected to be already scoped to a single service (the\n * `SERVICE__` prefix removed by the caller). Each entry's name is split on the\n * first `__` into a group and a key (the key may itself contain `__`). Malformed\n * entries without a group/key pair are skipped.\n */\nexport const readConfigurationFromProcess = (\n keys: Record<string, string>,\n): ConfigurationPlain => {\n const config: ConfigurationPlain = {};\n\n for (const [name, value] of Object.entries(keys)) {\n const [group, ...rest] = name.split('__');\n if (!group || rest.length === 0) {\n continue;\n }\n\n const key = rest.join('__');\n const item: ConfigurationItem = { key, value };\n (config[group] ??= []).push(item);\n }\n\n return config;\n};\n"],"names":["readConfigurationFromProcess","keys","config","name","value","Object","entries","group","rest","split","length","key","join","item","push"],"mappings":"AAEA;;;;;;;CAOC,GACD,OAAO,MAAMA,+BAA+B,CAC1CC;IAEA,MAAMC,SAA6B,CAAC;IAEpC,KAAK,MAAM,CAACC,MAAMC,MAAM,IAAIC,OAAOC,OAAO,CAACL,MAAO;YAQ/CC,SAAOK,QAAPL;QAPD,MAAM,CAACK,OAAO,GAAGC,KAAK,GAAGL,KAAKM,KAAK,CAAC;QACpC,IAAI,CAACF,SAASC,KAAKE,MAAM,KAAK,GAAG;YAC/B;QACF;QAEA,MAAMC,MAAMH,KAAKI,IAAI,CAAC;QACtB,MAAMC,OAA0B;YAAEF;YAAKP;QAAM;QAC7C,EAACF,IAAAA,CAAAA,UAAAA,OAAM,CAACK,SAAAA,MAAM,YAAbL,IAAAA,OAAM,CAACK,OAAM,GAAK,EAAE,EAAEO,IAAI,CAACD;IAC9B;IAEA,OAAOX;AACT,EAAE"}
@@ -0,0 +1,38 @@
1
+ import { Effect } from 'effect/Effect';
2
+ import { EntifixBuildError } from '../entifix-error/index.js';
3
+ export type ConfigurationExtractMode = 'exact' | 'match' | 'compose';
4
+ export interface ConfigurationClientGroup {
5
+ getNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number, EntifixBuildError>;
6
+ getString(key: string, extractMode?: ConfigurationExtractMode): Effect<string, EntifixBuildError>;
7
+ getDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date, EntifixBuildError>;
8
+ getArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number[], EntifixBuildError>;
9
+ getArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect<string[], EntifixBuildError>;
10
+ getArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date[], EntifixBuildError>;
11
+ getOptionalNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number | undefined, EntifixBuildError>;
12
+ getOptionalString(key: string, extractMode?: ConfigurationExtractMode): Effect<string | undefined, EntifixBuildError>;
13
+ getOptionalDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date | undefined, EntifixBuildError>;
14
+ getOptionalArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number[] | undefined, EntifixBuildError>;
15
+ getOptionalArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect<string[] | undefined, EntifixBuildError>;
16
+ getOptionalArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date[] | undefined, EntifixBuildError>;
17
+ }
18
+ export interface ConfigurationClient {
19
+ in(key: string): ConfigurationClientGroup;
20
+ }
21
+ export interface ConfigurationItem {
22
+ key: string;
23
+ value: unknown;
24
+ /**
25
+ * Marks the value as a credential — a connection password, a signing key.
26
+ *
27
+ * It travels with the item because the only place that knows is the
28
+ * configuration store's own `is_secret` column, while the place that must act
29
+ * on it is a service's `GET /api/config` introspection route, several hops
30
+ * away. Inferring it there from the key's *name* would be a guess, and the
31
+ * cost of guessing wrong is publishing a private key.
32
+ */
33
+ isSecret?: boolean;
34
+ }
35
+ export interface ConfigurationPlain {
36
+ [key: string]: ConfigurationItem[];
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrC,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrC,OAAO,CACL,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACnC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvC,YAAY,CACV,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACrC,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjD,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjD,eAAe,CACb,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC/C,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnD,oBAAoB,CAClB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;CACpC"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/configuration-client/types.ts"],"sourcesContent":["import { Effect } from 'effect/Effect';\n\nimport { EntifixBuildError } from '../entifix-error/index.js';\n\nexport type ConfigurationExtractMode = 'exact' | 'match' | 'compose';\n\nexport interface ConfigurationClientGroup {\n getNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number, EntifixBuildError>;\n getString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string, EntifixBuildError>;\n getDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date, EntifixBuildError>;\n getArrayNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number[], EntifixBuildError>;\n getArrayString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string[], EntifixBuildError>;\n getArrayDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date[], EntifixBuildError>;\n getOptionalNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number | undefined, EntifixBuildError>;\n getOptionalString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string | undefined, EntifixBuildError>;\n getOptionalDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date | undefined, EntifixBuildError>;\n getOptionalArrayNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number[] | undefined, EntifixBuildError>;\n getOptionalArrayString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string[] | undefined, EntifixBuildError>;\n getOptionalArrayDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date[] | undefined, EntifixBuildError>;\n}\n\nexport interface ConfigurationClient {\n in(key: string): ConfigurationClientGroup;\n}\n\nexport interface ConfigurationItem {\n key: string;\n value: unknown;\n /**\n * Marks the value as a credential — a connection password, a signing key.\n *\n * It travels with the item because the only place that knows is the\n * configuration store's own `is_secret` column, while the place that must act\n * on it is a service's `GET /api/config` introspection route, several hops\n * away. Inferring it there from the key's *name* would be a guess, and the\n * cost of guessing wrong is publishing a private key.\n */\n isSecret?: boolean;\n}\n\nexport interface ConfigurationPlain {\n [key: string]: ConfigurationItem[];\n}\n"],"names":[],"mappings":"AA4EA,WAEC"}
@@ -0,0 +1,31 @@
1
+ export declare abstract class EntifixError extends Error {
2
+ abstract readonly _tag: string;
3
+ readonly cause: Error | undefined;
4
+ readonly details?: Record<string, unknown>;
5
+ constructor(message: string, cause?: unknown, details?: Record<string, unknown>);
6
+ }
7
+ export declare class EntifixBuildError extends EntifixError {
8
+ _tag: string;
9
+ }
10
+ export declare class EntifixLogicError extends EntifixError {
11
+ _tag: string;
12
+ }
13
+ export declare class EntifixConnError extends EntifixError {
14
+ _tag: string;
15
+ }
16
+ /**
17
+ * A transaction/saga step failed (validate, execute, rollback, free) — distinct
18
+ * from a lock acquisition failure, which callers retry, and from a build error,
19
+ * which is the client's fault.
20
+ */
21
+ export declare class EntifixTransactionError extends EntifixError {
22
+ _tag: string;
23
+ }
24
+ /**
25
+ * A resource could not be locked within the allowed retries/TTL — a contention
26
+ * signal callers surface as a `409`/`423`, not a `500`.
27
+ */
28
+ export declare class EntifixLockError extends EntifixError {
29
+ _tag: string;
30
+ }
31
+ //# sourceMappingURL=entifix-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entifix-error.d.ts","sourceRoot":"","sources":["../../../src/base-entities/entifix-error/entifix-error.ts"],"names":[],"mappings":"AAUA,8BAAsB,YAAa,SAAQ,KAAK;IAE9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,SAAkB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAKzC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,IAAI,SAAuB;CAErC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,IAAI,SAAuB;CAErC;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAEvC,IAAI,SAAsB;CAEpC;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IAE9C,IAAI,SAA6B;CAE3C;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAEvC,IAAI,SAAsB;CAEpC"}
@@ -0,0 +1,56 @@
1
+ function assertCause(cause) {
2
+ if (cause instanceof Error) {
3
+ return cause;
4
+ } else if (cause && typeof cause === 'object' && 'message' in cause) {
5
+ return new Error(String(cause['message']));
6
+ }
7
+ return undefined;
8
+ }
9
+ export class EntifixError extends Error {
10
+ // #endregion properties
11
+ // #region constructors
12
+ constructor(message, cause, details){
13
+ super(message);
14
+ this.cause = assertCause(cause);
15
+ this.details = details;
16
+ }
17
+ }
18
+ export class EntifixBuildError extends EntifixError {
19
+ constructor(...args){
20
+ super(...args), // #region properties
21
+ this._tag = 'EntifixBuildError';
22
+ }
23
+ }
24
+ export class EntifixLogicError extends EntifixError {
25
+ constructor(...args){
26
+ super(...args), // #region properties
27
+ this._tag = 'EntifixLogicError';
28
+ }
29
+ }
30
+ export class EntifixConnError extends EntifixError {
31
+ constructor(...args){
32
+ super(...args), // #region properties
33
+ this._tag = 'EntifixConnError';
34
+ }
35
+ }
36
+ /**
37
+ * A transaction/saga step failed (validate, execute, rollback, free) — distinct
38
+ * from a lock acquisition failure, which callers retry, and from a build error,
39
+ * which is the client's fault.
40
+ */ export class EntifixTransactionError extends EntifixError {
41
+ constructor(...args){
42
+ super(...args), // #region properties
43
+ this._tag = 'EntifixTransactionError';
44
+ }
45
+ }
46
+ /**
47
+ * A resource could not be locked within the allowed retries/TTL — a contention
48
+ * signal callers surface as a `409`/`423`, not a `500`.
49
+ */ export class EntifixLockError extends EntifixError {
50
+ constructor(...args){
51
+ super(...args), // #region properties
52
+ this._tag = 'EntifixLockError';
53
+ }
54
+ }
55
+
56
+ //# sourceMappingURL=entifix-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/entifix-error/entifix-error.ts"],"sourcesContent":["function assertCause(cause: unknown): Error | undefined {\n if (cause instanceof Error) {\n return cause;\n } else if (cause && typeof cause === 'object' && 'message' in cause) {\n return new Error(String(cause['message']));\n }\n\n return undefined;\n}\n\nexport abstract class EntifixError extends Error {\n // #region properties\n abstract readonly _tag: string;\n override readonly cause: Error | undefined;\n readonly details?: Record<string, unknown>;\n // #endregion properties\n\n // #region constructors\n constructor(\n message: string,\n cause?: unknown,\n details?: Record<string, unknown>,\n ) {\n super(message);\n this.cause = assertCause(cause);\n this.details = details;\n }\n // #endregion constructors\n}\n\nexport class EntifixBuildError extends EntifixError {\n // #region properties\n override _tag = 'EntifixBuildError';\n // #endregion properties\n}\n\nexport class EntifixLogicError extends EntifixError {\n // #region properties\n override _tag = 'EntifixLogicError';\n // #endregion properties\n}\n\nexport class EntifixConnError extends EntifixError {\n // #region properties\n override _tag = 'EntifixConnError';\n // #endregion properties\n}\n\n/**\n * A transaction/saga step failed (validate, execute, rollback, free) — distinct\n * from a lock acquisition failure, which callers retry, and from a build error,\n * which is the client's fault.\n */\nexport class EntifixTransactionError extends EntifixError {\n // #region properties\n override _tag = 'EntifixTransactionError';\n // #endregion properties\n}\n\n/**\n * A resource could not be locked within the allowed retries/TTL — a contention\n * signal callers surface as a `409`/`423`, not a `500`.\n */\nexport class EntifixLockError extends EntifixError {\n // #region properties\n override _tag = 'EntifixLockError';\n // #endregion properties\n}\n"],"names":["assertCause","cause","Error","String","undefined","EntifixError","message","details","EntifixBuildError","_tag","EntifixLogicError","EntifixConnError","EntifixTransactionError","EntifixLockError"],"mappings":"AAAA,SAASA,YAAYC,KAAc;IACjC,IAAIA,iBAAiBC,OAAO;QAC1B,OAAOD;IACT,OAAO,IAAIA,SAAS,OAAOA,UAAU,YAAY,aAAaA,OAAO;QACnE,OAAO,IAAIC,MAAMC,OAAOF,KAAK,CAAC,UAAU;IAC1C;IAEA,OAAOG;AACT;AAEA,OAAO,MAAeC,qBAAqBH;IAKzC,wBAAwB;IAExB,uBAAuB;IACvB,YACEI,OAAe,EACfL,KAAe,EACfM,OAAiC,CACjC;QACA,KAAK,CAACD;QACN,IAAI,CAACL,KAAK,GAAGD,YAAYC;QACzB,IAAI,CAACM,OAAO,GAAGA;IACjB;AAEF;AAEA,OAAO,MAAMC,0BAA0BH;;QAAhC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA,OAAO,MAAMC,0BAA0BL;;QAAhC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA,OAAO,MAAME,yBAAyBN;;QAA/B,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA;;;;CAIC,GACD,OAAO,MAAMG,gCAAgCP;;QAAtC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA;;;CAGC,GACD,OAAO,MAAMI,yBAAyBR;;QAA/B,gBACL,qBAAqB;aACZI,OAAO;;AAElB"}
@@ -0,0 +1,2 @@
1
+ export * from './entifix-error.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base-entities/entifix-error/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './entifix-error.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/base-entities/entifix-error/index.ts"],"sourcesContent":["export * from './entifix-error.js';\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
@@ -0,0 +1,79 @@
1
+ import type { CommandOption } from './command-source.js';
2
+ /**
3
+ * Normalize a string for matching: case-folded, and with accents removed.
4
+ *
5
+ * ⚠️ The accent fold is correctness, not polish. The fleet ships Spanish as its
6
+ * default locale, and without it `categoria` does not match `Categoría`, `marron`
7
+ * does not match `Marrón`, and `articulo` does not match `Artículo` — so the
8
+ * palette silently finds nothing for the most natural way to type most of its
9
+ * own copy. Nobody reaches for the accented key in a search box.
10
+ *
11
+ * NFD splits a precomposed letter into its base plus a combining mark, and the
12
+ * `\p{Diacritic}` class is what then removes only the mark. `ñ` decomposes too,
13
+ * so `nino` matches `Niño` — which is what a person typing quickly wants, even
14
+ * though ñ is a letter of its own in Spanish rather than an accented n.
15
+ */
16
+ export declare function foldForMatch(text: string): string;
17
+ /**
18
+ * Does `text` contain every character of `term`, in order?
19
+ *
20
+ * Subsequence rather than substring, so `prbr` finds "Producto Bruto" and `numa`
21
+ * finds "Nueva marca" — the thing that makes a palette feel fast. Deliberately
22
+ * **not** scored: ADR 0040 fixed group order as the ranking, and a score inside
23
+ * a group would reshuffle it on every keystroke for no gain a person can learn.
24
+ *
25
+ * An empty term matches everything, which is what makes an unfiltered palette
26
+ * the same code path as a filtered one.
27
+ */
28
+ export declare function subsequenceMatch(term: string, text: string): boolean;
29
+ /**
30
+ * Does this option answer to `term`, by its label or by any of its keywords?
31
+ *
32
+ * The keywords are what let a Spanish command match an English word someone
33
+ * typed — "Nuevo producto" answering to `new` — without translating the label.
34
+ */
35
+ export declare function matchesCommand(term: string, option: CommandOption): boolean;
36
+ /**
37
+ * Split a catalog-resolved keyword list into terms.
38
+ *
39
+ * `MetaUseCase.keywordsKey` is a catalog **key** rather than a `string[]` so the
40
+ * terms are per-locale; what the catalog holds is therefore one string, and this
41
+ * is the convention for reading it. Commas, because a keyword may itself be two
42
+ * words ("cerrar sesión") and splitting on whitespace would break that into
43
+ * terms that match nothing on their own.
44
+ *
45
+ * Empty entries are dropped rather than kept as `''`, which would match every
46
+ * option through {@link subsequenceMatch}'s empty-term rule.
47
+ */
48
+ export declare function parseKeywords(value: string | undefined): string[];
49
+ /** Which sources a typed term is asking for. */
50
+ export type CommandScope = 'all' | 'commands' | 'records';
51
+ /** A term, split into the scope its prefix asked for and the rest. */
52
+ export interface ParsedCommandTerm {
53
+ readonly scope: CommandScope;
54
+ readonly term: string;
55
+ }
56
+ /**
57
+ * `>` narrows to commands, `#` to records, anything else searches both.
58
+ *
59
+ * A grammar for *entry* rather than for depth: descending into a sub-picker is a
60
+ * page stack, not a third prefix, because a prefix a person has to remember is
61
+ * worse than a list they can see. Two characters only, and both are the ones
62
+ * VS Code and GitHub already trained people on.
63
+ *
64
+ * The prefix is stripped and the remainder trimmed at the front only — a
65
+ * trailing space is something the person is still typing, and eating it would
66
+ * make the list jump between keystrokes.
67
+ */
68
+ export declare function parseCommandTerm(raw: string): ParsedCommandTerm;
69
+ /**
70
+ * The one thing selecting an option does.
71
+ *
72
+ * An option declaring none is a line that looks selectable and does nothing;
73
+ * one declaring two is a line whose behaviour depends on the order a renderer
74
+ * happens to check its members in. Both are silent, so this throws — at the
75
+ * first render of the palette rather than on the click, which is the posture
76
+ * `surfaceFor` and `assertSearchable` already take for the same reason.
77
+ */
78
+ export declare function commandEffectOf(option: CommandOption): 'href' | 'run' | 'push';
79
+ //# sourceMappingURL=command-matching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-matching.d.ts","sourceRoot":"","sources":["../../src/command-palette/command-matching.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAK3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAMjE;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAQ/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,GACpB,MAAM,GAAG,KAAK,GAAG,MAAM,CAezB"}