@ketvietlab/ketjs 0.1.1 → 0.1.3

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 (300) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -2
  3. package/dist/agent/capabilities.d.ts +1 -3
  4. package/dist/agent/capabilities.d.ts.map +1 -1
  5. package/dist/agent/capabilities.js +10 -1
  6. package/dist/agent/capabilities.js.map +1 -1
  7. package/dist/agent/permissions.d.ts +43 -1
  8. package/dist/agent/permissions.d.ts.map +1 -1
  9. package/dist/agent/permissions.js +50 -2
  10. package/dist/agent/permissions.js.map +1 -1
  11. package/dist/cli.js +246 -97
  12. package/dist/cli.js.map +1 -1
  13. package/dist/codegen/dts.d.ts.map +1 -1
  14. package/dist/codegen/dts.js +1 -0
  15. package/dist/codegen/dts.js.map +1 -1
  16. package/dist/data/changeset.d.ts +12 -0
  17. package/dist/data/changeset.d.ts.map +1 -1
  18. package/dist/data/changeset.js +73 -17
  19. package/dist/data/changeset.js.map +1 -1
  20. package/dist/data/expr.d.ts +16 -0
  21. package/dist/data/expr.d.ts.map +1 -1
  22. package/dist/data/expr.js +33 -5
  23. package/dist/data/expr.js.map +1 -1
  24. package/dist/data/fleet.d.ts +41 -1
  25. package/dist/data/fleet.d.ts.map +1 -1
  26. package/dist/data/fleet.js +100 -11
  27. package/dist/data/fleet.js.map +1 -1
  28. package/dist/data/migrate.d.ts +20 -0
  29. package/dist/data/migrate.d.ts.map +1 -1
  30. package/dist/data/migrate.js +86 -3
  31. package/dist/data/migrate.js.map +1 -1
  32. package/dist/data/physical.d.ts +5 -0
  33. package/dist/data/physical.d.ts.map +1 -0
  34. package/dist/data/physical.js +196 -0
  35. package/dist/data/physical.js.map +1 -0
  36. package/dist/data/pool.d.ts +2 -1
  37. package/dist/data/pool.d.ts.map +1 -1
  38. package/dist/data/pool.js +159 -31
  39. package/dist/data/pool.js.map +1 -1
  40. package/dist/data/query.d.ts +10 -1
  41. package/dist/data/query.d.ts.map +1 -1
  42. package/dist/data/query.js +136 -27
  43. package/dist/data/query.js.map +1 -1
  44. package/dist/data/sqlite.d.ts.map +1 -1
  45. package/dist/data/sqlite.js +350 -52
  46. package/dist/data/sqlite.js.map +1 -1
  47. package/dist/data/time.d.ts +13 -0
  48. package/dist/data/time.d.ts.map +1 -1
  49. package/dist/data/time.js +61 -17
  50. package/dist/data/time.js.map +1 -1
  51. package/dist/index.d.ts +43 -22
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +32 -16
  54. package/dist/index.js.map +1 -1
  55. package/dist/kernel/audit.d.ts +27 -0
  56. package/dist/kernel/audit.d.ts.map +1 -0
  57. package/dist/kernel/audit.js +67 -0
  58. package/dist/kernel/audit.js.map +1 -0
  59. package/dist/kernel/classification.d.ts +26 -0
  60. package/dist/kernel/classification.d.ts.map +1 -0
  61. package/dist/kernel/classification.js +73 -0
  62. package/dist/kernel/classification.js.map +1 -0
  63. package/dist/kernel/compose.d.ts +6 -2
  64. package/dist/kernel/compose.d.ts.map +1 -1
  65. package/dist/kernel/compose.js +269 -15
  66. package/dist/kernel/compose.js.map +1 -1
  67. package/dist/kernel/define.d.ts +2 -3
  68. package/dist/kernel/define.d.ts.map +1 -1
  69. package/dist/kernel/define.js +22 -12
  70. package/dist/kernel/define.js.map +1 -1
  71. package/dist/kernel/diff.d.ts.map +1 -1
  72. package/dist/kernel/diff.js +28 -4
  73. package/dist/kernel/diff.js.map +1 -1
  74. package/dist/kernel/graph.js +1 -1
  75. package/dist/kernel/graph.js.map +1 -1
  76. package/dist/kernel/i18n.d.ts +10 -1
  77. package/dist/kernel/i18n.d.ts.map +1 -1
  78. package/dist/kernel/i18n.js +34 -1
  79. package/dist/kernel/i18n.js.map +1 -1
  80. package/dist/kernel/layout.d.ts +97 -0
  81. package/dist/kernel/layout.d.ts.map +1 -1
  82. package/dist/kernel/layout.js +294 -12
  83. package/dist/kernel/layout.js.map +1 -1
  84. package/dist/kernel/menu.d.ts +33 -2
  85. package/dist/kernel/menu.d.ts.map +1 -1
  86. package/dist/kernel/menu.js +99 -7
  87. package/dist/kernel/menu.js.map +1 -1
  88. package/dist/kernel/modules.d.ts +3 -3
  89. package/dist/kernel/modules.d.ts.map +1 -1
  90. package/dist/kernel/modules.js +21 -21
  91. package/dist/kernel/modules.js.map +1 -1
  92. package/dist/kernel/permissions.d.ts +10 -0
  93. package/dist/kernel/permissions.d.ts.map +1 -0
  94. package/dist/kernel/permissions.js +365 -0
  95. package/dist/kernel/permissions.js.map +1 -0
  96. package/dist/kernel/schedule.d.ts +23 -0
  97. package/dist/kernel/schedule.d.ts.map +1 -0
  98. package/dist/kernel/schedule.js +83 -0
  99. package/dist/kernel/schedule.js.map +1 -0
  100. package/dist/kernel/types.d.ts.map +1 -1
  101. package/dist/kernel/types.js +5 -4
  102. package/dist/kernel/types.js.map +1 -1
  103. package/dist/kernel/workspace.d.ts +92 -14
  104. package/dist/kernel/workspace.d.ts.map +1 -1
  105. package/dist/kernel/workspace.js +128 -49
  106. package/dist/kernel/workspace.js.map +1 -1
  107. package/dist/pdf/assets/Inter-Bold.ttf +0 -0
  108. package/dist/pdf/assets/Inter-Regular.ttf +0 -0
  109. package/dist/pdf/assets/Inter-SemiBold.ttf +0 -0
  110. package/dist/pdf/assets/LICENSE.txt +92 -0
  111. package/dist/pdf/font.d.ts +10 -0
  112. package/dist/pdf/font.d.ts.map +1 -0
  113. package/dist/pdf/font.js +83 -0
  114. package/dist/pdf/font.js.map +1 -0
  115. package/dist/pdf/image.d.ts +8 -0
  116. package/dist/pdf/image.d.ts.map +1 -0
  117. package/dist/pdf/image.js +94 -0
  118. package/dist/pdf/image.js.map +1 -0
  119. package/dist/pdf/index.d.ts +15 -0
  120. package/dist/pdf/index.d.ts.map +1 -0
  121. package/dist/pdf/index.js +17 -0
  122. package/dist/pdf/index.js.map +1 -0
  123. package/dist/pdf/markup.d.ts +19 -0
  124. package/dist/pdf/markup.d.ts.map +1 -0
  125. package/dist/pdf/markup.js +146 -0
  126. package/dist/pdf/markup.js.map +1 -0
  127. package/dist/pdf/render.d.ts +14 -0
  128. package/dist/pdf/render.d.ts.map +1 -0
  129. package/dist/pdf/render.js +387 -0
  130. package/dist/pdf/render.js.map +1 -0
  131. package/dist/scaffold/index.js +6 -6
  132. package/dist/scaffold/index.js.map +1 -1
  133. package/dist/scaffold/templates/{app.test.ts.tmpl → deployment.test.ts.tmpl} +3 -3
  134. package/dist/scaffold/templates/dev.mjs.tmpl +1 -1
  135. package/dist/scaffold/templates/ket.workspace.ts.tmpl +4 -6
  136. package/dist/scaffold/templates/module.ts.tmpl +1 -4
  137. package/dist/server/assets.d.ts +23 -0
  138. package/dist/server/assets.d.ts.map +1 -0
  139. package/dist/server/assets.js +97 -0
  140. package/dist/server/assets.js.map +1 -0
  141. package/dist/server/boot.d.ts +157 -38
  142. package/dist/server/boot.d.ts.map +1 -1
  143. package/dist/server/boot.js +360 -138
  144. package/dist/server/boot.js.map +1 -1
  145. package/dist/server/config.d.ts +30 -10
  146. package/dist/server/config.d.ts.map +1 -1
  147. package/dist/server/config.js +73 -17
  148. package/dist/server/config.js.map +1 -1
  149. package/dist/server/ctx.d.ts +10 -0
  150. package/dist/server/ctx.d.ts.map +1 -1
  151. package/dist/server/ctx.js +268 -49
  152. package/dist/server/ctx.js.map +1 -1
  153. package/dist/server/development.d.ts +10 -0
  154. package/dist/server/development.d.ts.map +1 -0
  155. package/dist/server/development.js +15 -0
  156. package/dist/server/development.js.map +1 -0
  157. package/dist/server/fn.d.ts +22 -3
  158. package/dist/server/fn.d.ts.map +1 -1
  159. package/dist/server/fn.js +116 -32
  160. package/dist/server/fn.js.map +1 -1
  161. package/dist/server/form.d.ts +33 -0
  162. package/dist/server/form.d.ts.map +1 -0
  163. package/dist/server/form.js +47 -0
  164. package/dist/server/form.js.map +1 -0
  165. package/dist/server/http.d.ts +55 -3
  166. package/dist/server/http.d.ts.map +1 -1
  167. package/dist/server/http.js +306 -22
  168. package/dist/server/http.js.map +1 -1
  169. package/dist/server/idem.d.ts +3 -2
  170. package/dist/server/idem.d.ts.map +1 -1
  171. package/dist/server/idem.js +12 -4
  172. package/dist/server/idem.js.map +1 -1
  173. package/dist/server/jobs.js +1 -1
  174. package/dist/server/jobs.js.map +1 -1
  175. package/dist/server/log/combinators.d.ts +42 -0
  176. package/dist/server/log/combinators.d.ts.map +1 -0
  177. package/dist/server/log/combinators.js +270 -0
  178. package/dist/server/log/combinators.js.map +1 -0
  179. package/dist/server/log/console.d.ts +12 -0
  180. package/dist/server/log/console.d.ts.map +1 -0
  181. package/dist/server/log/console.js +96 -0
  182. package/dist/server/log/console.js.map +1 -0
  183. package/dist/server/log/file.d.ts +11 -0
  184. package/dist/server/log/file.d.ts.map +1 -0
  185. package/dist/server/log/file.js +61 -0
  186. package/dist/server/log/file.js.map +1 -0
  187. package/dist/server/log/index.d.ts +23 -0
  188. package/dist/server/log/index.d.ts.map +1 -0
  189. package/dist/server/log/index.js +45 -0
  190. package/dist/server/log/index.js.map +1 -0
  191. package/dist/server/log/logger.d.ts +53 -0
  192. package/dist/server/log/logger.d.ts.map +1 -0
  193. package/dist/server/log/logger.js +94 -0
  194. package/dist/server/log/logger.js.map +1 -0
  195. package/dist/server/log/memory.d.ts +11 -0
  196. package/dist/server/log/memory.d.ts.map +1 -0
  197. package/dist/server/log/memory.js +25 -0
  198. package/dist/server/log/memory.js.map +1 -0
  199. package/dist/server/log/types.d.ts +112 -0
  200. package/dist/server/log/types.d.ts.map +1 -0
  201. package/dist/server/log/types.js +58 -0
  202. package/dist/server/log/types.js.map +1 -0
  203. package/dist/server/policy.d.ts +29 -0
  204. package/dist/server/policy.d.ts.map +1 -0
  205. package/dist/server/policy.js +29 -0
  206. package/dist/server/policy.js.map +1 -0
  207. package/dist/server/queue.d.ts +1 -1
  208. package/dist/server/queue.d.ts.map +1 -1
  209. package/dist/server/queue.js.map +1 -1
  210. package/dist/server/ratelimit.d.ts +48 -0
  211. package/dist/server/ratelimit.d.ts.map +1 -0
  212. package/dist/server/ratelimit.js +102 -0
  213. package/dist/server/ratelimit.js.map +1 -0
  214. package/dist/server/respond.d.ts.map +1 -1
  215. package/dist/server/respond.js +16 -1
  216. package/dist/server/respond.js.map +1 -1
  217. package/dist/server/runtime.d.ts +18 -3
  218. package/dist/server/runtime.d.ts.map +1 -1
  219. package/dist/server/runtime.js +32 -2
  220. package/dist/server/runtime.js.map +1 -1
  221. package/dist/server/schedule.d.ts +18 -0
  222. package/dist/server/schedule.d.ts.map +1 -0
  223. package/dist/server/schedule.js +70 -0
  224. package/dist/server/schedule.js.map +1 -0
  225. package/dist/server/sequence.d.ts +42 -0
  226. package/dist/server/sequence.d.ts.map +1 -0
  227. package/dist/server/sequence.js +97 -0
  228. package/dist/server/sequence.js.map +1 -0
  229. package/dist/server/session.d.ts +21 -0
  230. package/dist/server/session.d.ts.map +1 -1
  231. package/dist/server/session.js +84 -10
  232. package/dist/server/session.js.map +1 -1
  233. package/dist/server/sessionstore.d.ts +3 -1
  234. package/dist/server/sessionstore.d.ts.map +1 -1
  235. package/dist/server/sessionstore.js +7 -3
  236. package/dist/server/sessionstore.js.map +1 -1
  237. package/dist/server/storage/index.d.ts +1 -1
  238. package/dist/server/storage/index.d.ts.map +1 -1
  239. package/dist/server/storage/index.js +61 -1
  240. package/dist/server/storage/index.js.map +1 -1
  241. package/dist/server/storage/types.d.ts +8 -0
  242. package/dist/server/storage/types.d.ts.map +1 -1
  243. package/dist/server/storage/types.js +58 -0
  244. package/dist/server/storage/types.js.map +1 -1
  245. package/dist/server/tenants.d.ts +20 -18
  246. package/dist/server/tenants.d.ts.map +1 -1
  247. package/dist/server/tenants.js +133 -84
  248. package/dist/server/tenants.js.map +1 -1
  249. package/dist/server/transport/types.js +2 -2
  250. package/dist/server/transport/types.js.map +1 -1
  251. package/dist/server/worker.d.ts +19 -3
  252. package/dist/server/worker.d.ts.map +1 -1
  253. package/dist/server/worker.js +168 -21
  254. package/dist/server/worker.js.map +1 -1
  255. package/dist/testing.d.ts +26 -10
  256. package/dist/testing.d.ts.map +1 -1
  257. package/dist/testing.js +41 -14
  258. package/dist/testing.js.map +1 -1
  259. package/dist/theme/contracts.d.ts +14 -1
  260. package/dist/theme/contracts.d.ts.map +1 -1
  261. package/dist/theme/contracts.js +35 -6
  262. package/dist/theme/contracts.js.map +1 -1
  263. package/dist/theme/index.d.ts +1 -1
  264. package/dist/theme/index.d.ts.map +1 -1
  265. package/dist/theme/index.js +1 -1
  266. package/dist/theme/index.js.map +1 -1
  267. package/dist/theme/joint-runtime.d.ts +33 -0
  268. package/dist/theme/joint-runtime.d.ts.map +1 -0
  269. package/dist/theme/joint-runtime.js +121 -0
  270. package/dist/theme/joint-runtime.js.map +1 -0
  271. package/dist/theme/joints.d.ts.map +1 -1
  272. package/dist/theme/joints.js +15 -97
  273. package/dist/theme/joints.js.map +1 -1
  274. package/dist/theme/ktl/compile.d.ts +4 -0
  275. package/dist/theme/ktl/compile.d.ts.map +1 -1
  276. package/dist/theme/ktl/compile.js +54 -1
  277. package/dist/theme/ktl/compile.js.map +1 -1
  278. package/dist/theme/ktl/parser.d.ts +4 -0
  279. package/dist/theme/ktl/parser.d.ts.map +1 -1
  280. package/dist/theme/ktl/parser.js +8 -0
  281. package/dist/theme/ktl/parser.js.map +1 -1
  282. package/dist/theme/render.d.ts +8 -0
  283. package/dist/theme/render.d.ts.map +1 -1
  284. package/dist/theme/render.js +88 -118
  285. package/dist/theme/render.js.map +1 -1
  286. package/dist/theme/tokens.d.ts +6 -0
  287. package/dist/theme/tokens.d.ts.map +1 -1
  288. package/dist/theme/tokens.js +6 -0
  289. package/dist/theme/tokens.js.map +1 -1
  290. package/dist/theme/viewmodel.d.ts +24 -0
  291. package/dist/theme/viewmodel.d.ts.map +1 -1
  292. package/dist/theme/viewmodel.js +75 -6
  293. package/dist/theme/viewmodel.js.map +1 -1
  294. package/dist/types.d.ts +304 -56
  295. package/dist/types.d.ts.map +1 -1
  296. package/package.json +6 -2
  297. package/dist/kernel/apps.d.ts +0 -43
  298. package/dist/kernel/apps.d.ts.map +0 -1
  299. package/dist/kernel/apps.js +0 -234
  300. package/dist/kernel/apps.js.map +0 -1
