@sparqjs/schema-core 0.1.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 (433) hide show
  1. package/dist/action/action-runtime.d.ts +91 -0
  2. package/dist/action/action-runtime.d.ts.map +1 -0
  3. package/dist/action/action-runtime.js +172 -0
  4. package/dist/action/action-runtime.js.map +1 -0
  5. package/dist/action/builtin-actions.d.ts +35 -0
  6. package/dist/action/builtin-actions.d.ts.map +1 -0
  7. package/dist/action/builtin-actions.js +200 -0
  8. package/dist/action/builtin-actions.js.map +1 -0
  9. package/dist/action/index.d.ts +6 -0
  10. package/dist/action/index.d.ts.map +1 -0
  11. package/dist/action/index.js +6 -0
  12. package/dist/action/index.js.map +1 -0
  13. package/dist/action/merge-action.d.ts +9 -0
  14. package/dist/action/merge-action.d.ts.map +1 -0
  15. package/dist/action/merge-action.js +51 -0
  16. package/dist/action/merge-action.js.map +1 -0
  17. package/dist/action/resolve-action.d.ts +14 -0
  18. package/dist/action/resolve-action.d.ts.map +1 -0
  19. package/dist/action/resolve-action.js +81 -0
  20. package/dist/action/resolve-action.js.map +1 -0
  21. package/dist/action/types.d.ts +97 -0
  22. package/dist/action/types.d.ts.map +1 -0
  23. package/dist/action/types.js +2 -0
  24. package/dist/action/types.js.map +1 -0
  25. package/dist/component-keys.d.ts +49 -0
  26. package/dist/component-keys.d.ts.map +1 -0
  27. package/dist/component-keys.js +48 -0
  28. package/dist/component-keys.js.map +1 -0
  29. package/dist/data/index.d.ts +3 -0
  30. package/dist/data/index.d.ts.map +1 -0
  31. package/dist/data/index.js +3 -0
  32. package/dist/data/index.js.map +1 -0
  33. package/dist/data/options.d.ts +33 -0
  34. package/dist/data/options.d.ts.map +1 -0
  35. package/dist/data/options.js +147 -0
  36. package/dist/data/options.js.map +1 -0
  37. package/dist/data/types.d.ts +303 -0
  38. package/dist/data/types.d.ts.map +1 -0
  39. package/dist/data/types.js +2 -0
  40. package/dist/data/types.js.map +1 -0
  41. package/dist/diagnostics/create-diagnostic.d.ts +8 -0
  42. package/dist/diagnostics/create-diagnostic.d.ts.map +1 -0
  43. package/dist/diagnostics/create-diagnostic.js +13 -0
  44. package/dist/diagnostics/create-diagnostic.js.map +1 -0
  45. package/dist/diagnostics/diagnostic-collector.d.ts +27 -0
  46. package/dist/diagnostics/diagnostic-collector.d.ts.map +1 -0
  47. package/dist/diagnostics/diagnostic-collector.js +30 -0
  48. package/dist/diagnostics/diagnostic-collector.js.map +1 -0
  49. package/dist/diagnostics/index.d.ts +4 -0
  50. package/dist/diagnostics/index.d.ts.map +1 -0
  51. package/dist/diagnostics/index.js +4 -0
  52. package/dist/diagnostics/index.js.map +1 -0
  53. package/dist/diagnostics/types.d.ts +51 -0
  54. package/dist/diagnostics/types.d.ts.map +1 -0
  55. package/dist/diagnostics/types.js +2 -0
  56. package/dist/diagnostics/types.js.map +1 -0
  57. package/dist/expression/condition.d.ts +9 -0
  58. package/dist/expression/condition.d.ts.map +1 -0
  59. package/dist/expression/condition.js +82 -0
  60. package/dist/expression/condition.js.map +1 -0
  61. package/dist/expression/index.d.ts +6 -0
  62. package/dist/expression/index.d.ts.map +1 -0
  63. package/dist/expression/index.js +6 -0
  64. package/dist/expression/index.js.map +1 -0
  65. package/dist/expression/path.d.ts +8 -0
  66. package/dist/expression/path.d.ts.map +1 -0
  67. package/dist/expression/path.js +30 -0
  68. package/dist/expression/path.js.map +1 -0
  69. package/dist/expression/template.d.ts +8 -0
  70. package/dist/expression/template.d.ts.map +1 -0
  71. package/dist/expression/template.js +23 -0
  72. package/dist/expression/template.js.map +1 -0
  73. package/dist/expression/types.d.ts +27 -0
  74. package/dist/expression/types.d.ts.map +1 -0
  75. package/dist/expression/types.js +2 -0
  76. package/dist/expression/types.js.map +1 -0
  77. package/dist/expression/value.d.ts +12 -0
  78. package/dist/expression/value.d.ts.map +1 -0
  79. package/dist/expression/value.js +88 -0
  80. package/dist/expression/value.js.map +1 -0
  81. package/dist/hooks/index.d.ts +2 -0
  82. package/dist/hooks/index.d.ts.map +1 -0
  83. package/dist/hooks/index.js +2 -0
  84. package/dist/hooks/index.js.map +1 -0
  85. package/dist/hooks/types.d.ts +131 -0
  86. package/dist/hooks/types.d.ts.map +1 -0
  87. package/dist/hooks/types.js +2 -0
  88. package/dist/hooks/types.js.map +1 -0
  89. package/dist/icon-keys.d.ts +46 -0
  90. package/dist/icon-keys.d.ts.map +1 -0
  91. package/dist/icon-keys.js +100 -0
  92. package/dist/icon-keys.js.map +1 -0
  93. package/dist/index.d.ts +20 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +20 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/inference/display-components.d.ts +14 -0
  98. package/dist/inference/display-components.d.ts.map +1 -0
  99. package/dist/inference/display-components.js +52 -0
  100. package/dist/inference/display-components.js.map +1 -0
  101. package/dist/inference/index.d.ts +4 -0
  102. package/dist/inference/index.d.ts.map +1 -0
  103. package/dist/inference/index.js +4 -0
  104. package/dist/inference/index.js.map +1 -0
  105. package/dist/inference/search-components.d.ts +9 -0
  106. package/dist/inference/search-components.d.ts.map +1 -0
  107. package/dist/inference/search-components.js +46 -0
  108. package/dist/inference/search-components.js.map +1 -0
  109. package/dist/inference/search-operators.d.ts +9 -0
  110. package/dist/inference/search-operators.d.ts.map +1 -0
  111. package/dist/inference/search-operators.js +42 -0
  112. package/dist/inference/search-operators.js.map +1 -0
  113. package/dist/normalizer/index.d.ts +12 -0
  114. package/dist/normalizer/index.d.ts.map +1 -0
  115. package/dist/normalizer/index.js +12 -0
  116. package/dist/normalizer/index.js.map +1 -0
  117. package/dist/normalizer/infer-detail.d.ts +8 -0
  118. package/dist/normalizer/infer-detail.d.ts.map +1 -0
  119. package/dist/normalizer/infer-detail.js +19 -0
  120. package/dist/normalizer/infer-detail.js.map +1 -0
  121. package/dist/normalizer/infer-form.d.ts +8 -0
  122. package/dist/normalizer/infer-form.d.ts.map +1 -0
  123. package/dist/normalizer/infer-form.js +16 -0
  124. package/dist/normalizer/infer-form.js.map +1 -0
  125. package/dist/normalizer/infer-search.d.ts +18 -0
  126. package/dist/normalizer/infer-search.d.ts.map +1 -0
  127. package/dist/normalizer/infer-search.js +53 -0
  128. package/dist/normalizer/infer-search.js.map +1 -0
  129. package/dist/normalizer/infer-table.d.ts +16 -0
  130. package/dist/normalizer/infer-table.d.ts.map +1 -0
  131. package/dist/normalizer/infer-table.js +41 -0
  132. package/dist/normalizer/infer-table.js.map +1 -0
  133. package/dist/normalizer/normalize-resource.d.ts +10 -0
  134. package/dist/normalizer/normalize-resource.d.ts.map +1 -0
  135. package/dist/normalizer/normalize-resource.js +84 -0
  136. package/dist/normalizer/normalize-resource.js.map +1 -0
  137. package/dist/normalizer/normalize-views.d.ts +32 -0
  138. package/dist/normalizer/normalize-views.d.ts.map +1 -0
  139. package/dist/normalizer/normalize-views.js +194 -0
  140. package/dist/normalizer/normalize-views.js.map +1 -0
  141. package/dist/normalizer/types.d.ts +36 -0
  142. package/dist/normalizer/types.d.ts.map +1 -0
  143. package/dist/normalizer/types.js +2 -0
  144. package/dist/normalizer/types.js.map +1 -0
  145. package/dist/normalizer/validate-nodes.d.ts +9 -0
  146. package/dist/normalizer/validate-nodes.d.ts.map +1 -0
  147. package/dist/normalizer/validate-nodes.js +91 -0
  148. package/dist/normalizer/validate-nodes.js.map +1 -0
  149. package/dist/normalizer/validate-search.d.ts +9 -0
  150. package/dist/normalizer/validate-search.d.ts.map +1 -0
  151. package/dist/normalizer/validate-search.js +20 -0
  152. package/dist/normalizer/validate-search.js.map +1 -0
  153. package/dist/normalizer/validate-table.d.ts +9 -0
  154. package/dist/normalizer/validate-table.d.ts.map +1 -0
  155. package/dist/normalizer/validate-table.js +52 -0
  156. package/dist/normalizer/validate-table.js.map +1 -0
  157. package/dist/normalizer/validate-value-expression.d.ts +4 -0
  158. package/dist/normalizer/validate-value-expression.d.ts.map +1 -0
  159. package/dist/normalizer/validate-value-expression.js +43 -0
  160. package/dist/normalizer/validate-value-expression.js.map +1 -0
  161. package/dist/registry/action-executor-registry.d.ts +6 -0
  162. package/dist/registry/action-executor-registry.d.ts.map +1 -0
  163. package/dist/registry/action-executor-registry.js +6 -0
  164. package/dist/registry/action-executor-registry.js.map +1 -0
  165. package/dist/registry/action-handler-registry.d.ts +19 -0
  166. package/dist/registry/action-handler-registry.d.ts.map +1 -0
  167. package/dist/registry/action-handler-registry.js +15 -0
  168. package/dist/registry/action-handler-registry.js.map +1 -0
  169. package/dist/registry/component-registry.d.ts +17 -0
  170. package/dist/registry/component-registry.d.ts.map +1 -0
  171. package/dist/registry/component-registry.js +11 -0
  172. package/dist/registry/component-registry.js.map +1 -0
  173. package/dist/registry/effect-handler-registry.d.ts +19 -0
  174. package/dist/registry/effect-handler-registry.d.ts.map +1 -0
  175. package/dist/registry/effect-handler-registry.js +15 -0
  176. package/dist/registry/effect-handler-registry.js.map +1 -0
  177. package/dist/registry/index.d.ts +6 -0
  178. package/dist/registry/index.d.ts.map +1 -0
  179. package/dist/registry/index.js +6 -0
  180. package/dist/registry/index.js.map +1 -0
  181. package/dist/registry/runtime-registries.d.ts +20 -0
  182. package/dist/registry/runtime-registries.d.ts.map +1 -0
  183. package/dist/registry/runtime-registries.js +46 -0
  184. package/dist/registry/runtime-registries.js.map +1 -0
  185. package/dist/relation-list/index.d.ts +3 -0
  186. package/dist/relation-list/index.d.ts.map +1 -0
  187. package/dist/relation-list/index.js +3 -0
  188. package/dist/relation-list/index.js.map +1 -0
  189. package/dist/relation-list/runtime.d.ts +19 -0
  190. package/dist/relation-list/runtime.d.ts.map +1 -0
  191. package/dist/relation-list/runtime.js +279 -0
  192. package/dist/relation-list/runtime.js.map +1 -0
  193. package/dist/relation-list/types.d.ts +32 -0
  194. package/dist/relation-list/types.d.ts.map +1 -0
  195. package/dist/relation-list/types.js +2 -0
  196. package/dist/relation-list/types.js.map +1 -0
  197. package/dist/render/index.d.ts +3 -0
  198. package/dist/render/index.d.ts.map +1 -0
  199. package/dist/render/index.js +3 -0
  200. package/dist/render/index.js.map +1 -0
  201. package/dist/render/resolve-render-view.d.ts +3 -0
  202. package/dist/render/resolve-render-view.d.ts.map +1 -0
  203. package/dist/render/resolve-render-view.js +93 -0
  204. package/dist/render/resolve-render-view.js.map +1 -0
  205. package/dist/render/types.d.ts +21 -0
  206. package/dist/render/types.d.ts.map +1 -0
  207. package/dist/render/types.js +2 -0
  208. package/dist/render/types.js.map +1 -0
  209. package/dist/runtime.d.ts +34 -0
  210. package/dist/runtime.d.ts.map +1 -0
  211. package/dist/runtime.js +31 -0
  212. package/dist/runtime.js.map +1 -0
  213. package/dist/scope/index.d.ts +4 -0
  214. package/dist/scope/index.d.ts.map +1 -0
  215. package/dist/scope/index.js +4 -0
  216. package/dist/scope/index.js.map +1 -0
  217. package/dist/scope/resolve-target.d.ts +9 -0
  218. package/dist/scope/resolve-target.d.ts.map +1 -0
  219. package/dist/scope/resolve-target.js +40 -0
  220. package/dist/scope/resolve-target.js.map +1 -0
  221. package/dist/scope/scope-tree.d.ts +27 -0
  222. package/dist/scope/scope-tree.d.ts.map +1 -0
  223. package/dist/scope/scope-tree.js +55 -0
  224. package/dist/scope/scope-tree.js.map +1 -0
  225. package/dist/scope/types.d.ts +63 -0
  226. package/dist/scope/types.d.ts.map +1 -0
  227. package/dist/scope/types.js +2 -0
  228. package/dist/scope/types.js.map +1 -0
  229. package/dist/session/action-execution.d.ts +16 -0
  230. package/dist/session/action-execution.d.ts.map +1 -0
  231. package/dist/session/action-execution.js +349 -0
  232. package/dist/session/action-execution.js.map +1 -0
  233. package/dist/session/actions/default-action-handlers.d.ts +21 -0
  234. package/dist/session/actions/default-action-handlers.d.ts.map +1 -0
  235. package/dist/session/actions/default-action-handlers.js +446 -0
  236. package/dist/session/actions/default-action-handlers.js.map +1 -0
  237. package/dist/session/actions/index.d.ts +4 -0
  238. package/dist/session/actions/index.d.ts.map +1 -0
  239. package/dist/session/actions/index.js +26 -0
  240. package/dist/session/actions/index.js.map +1 -0
  241. package/dist/session/audit-state.d.ts +16 -0
  242. package/dist/session/audit-state.d.ts.map +1 -0
  243. package/dist/session/audit-state.js +130 -0
  244. package/dist/session/audit-state.js.map +1 -0
  245. package/dist/session/controller-action-state.d.ts +11 -0
  246. package/dist/session/controller-action-state.d.ts.map +1 -0
  247. package/dist/session/controller-action-state.js +89 -0
  248. package/dist/session/controller-action-state.js.map +1 -0
  249. package/dist/session/controller.d.ts +20 -0
  250. package/dist/session/controller.d.ts.map +1 -0
  251. package/dist/session/controller.js +467 -0
  252. package/dist/session/controller.js.map +1 -0
  253. package/dist/session/default-values.d.ts +13 -0
  254. package/dist/session/default-values.d.ts.map +1 -0
  255. package/dist/session/default-values.js +64 -0
  256. package/dist/session/default-values.js.map +1 -0
  257. package/dist/session/defaults.d.ts +3 -0
  258. package/dist/session/defaults.d.ts.map +1 -0
  259. package/dist/session/defaults.js +12 -0
  260. package/dist/session/defaults.js.map +1 -0
  261. package/dist/session/effects/default-effect-handlers.d.ts +15 -0
  262. package/dist/session/effects/default-effect-handlers.d.ts.map +1 -0
  263. package/dist/session/effects/default-effect-handlers.js +84 -0
  264. package/dist/session/effects/default-effect-handlers.js.map +1 -0
  265. package/dist/session/effects/effect-types.d.ts +21 -0
  266. package/dist/session/effects/effect-types.d.ts.map +1 -0
  267. package/dist/session/effects/effect-types.js +24 -0
  268. package/dist/session/effects/effect-types.js.map +1 -0
  269. package/dist/session/effects/index.d.ts +5 -0
  270. package/dist/session/effects/index.d.ts.map +1 -0
  271. package/dist/session/effects/index.js +20 -0
  272. package/dist/session/effects/index.js.map +1 -0
  273. package/dist/session/executors/default-action-executors.d.ts +10 -0
  274. package/dist/session/executors/default-action-executors.d.ts.map +1 -0
  275. package/dist/session/executors/default-action-executors.js +159 -0
  276. package/dist/session/executors/default-action-executors.js.map +1 -0
  277. package/dist/session/executors/executor-keys.d.ts +38 -0
  278. package/dist/session/executors/executor-keys.d.ts.map +1 -0
  279. package/dist/session/executors/executor-keys.js +19 -0
  280. package/dist/session/executors/executor-keys.js.map +1 -0
  281. package/dist/session/executors/index.d.ts +5 -0
  282. package/dist/session/executors/index.d.ts.map +1 -0
  283. package/dist/session/executors/index.js +15 -0
  284. package/dist/session/executors/index.js.map +1 -0
  285. package/dist/session/form-state.d.ts +23 -0
  286. package/dist/session/form-state.d.ts.map +1 -0
  287. package/dist/session/form-state.js +44 -0
  288. package/dist/session/form-state.js.map +1 -0
  289. package/dist/session/index.d.ts +12 -0
  290. package/dist/session/index.d.ts.map +1 -0
  291. package/dist/session/index.js +12 -0
  292. package/dist/session/index.js.map +1 -0
  293. package/dist/session/page-state.d.ts +36 -0
  294. package/dist/session/page-state.d.ts.map +1 -0
  295. package/dist/session/page-state.js +125 -0
  296. package/dist/session/page-state.js.map +1 -0
  297. package/dist/session/preset/default-session-preset.d.ts +2 -0
  298. package/dist/session/preset/default-session-preset.d.ts.map +1 -0
  299. package/dist/session/preset/default-session-preset.js +12 -0
  300. package/dist/session/preset/default-session-preset.js.map +1 -0
  301. package/dist/session/preset/index.d.ts +4 -0
  302. package/dist/session/preset/index.d.ts.map +1 -0
  303. package/dist/session/preset/index.js +4 -0
  304. package/dist/session/preset/index.js.map +1 -0
  305. package/dist/session/preset/preset.d.ts +6 -0
  306. package/dist/session/preset/preset.d.ts.map +1 -0
  307. package/dist/session/preset/preset.js +40 -0
  308. package/dist/session/preset/preset.js.map +1 -0
  309. package/dist/session/preset/types.d.ts +7 -0
  310. package/dist/session/preset/types.d.ts.map +1 -0
  311. package/dist/session/preset/types.js +2 -0
  312. package/dist/session/preset/types.js.map +1 -0
  313. package/dist/session/table-state.d.ts +34 -0
  314. package/dist/session/table-state.d.ts.map +1 -0
  315. package/dist/session/table-state.js +211 -0
  316. package/dist/session/table-state.js.map +1 -0
  317. package/dist/session/tree-state.d.ts +16 -0
  318. package/dist/session/tree-state.d.ts.map +1 -0
  319. package/dist/session/tree-state.js +170 -0
  320. package/dist/session/tree-state.js.map +1 -0
  321. package/dist/session/types.d.ts +364 -0
  322. package/dist/session/types.d.ts.map +1 -0
  323. package/dist/session/types.js +2 -0
  324. package/dist/session/types.js.map +1 -0
  325. package/dist/ui-keys.d.ts +45 -0
  326. package/dist/ui-keys.d.ts.map +1 -0
  327. package/dist/ui-keys.js +45 -0
  328. package/dist/ui-keys.js.map +1 -0
  329. package/dist/utils/condition.d.ts +10 -0
  330. package/dist/utils/condition.d.ts.map +1 -0
  331. package/dist/utils/condition.js +32 -0
  332. package/dist/utils/condition.js.map +1 -0
  333. package/dist/utils/errors.d.ts +8 -0
  334. package/dist/utils/errors.d.ts.map +1 -0
  335. package/dist/utils/errors.js +30 -0
  336. package/dist/utils/errors.js.map +1 -0
  337. package/dist/utils/field-generator.d.ts +3 -0
  338. package/dist/utils/field-generator.d.ts.map +1 -0
  339. package/dist/utils/field-generator.js +16 -0
  340. package/dist/utils/field-generator.js.map +1 -0
  341. package/dist/utils/field-options.d.ts +7 -0
  342. package/dist/utils/field-options.d.ts.map +1 -0
  343. package/dist/utils/field-options.js +65 -0
  344. package/dist/utils/field-options.js.map +1 -0
  345. package/dist/utils/field-validation.d.ts +5 -0
  346. package/dist/utils/field-validation.d.ts.map +1 -0
  347. package/dist/utils/field-validation.js +206 -0
  348. package/dist/utils/field-validation.js.map +1 -0
  349. package/dist/utils/fields.d.ts +71 -0
  350. package/dist/utils/fields.d.ts.map +1 -0
  351. package/dist/utils/fields.js +111 -0
  352. package/dist/utils/fields.js.map +1 -0
  353. package/dist/utils/index.d.ts +11 -0
  354. package/dist/utils/index.d.ts.map +1 -0
  355. package/dist/utils/index.js +11 -0
  356. package/dist/utils/index.js.map +1 -0
  357. package/dist/utils/range-validation.d.ts +32 -0
  358. package/dist/utils/range-validation.d.ts.map +1 -0
  359. package/dist/utils/range-validation.js +156 -0
  360. package/dist/utils/range-validation.js.map +1 -0
  361. package/dist/utils/validation-format.d.ts +7 -0
  362. package/dist/utils/validation-format.d.ts.map +1 -0
  363. package/dist/utils/validation-format.js +105 -0
  364. package/dist/utils/validation-format.js.map +1 -0
  365. package/dist/utils/value-expression.d.ts +22 -0
  366. package/dist/utils/value-expression.d.ts.map +1 -0
  367. package/dist/utils/value-expression.js +190 -0
  368. package/dist/utils/value-expression.js.map +1 -0
  369. package/dist/utils/views.d.ts +9 -0
  370. package/dist/utils/views.d.ts.map +1 -0
  371. package/dist/utils/views.js +11 -0
  372. package/dist/utils/views.js.map +1 -0
  373. package/dist/view-model/build-detail-view-model.d.ts +7 -0
  374. package/dist/view-model/build-detail-view-model.d.ts.map +1 -0
  375. package/dist/view-model/build-detail-view-model.js +17 -0
  376. package/dist/view-model/build-detail-view-model.js.map +1 -0
  377. package/dist/view-model/build-form-view-model.d.ts +20 -0
  378. package/dist/view-model/build-form-view-model.d.ts.map +1 -0
  379. package/dist/view-model/build-form-view-model.js +74 -0
  380. package/dist/view-model/build-form-view-model.js.map +1 -0
  381. package/dist/view-model/build-nodes.d.ts +13 -0
  382. package/dist/view-model/build-nodes.d.ts.map +1 -0
  383. package/dist/view-model/build-nodes.js +123 -0
  384. package/dist/view-model/build-nodes.js.map +1 -0
  385. package/dist/view-model/build-page-view-model.d.ts +22 -0
  386. package/dist/view-model/build-page-view-model.d.ts.map +1 -0
  387. package/dist/view-model/build-page-view-model.js +73 -0
  388. package/dist/view-model/build-page-view-model.js.map +1 -0
  389. package/dist/view-model/build-resource-view-model.d.ts +9 -0
  390. package/dist/view-model/build-resource-view-model.d.ts.map +1 -0
  391. package/dist/view-model/build-resource-view-model.js +72 -0
  392. package/dist/view-model/build-resource-view-model.js.map +1 -0
  393. package/dist/view-model/build-search-view-model.d.ts +7 -0
  394. package/dist/view-model/build-search-view-model.d.ts.map +1 -0
  395. package/dist/view-model/build-search-view-model.js +101 -0
  396. package/dist/view-model/build-search-view-model.js.map +1 -0
  397. package/dist/view-model/build-table-view-model.d.ts +19 -0
  398. package/dist/view-model/build-table-view-model.d.ts.map +1 -0
  399. package/dist/view-model/build-table-view-model.js +443 -0
  400. package/dist/view-model/build-table-view-model.js.map +1 -0
  401. package/dist/view-model/index.d.ts +10 -0
  402. package/dist/view-model/index.d.ts.map +1 -0
  403. package/dist/view-model/index.js +10 -0
  404. package/dist/view-model/index.js.map +1 -0
  405. package/dist/view-model/placeholder.d.ts +6 -0
  406. package/dist/view-model/placeholder.d.ts.map +1 -0
  407. package/dist/view-model/placeholder.js +35 -0
  408. package/dist/view-model/placeholder.js.map +1 -0
  409. package/dist/view-model/types.d.ts +423 -0
  410. package/dist/view-model/types.d.ts.map +1 -0
  411. package/dist/view-model/types.js +2 -0
  412. package/dist/view-model/types.js.map +1 -0
  413. package/dist/view-state/index.d.ts +5 -0
  414. package/dist/view-state/index.d.ts.map +1 -0
  415. package/dist/view-state/index.js +5 -0
  416. package/dist/view-state/index.js.map +1 -0
  417. package/dist/view-state/resolve-action-state.d.ts +8 -0
  418. package/dist/view-state/resolve-action-state.d.ts.map +1 -0
  419. package/dist/view-state/resolve-action-state.js +71 -0
  420. package/dist/view-state/resolve-action-state.js.map +1 -0
  421. package/dist/view-state/resolve-field-runtime-state.d.ts +30 -0
  422. package/dist/view-state/resolve-field-runtime-state.d.ts.map +1 -0
  423. package/dist/view-state/resolve-field-runtime-state.js +85 -0
  424. package/dist/view-state/resolve-field-runtime-state.js.map +1 -0
  425. package/dist/view-state/resolve-node-state.d.ts +8 -0
  426. package/dist/view-state/resolve-node-state.d.ts.map +1 -0
  427. package/dist/view-state/resolve-node-state.js +14 -0
  428. package/dist/view-state/resolve-node-state.js.map +1 -0
  429. package/dist/view-state/types.d.ts +42 -0
  430. package/dist/view-state/types.d.ts.map +1 -0
  431. package/dist/view-state/types.js +2 -0
  432. package/dist/view-state/types.js.map +1 -0
  433. package/package.json +23 -0
