ultimabase 0.0.0-stage → 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 (411) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +4 -2
  3. package/dist/access.d.ts +62 -0
  4. package/dist/access.d.ts.map +1 -0
  5. package/dist/access.js +258 -0
  6. package/dist/adapter-errors.d.ts +43 -0
  7. package/dist/adapter-errors.d.ts.map +1 -0
  8. package/dist/adapter-errors.js +72 -0
  9. package/dist/adapter-json.d.ts +20 -0
  10. package/dist/adapter-json.d.ts.map +1 -0
  11. package/dist/adapter-json.js +2 -0
  12. package/dist/adapter-migrations.d.ts +90 -0
  13. package/dist/adapter-migrations.d.ts.map +1 -0
  14. package/dist/adapter-migrations.js +1 -0
  15. package/dist/adapter.d.ts +333 -0
  16. package/dist/adapter.d.ts.map +1 -0
  17. package/dist/adapter.js +5 -0
  18. package/dist/aggregate.d.ts +31 -0
  19. package/dist/aggregate.d.ts.map +1 -0
  20. package/dist/aggregate.js +99 -0
  21. package/dist/app-internals.d.ts +10 -0
  22. package/dist/app-internals.d.ts.map +1 -0
  23. package/dist/app-internals.js +12 -0
  24. package/dist/app-options.d.ts +22 -0
  25. package/dist/app-options.d.ts.map +1 -0
  26. package/dist/app-options.js +3 -0
  27. package/dist/cascade.d.ts +47 -0
  28. package/dist/cascade.d.ts.map +1 -0
  29. package/dist/cascade.js +209 -0
  30. package/dist/cli-config.d.ts +6 -0
  31. package/dist/cli-config.d.ts.map +1 -0
  32. package/dist/cli-config.js +45 -0
  33. package/dist/cli-deploy.d.ts +14 -0
  34. package/dist/cli-deploy.d.ts.map +1 -0
  35. package/dist/cli-deploy.js +193 -0
  36. package/dist/cli-main.d.ts +16 -0
  37. package/dist/cli-main.d.ts.map +1 -0
  38. package/dist/cli-main.js +151 -0
  39. package/dist/cli-migrate.d.ts +20 -0
  40. package/dist/cli-migrate.d.ts.map +1 -0
  41. package/dist/cli-migrate.js +105 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +4 -0
  45. package/dist/complete.d.ts +13 -0
  46. package/dist/complete.d.ts.map +1 -0
  47. package/dist/complete.js +60 -0
  48. package/dist/console-logger.d.ts +3 -0
  49. package/dist/console-logger.d.ts.map +1 -0
  50. package/dist/console-logger.js +62 -0
  51. package/dist/create-many.d.ts +7 -0
  52. package/dist/create-many.d.ts.map +1 -0
  53. package/dist/create-many.js +88 -0
  54. package/dist/decimal.d.ts +23 -0
  55. package/dist/decimal.d.ts.map +1 -0
  56. package/dist/decimal.js +50 -0
  57. package/dist/define-app.d.ts +59 -0
  58. package/dist/define-app.d.ts.map +1 -0
  59. package/dist/define-app.js +5 -0
  60. package/dist/define-enum.d.ts +6 -0
  61. package/dist/define-enum.d.ts.map +1 -0
  62. package/dist/define-enum.js +18 -0
  63. package/dist/define-function.d.ts +25 -0
  64. package/dist/define-function.d.ts.map +1 -0
  65. package/dist/define-function.js +111 -0
  66. package/dist/define-model.d.ts +48 -0
  67. package/dist/define-model.d.ts.map +1 -0
  68. package/dist/define-model.js +85 -0
  69. package/dist/definition.d.ts +179 -0
  70. package/dist/definition.d.ts.map +1 -0
  71. package/dist/definition.js +165 -0
  72. package/dist/delete-many.d.ts +13 -0
  73. package/dist/delete-many.d.ts.map +1 -0
  74. package/dist/delete-many.js +58 -0
  75. package/dist/engine.d.ts +16 -0
  76. package/dist/engine.d.ts.map +1 -0
  77. package/dist/engine.js +174 -0
  78. package/dist/errors.d.ts +50 -0
  79. package/dist/errors.d.ts.map +1 -0
  80. package/dist/errors.js +43 -0
  81. package/dist/exact.d.ts +20 -0
  82. package/dist/exact.d.ts.map +1 -0
  83. package/dist/exact.js +1 -0
  84. package/dist/feed.d.ts +6 -0
  85. package/dist/feed.d.ts.map +1 -0
  86. package/dist/feed.js +33 -0
  87. package/dist/field-codec.d.ts +11 -0
  88. package/dist/field-codec.d.ts.map +1 -0
  89. package/dist/field-codec.js +48 -0
  90. package/dist/field-rules.d.ts +57 -0
  91. package/dist/field-rules.d.ts.map +1 -0
  92. package/dist/field-rules.js +1 -0
  93. package/dist/field-type.d.ts +51 -0
  94. package/dist/field-type.d.ts.map +1 -0
  95. package/dist/field-type.js +106 -0
  96. package/dist/fields.d.ts +295 -0
  97. package/dist/fields.d.ts.map +1 -0
  98. package/dist/fields.js +1 -0
  99. package/dist/function.d.ts +126 -0
  100. package/dist/function.d.ts.map +1 -0
  101. package/dist/function.js +1 -0
  102. package/dist/functions.d.ts +18 -0
  103. package/dist/functions.d.ts.map +1 -0
  104. package/dist/functions.js +99 -0
  105. package/dist/group-by.d.ts +10 -0
  106. package/dist/group-by.d.ts.map +1 -0
  107. package/dist/group-by.js +145 -0
  108. package/dist/group-having.d.ts +8 -0
  109. package/dist/group-having.d.ts.map +1 -0
  110. package/dist/group-having.js +97 -0
  111. package/dist/hooks.d.ts +41 -0
  112. package/dist/hooks.d.ts.map +1 -0
  113. package/dist/hooks.js +149 -0
  114. package/dist/hosts.d.ts +3 -0
  115. package/dist/hosts.d.ts.map +1 -0
  116. package/dist/hosts.js +8 -0
  117. package/dist/identify.d.ts +15 -0
  118. package/dist/identify.d.ts.map +1 -0
  119. package/dist/identify.js +71 -0
  120. package/dist/index.d.ts +25 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +12 -0
  123. package/dist/internal.d.ts +28 -0
  124. package/dist/internal.d.ts.map +1 -0
  125. package/dist/internal.js +39 -0
  126. package/dist/lifecycle.d.ts +21 -0
  127. package/dist/lifecycle.d.ts.map +1 -0
  128. package/dist/lifecycle.js +149 -0
  129. package/dist/list-update.d.ts +12 -0
  130. package/dist/list-update.d.ts.map +1 -0
  131. package/dist/list-update.js +52 -0
  132. package/dist/live.d.ts +37 -0
  133. package/dist/live.d.ts.map +1 -0
  134. package/dist/live.js +139 -0
  135. package/dist/manifest.d.ts +11 -0
  136. package/dist/manifest.d.ts.map +1 -0
  137. package/dist/manifest.js +60 -0
  138. package/dist/memory-aggregate.d.ts +7 -0
  139. package/dist/memory-aggregate.d.ts.map +1 -0
  140. package/dist/memory-aggregate.js +107 -0
  141. package/dist/memory-conditions.d.ts +8 -0
  142. package/dist/memory-conditions.d.ts.map +1 -0
  143. package/dist/memory-conditions.js +82 -0
  144. package/dist/memory-draft.d.ts +34 -0
  145. package/dist/memory-draft.d.ts.map +1 -0
  146. package/dist/memory-draft.js +255 -0
  147. package/dist/memory-json.d.ts +6 -0
  148. package/dist/memory-json.d.ts.map +1 -0
  149. package/dist/memory-json.js +86 -0
  150. package/dist/memory-read.d.ts +45 -0
  151. package/dist/memory-read.d.ts.map +1 -0
  152. package/dist/memory-read.js +244 -0
  153. package/dist/memory-search.d.ts +16 -0
  154. package/dist/memory-search.d.ts.map +1 -0
  155. package/dist/memory-search.js +110 -0
  156. package/dist/memory-values.d.ts +23 -0
  157. package/dist/memory-values.d.ts.map +1 -0
  158. package/dist/memory-values.js +82 -0
  159. package/dist/memory.d.ts +4 -0
  160. package/dist/memory.d.ts.map +1 -0
  161. package/dist/memory.js +157 -0
  162. package/dist/migrate.d.ts +22 -0
  163. package/dist/migrate.d.ts.map +1 -0
  164. package/dist/migrate.js +131 -0
  165. package/dist/model.d.ts +239 -0
  166. package/dist/model.d.ts.map +1 -0
  167. package/dist/model.js +1 -0
  168. package/dist/nested-write.d.ts +64 -0
  169. package/dist/nested-write.d.ts.map +1 -0
  170. package/dist/nested-write.js +274 -0
  171. package/dist/number-update.d.ts +18 -0
  172. package/dist/number-update.d.ts.map +1 -0
  173. package/dist/number-update.js +96 -0
  174. package/dist/plugin-app.d.ts +48 -0
  175. package/dist/plugin-app.d.ts.map +1 -0
  176. package/dist/plugin-app.js +230 -0
  177. package/dist/plugin-code.d.ts +17 -0
  178. package/dist/plugin-code.d.ts.map +1 -0
  179. package/dist/plugin-code.js +125 -0
  180. package/dist/plugin-use.d.ts +22 -0
  181. package/dist/plugin-use.d.ts.map +1 -0
  182. package/dist/plugin-use.js +161 -0
  183. package/dist/plugin.d.ts +357 -0
  184. package/dist/plugin.d.ts.map +1 -0
  185. package/dist/plugin.js +17 -0
  186. package/dist/query-aggregate.d.ts +82 -0
  187. package/dist/query-aggregate.d.ts.map +1 -0
  188. package/dist/query-aggregate.js +1 -0
  189. package/dist/query-args.d.ts +41 -0
  190. package/dist/query-args.d.ts.map +1 -0
  191. package/dist/query-args.js +263 -0
  192. package/dist/query-bulk.d.ts +35 -0
  193. package/dist/query-bulk.d.ts.map +1 -0
  194. package/dist/query-bulk.js +1 -0
  195. package/dist/query-conditions.d.ts +9 -0
  196. package/dist/query-conditions.d.ts.map +1 -0
  197. package/dist/query-conditions.js +46 -0
  198. package/dist/query-context.d.ts +32 -0
  199. package/dist/query-context.d.ts.map +1 -0
  200. package/dist/query-context.js +55 -0
  201. package/dist/query-filter.d.ts +46 -0
  202. package/dist/query-filter.d.ts.map +1 -0
  203. package/dist/query-filter.js +1 -0
  204. package/dist/query-group.d.ts +82 -0
  205. package/dist/query-group.d.ts.map +1 -0
  206. package/dist/query-group.js +1 -0
  207. package/dist/query-json.d.ts +9 -0
  208. package/dist/query-json.d.ts.map +1 -0
  209. package/dist/query-json.js +66 -0
  210. package/dist/query-order.d.ts +15 -0
  211. package/dist/query-order.d.ts.map +1 -0
  212. package/dist/query-order.js +115 -0
  213. package/dist/query-project.d.ts +15 -0
  214. package/dist/query-project.d.ts.map +1 -0
  215. package/dist/query-project.js +45 -0
  216. package/dist/query-search.d.ts +24 -0
  217. package/dist/query-search.d.ts.map +1 -0
  218. package/dist/query-search.js +2 -0
  219. package/dist/query-values.d.ts +28 -0
  220. package/dist/query-values.d.ts.map +1 -0
  221. package/dist/query-values.js +91 -0
  222. package/dist/query-where.d.ts +46 -0
  223. package/dist/query-where.d.ts.map +1 -0
  224. package/dist/query-where.js +200 -0
  225. package/dist/query-write.d.ts +14 -0
  226. package/dist/query-write.d.ts.map +1 -0
  227. package/dist/query-write.js +260 -0
  228. package/dist/query.d.ts +254 -0
  229. package/dist/query.d.ts.map +1 -0
  230. package/dist/query.js +1 -0
  231. package/dist/record.d.ts +257 -0
  232. package/dist/record.d.ts.map +1 -0
  233. package/dist/record.js +1 -0
  234. package/dist/recorder.d.ts +32 -0
  235. package/dist/recorder.d.ts.map +1 -0
  236. package/dist/recorder.js +152 -0
  237. package/dist/relation-write.d.ts +41 -0
  238. package/dist/relation-write.d.ts.map +1 -0
  239. package/dist/relation-write.js +112 -0
  240. package/dist/relations.d.ts +42 -0
  241. package/dist/relations.d.ts.map +1 -0
  242. package/dist/relations.js +119 -0
  243. package/dist/rules.d.ts +97 -0
  244. package/dist/rules.d.ts.map +1 -0
  245. package/dist/rules.js +71 -0
  246. package/dist/running.d.ts +29 -0
  247. package/dist/running.d.ts.map +1 -0
  248. package/dist/running.js +39 -0
  249. package/dist/schema-indexes.d.ts +11 -0
  250. package/dist/schema-indexes.d.ts.map +1 -0
  251. package/dist/schema-indexes.js +59 -0
  252. package/dist/schema-virtuals.d.ts +19 -0
  253. package/dist/schema-virtuals.d.ts.map +1 -0
  254. package/dist/schema-virtuals.js +100 -0
  255. package/dist/schema.d.ts +35 -0
  256. package/dist/schema.d.ts.map +1 -0
  257. package/dist/schema.js +267 -0
  258. package/dist/scope.d.ts +46 -0
  259. package/dist/scope.d.ts.map +1 -0
  260. package/dist/scope.js +82 -0
  261. package/dist/scratch.d.ts +14 -0
  262. package/dist/scratch.d.ts.map +1 -0
  263. package/dist/scratch.js +10 -0
  264. package/dist/serve.d.ts +2 -0
  265. package/dist/serve.d.ts.map +1 -0
  266. package/dist/serve.js +4 -0
  267. package/dist/symbols.d.ts +10 -0
  268. package/dist/symbols.d.ts.map +1 -0
  269. package/dist/symbols.js +1 -0
  270. package/dist/transaction.d.ts +28 -0
  271. package/dist/transaction.d.ts.map +1 -0
  272. package/dist/transaction.js +156 -0
  273. package/dist/types.d.ts +58 -0
  274. package/dist/types.d.ts.map +1 -0
  275. package/dist/types.js +1 -0
  276. package/dist/update-many.d.ts +7 -0
  277. package/dist/update-many.d.ts.map +1 -0
  278. package/dist/update-many.js +182 -0
  279. package/dist/uuid.d.ts +7 -0
  280. package/dist/uuid.d.ts.map +1 -0
  281. package/dist/uuid.js +48 -0
  282. package/dist/validation.d.ts +24 -0
  283. package/dist/validation.d.ts.map +1 -0
  284. package/dist/validation.js +72 -0
  285. package/dist/virtual-read.d.ts +9 -0
  286. package/dist/virtual-read.d.ts.map +1 -0
  287. package/dist/virtual-read.js +145 -0
  288. package/dist/virtual.d.ts +142 -0
  289. package/dist/virtual.d.ts.map +1 -0
  290. package/dist/virtual.js +1 -0
  291. package/dist/write-context.d.ts +46 -0
  292. package/dist/write-context.d.ts.map +1 -0
  293. package/dist/write-context.js +102 -0
  294. package/dist/write-data.d.ts +26 -0
  295. package/dist/write-data.d.ts.map +1 -0
  296. package/dist/write-data.js +144 -0
  297. package/dist/write-plan.d.ts +107 -0
  298. package/dist/write-plan.d.ts.map +1 -0
  299. package/dist/write-plan.js +170 -0
  300. package/dist/write-target.d.ts +17 -0
  301. package/dist/write-target.d.ts.map +1 -0
  302. package/dist/write-target.js +59 -0
  303. package/dist/writes.d.ts +23 -0
  304. package/dist/writes.d.ts.map +1 -0
  305. package/dist/writes.js +246 -0
  306. package/dist/writing.d.ts +10 -0
  307. package/dist/writing.d.ts.map +1 -0
  308. package/dist/writing.js +66 -0
  309. package/package.json +42 -3
  310. package/src/access.ts +329 -0
  311. package/src/adapter-errors.ts +89 -0
  312. package/src/adapter-json.ts +21 -0
  313. package/src/adapter-migrations.ts +98 -0
  314. package/src/adapter.ts +363 -0
  315. package/src/aggregate.ts +136 -0
  316. package/src/app-internals.ts +26 -0
  317. package/src/app-options.ts +24 -0
  318. package/src/cascade.ts +297 -0
  319. package/src/cli-config.ts +45 -0
  320. package/src/cli-deploy.ts +235 -0
  321. package/src/cli-main.ts +165 -0
  322. package/src/cli-migrate.ts +143 -0
  323. package/src/cli.ts +5 -0
  324. package/src/complete.ts +73 -0
  325. package/src/console-logger.ts +87 -0
  326. package/src/create-many.ts +126 -0
  327. package/src/decimal.ts +74 -0
  328. package/src/define-app.ts +108 -0
  329. package/src/define-enum.ts +26 -0
  330. package/src/define-function.ts +188 -0
  331. package/src/define-model.ts +220 -0
  332. package/src/definition.ts +352 -0
  333. package/src/delete-many.ts +76 -0
  334. package/src/engine.ts +281 -0
  335. package/src/errors.ts +97 -0
  336. package/src/exact.ts +49 -0
  337. package/src/feed.ts +39 -0
  338. package/src/field-codec.ts +72 -0
  339. package/src/field-rules.ts +77 -0
  340. package/src/field-type.ts +219 -0
  341. package/src/fields.ts +383 -0
  342. package/src/function.ts +143 -0
  343. package/src/functions.ts +154 -0
  344. package/src/group-by.ts +186 -0
  345. package/src/group-having.ts +143 -0
  346. package/src/hooks.ts +215 -0
  347. package/src/hosts.ts +11 -0
  348. package/src/identify.ts +95 -0
  349. package/src/index.ts +125 -0
  350. package/src/internal.ts +68 -0
  351. package/src/lifecycle.ts +214 -0
  352. package/src/list-update.ts +71 -0
  353. package/src/live.ts +199 -0
  354. package/src/manifest.ts +71 -0
  355. package/src/memory-aggregate.ts +162 -0
  356. package/src/memory-conditions.ts +88 -0
  357. package/src/memory-draft.ts +319 -0
  358. package/src/memory-json.ts +91 -0
  359. package/src/memory-read.ts +311 -0
  360. package/src/memory-search.ts +149 -0
  361. package/src/memory-values.ts +106 -0
  362. package/src/memory.ts +173 -0
  363. package/src/migrate.ts +152 -0
  364. package/src/model.ts +312 -0
  365. package/src/nested-write.ts +390 -0
  366. package/src/number-update.ts +142 -0
  367. package/src/plugin-app.ts +308 -0
  368. package/src/plugin-code.ts +158 -0
  369. package/src/plugin-use.ts +217 -0
  370. package/src/plugin.ts +400 -0
  371. package/src/query-aggregate.ts +96 -0
  372. package/src/query-args.ts +375 -0
  373. package/src/query-bulk.ts +53 -0
  374. package/src/query-conditions.ts +53 -0
  375. package/src/query-context.ts +104 -0
  376. package/src/query-filter.ts +54 -0
  377. package/src/query-group.ts +137 -0
  378. package/src/query-json.ts +90 -0
  379. package/src/query-order.ts +158 -0
  380. package/src/query-project.ts +73 -0
  381. package/src/query-search.ts +31 -0
  382. package/src/query-values.ts +131 -0
  383. package/src/query-where.ts +318 -0
  384. package/src/query-write.ts +360 -0
  385. package/src/query.ts +400 -0
  386. package/src/record.ts +379 -0
  387. package/src/recorder.ts +212 -0
  388. package/src/relation-write.ts +176 -0
  389. package/src/relations.ts +165 -0
  390. package/src/rules.ts +188 -0
  391. package/src/running.ts +62 -0
  392. package/src/schema-indexes.ts +88 -0
  393. package/src/schema-virtuals.ts +134 -0
  394. package/src/schema.ts +367 -0
  395. package/src/scope.ts +123 -0
  396. package/src/scratch.ts +28 -0
  397. package/src/serve.ts +5 -0
  398. package/src/symbols.ts +11 -0
  399. package/src/transaction.ts +211 -0
  400. package/src/types.ts +79 -0
  401. package/src/update-many.ts +268 -0
  402. package/src/uuid.ts +51 -0
  403. package/src/validation.ts +107 -0
  404. package/src/virtual-read.ts +198 -0
  405. package/src/virtual.ts +187 -0
  406. package/src/write-context.ts +170 -0
  407. package/src/write-data.ts +188 -0
  408. package/src/write-plan.ts +273 -0
  409. package/src/write-target.ts +92 -0
  410. package/src/writes.ts +361 -0
  411. package/src/writing.ts +93 -0