@@ -6,11 +6,16 @@
6
6
  // rather than merely discouraged.
7
7
  import { tableNameFor } from '../data/migrate.js';
8
8
  import { table } from '../data/query.js';
9
- import { eq, inArray } from '../data/expr.js';
9
+ import { eq, inArray, makeCol } from '../data/expr.js';
10
10
  import { from } from '../data/query.js';
11
- import { changeset, decimalText } from '../data/changeset.js';
11
+ import { canonicalDecimal, changeset, DECIMAL_MAX_CHARS, parseDecimal, } from '../data/changeset.js';
12
12
  import { KetError } from '../kernel/errors.js';
13
+ import { createLogger } from './log/logger.js';
14
+ import { nullLog } from './log/types.js';
13
15
  import { createQueue, queueFor, validateJobInput } from './queue.js';
16
+ import { nextSequenceNumber } from './sequence.js';
17
+ /** What a sensitive value is replaced by everywhere a write record travels. */
18
+ export const SENSITIVE_MASK = '[sensitive]';
14
19
  export function createContext(o) {
15
20
  const { adapter, manifest, fnKey } = o;
16
21
  const scope = o.scope ?? { company: null, branches: null };
@@ -21,8 +26,52 @@ export function createContext(o) {
21
26
  code: o.kind === 'job' ? 'E_UNKNOWN_JOB' : 'E_UNKNOWN_FUNCTION',
22
27
  message: `no ${o.kind === 'job' ? 'background job' : 'server function'} "${fnKey}"`,
23
28
  });