@@ -0,0 +1,45 @@
1
+ import { SCHEMA_COMPONENT_SELECT, SCHEMA_COMPONENT_SWITCH, SCHEMA_COMPONENT_TEXT, SCHEMA_COMPONENT_TEXTAREA, SCHEMA_COMPONENT_NUMBER, } from './component-keys';
2
+ export const SCHEMA_UI_TEXT = SCHEMA_COMPONENT_TEXT;
3
+ export const SCHEMA_UI_TEXTAREA = SCHEMA_COMPONENT_TEXTAREA;
4
+ export const SCHEMA_UI_NUMBER = SCHEMA_COMPONENT_NUMBER;
5
+ export const SCHEMA_UI_SELECT = SCHEMA_COMPONENT_SELECT;
6
+ export const SCHEMA_UI_TREE_SELECT = 'treeSelect';
7
+ export const SCHEMA_UI_CASCADER = 'cascader';
8
+ export const SCHEMA_UI_RADIO_GROUP = 'radioGroup';
9
+ export const SCHEMA_UI_CHECKBOX_GROUP = 'checkboxGroup';
10
+ export const SCHEMA_UI_SWITCH = SCHEMA_COMPONENT_SWITCH;
11
+ export const SCHEMA_UI_RATE = 'rate';
12
+ export const SCHEMA_UI_DATE_PICKER = 'datePicker';
13
+ export const SCHEMA_UI_TIME_PICKER = 'timePicker';
14
+ export const SCHEMA_UI_SLIDER = 'slider';
15
+ export const SCHEMA_UI_COLOR_PICKER = 'colorPicker';
16
+ export const SCHEMA_UI_BUTTON = 'button';
17
+ export const SCHEMA_UI_BUTTON_GROUP = 'buttonGroup';
18
+ export const SCHEMA_UI_FORM = 'form';
19
+ export const SCHEMA_UI_FORM_ITEM = 'formItem';
20
+ export const SCHEMA_UI_TABLE = 'table';
21
+ export const SCHEMA_UI_TABLE_COLUMN = 'tableColumn';
22
+ export const SCHEMA_UI_TREE = 'tree';
23
+ export const SCHEMA_UI_PAGINATION = 'pagination';
24
+ export const SCHEMA_UI_ALERT = 'alert';
25
+ export const SCHEMA_UI_CARD = 'card';
26
+ export const SCHEMA_UI_TAG = 'tag';
27
+ export const SCHEMA_UI_EMPTY = 'empty';
28
+ export const SCHEMA_UI_CHECKBOX = 'checkbox';
29
+ export const SCHEMA_UI_COL = 'col';
30
+ export const SCHEMA_UI_COLLAPSE = 'collapse';
31
+ export const SCHEMA_UI_COLLAPSE_ITEM = 'collapseItem';
32
+ export const SCHEMA_UI_DIALOG = 'dialog';
33
+ export const SCHEMA_UI_DIVIDER = 'divider';
34
+ export const SCHEMA_UI_DRAWER = 'drawer';
35
+ export const SCHEMA_UI_DROPDOWN = 'dropdown';
36
+ export const SCHEMA_UI_DROPDOWN_ITEM = 'dropdownItem';
37
+ export const SCHEMA_UI_DROPDOWN_MENU = 'dropdownMenu';
38
+ export const SCHEMA_UI_OPTION = 'option';
39
+ export const SCHEMA_UI_OPTION_GROUP = 'optionGroup';
40
+ export const SCHEMA_UI_RADIO = 'radio';
41
+ export const SCHEMA_UI_ROW = 'row';
42
+ export const SCHEMA_UI_SCROLLBAR = 'scrollbar';
43
+ export const SCHEMA_UI_TAB_PANE = 'tabPane';
44
+ export const SCHEMA_UI_TABS = 'tabs';
45
+ //# sourceMappingURL=ui-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-keys.js","sourceRoot":"","sources":["../src/ui-keys.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,GAC1B,MAAM,kBAAkB,CAAA;AAEzB,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AACnD,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAA;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAA;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAA;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAA;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAA;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAA;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAA;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAA;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAA;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAA;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAA;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAA;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAA;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAA;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAA;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAA;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { type Condition } from '@sparqjs/schema-protocol';
2
+ import type { DiagnosticCollector } from '../diagnostics';
3
+ /**
4
+ * 校验协议条件结构,但不执行条件。
5
+ *
6
+ * 当前 runtime 支持 field/op/value、all/any/not 和 selection_empty。
7
+ * expr 仍是预留协议形态,在受限表达式执行器完成前会作为诊断输出。
8
+ */
9
+ export declare function validateCondition(condition: Condition | undefined, diagnostics: DiagnosticCollector, path: string): void;
10
+ //# sourceMappingURL=condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../src/utils/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAE,MAAM,GACb,IAAI,CA0BN"}
@@ -0,0 +1,32 @@
1
+ import { isConditionOperator } from '@sparqjs/schema-protocol';
2
+ /**
3
+ * 校验协议条件结构,但不执行条件。
4
+ *
5
+ * 当前 runtime 支持 field/op/value、all/any/not 和 selection_empty。
6
+ * expr 仍是预留协议形态,在受限表达式执行器完成前会作为诊断输出。
7
+ */
8
+ export function validateCondition(condition, diagnostics, path) {
9
+ if (!condition) {
10
+ return;
11
+ }
12
+ if (condition.op !== undefined && !isConditionOperator(condition.op)) {
13
+ diagnostics.error({
14
+ code: 'INVALID_CONDITION_OPERATOR',
15
+ message: `Condition operator "${String(condition.op)}" is not supported.`,
16
+ path: `${path}.op`,
17
+ hint: 'Use one of: eq, neq, gt, gte, lt, lte, contains, in, not_in, empty, not_empty.',
18
+ });
19
+ }
20
+ if (condition.expr !== undefined) {
21
+ diagnostics.error({
22
+ code: 'UNSUPPORTED_CONDITION_EXPR',
23
+ message: 'Condition expr is reserved but not supported by the current runtime.',
24
+ path: `${path}.expr`,
25
+ hint: 'Use field/op/value or all/any/not conditions until expr execution is implemented.',
26
+ });
27
+ }
28
+ condition.all?.forEach((item, index) => validateCondition(item, diagnostics, `${path}.all.${index}`));
29
+ condition.any?.forEach((item, index) => validateCondition(item, diagnostics, `${path}.any.${index}`));
30
+ validateCondition(condition.not, diagnostics, `${path}.not`);
31
+ }
32
+ //# sourceMappingURL=condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../src/utils/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAkB,MAAM,0BAA0B,CAAA;AAG9E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC7B,SAAgC,EAChC,WAAgC,EAChC,IAAY;IAEZ,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAM;IACV,CAAC;IAED,IAAI,SAAS,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;QACnE,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,uBAAuB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,qBAAqB;YACzE,IAAI,EAAE,GAAG,IAAI,KAAK;YAClB,IAAI,EAAE,gFAAgF;SACzF,CAAC,CAAA;IACN,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,sEAAsE;YAC/E,IAAI,EAAE,GAAG,IAAI,OAAO;YACpB,IAAI,EAAE,mFAAmF;SAC5F,CAAC,CAAA;IACN,CAAC;IAED,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAA;IACrG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAA;IACrG,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,IAAI,MAAM,CAAC,CAAA;AAChE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 从未知错误值中提取可读消息。
3
+ *
4
+ * JavaScript 允许抛出任意值,请求库也可能抛出普通对象。该方法按常见形态提取 message,
5
+ * 无法提取时返回调用方提供的默认消息。
6
+ */
7
+ export declare function getErrorMessage(error: unknown, defaultMessage: string): string;
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAe9E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 从未知错误值中提取可读消息。
3
+ *
4
+ * JavaScript 允许抛出任意值,请求库也可能抛出普通对象。该方法按常见形态提取 message,
5
+ * 无法提取时返回调用方提供的默认消息。
6
+ */
7
+ export function getErrorMessage(error, defaultMessage) {
8
+ if (error instanceof Error && error.message) {
9
+ return error.message;
10
+ }
11
+ if (typeof error === 'string' && error) {
12
+ return error;
13
+ }
14
+ if (hasMessage(error)) {
15
+ const message = String(error.message);
16
+ return message || defaultMessage;
17
+ }
18
+ return defaultMessage;
19
+ }
20
+ /**
21
+ * 判断未知值是否带有 message 字段。
22
+ */
23
+ function hasMessage(value) {
24
+ return (typeof value === 'object' &&
25
+ value !== null &&
26
+ 'message' in value &&
27
+ value.message !== undefined &&
28
+ value.message !== null);
29
+ }
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,cAAsB;IAClE,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,EAAE,CAAC;QACrC,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACrC,OAAO,OAAO,IAAI,cAAc,CAAA;IACpC,CAAC;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,KAAc;IAC9B,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,OAAO,KAAK,SAAS;QAC3B,KAAK,CAAC,OAAO,KAAK,IAAI,CACzB,CAAA;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ResourceField } from '@sparqjs/schema-protocol';
2
+ export declare function fieldGeneratorRunsInFormMode(field: ResourceField, formMode: 'create' | 'edit' | undefined): boolean;
3
+ //# sourceMappingURL=field-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-generator.d.ts","sourceRoot":"","sources":["../../src/utils/field-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAenH"}
@@ -0,0 +1,16 @@
1
+ export function fieldGeneratorRunsInFormMode(field, formMode) {
2
+ const generator = field.extensions?.generator;
3
+ if (typeof generator !== 'object' || generator === null) {
4
+ return false;
5
+ }
6
+ const rawOn = 'on' in generator && typeof generator.on === 'string' ? generator.on : '';
7
+ const on = rawOn.trim().toLowerCase() || 'create';
8
+ if (formMode === 'create') {
9
+ return on === 'create' || on === 'always';
10
+ }
11
+ if (formMode === 'edit') {
12
+ return on === 'update' || on === 'always';
13
+ }
14
+ return false;
15
+ }
16
+ //# sourceMappingURL=field-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-generator.js","sourceRoot":"","sources":["../../src/utils/field-generator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,4BAA4B,CAAC,KAAoB,EAAE,QAAuC;IACtG,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,SAAS,CAAA;IAC7C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,CAAA;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvF,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAA;IACjD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,CAAA;IAC7C,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,CAAA;IAC7C,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ResourceField } from '@sparqjs/schema-protocol';
2
+ import type { DiagnosticCollector } from '../diagnostics';
3
+ /**
4
+ * 按正式选项来源协议校验 ResourceField.options。
5
+ */
6
+ export declare function validateFieldOptions(field: ResourceField, diagnostics: DiagnosticCollector, path: string): void;
7
+ //# sourceMappingURL=field-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-options.d.ts","sourceRoot":"","sources":["../../src/utils/field-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAuD/G"}
@@ -0,0 +1,65 @@
1
+ import { isFieldOptionsMode } from '@sparqjs/schema-protocol';
2
+ /**
3
+ * 按正式选项来源协议校验 ResourceField.options。
4
+ */
5
+ export function validateFieldOptions(field, diagnostics, path) {
6
+ const options = field.options;
7
+ if (!options) {
8
+ return;
9
+ }
10
+ if (!isFieldOptionsMode(options.mode)) {
11
+ diagnostics.error({
12
+ code: 'INVALID_FIELD_OPTIONS_MODE',
13
+ message: `Field options mode "${String(options.mode)}" is not supported.`,
14
+ path: `${path}.mode`,
15
+ hint: 'Use one of: static, dictionary, reference, remote.',
16
+ });
17
+ return;
18
+ }
19
+ if (options.mode === 'static' && !Array.isArray(options.items)) {
20
+ diagnostics.error({
21
+ code: 'INVALID_FIELD_OPTIONS',
22
+ message: 'Static field options require items.',
23
+ path: `${path}.items`,
24
+ hint: 'Set options.items to an array of option items.',
25
+ });
26
+ }
27
+ if (options.mode === 'dictionary' && !options.dictionary?.code) {
28
+ diagnostics.error({
29
+ code: 'INVALID_FIELD_OPTIONS',
30
+ message: 'Dictionary field options require code.',
31
+ path: `${path}.dictionary.code`,
32
+ hint: 'Select a dictionary provided by the host Dictionary service.',
33
+ });
34
+ }
35
+ if (options.mode === 'reference') {
36
+ for (const key of ['resource', 'value_field', 'label_field']) {
37
+ if (!field.reference?.[key]) {
38
+ diagnostics.error({
39
+ code: 'INVALID_FIELD_OPTIONS',
40
+ message: `Reference field options require ${key}.`,
41
+ path: `${path.slice(0, -'.options'.length)}.reference.${key}`,
42
+ hint: `Set field.reference.${key} to a non-empty string.`,
43
+ });
44
+ }
45
+ }
46
+ }
47
+ if (options.mode === 'remote' && !hasRemoteOptionsSource(options.remote)) {
48
+ diagnostics.error({
49
+ code: 'INVALID_FIELD_OPTIONS',
50
+ message: 'Remote field options require provider or client url.',
51
+ path: `${path}.remote`,
52
+ hint: 'Set options.remote.provider for backend provider mode or options.remote.url for client mode.',
53
+ });
54
+ }
55
+ }
56
+ function hasRemoteOptionsSource(remote) {
57
+ if (!remote) {
58
+ return false;
59
+ }
60
+ if (remote.target === 'client') {
61
+ return typeof remote.url === 'string' && remote.url.trim() !== '';
62
+ }
63
+ return typeof remote.provider === 'string' && remote.provider.trim() !== '';
64
+ }
65
+ //# sourceMappingURL=field-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-options.js","sourceRoot":"","sources":["../../src/utils/field-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA+C,MAAM,0BAA0B,CAAA;AAG1G;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAoB,EAAE,WAAgC,EAAE,IAAY;IACrG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAM;IACV,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,4BAA4B;YAClC,OAAO,EAAE,uBAAuB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB;YACzE,IAAI,EAAE,GAAG,IAAI,OAAO;YACpB,IAAI,EAAE,oDAAoD;SAC7D,CAAC,CAAA;QACF,OAAM;IACV,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,qCAAqC;YAC9C,IAAI,EAAE,GAAG,IAAI,QAAQ;YACrB,IAAI,EAAE,gDAAgD;SACzD,CAAC,CAAA;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7D,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,wCAAwC;YACjD,IAAI,EAAE,GAAG,IAAI,kBAAkB;YAC/B,IAAI,EAAE,8DAA8D;SACvE,CAAC,CAAA;IACN,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAU,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,WAAW,CAAC,KAAK,CAAC;oBACd,IAAI,EAAE,uBAAuB;oBAC7B,OAAO,EAAE,mCAAmC,GAAG,GAAG;oBAClD,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,GAAG,EAAE;oBAC7D,IAAI,EAAE,uBAAuB,GAAG,yBAAyB;iBAC5D,CAAC,CAAA;YACN,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,WAAW,CAAC,KAAK,CAAC;YACd,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,GAAG,IAAI,SAAS;YACtB,IAAI,EAAE,8FAA8F;SACvG,CAAC,CAAA;IACN,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAgD;IAC5E,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACrE,CAAC;IACD,OAAO,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;AAC/E,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ResourceField } from '@sparqjs/schema-protocol';
2
+ import { type ExpressionContext } from '../expression';
3
+ export declare function validateFieldValue(field: ResourceField, value: unknown, context?: ExpressionContext): string[];
4
+ export declare function isFieldRequired(field: ResourceField, context?: ExpressionContext): boolean;
5
+ //# sourceMappingURL=field-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-validation.d.ts","sourceRoot":"","sources":["../../src/utils/field-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAYzE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,EAAE,CAuBlH;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAQ9F"}
@@ -0,0 +1,206 @@
1
+ import { evaluateCondition } from '../expression';
2
+ import { validateRangeValue } from './range-validation';
3
+ import { matchesValidationFormat } from './validation-format';
4
+ import { compareValidationRuleValue, normalizeValidationIntegerValue, resolveValidationRuleValue, } from './value-expression';
5
+ import { fieldGeneratorRunsInFormMode } from './field-generator';
6
+ export function validateFieldValue(field, value, context = {}) {
7
+ const requiredMessage = validateRequiredField(field, value, context);
8
+ if (requiredMessage) {
9
+ return [requiredMessage];
10
+ }
11
+ const values = field.multiple ? toValidationItems(value) : [value];
12
+ const errors = [];
13
+ for (const item of values) {
14
+ if (isEmptyFieldValue(item) && !hasEnabledRangeRule(field, context)) {
15
+ continue;
16
+ }
17
+ for (const rule of field.validation ?? []) {
18
+ if (!isValidationRuleEnabled(rule, context)) {
19
+ continue;
20
+ }
21
+ const message = validateSingleFieldRule(field, item, rule);
22
+ if (message) {
23
+ errors.push(message);
24
+ }
25
+ }
26
+ }
27
+ return errors;
28
+ }
29
+ export function isFieldRequired(field, context = {}) {
30
+ return ((field.required === true && !fieldGeneratorRunsInFormMode(field, context.formMode)) ||
31
+ (field.validation?.some((rule) => normalizeRuleType(rule.type) === 'required' && isValidationRuleEnabled(rule, context)) ??
32
+ false));
33
+ }
34
+ function validateRequiredField(field, value, context) {
35
+ if (field.required && !fieldGeneratorRunsInFormMode(field, context.formMode) && isEmptyFieldValue(value)) {
36
+ return `${field.label || field.name}不能为空。`;
37
+ }
38
+ for (const rule of field.validation ?? []) {
39
+ if (normalizeRuleType(rule.type) !== 'required' || !isValidationRuleEnabled(rule, context)) {
40
+ continue;
41
+ }
42
+ if (isEmptyFieldValue(value)) {
43
+ return rule.message ?? `${field.label || field.name}不能为空。`;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ function validateSingleFieldRule(field, value, rule) {
49
+ const ruleType = normalizeRuleType(rule.type);
50
+ switch (ruleType) {
51
+ case 'required':
52
+ return undefined;
53
+ case 'min_length': {
54
+ const min = integerRuleValue(rule);
55
+ return min !== undefined && runeLength(value) < min
56
+ ? (rule.message ?? `${field.label || field.name}长度不能小于${min}。`)
57
+ : undefined;
58
+ }
59
+ case 'max_length': {
60
+ const max = integerRuleValue(rule);
61
+ return max !== undefined && runeLength(value) > max
62
+ ? (rule.message ?? `${field.label || field.name}长度不能超过${max}。`)
63
+ : undefined;
64
+ }
65
+ case 'min':
66
+ case 'max': {
67
+ const boundary = resolveValidationRuleValue(rule, field);
68
+ if (boundary === undefined || boundary === null) {
69
+ return undefined;
70
+ }
71
+ const compared = compareValidationRuleValue(value, boundary);
72
+ if (compared === undefined) {
73
+ return undefined;
74
+ }
75
+ const invalid = ruleType === 'min' ? compared < 0 : compared > 0;
76
+ return invalid
77
+ ? (rule.message ??
78
+ `${field.label || field.name}${ruleType === 'min' ? '不能小于' : '不能大于'}${boundary}。`)
79
+ : undefined;
80
+ }
81
+ case 'pattern': {
82
+ const pattern = stringRuleValue(rule);
83
+ if (!pattern) {
84
+ return undefined;
85
+ }
86
+ try {
87
+ return new RegExp(pattern).test(String(value))
88
+ ? undefined
89
+ : (rule.message ?? `${field.label || field.name}格式不正确。`);
90
+ }
91
+ catch {
92
+ return undefined;
93
+ }
94
+ }
95
+ case 'format':
96
+ return validateFormatRule(field, value, rule);
97
+ case 'complexity':
98
+ return validateComplexityRule(field, value, rule);
99
+ case 'range':
100
+ return validateRangeRule(field, value, rule);
101
+ default:
102
+ return undefined;
103
+ }
104
+ }
105
+ function validateRangeRule(field, value, rule) {
106
+ const issue = validateRangeValue(value, rule.params);
107
+ if (!issue) {
108
+ return undefined;
109
+ }
110
+ if (rule.message) {
111
+ return rule.message;
112
+ }
113
+ const label = field.label || field.name;
114
+ switch (issue.code) {
115
+ case 'params':
116
+ return `${label}的范围校验配置无效。`;
117
+ case 'shape':
118
+ return `${label}必须包含开始值和结束值。`;
119
+ case 'endpoint_format':
120
+ return `${label}${issue.spanUnit === 'day' ? '日期' : '时间'}格式不正确。`;
121
+ case 'ordered':
122
+ return `${label}的结束值不能早于开始值。`;
123
+ case 'min':
124
+ return `${label}不能早于允许的最小边界。`;
125
+ case 'max':
126
+ return `${label}不能晚于允许的最大边界。`;
127
+ case 'max_span':
128
+ return `${label}跨度不能超过${issue.maxSpan}${issue.spanUnit === 'day' ? '天' : '分钟'}。`;
129
+ }
130
+ }
131
+ function validateComplexityRule(field, value, rule) {
132
+ const stringValue = String(value);
133
+ const length = runeLength(stringValue);
134
+ const minLength = validationParamInteger(rule, 'min_length');
135
+ if (minLength !== undefined && length < minLength) {
136
+ return rule.message ?? `${field.label || field.name}长度不能小于${minLength}。`;
137
+ }
138
+ const maxLength = validationParamInteger(rule, 'max_length');
139
+ if (maxLength !== undefined && length > maxLength) {
140
+ return rule.message ?? `${field.label || field.name}长度不能超过${maxLength}。`;
141
+ }
142
+ if (validationParamBoolean(rule, 'require_lower') && !/[a-z]/.test(stringValue)) {
143
+ return rule.message ?? `${field.label || field.name}必须包含小写字母。`;
144
+ }
145
+ if (validationParamBoolean(rule, 'require_upper') && !/[A-Z]/.test(stringValue)) {
146
+ return rule.message ?? `${field.label || field.name}必须包含大写字母。`;
147
+ }
148
+ if (validationParamBoolean(rule, 'require_digit') && !/[0-9]/.test(stringValue)) {
149
+ return rule.message ?? `${field.label || field.name}必须包含数字。`;
150
+ }
151
+ if (validationParamBoolean(rule, 'require_symbol') && !/[^A-Za-z0-9]/.test(stringValue)) {
152
+ return rule.message ?? `${field.label || field.name}必须包含特殊字符。`;
153
+ }
154
+ return undefined;
155
+ }
156
+ function validateFormatRule(field, value, rule) {
157
+ const format = stringRuleValue(rule)?.toLowerCase();
158
+ return !format || matchesValidationFormat(format, String(value))
159
+ ? undefined
160
+ : (rule.message ?? `${field.label || field.name}格式不正确。`);
161
+ }
162
+ function hasEnabledRangeRule(field, context) {
163
+ return Boolean(field.validation?.some((rule) => normalizeRuleType(rule.type) === 'range' && isValidationRuleEnabled(rule, context)));
164
+ }
165
+ function isValidationRuleEnabled(rule, context) {
166
+ return rule.when ? evaluateCondition(rule.when, context) : true;
167
+ }
168
+ function normalizeRuleType(type) {
169
+ return String(type ?? '')
170
+ .trim()
171
+ .toLowerCase();
172
+ }
173
+ function integerRuleValue(rule) {
174
+ return normalizeValidationIntegerValue(rule.value);
175
+ }
176
+ function stringRuleValue(rule) {
177
+ if (rule.value === undefined || rule.value === null) {
178
+ return undefined;
179
+ }
180
+ const value = String(rule.value).trim();
181
+ return value === '' ? undefined : value;
182
+ }
183
+ function validationParamInteger(rule, key) {
184
+ const value = rule.params?.[key];
185
+ const numeric = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : Number.NaN;
186
+ return Number.isInteger(numeric) && numeric > 0 ? numeric : undefined;
187
+ }
188
+ function validationParamBoolean(rule, key) {
189
+ return rule.params?.[key] === true;
190
+ }
191
+ function runeLength(value) {
192
+ return Array.from(String(value)).length;
193
+ }
194
+ function toValidationItems(value) {
195
+ return Array.isArray(value) ? value : [value];
196
+ }
197
+ function isEmptyFieldValue(value) {
198
+ if (value === undefined || value === null) {
199
+ return true;
200
+ }
201
+ if (typeof value === 'string') {
202
+ return value.trim() === '';
203
+ }
204
+ return Array.isArray(value) && value.length === 0;
205
+ }
206
+ //# sourceMappingURL=field-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-validation.js","sourceRoot":"","sources":["../../src/utils/field-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { ResourceField } from '@sparqjs/schema-protocol';
2
+ /**
3
+ * 按字段 sort 升序排列。
4
+ *
5
+ * sort 缺失时按 0 处理,保持默认视图推导的排序规则集中在一个地方。
6
+ */
7
+ export declare function sortFields(fields: ResourceField[]): ResourceField[];
8
+ /**
9
+ * 根据字段名构建字段索引。
10
+ *
11
+ * 如果存在重名字段,后出现的字段会覆盖先出现的字段。调用方如需报错,应在构建前单独检查。
12
+ */
13
+ export declare function buildFieldsByName(fields: ResourceField[]): Map<string, ResourceField>;
14
+ /**
15
+ * 找出重复的字段名。
16
+ *
17
+ * 返回值只包含重复名称本身,不包含每次重复出现的位置。调用方可以据此生成协议诊断信息。
18
+ */
19
+ export declare function findDuplicateFieldNames(fields: ResourceField[]): string[];
20
+ /**
21
+ * 判断字段是否属于默认不展示的敏感字段。
22
+ *
23
+ * password 和 secret 默认不进入 table、search、detail 的自动推导。
24
+ */
25
+ export declare function isSensitiveField(field: ResourceField): boolean;
26
+ /**
27
+ * 判断字段是否声明了候选项来源。
28
+ *
29
+ * 选项能力来自字段扩展,而不是字段 type。字段 type 属于后端存储语义,前端组件推导不能把
30
+ * radio、select、checkbox 等字符串当作唯一依据。
31
+ */
32
+ export declare function hasFieldOptions(field: ResourceField): boolean;
33
+ /**
34
+ * 判断字段是否声明了可同步读取的静态选项。
35
+ */
36
+ export declare function hasFieldStaticOptions(field: ResourceField): boolean;
37
+ /**
38
+ * 判断字段是否支持多值。
39
+ *
40
+ * 多选组件推导只依赖字段能力开关,不依赖后端字段 type 的命名。
41
+ */
42
+ export declare function isMultipleField(field: ResourceField): boolean;
43
+ /**
44
+ * 判断字段是否声明了正式 relation 选项配置。
45
+ */
46
+ export declare function hasFieldRelation(field: ResourceField): boolean;
47
+ /**
48
+ * 判断字段是否是数值存储类型。
49
+ */
50
+ export declare function isNumericField(field: ResourceField): boolean;
51
+ /**
52
+ * 判断字段是否是布尔存储类型。
53
+ */
54
+ export declare function isBooleanField(field: ResourceField): boolean;
55
+ /**
56
+ * 判断字段是否是日期时间存储类型。
57
+ */
58
+ export declare function isDateTimeField(field: ResourceField): boolean;
59
+ /**
60
+ * 判断字段是否是日期存储类型。
61
+ */
62
+ export declare function isDateField(field: ResourceField): boolean;
63
+ /**
64
+ * 判断字段是否是时间存储类型。
65
+ */
66
+ export declare function isTimeField(field: ResourceField): boolean;
67
+ /**
68
+ * 判断字段是否是默认不适合搜索的复杂存储类型。
69
+ */
70
+ export declare function isComplexField(field: ResourceField): boolean;
71
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/utils/fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE7D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAErF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAazE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAQ9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5D"}