@@ -0,0 +1,106 @@
1
+ import { build, fieldBuilders, fieldDefinitions } from './definition.js';
2
+ import { standardOf } from './validation.js';
3
+ const storedOptions = new Set(['list', 'optional', 'precision', 'scale']);
4
+ const kernelOptions = new Set(['default', 'description']);
5
+ /**
6
+ * The stored field `stored` returns, a scalar with no rules; a value as its
7
+ * default fills the rows stored before the field (D-152).
8
+ */
9
+ function storedOf(plugin, stored, options) {
10
+ if (typeof stored !== 'function') {
11
+ throw new TypeError(`defineFieldType(${plugin}): stored is a function.`);
12
+ }
13
+ const field = Reflect.apply(stored, undefined, [
14
+ fieldBuilders,
15
+ options,
16
+ ]);
17
+ const definition = typeof field === 'object' && field !== null
18
+ ? fieldDefinitions.get(field)
19
+ : undefined;
20
+ if (definition?.kind !== 'scalar' || definition.rules !== undefined) {
21
+ throw new TypeError(`defineFieldType(${plugin}): stored returns a kernel scalar field, without .with.`);
22
+ }
23
+ for (const [option, value] of Object.entries(definition.options)) {
24
+ const filled = option === 'default' && typeof value !== 'function';
25
+ if (!storedOptions.has(option) && !filled) {
26
+ throw new Error(`defineFieldType(${plugin}): the stored field takes list, optional, precision, scale or a value as its default only, not ${option}.`);
27
+ }
28
+ }
29
+ return definition;
30
+ }
31
+ function functionOf(plugin, definition, key, options) {
32
+ const value = definition[key];
33
+ if (typeof value !== 'function') {
34
+ throw new TypeError(`defineFieldType(${plugin}): ${key} is a function.`);
35
+ }
36
+ return (given) => {
37
+ const result = Reflect.apply(value, undefined, [given, options]);
38
+ return result;
39
+ };
40
+ }
41
+ /** One field's codec, its functions given that field's options. */
42
+ function codecOf(plugin, definition, options) {
43
+ const schemaOf = (key) => {
44
+ const given = definition[key];
45
+ const standard = standardOf(typeof given === 'function'
46
+ ? Reflect.apply(given, undefined, [options])
47
+ : given);
48
+ if (standard === undefined) {
49
+ throw new TypeError(`defineFieldType(${plugin}): ${key} is a Standard Schema.`);
50
+ }
51
+ return standard;
52
+ };
53
+ const shape = definition['shape'] === undefined ? undefined : schemaOf('shape').schema;
54
+ return Object.freeze({
55
+ plugin,
56
+ options,
57
+ decode: functionOf(plugin, definition, 'decode', options),
58
+ encode: functionOf(plugin, definition, 'encode', options),
59
+ schema: schemaOf('schema'),
60
+ toJSON: functionOf(plugin, definition, 'toJSON', options),
61
+ ...(shape === undefined ? {} : { shape }),
62
+ });
63
+ }
64
+ /** The names a builder takes, `default`, `description` and the type's own. */
65
+ function namesOf(plugin, definition) {
66
+ const names = definition['options'] ?? [];
67
+ if (!Array.isArray(names) ||
68
+ !names.every((name) => typeof name === 'string')) {
69
+ throw new TypeError(`defineFieldType(${plugin}): options is a list of option names.`);
70
+ }
71
+ return new Set([...kernelOptions, ...names]);
72
+ }
73
+ export function defineFieldType(definition) {
74
+ const plugin = definition['plugin'];
75
+ if (typeof plugin !== 'string' || plugin === '') {
76
+ throw new TypeError('defineFieldType takes the name of its plugin.');
77
+ }
78
+ const names = namesOf(plugin, definition);
79
+ // A definition fails at once, not at its first field.
80
+ codecOf(plugin, definition, {});
81
+ storedOf(plugin, definition['stored'], {});
82
+ return (given = {}) => {
83
+ const own = {};
84
+ const kernel = {};
85
+ for (const [option, value] of Object.entries(given)) {
86
+ if (!names.has(option)) {
87
+ throw new Error(names.size === kernelOptions.size
88
+ ? `A ${plugin} field takes default and description only, not ${option}: its stored field says the rest.`
89
+ : `A ${plugin} field takes ${[...names].join(', ')} only, not ${option}.`);
90
+ }
91
+ if (kernelOptions.has(option))
92
+ kernel[option] = value;
93
+ else
94
+ own[option] = value;
95
+ }
96
+ const options = Object.freeze(own);
97
+ const stored = storedOf(plugin, definition['stored'], options);
98
+ const { default: filled, ...rest } = stored.options;
99
+ const codec = codecOf(plugin, definition, options);
100
+ return build({
101
+ ...stored,
102
+ options: { ...rest, ...kernel },
103
+ codec: filled === undefined ? codec : Object.freeze({ ...codec, filled }),
104
+ });
105
+ };
106
+ }
@@ -0,0 +1,295 @@
1
+ import type { Declared, FieldWith } from './field-rules.ts';
2
+ import type { Caller } from './rules.ts';
3
+ import type { calendarDay, fieldType } from './symbols.ts';
4
+ import type { NoOptions, Virtual, VirtualOptions } from './virtual.ts';
5
+ export type JsonValue = string | number | boolean | null | readonly JsonValue[] | {
6
+ readonly [key: string]: JsonValue;
7
+ };
8
+ /**
9
+ * Standard Schema (standardschema.dev), the part the kernel reads. Its
10
+ * specification asks for the interface to be copied, not imported.
11
+ */
12
+ export interface StandardSchema<I = unknown, O = I> {
13
+ readonly '~standard': {
14
+ readonly version: 1;
15
+ readonly vendor: string;
16
+ readonly validate: (value: unknown) => SchemaResult<O> | Promise<SchemaResult<O>>;
17
+ readonly types?: {
18
+ readonly input: I;
19
+ readonly output: O;
20
+ } | undefined;
21
+ };
22
+ }
23
+ type SchemaResult<O> = {
24
+ readonly value: O;
25
+ readonly issues?: undefined;
26
+ } | {
27
+ readonly issues: readonly {
28
+ readonly message: string;
29
+ }[];
30
+ };
31
+ /**
32
+ * A field's `validate` (D-23): a Standard Schema, or a function that returns
33
+ * the value to store and throws to refuse it.
34
+ */
35
+ export type Validate<V> = StandardSchema<V, V> | ((value: V) => V | Promise<V>);
36
+ /** A default's function form: `undefined` gives no value (D-53). */
37
+ export type DefaultFunction<V> = (facts: {
38
+ readonly caller: Caller;
39
+ }) => V | undefined;
40
+ /** What a field means, which the transports show and nothing reads (D-150). */
41
+ export type Described = {
42
+ readonly description?: string;
43
+ };
44
+ /** What shapes a scalar field (D-08, D-23, D-52, D-53). */
45
+ export type ScalarOptions<V> = Described & {
46
+ readonly optional?: boolean;
47
+ readonly unique?: boolean;
48
+ readonly default?: V | DefaultFunction<V>;
49
+ readonly validate?: Validate<V>;
50
+ /** The stored column's name, when the adapter's convention will not do (D-63). */
51
+ readonly dbName?: string;
52
+ };
53
+ /** What a calendar day's options carry in its type, filtered in order (D-150). */
54
+ export type Day = {
55
+ readonly [calendarDay]: true;
56
+ };
57
+ /** A decimal's options: its digits are required (D-145). */
58
+ export type DecimalOptions = ScalarOptions<string> & {
59
+ readonly precision: number;
60
+ readonly scale: number;
61
+ };
62
+ /** A shared enum, which `defineEnum` returns frozen (D-150). */
63
+ export type Enum<E extends string = string> = {
64
+ /** Its GraphQL enum's and its OpenAPI schema's name. */
65
+ readonly name: string;
66
+ readonly values: readonly E[];
67
+ readonly description: string | undefined;
68
+ };
69
+ /** A field's options without `list` (D-120, D-127). */
70
+ export type SingleOptions<V> = ScalarOptions<V> & {
71
+ readonly list?: false;
72
+ };
73
+ /** A string's options: `search` adds it to its model's document (D-148). */
74
+ export type StringOptions = SingleOptions<string> & {
75
+ readonly search?: boolean;
76
+ };
77
+ /** What shapes a list of strings, numbers or enum values (D-120, D-127). */
78
+ export type ListOptions<V> = Described & {
79
+ readonly list: true;
80
+ readonly default?: readonly V[] | DefaultFunction<readonly V[]>;
81
+ readonly validate?: Validate<readonly V[]>;
82
+ readonly dbName?: string;
83
+ };
84
+ type ListCheck<O> = (O extends {
85
+ readonly optional: unknown;
86
+ } ? {
87
+ readonly optional: {
88
+ readonly error: 'a list is [] when empty: it is never optional';
89
+ };
90
+ } : unknown) & (O extends {
91
+ readonly unique: unknown;
92
+ } ? {
93
+ readonly unique: {
94
+ readonly error: 'a list cannot be unique';
95
+ };
96
+ } : unknown) & (O extends {
97
+ readonly search: unknown;
98
+ } ? {
99
+ readonly search: {
100
+ readonly error: 'a list is not searched';
101
+ };
102
+ } : unknown);
103
+ type ListableCheck<O, V> = O extends {
104
+ readonly list: true;
105
+ } ? ListCheck<O> & ValidateCheck<O, readonly V[]> : ValidateCheck<O, V>;
106
+ type Listable<V, O, T> = O extends {
107
+ readonly list: true;
108
+ } ? Field<readonly V[], O, never, T> : Field<V, O, never, T>;
109
+ /** The types a Standard Schema declares, `never` without them. */
110
+ export type SchemaTypes<S> = S extends {
111
+ readonly '~standard': {
112
+ readonly types?: infer T;
113
+ };
114
+ } ? NonNullable<T> : never;
115
+ type IsAny<X> = 0 extends 1 & X ? true : false;
116
+ /** Refuses a schema typed `any` or without types, under `validate`. */
117
+ export type AnyCheck<S> = SchemaTypes<S> extends {
118
+ readonly input: infer I;
119
+ readonly output: infer O;
120
+ } ? IsAny<I> extends true ? {
121
+ readonly validate: 'the schema types its input as any';
122
+ } : IsAny<O> extends true ? {
123
+ readonly validate: 'the schema types its output as any';
124
+ } : unknown : {
125
+ readonly validate: 'the schema declares no types';
126
+ };
127
+ type ValidateCheck<O, V> = O extends {
128
+ readonly validate: infer S extends StandardSchema;
129
+ } ? unknown extends AnyCheck<S> ? SchemaTypes<S> extends {
130
+ readonly input: infer I;
131
+ } ? [V] extends [I] ? unknown : {
132
+ readonly validate: 'the schema must accept every value of the field';
133
+ } : unknown : AnyCheck<S> : unknown;
134
+ /** What shapes a `json` field (D-53): its schema gives its types. */
135
+ export type JsonOptions = Described & {
136
+ readonly optional?: boolean;
137
+ readonly default?: DefaultFunction<unknown> | {} | null;
138
+ readonly validate?: StandardSchema | ((value: JsonValue) => unknown);
139
+ readonly dbName?: string;
140
+ };
141
+ /** What a `json` field stores and returns: the schema's output. */
142
+ type JsonOutput<O> = O extends {
143
+ readonly validate: infer S;
144
+ } ? S extends StandardSchema ? SchemaTypes<S>['output'] : S extends (value: JsonValue) => infer R ? Awaited<R> : unknown : unknown;
145
+ /** What a `json` field is written: the schema's input. */
146
+ type JsonInput<O> = O extends {
147
+ readonly validate: infer S;
148
+ } ? S extends StandardSchema ? SchemaTypes<S>['input'] : JsonValue : JsonValue;
149
+ type JsonCheck<O> = (O extends {
150
+ readonly validate: infer S extends StandardSchema;
151
+ } ? AnyCheck<S> : unknown) & (O extends {
152
+ readonly default: infer D;
153
+ } ? [D] extends [JsonInput<O> | DefaultFunction<JsonInput<O>>] ? unknown : {
154
+ readonly default: JsonInput<O> | DefaultFunction<JsonInput<O>>;
155
+ } : unknown);
156
+ /** What shapes a `one` relation (D-37, D-54). */
157
+ export type OneOptions = Described & {
158
+ readonly optional?: boolean;
159
+ /** The target's id (D-53). */
160
+ readonly default?: {
161
+ readonly id: string;
162
+ } | DefaultFunction<{
163
+ readonly id: string;
164
+ }>;
165
+ readonly onDelete?: 'cascade' | 'restrict' | 'setNull';
166
+ readonly inverse?: string;
167
+ readonly dbName?: string;
168
+ };
169
+ type OneCheck<O> = O extends {
170
+ readonly optional: true;
171
+ } ? unknown : O extends {
172
+ readonly onDelete: 'setNull';
173
+ } ? {
174
+ readonly onDelete: {
175
+ readonly error: 'setNull needs an optional relation';
176
+ };
177
+ } : unknown;
178
+ export type ManyOptions = Described & ({
179
+ readonly inverse?: string;
180
+ readonly from?: undefined;
181
+ } | {
182
+ /**
183
+ * A view: read-only, on the link of this other `many` of the
184
+ * model, its rows those its filter keeps (D-151).
185
+ */
186
+ readonly from: string;
187
+ readonly inverse?: undefined;
188
+ });
189
+ /** An optional field may be written `null`. */
190
+ type Written<V, O> = O extends {
191
+ readonly optional: true;
192
+ } ? V | null : V;
193
+ /**
194
+ * `V` is the stored value and `I` the written one, which differ when a
195
+ * schema transforms (D-23). `P` names the plugin that provides the field
196
+ * type (D-32); `T` is the types of the plugins the model uses, whose field
197
+ * rules `.with` takes. Rules judge what the caller sent (D-67): they see `I`.
198
+ * `J` marks a `json` field, which cannot be sorted (D-94); `S` is a plugin
199
+ * field type's stored field, which a `beforeFind` filters (D-122).
200
+ */
201
+ export interface Field<V, O, P extends string = never, T = never, I = V, J extends boolean = false, S = never> {
202
+ readonly [fieldType]: {
203
+ readonly kind: 'scalar';
204
+ readonly value: V;
205
+ readonly input: I;
206
+ readonly options: O;
207
+ readonly plugin?: P;
208
+ readonly json: J;
209
+ readonly stored: S;
210
+ };
211
+ /**
212
+ * `.with({ ... })` types `value` and `record.id`;
213
+ * `.with<{ status: 'draft' | 'published' }>` also types the record fields it
214
+ * declares, each with the model's exact type (D-44).
215
+ */
216
+ with<R extends object>(rules: [keyof R] extends [never] ? never : FieldWith<NoInfer<R>, Written<I, O>, T>): Field<V, O, P, never, I, J, S> & Declared<R>;
217
+ with(rules: FieldWith<never, Written<I, O>, T>): Field<V, O, P, never, I, J, S>;
218
+ }
219
+ export type RelationValue = {
220
+ readonly id: string;
221
+ };
222
+ /** What a `many` relation's write rule sees: the caller's lists (D-86). */
223
+ export type ManyValue = {
224
+ readonly connect: readonly RelationValue[];
225
+ readonly disconnect: readonly RelationValue[];
226
+ /** The linked rows it deletes (D-138). */
227
+ readonly delete: readonly RelationValue[];
228
+ /** The rows it creates, by the ids the kernel gives them (D-128). */
229
+ readonly create: readonly RelationValue[];
230
+ };
231
+ export interface One<T, O, U = never> {
232
+ readonly [fieldType]: {
233
+ readonly kind: 'one';
234
+ readonly target: T;
235
+ readonly options: O;
236
+ };
237
+ with<R extends object = never>(rules: FieldWith<NoInfer<R>, RelationValue | null, U>): One<T, O> & Declared<R>;
238
+ }
239
+ export interface Many<T, O, U = never> {
240
+ readonly [fieldType]: {
241
+ readonly kind: 'many';
242
+ readonly target: T;
243
+ readonly options: O;
244
+ };
245
+ with<R extends object = never>(rules: FieldWith<NoInfer<R>, ManyValue, U>): Many<T, O> & Declared<R>;
246
+ }
247
+ /**
248
+ * The field builders, which only `defineModel`'s `fields` callback receives:
249
+ * typed by the model's `use`, a field's `.with` takes those plugins' rules
250
+ * (D-12, D-57).
251
+ */
252
+ export interface FieldBuilders<T> {
253
+ /**
254
+ * With `list: true`, a list of strings, `[]` when empty (D-120); with
255
+ * `search: true`, matched by its model's `_search` (D-148).
256
+ */
257
+ readonly string: <const O extends StringOptions | ListOptions<string> = StringOptions>(options?: O & NoInfer<ListableCheck<O, string>>) => Listable<string, O, T>;
258
+ /**
259
+ * With `list: true`, a list of numbers, `[]` when empty (D-127); with
260
+ * `integer: true`, whole numbers from -2,147,483,648 to 2,147,483,647
261
+ * (D-132).
262
+ */
263
+ readonly number: <const O extends (SingleOptions<number> | ListOptions<number>) & {
264
+ readonly integer?: boolean;
265
+ } = SingleOptions<number>>(options?: O & NoInfer<ListableCheck<O, number>>) => Listable<number, O, T>;
266
+ /**
267
+ * Exact numbers of `precision` digits, `scale` of them after the point,
268
+ * read and written as strings at that scale: `'12.50'` (D-145).
269
+ */
270
+ readonly decimal: <const O extends DecimalOptions>(options: O & NoInfer<ValidateCheck<O, string>>) => Field<string, O, never, T>;
271
+ readonly boolean: <const O extends ScalarOptions<boolean> = ScalarOptions<boolean>>(options?: O & NoInfer<ValidateCheck<O, boolean>>) => Field<boolean, O, never, T>;
272
+ readonly dateTime: <const O extends ScalarOptions<Date> = ScalarOptions<Date>>(options?: O & NoInfer<ValidateCheck<O, Date>>) => Field<Date, O, never, T>;
273
+ /** A calendar day, the string `'2026-07-31'`, without a time zone (D-150). */
274
+ readonly date: <const O extends ScalarOptions<string> = ScalarOptions<string>>(options?: O & NoInfer<ValidateCheck<O, string>>) => Field<string, O & Day, never, T>;
275
+ /**
276
+ * Without a schema, a `json` value is `unknown` and written as JSON; with
277
+ * one, it reads the schema's output and is written its input (D-53).
278
+ */
279
+ readonly json: <const O extends JsonOptions = JsonOptions>(options?: O & NoInfer<JsonCheck<O>>) => Field<JsonOutput<O>, O, never, T, JsonInput<O>, true>;
280
+ /**
281
+ * With `list: true`, a list of its values, `[]` when empty (D-127); a
282
+ * `defineEnum` in place of its values is one type for each field (D-150),
283
+ * and `Object.values(Status)` of a TypeScript string enum types it `Status`.
284
+ */
285
+ readonly enumOf: <const E extends string, const O extends SingleOptions<E> | ListOptions<E> = SingleOptions<E>>(values: readonly E[] | Enum<E>, options?: O & NoInfer<ListableCheck<O, E>>) => Listable<E, O, T>;
286
+ readonly one: <M extends object, const O extends OneOptions = OneOptions>(target: M, options?: O & NoInfer<OneCheck<O>>) => One<M, O, T>;
287
+ readonly many: <M extends object, const O extends ManyOptions = ManyOptions>(target: M, options?: O) => Many<M, O, T>;
288
+ /**
289
+ * Computed on read by the model's `.with({ virtuals })` (D-151): a
290
+ * Standard Schema, or a model or a type behind an arrow, `() => [Image]`.
291
+ */
292
+ readonly virtual: <const O extends object, const X extends VirtualOptions = NoOptions>(output: O, options?: X) => Virtual<O, X>;
293
+ }
294
+ export {};
295
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
package/dist/fields.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,126 @@
1
+ import type { AnyCheck, SchemaTypes, StandardSchema } from './fields.ts';
2
+ import type { ModelShape } from './model.ts';
3
+ import type { ModelUse, PluginTypes } from './plugin.ts';
4
+ import type { QueryOptions } from './query.ts';
5
+ import type { RecordOf } from './record.ts';
6
+ import type { Caller } from './rules.ts';
7
+ import type { modelFields, nullableOf, typeFields } from './symbols.ts';
8
+ /** `X.nullable()`: a model or a type, or `null` (D-109). */
9
+ export type Nullable<X> = {
10
+ readonly [nullableOf]: X;
11
+ };
12
+ /** A `defineType`: a named object, which may hold a model (D-109). */
13
+ export interface ObjectType<N extends string, F> {
14
+ readonly name: N;
15
+ readonly [typeFields]: F;
16
+ nullable(): Nullable<this>;
17
+ }
18
+ type Named = ModelShape | {
19
+ readonly name: string;
20
+ readonly [typeFields]: object;
21
+ };
22
+ /**
23
+ * What a function returns (D-109): a model or a type, one or `null`, a list
24
+ * of one, or any Standard Schema.
25
+ */
26
+ export type OutputSpec = Named | Nullable<Named> | readonly [Named] | StandardSchema;
27
+ /** A `defineType`'s fields: any output but nothing. */
28
+ export type TypeFields = {
29
+ readonly [field: string]: OutputSpec;
30
+ };
31
+ /** The value of an output: typed, never validated (D-45). */
32
+ export type OutputValue<O> = O extends {
33
+ readonly [modelFields]: infer F;
34
+ } ? RecordOf<F> : O extends {
35
+ readonly [typeFields]: infer F;
36
+ } ? {
37
+ readonly [K in keyof F]: OutputValue<F[K]>;
38
+ } : O extends {
39
+ readonly [nullableOf]: infer X;
40
+ } ? OutputValue<X> | null : O extends StandardSchema ? SchemaTypes<O>['output'] : O extends readonly [infer X] ? readonly OutputValue<X>[] : never;
41
+ /** What `run` returns: nothing without an output. */
42
+ export type ResultOf<O> = [O] extends [undefined] ? void : OutputValue<O>;
43
+ /**
44
+ * A function's access rule reads the caller only: it runs before the input
45
+ * is validated, so a closed function says nothing of its input (D-04).
46
+ */
47
+ export type FunctionAccess = (facts: {
48
+ readonly caller: Caller;
49
+ }) => boolean;
50
+ export type FunctionWith<W> = {
51
+ readonly access?: FunctionAccess;
52
+ } & W;
53
+ /** What a caller passes to `run`: the input before validation (D-75). */
54
+ export type RunArgs<I> = [I] extends [StandardSchema] ? readonly [input: SchemaTypes<I>['input'], options?: QueryOptions] : readonly [options?: QueryOptions];
55
+ export interface ServerFunction<N extends string, I, O, P, W> {
56
+ readonly name: N;
57
+ /** The schemas the transports read (D-45). */
58
+ readonly input: I;
59
+ readonly output: O;
60
+ /** The plugins it uses, checked against the application's (D-24). */
61
+ readonly plugins?: P;
62
+ with(rules: FunctionWith<W>): this;
63
+ /** Checks access, validates the input, then runs it (D-75). */
64
+ run(...args: RunArgs<I>): Promise<ResultOf<O>>;
65
+ }
66
+ export type FunctionShape = {
67
+ readonly name: string;
68
+ readonly output: OutputSpec | undefined;
69
+ };
70
+ /** A plugin that exposes functions: it keys their `.with` (D-27). */
71
+ export type FunctionPlugin = PluginTypes & {
72
+ readonly functionWith: object | false;
73
+ };
74
+ /** Each used plugin's key of a function's `.with`. */
75
+ export type FunctionWithKeys<U> = {
76
+ readonly [V in U as V extends ModelUse<infer P, FunctionPlugin> ? P : never]?: V extends ModelUse<string, infer T extends FunctionPlugin> ? T['functionWith'] : never;
77
+ };
78
+ /** A cookie's attributes (D-113). */
79
+ export interface CookieOptions {
80
+ /** In seconds. */
81
+ readonly maxAge?: number;
82
+ readonly path?: string;
83
+ readonly domain?: string;
84
+ readonly httpOnly?: boolean;
85
+ readonly secure?: boolean;
86
+ readonly sameSite?: 'Strict' | 'Lax' | 'None';
87
+ }
88
+ /** Who calls a function through a transport (D-113). */
89
+ export interface Client {
90
+ /** The connection's address, `''` when the transport has none. */
91
+ readonly address: string;
92
+ /** Read from the request, written on the transport's HTTP response. */
93
+ readonly cookies: {
94
+ /** The request's cookie `name`, `undefined` when it sent none. */
95
+ get(name: string): string | undefined;
96
+ set(name: string, value: string, options?: CookieOptions): void;
97
+ /** Its `path` and `domain` must be those it was set with. */
98
+ clear(name: string, options?: CookieOptions): void;
99
+ };
100
+ }
101
+ /**
102
+ * What `run` receives: the caller, its client when a transport calls it,
103
+ * and the validated input if any (D-113).
104
+ */
105
+ export type RunFacts<I> = {
106
+ readonly caller: Caller;
107
+ readonly client: Client | undefined;
108
+ } & ([I] extends [StandardSchema] ? {
109
+ readonly input: SchemaTypes<I>['output'];
110
+ } : unknown);
111
+ /** Requires `query: true` when a plugin of `use` takes queries only (D-154). */
112
+ export type QueryCheck<U> = [
113
+ Extract<U, ModelUse<string, {
114
+ readonly queryOnly: true;
115
+ }>>
116
+ ] extends [never] ? unknown : {
117
+ readonly query: true;
118
+ };
119
+ /** Refuses an input typed `any` or without types (D-27). */
120
+ export type InputCheck<I> = [I] extends [StandardSchema] ? AnyCheck<I> extends {
121
+ readonly validate: infer M;
122
+ } ? {
123
+ readonly input: M;
124
+ } : unknown : unknown;
125
+ export {};
126
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../src/function.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEvE,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;CAAE,CAAA;AAEtD,sEAAsE;AACtE,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACxB,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;CAC1B;AAED,KAAK,KAAK,GACT,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE;;;GAGG;AACH,MAAM,MAAM,UAAU,GACrB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,cAAc,CAAA;AAE5D,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAA;AAEjE,6DAA6D;AAC7D,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GACvE,QAAQ,CAAC,CAAC,CAAC,GACX,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3C;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC9C,CAAC,SAAS;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,GAC3C,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GACrB,CAAC,SAAS,cAAc,GACvB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GACxB,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAC3B,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,GACzB,KAAK,CAAA;AAEZ,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEzE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAA;AAE5E,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;CAAE,GAAG,CAAC,CAAA;AAEtE,yEAAyE;AACzE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,GAClD,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,GACjE,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;AAEpC,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpB,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IAClC,+DAA+D;IAC/D,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;CAC9C;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;CACvC,CAAA;AAED,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAAA;CACrC,CAAA;AAED,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IACjC,QAAQ,EACP,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CACjE,CAAC,EAAE,CAAC,SAAS,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,cAAc,CAAC,GAC3D,CAAC,CAAC,cAAc,CAAC,GACjB,KAAK;CACR,CAAA;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC7B,kBAAkB;IAClB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CAC7C;AAED,wDAAwD;AACxD,MAAM,WAAW,MAAM;IACtB,kEAAkE;IAClE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE;QACjB,kEAAkE;QAClE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;QACrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;QAC/D,6DAA6D;QAC7D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;KAClD,CAAA;CACD;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,GAC9B;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;CAAE,GAC5C,OAAO,CAAC,CAAA;AAEX,gFAAgF;AAChF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC3B,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;CAC1D,SAAS,CAAC,KAAK,CAAC,GACd,OAAO,GACP;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CAAE,CAAA;AAE3B,4DAA4D;AAC5D,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,GACrD,QAAQ,CAAC,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;CAAE,GACjD;IAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACrB,OAAO,GACR,OAAO,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import type { FunctionDefinition, PluginCode } from './definition.ts';
2
+ import type { ExposedFunction } from './plugin.ts';
3
+ import type { Resolved } from './schema.ts';
4
+ /** Functions listed by the application, or given by a plugin (D-113). */
5
+ export type FunctionSource = {
6
+ readonly plugin: string | undefined;
7
+ readonly values: readonly unknown[];
8
+ };
9
+ /** The application's and the plugins' functions, by value, and who gives each. */
10
+ export type Functions = {
11
+ readonly definitions: ReadonlyMap<object, FunctionDefinition>;
12
+ readonly plugins: ReadonlyMap<object, string>;
13
+ };
14
+ /** The functions, each named once, or startup stops with a message. */
15
+ export declare function resolveFunctions(sources: readonly FunctionSource[], resolved: Resolved, plugins: readonly PluginCode[]): Functions;
16
+ /** The functions as the plugin `name` reads them, with its `.with` key. */
17
+ export declare function exposedFunctions(name: string, functions: Functions): readonly ExposedFunction[];
18
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kBAAkB,EAElB,UAAU,EAEV,MAAM,iBAAiB,CAAA;AAIxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAuC3C,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;CACnC,CAAA;AAED,kFAAkF;AAClF,MAAM,MAAM,SAAS,GAAG;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC7D,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7C,CAAA;AAOD,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,SAAS,UAAU,EAAE,GAC5B,SAAS,CA6CX;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAClB,SAAS,eAAe,EAAE,CA2B5B"}