29
+ /**
30
+ * A model whose value is that it did not change afterwards.
31
+ *
32
+ * Refused on the way in rather than reviewed on the way out: both audit models
33
+ * in KetSuite promised this in a comment, and a promise a reviewer has to
34
+ * remember is one a refactor eventually breaks.
35
+ */
36
+ const refuseAppendOnly = (model, verb) => {
37
+ if (!manifest.models[model]?.append)
38
+ return;
39
+ throw new KetError({
40
+ code: 'E_APPEND_ONLY',
41
+ module: operation.by,
42
+ message: `"${fnKey}" attempted to ${verb} ${model}, which is append-only`,
43
+ hint: 'insert a new row — a replay is answered by insertIfAbsent, never by editing what it wrote',
44
+ });
45
+ };
24
46
  const effects = new Set(operation.effects);
25
47
  const writes = o.writes ?? [];
48
+ /**
49
+ * A write record is observational, and it travels: it is returned to the caller,
50
+ * shown by a dry-run, and stored verbatim in the durable idempotency row that
51
+ * answers a retry. A field declared `sensitive` must not make that trip, so its
52
+ * value is replaced before the record is kept rather than after.
53
+ */
54
+ const record = (write) => {
55
+ const model = manifest.models[write.model];
56
+ const mask = (row) => {
57
+ if (!row || !model)
58
+ return row;
59
+ let masked;
60
+ for (const key of Object.keys(row)) {
61
+ if (!model.fields[key]?.sensitive)
62
+ continue;
63
+ masked ??= { ...row };
64
+ masked[key] = SENSITIVE_MASK;
65
+ }
66
+ return masked ?? row;
67
+ };
68
+ writes.push({
69
+ ...write,
70
+ ...(write.row === undefined ? {} : { row: mask(write.row) }),
71
+ ...(write.where === undefined ? {} : { where: mask(write.where) }),
72
+ ...(write.patch === undefined ? {} : { patch: mask(write.patch) }),
73
+ });
74
+ };
26
75
  const need = (effect, target) => {
27
76
  if (effects.has(`${effect}:${target}`))
28
77
  return;
@@ -73,7 +122,9 @@ export function createContext(o) {
73
122
  // place that can guarantee it.
74
123
  //
75
124
  // Branch is not a security boundary. Reading every branch of one company is
76
- // ordinary, so an empty branch list means "all of them" rather than "none".
125
+ // ordinary, so null means unrestricted. An explicit empty set still means
126
+ // "none": treating it like null would turn a caller with no readable branches
127
+ // into one that can read every branch.
77
128
  // Writing somewhere you cannot read back is silent corruption: the row lands,
78
129
  // every later query filters it out, and nothing anywhere says why. So the two
79
130
  // halves of the scope have to agree before the first query runs.
@@ -86,41 +137,111 @@ export function createContext(o) {
86
137
  });
87
138
  }
88
139
  const scopeOf = (model) => manifest.models[model]?.scope ?? 'shared';
140
+ const validateFields = (model, row, operationName) => {
141
+ const def = manifest.models[model];
142
+ if (!def) {
143
+ throw new KetError({
144
+ code: 'E_UNKNOWN_MODEL',
145
+ module: operation.by,
146
+ message: `no model "${model}"`,
147
+ });
148
+ }
149
+ const unknown = Object.keys(row).filter((key) => !def.fields[key]);
150
+ if (unknown.length) {
151
+ throw new KetError({
152
+ code: 'E_UNKNOWN_FIELD',
153
+ module: operation.by,
154
+ message: `${model} has no field(s): ${unknown.join(', ')}`,
155
+ hint: `fields: ${Object.keys(def.fields).join(', ')}`,
156
+ });
157
+ }
158
+ if (operationName !== 'update')
159
+ return;
160
+ const protectedFields = def.scope === 'company+branch' ? ['companyId', 'branchId'] : ['companyId'];
161
+ const attempted = protectedFields.filter((key) => key in row);
162
+ if (def.scope !== 'shared' && attempted.length) {
163
+ throw new KetError({
164
+ code: 'E_SCOPE_FIELD_WRITTEN',
165
+ module: operation.by,
166
+ message: `"${fnKey}" attempted to update ${model}.${attempted.join(', ')}`,
167
+ hint: 'scope columns are immutable after insert — move data with an explicitly cross-company administrative workflow',
168
+ });
169
+ }
170
+ };
89
171
  // ── decimal columns ────────────────────────────────────────────────────────
90
172
  //
91
- // Both adapters store and return a decimal as a string, which is what keeps it
92
- // exact across the round trip. Arithmetic still happens on numbers, as it does in
93
- // Odoo the conversion is here, in the one place that knows both the model and
94
- // the row, rather than in the adapter, which sees only untyped columns.
173
+ // Both adapters store and return a decimal as a string, and it stays one all the
174
+ // way out. A write may hand in a number — arithmetic happens on numbers and
175
+ // encodeRow renders it; a read never converts.
176
+ //
177
+ // It used to convert, and that quietly rewrote stored data. `{ ...row, note }`
178
+ // is how everyone edits one field, and it carries every other column along with
179
+ // it. With the decimal decoded to a number, an edit that never mentioned the
180
+ // amount wrote it back rounded: 12.50 became 12.5, and 1234567890123456.78
181
+ // became …6.8. Nothing failed. The column simply held a different number
182
+ // afterwards, which is the worst way for a ledger to be wrong.
95
183
  const decimalsOf = (model) => Object.entries(manifest.models[model]?.fields ?? {})
96
184
  .filter(([, f]) => f.base === 'decimal')
97
185
  .map(([n]) => n);
186
+ const normalizeDecimal = (model, field, value) => {
187
+ const parsed = parseDecimal(value);
188
+ if (parsed.ok)
189
+ return parsed.value;
190
+ throw new KetError({
191
+ code: parsed.reason === 'size' ? 'E_DECIMAL_TOO_LONG' : 'E_INVALID_DECIMAL',
192
+ module: operation.by,
193
+ message: parsed.reason === 'size'
194
+ ? `${model}.${field} exceeds the ${DECIMAL_MAX_CHARS}-character decimal limit`
195
+ : `${model}.${field} requires a finite number or plain decimal string`,
196
+ });
197
+ };
98
198
  const booleansOf = (model) => Object.entries(manifest.models[model]?.fields ?? {})
99
199
  .filter(([, f]) => f.base === 'bool')
100
200
  .map(([n]) => n);
201
+ const datetimesOf = (model) => Object.entries(manifest.models[model]?.fields ?? {})
202
+ .filter(([, f]) => f.base === 'datetime')
203
+ .map(([n]) => n);
101
204
  const jsonOf = (model) => Object.entries(manifest.models[model]?.fields ?? {})
102
205
  .filter(([, f]) => f.base === 'json')
103
206
  .map(([n]) => n);
104
207
  const encodeRow = (model, row) => {
105
208
  const cols = decimalsOf(model);
106
- if (!cols.length)
209
+ const stamps = datetimesOf(model);
210
+ if (!cols.length && !stamps.length)
107
211
  return row;
108
212
  const out = { ...row };
109
- // decimalText, not String: a raw db.update never passes through a changeset, so
110
- // this is the only place that can keep "1e-7" out of a decimal column.
213
+ // A raw db.insert/update never passes through a changeset. Validate as well as
214
+ // render here so it cannot store exponent syntax or bypass the public budget.
111
215
  for (const c of cols)
112
216
  if (out[c] != null)
113
- out[c] = decimalText(out[c]);
217
+ out[c] = normalizeDecimal(model, c, out[c]);
218
+ /**
219
+ * One instant, one spelling.
220
+ *
221
+ * Postgres normalises a TIMESTAMPTZ to UTC whether or not it is asked, so a
222
+ * caller passing "+07:00" would leave a different string in SQLite than in
223
+ * Postgres for the same moment. Normalising here — the one place every write
224
+ * passes through — keeps the two datastores byte-identical, and makes the
225
+ * stored text sort chronologically, which is what a range query compares.
226
+ */
227
+ for (const c of stamps) {
228
+ const held = out[c];
229
+ if (held == null)
230
+ continue;
231
+ const at = held instanceof Date ? held : new Date(String(held));
232
+ if (!Number.isNaN(at.getTime()))
233
+ out[c] = at.toISOString();
234
+ }
114
235
  return out;
115
236
  };
237
+ const validateDecimalRow = (model, row) => {
238
+ for (const field of decimalsOf(model))
239
+ if (row[field] != null)
240
+ normalizeDecimal(model, field, row[field]);
241
+ };
116
242
  const decodeRows = (model, rows) => {
117
- const cols = decimalsOf(model);
118
243
  const bools = booleansOf(model);
119
244
  const json = dialect === 'sqlite' ? jsonOf(model) : [];
120
- for (const row of rows)
121
- for (const c of cols)
122
- if (row[c] != null)
123
- row[c] = Number(row[c]);
124
245
  for (const row of rows)
125
246
  for (const c of bools)
126
247
  if (row[c] != null)
@@ -172,10 +293,10 @@ export function createContext(o) {
172
293
  if (operation.crossCompany)
173
294
  return q; // declared, and visible in the manifest
174
295
  const cs = readCompanies(q.model);
175
- const col = { model: q.model, name: 'companyId' };
296
+ const col = makeCol(q.model, 'companyId', 'text');
176
297
  let out = q.where(cs.length === 1 ? eq(col, cs[0]) : inArray(col, cs));
177
- if (kind === 'company+branch' && scope.branches && scope.branches.length > 0) {
178
- out = out.where(inArray({ model: q.model, name: 'branchId' }, scope.branches));
298
+ if (kind === 'company+branch' && scope.branches != null) {
299
+ out = out.where(inArray(makeCol(q.model, 'branchId', 'text'), scope.branches));
179
300
  }
180
301
  return out;
181
302
  };
@@ -184,7 +305,8 @@ export function createContext(o) {
184
305
  const kind = scopeOf(model);
185
306
  if (kind === 'shared')
186
307
  return row;
187
- for (const key of ['companyId', 'branchId']) {
308
+ const protectedScopeFields = kind === 'company+branch' ? ['companyId', 'branchId'] : ['companyId'];
309
+ for (const key of protectedScopeFields) {
188
310
  if (key in row) {
189
311
  throw new KetError({
190
312
  code: 'E_SCOPE_FIELD_WRITTEN',
@@ -237,6 +359,15 @@ export function createContext(o) {
237
359
  const fresh = () => {
238
360
  n = 0;
239
361
  };
362
+ const equalPredicate = (model, field, value) => {
363
+ const column = adapter.quoteIdent(field);
364
+ if (value === null)
365
+ return `${column} IS NULL`;
366
+ const placeholder = ph();
367
+ return dialect === 'sqlite' && manifest.models[model]?.fields[field]?.base === 'decimal'
368
+ ? `ket_decimal_cmp(${column}, ${placeholder}) = 0`
369
+ : `${column} = ${placeholder}`;
370
+ };
240
371
  /**
241
372
  * Fill in what a query asked to preload: one extra query per relation, never one
242
373
  * per row. The children go through the same scoped path as anything else, so a
@@ -245,6 +376,26 @@ export function createContext(o) {
245
376
  const fillPreloads = async (q, rows) => {
246
377
  if (!q.preloads.length || !rows.length)
247
378
  return rows;
379
+ const chunks = (values, size = 500) => {
380
+ const out = [];
381
+ for (let index = 0; index < values.length; index += size)
382
+ out.push(values.slice(index, index + size));
383
+ return out;
384
+ };
385
+ const loadChunks = async (model, field, values) => {
386
+ const loaded = [];
387
+ const base = manifest.models[model]?.fields[field]?.base;
388
+ if (!base)
389
+ throw new KetError({
390
+ code: 'E_UNKNOWN_FIELD',
391
+ module: operation.by,
392
+ message: `${model} has no field "${field}"`,
393
+ });
394
+ for (const batch of chunks(values)) {
395
+ loaded.push(...(await db.all(from(table(manifest, model)).where(inArray(makeCol(model, field, base), batch)))));
396
+ }
397
+ return loaded;
398
+ };
248
399
  for (const { name } of q.preloads) {
249
400
  const rel = relationOf(q.model, name);
250
401
  if (rel.kind === 'belongsTo') {
@@ -254,7 +405,7 @@ export function createContext(o) {
254
405
  r[name] = null;
255
406
  continue;
256
407
  }
257
- const parents = await db.all(from(table(manifest, rel.target)).where(inArray({ model: rel.target, name: 'id' }, ids)));
408
+ const parents = await loadChunks(rel.target, 'id', ids);
258
409
  const byId = new Map(parents.map((p) => [p.id, p]));
259
410
  for (const r of rows)
260
411
  r[name] = byId.get(r[rel.by]) ?? null;
@@ -266,7 +417,7 @@ export function createContext(o) {
266
417
  r[name] = [];
267
418
  continue;
268
419
  }
269
- const children = await db.all(from(table(manifest, rel.target)).where(inArray({ model: rel.target, name: rel.by }, ids)));
420
+ const children = await loadChunks(rel.target, rel.by, ids);
270
421
  const grouped = new Map();
271
422
  for (const child of children) {
272
423
  const key = child[rel.by];
@@ -310,16 +461,28 @@ export function createContext(o) {
310
461
  const rows = await adapter.all(text, params);
311
462
  return rows.map((row) => {
312
463
  const aggregates = {};
313
- for (const aggregate of grouped.aggregates)
314
- aggregates[aggregate.as] = row[aggregate.as];
464
+ for (const aggregate of grouped.aggregates) {
465
+ const value = row[aggregate.as];
466
+ const computedDecimal = aggregate.col?.base === 'decimal' && aggregate.fn !== 'count' && aggregate.fn !== 'countDistinct';
467
+ aggregates[aggregate.as] =
468
+ value == null || !computedDecimal
469
+ ? value
470
+ : (canonicalDecimal(value) ?? normalizeDecimal(grouped.model, aggregate.col.name, value));
471
+ }
315
472
  return {
316
- key: grouped.groups.map((_, index) => row[`__group${index}`]),
473
+ key: grouped.groups.map((group, index) => {
474
+ const value = row[`__group${index}`];
475
+ return value == null || group.interval || group.col.base !== 'decimal'
476
+ ? value
477
+ : (canonicalDecimal(value) ?? normalizeDecimal(grouped.model, group.col.name, value));
478
+ }),
317
479
  count: Number(row.__count),
318
480
  aggregates,
319
481
  };
320
482
  });
321
483
  },
322
484
  async del(q) {
485
+ refuseAppendOnly(q.model, 'delete from');
323
486
  // A select passed to del renders as a select and deletes nothing — and the
324
487
  // effect check sees 'read', so a function that correctly declared 'write'
325
488
  // is refused for an effect it never wanted. website_menu.removeMenuItem was
@@ -333,7 +496,7 @@ export function createContext(o) {
333
496
  });
334
497
  }
335
498
  checkQuery(q);
336
- writes.push({ op: 'update', model: q.model, where: {} });
499
+ record({ op: 'update', model: q.model, where: {} });
337
500
  if (dryRun)
338
501
  return { changes: 0 };
339
502
  const { text, params } = scoped(q).toSQL(dialect);
@@ -362,17 +525,31 @@ export function createContext(o) {
362
525
  async select(model, where = {}) {
363
526
  need('read', model);
364
527
  const t = adapter.quoteIdent(tableNameFor(model));
365
- const open = scopeOf(model) === 'shared' || operation.crossCompany;
528
+ const kind = scopeOf(model);
529
+ const open = kind === 'shared' || operation.crossCompany;
366
530
  const keys = Object.keys(where);
367
531
  fresh();
368
- const conds = keys.map((k) => `${adapter.quoteIdent(k)} = ${ph()}`);
369
- const params = keys.map((k) => where[k]);
532
+ const conds = keys.map((k) => equalPredicate(model, k, where[k]));
533
+ const params = keys
534
+ .filter((k) => where[k] !== null)
535
+ .map((k) => manifest.models[model]?.fields[k]?.base === 'decimal'
536
+ ? normalizeDecimal(model, k, where[k])
537
+ : where[k]);
370
538
  if (!open) {
371
539
  // A set, not a value: this is the one place the convenience path has to
372
540
  // part company with a plain `column = ?` map.
373
541
  const cs = readCompanies(model);
374
542
  conds.push(`${adapter.quoteIdent('companyId')} IN (${cs.map(() => ph()).join(', ')})`);
375
543
  params.push(...cs);
544
+ if (kind === 'company+branch' && scope.branches != null) {
545
+ if (scope.branches.length) {
546
+ conds.push(`${adapter.quoteIdent('branchId')} IN (${scope.branches.map(() => ph()).join(', ')})`);
547
+ params.push(...scope.branches);
548
+ }
549
+ else {
550
+ conds.push('1 = 0');
551
+ }
552
+ }
376
553
  }
377
554
  const sql = `SELECT * FROM ${t}` + (conds.length ? ` WHERE ${conds.join(' AND ')}` : '');
378
555
  return decodeRows(model, await adapter.all(sql, params));
@@ -389,7 +566,7 @@ export function createContext(o) {
389
566
  });
390
567
  }
391
568
  const stamped = encodeRow(model, stamp(model, timestamped(model, row, 'insert')));
392
- writes.push({ op: 'insert', model, row: stamped });
569
+ record({ op: 'insert', model, row: stamped });
393
570
  if (dryRun)
394
571
  return { dryRun: true };
395
572
  const ks = Object.keys(stamped);
@@ -409,7 +586,7 @@ export function createContext(o) {
409
586
  });
410
587
  }
411
588
  const stamped = encodeRow(model, stamp(model, timestamped(model, row, 'insert')));
412
- writes.push({ op: 'insert', model, row: stamped });
589
+ record({ op: 'insert', model, row: stamped });
413
590
  if (dryRun)
414
591
  return { dryRun: true };
415
592
  const ks = Object.keys(stamped);
@@ -419,23 +596,53 @@ export function createContext(o) {
419
596
  return { changes: result.changes, inserted: result.changes === 1 };
420
597
  },
421
598
  async update(model, where, patch) {
599
+ // compareAndSet and an updating changeset both land here, so this is the
600
+ // only place the refusal has to live.
601
+ refuseAppendOnly(model, 'update');
422
602
  need('write', model);
423
- writes.push({ op: 'update', model, where, patch });
603
+ validateFields(model, where, 'filter');
604
+ validateFields(model, patch, 'update');
605
+ if (!Object.keys(where).length) {
606
+ throw new KetError({
607
+ code: 'E_UPDATE_NEEDS_WHERE',
608
+ module: operation.by,
609
+ message: `updating ${model} requires a non-empty where clause`,
610
+ });
611
+ }
612
+ if (!Object.keys(patch).length)
613
+ return { changes: 0 };
614
+ // Dry-run returns before SQL encoding, but it is still a public write path and
615
+ // must reject values a real call could not store.
616
+ validateDecimalRow(model, where);
617
+ validateDecimalRow(model, patch);
618
+ record({ op: 'update', model, where, patch });
424
619
  if (dryRun)
425
620
  return { dryRun: true };
426
- const where3 = encodeRow(model, scopeOf(model) === 'shared' || operation.crossCompany
427
- ? where
428
- : { ...where, companyId: requireCompany(model) });
621
+ const kind = scopeOf(model);
622
+ const open = kind === 'shared' || operation.crossCompany;
623
+ const where3 = encodeRow(model, open ? where : { ...where, companyId: requireCompany(model) });
429
624
  const patch2 = encodeRow(model, timestamped(model, patch, 'update'));
430
625
  const pk = Object.keys(patch2), wk = Object.keys(where3);
431
626
  fresh();
432
627
  const sets = pk.map((k) => `${adapter.quoteIdent(k)} = ${ph()}`).join(', ');
433
628
  const boundWhere = wk.filter((k) => where3[k] !== null);
434
- const conds = wk
435
- .map((k) => where3[k] === null ? `${adapter.quoteIdent(k)} IS NULL` : `${adapter.quoteIdent(k)} = ${ph()}`)
436
- .join(' AND ');
437
- const sql = `UPDATE ${adapter.quoteIdent(tableNameFor(model))} SET ${sets}` + (wk.length ? ` WHERE ${conds}` : '');
438
- return adapter.run(sql, [...pk.map((k) => patch2[k]), ...boundWhere.map((k) => where3[k])]);
629
+ const conds = wk.map((k) => equalPredicate(model, k, where3[k]));
630
+ const branchParams = !open && kind === 'company+branch' ? scope.branches : null;
631
+ if (branchParams != null) {
632
+ if (branchParams.length) {
633
+ conds.push(`${adapter.quoteIdent('branchId')} IN (${branchParams.map(() => ph()).join(', ')})`);
634
+ }
635
+ else {
636
+ conds.push('1 = 0');
637
+ }
638
+ }
639
+ const sql = `UPDATE ${adapter.quoteIdent(tableNameFor(model))} SET ${sets}` +
640
+ (conds.length ? ` WHERE ${conds.join(' AND ')}` : '');
641
+ return adapter.run(sql, [
642
+ ...pk.map((k) => patch2[k]),
643
+ ...boundWhere.map((k) => where3[k]),
644
+ ...(branchParams ?? []),
645
+ ]);
439
646
  },
440
647
  async compareAndSet(model, where, expected, patch) {
441
648
  const result = await db.update(model, { ...expected, ...where }, patch);
@@ -444,8 +651,11 @@ export function createContext(o) {
444
651
  return { changes: result.changes, matched: result.changes === 1 };
445
652
  },
446
653
  };
654
+ const log = o.log ?? createLogger(nullLog(), { deployment: 'ketjs', process: 'cli', fn: fnKey, dryRun });
447
655
  const ctx = {
448
656
  fnKey,
657
+ correlationId: o.correlationId ?? null,
658
+ log,
449
659
  manifest,
450
660
  scope,
451
661
  actor: o.actor ?? null,
@@ -459,23 +669,31 @@ export function createContext(o) {
459
669
  if (!meta)
460
670
  throw new KetError({ code: 'E_UNKNOWN_JOB', message: `no background job "${name}"` });
461
671
  need('enqueue', name);
462
- if (manifest.disabledModules?.includes(meta.by)) {
463
- throw new KetError({
464
- code: 'E_APP_NOT_INSTALLED',
465
- module: meta.by,
466
- message: `job "${name}" belongs to a module that is not installed`,
467
- });
468
- }
469
672
  validateJobInput(name, manifest, args);
470
673
  const queue = o.queueNotify === undefined
471
674
  ? await queueFor(adapter)
472
675
  : await createQueue(adapter, { notify: o.queueNotify });
676
+ // Enqueueing into another company is the fan-out a scheduled job has to
677
+ // perform: the schedule runs once per tenant with no company, and the work
678
+ // belongs to legal entities. It is gated on the same declaration that let
679
+ // this operation see more than one company in the first place, so the
680
+ // capability is in the manifest rather than in this call.
681
+ const { company: target, ...rest } = options ?? {};
682
+ const named = target?.trim();
683
+ if (named && !operation.crossCompany) {
684
+ throw new KetError({
685
+ code: 'E_ENQUEUE_COMPANY_NOT_ALLOWED',
686
+ module: operation.by,
687
+ message: `"${fnKey}" enqueued "${name}" into company "${named}" without declaring crossCompany`,
688
+ hint: 'declare crossCompany: true if this really acts across legal entities, or drop the company',
689
+ });
690
+ }
473
691
  return queue.enqueue(name, args, {
474
- ...options,
692
+ ...rest,
475
693
  queue: meta.queue,
476
694
  maxAttempts: meta.maxAttempts,
477
695
  actor: o.actor ?? null,
478
- scope,
696
+ scope: named ? { company: named, companies: [named], branch: null, branches: null } : scope,
479
697
  });
480
698
  },
481
699
  },
@@ -488,6 +706,7 @@ export function createContext(o) {
488
706
  writes.push(...transactionWrites);
489
707
  return value;
490
708
  },
709
+ sequence: (name, options = {}) => nextSequenceNumber(adapter, name, { ...options, scope, dryRun }),
491
710
  table: (model) => table(manifest, model),
492
711
  change: (model, params, base = null) => changeset(manifest, model, params, base),
493
712
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ctx.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/ctx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ctx.js","sourceRoot":"","sources":["../../../../../../packages/ketjs/src/server/ctx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ type Closeable = {
2
+ close(): Promise<unknown>;
3
+ };
4
+ /**
5
+ * Stop a combined development process exactly once. HTTP closes first so a
6
+ * watcher can bind the same port while the durable worker finishes draining.
7
+ */
8
+ export declare function createDevelopmentCloser(deployment: Closeable, worker: Closeable): () => Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=development.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"development.d.ts","sourceRoot":"","sources":["../../../../../packages/ketjs/src/server/development.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IAAE,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAA;AAE9C;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CASrG"}