@browserlessapi/inferlo 0.3.0 → 0.5.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 (115) hide show
  1. package/README.md +18 -3
  2. package/dist/adonisjs.d.ts +33 -0
  3. package/dist/adonisjs.js +30 -0
  4. package/dist/adonisjs.js.map +1 -0
  5. package/dist/ai/index.d.ts +51 -2
  6. package/dist/ai/index.js +186 -37
  7. package/dist/ai/index.js.map +1 -1
  8. package/dist/ai/providers.d.ts +56 -3
  9. package/dist/ai/providers.js +102 -11
  10. package/dist/ai/providers.js.map +1 -1
  11. package/dist/ai/public.d.ts +20 -0
  12. package/dist/ai/public.js +17 -0
  13. package/dist/ai/public.js.map +1 -0
  14. package/dist/ai/tool.d.ts +47 -0
  15. package/dist/ai/tool.js +85 -0
  16. package/dist/ai/tool.js.map +1 -0
  17. package/dist/ai-client.d.ts +3 -0
  18. package/dist/ai-client.js +8 -0
  19. package/dist/ai-client.js.map +1 -0
  20. package/dist/app.d.ts +102 -2
  21. package/dist/app.js +509 -111
  22. package/dist/app.js.map +1 -1
  23. package/dist/cli/main.js +76 -4
  24. package/dist/cli/main.js.map +1 -1
  25. package/dist/client-ip.d.ts +7 -0
  26. package/dist/client-ip.js +27 -0
  27. package/dist/client-ip.js.map +1 -0
  28. package/dist/config.d.ts +16 -0
  29. package/dist/config.js +101 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/cron.d.ts +17 -0
  32. package/dist/cron.js +143 -0
  33. package/dist/cron.js.map +1 -0
  34. package/dist/db/migrate.d.ts +6 -3
  35. package/dist/db/migrate.js +126 -10
  36. package/dist/db/migrate.js.map +1 -1
  37. package/dist/db/table.d.ts +83 -7
  38. package/dist/db/table.js +245 -9
  39. package/dist/db/table.js.map +1 -1
  40. package/dist/deprecation.d.ts +23 -0
  41. package/dist/deprecation.js +70 -0
  42. package/dist/deprecation.js.map +1 -0
  43. package/dist/describe.d.ts +45 -5
  44. package/dist/describe.js +19 -2
  45. package/dist/describe.js.map +1 -1
  46. package/dist/elysia.d.ts +49 -0
  47. package/dist/elysia.js +10 -0
  48. package/dist/elysia.js.map +1 -0
  49. package/dist/env.d.ts +2 -0
  50. package/dist/env.js +5 -4
  51. package/dist/env.js.map +1 -1
  52. package/dist/express.d.ts +38 -0
  53. package/dist/express.js +18 -0
  54. package/dist/express.js.map +1 -0
  55. package/dist/fastify.d.ts +44 -0
  56. package/dist/fastify.js +47 -0
  57. package/dist/fastify.js.map +1 -0
  58. package/dist/hono.d.ts +26 -0
  59. package/dist/hono.js +10 -0
  60. package/dist/hono.js.map +1 -0
  61. package/dist/index.d.ts +20 -6
  62. package/dist/index.js +7 -3
  63. package/dist/index.js.map +1 -1
  64. package/dist/jobs.d.ts +181 -0
  65. package/dist/jobs.js +391 -0
  66. package/dist/jobs.js.map +1 -0
  67. package/dist/logging.d.ts +23 -0
  68. package/dist/logging.js +87 -0
  69. package/dist/logging.js.map +1 -0
  70. package/dist/mcp.d.ts +4 -6
  71. package/dist/mcp.js +53 -38
  72. package/dist/mcp.js.map +1 -1
  73. package/dist/metrics.d.ts +48 -0
  74. package/dist/metrics.js +184 -0
  75. package/dist/metrics.js.map +1 -0
  76. package/dist/nestjs.d.ts +43 -0
  77. package/dist/nestjs.js +47 -0
  78. package/dist/nestjs.js.map +1 -0
  79. package/dist/openapi.d.ts +0 -1
  80. package/dist/openapi.js +7 -0
  81. package/dist/openapi.js.map +1 -1
  82. package/dist/rate-limit.d.ts +45 -0
  83. package/dist/rate-limit.js +93 -0
  84. package/dist/rate-limit.js.map +1 -0
  85. package/dist/redact.d.ts +19 -0
  86. package/dist/redact.js +150 -0
  87. package/dist/redact.js.map +1 -0
  88. package/dist/route.d.ts +24 -0
  89. package/dist/route.js.map +1 -1
  90. package/dist/schema.d.ts +10 -2
  91. package/dist/schema.js +13 -1
  92. package/dist/schema.js.map +1 -1
  93. package/dist/secure-headers.d.ts +8 -0
  94. package/dist/secure-headers.js +61 -0
  95. package/dist/secure-headers.js.map +1 -0
  96. package/dist/serve.d.ts +53 -1
  97. package/dist/serve.js +158 -59
  98. package/dist/serve.js.map +1 -1
  99. package/dist/trpc.d.ts +57 -0
  100. package/dist/trpc.js +142 -0
  101. package/dist/trpc.js.map +1 -0
  102. package/dist/tsed.d.ts +32 -0
  103. package/dist/tsed.js +13 -0
  104. package/dist/tsed.js.map +1 -0
  105. package/llms.txt +10 -4
  106. package/package.json +57 -3
  107. package/templates/app/AGENTS.md +14 -8
  108. package/templates/app/README.md +2 -0
  109. package/templates/app/_env.example +2 -0
  110. package/templates/app/package.json.tpl +1 -0
  111. package/templates/app/src/app.ts +15 -8
  112. package/templates/app/src/config.ts +17 -0
  113. package/templates/app/src/routes/notes.ts +1 -1
  114. package/templates/app/src/server.ts +13 -3
  115. package/templates/app/src/routes/health.ts +0 -3
package/dist/cron.js ADDED
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Cron: run a job on a schedule. cron("0 * * * *", hourlyReport) enqueues hourlyReport at the start
3
+ * of every hour (UTC) while a worker runs (app.jobs.start() or inferlo worker).
4
+ *
5
+ * A cron schedules a job, so retries, logging and the job queue work the same way. Each tick gets a
6
+ * fixed job id, so with the database queue every instance can run the schedule and the job is
7
+ * still queued once per tick.
8
+ */
9
+ import { InferloError } from "./errors.js";
10
+ const FIELDS = [
11
+ { min: 0, max: 59 },
12
+ { min: 0, max: 23 },
13
+ { min: 1, max: 31 },
14
+ { min: 1, max: 12, names: ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"] },
15
+ { min: 0, max: 7, names: ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] },
16
+ ];
17
+ const FIELD_NAMES = ["minute", "hour", "day of month", "month", "day of week"];
18
+ const FIX = 'Use five fields "minute hour day-of-month month day-of-week" in UTC, for example "0 * * * *" (every hour), "*/15 * * * *" (every 15 minutes) or "30 3 * * 1-5" (03:30 on weekdays).';
19
+ function invalid(schedule, problem) {
20
+ return new InferloError("IL6013", `Invalid cron schedule ${JSON.stringify(schedule)}: ${problem}.`, { fix: FIX });
21
+ }
22
+ function parseValue(text, field, schedule, name) {
23
+ const lower = text.toLowerCase();
24
+ const named = field.names?.indexOf(lower) ?? -1;
25
+ if (named !== -1)
26
+ return named + field.min;
27
+ if (!/^\d+$/.test(text))
28
+ throw invalid(schedule, `"${text}" is not a valid ${name}`);
29
+ const n = Number(text);
30
+ if (n < field.min || n > field.max)
31
+ throw invalid(schedule, `${name} ${n} is outside ${field.min}-${field.max}`);
32
+ return n;
33
+ }
34
+ /** The allowed values of one field, and whether it was "*" (no restriction). */
35
+ function parseField(text, field, schedule, name) {
36
+ const values = new Set();
37
+ for (const part of text.split(",")) {
38
+ const [range, stepText, extra] = part.split("/");
39
+ if (extra !== undefined || range === undefined || range === "")
40
+ throw invalid(schedule, `"${part}" is not a valid ${name}`);
41
+ let step = 1;
42
+ if (stepText !== undefined) {
43
+ if (!/^\d+$/.test(stepText) || Number(stepText) < 1)
44
+ throw invalid(schedule, `step "${stepText}" in the ${name} must be a whole number of at least 1`);
45
+ step = Number(stepText);
46
+ }
47
+ let from;
48
+ let to;
49
+ if (range === "*") {
50
+ from = field.min;
51
+ to = field.max;
52
+ }
53
+ else if (range.includes("-")) {
54
+ const [a, b, more] = range.split("-");
55
+ if (more !== undefined || !a || !b)
56
+ throw invalid(schedule, `"${range}" is not a valid ${name} range`);
57
+ from = parseValue(a, field, schedule, name);
58
+ to = parseValue(b, field, schedule, name);
59
+ if (from > to)
60
+ throw invalid(schedule, `the ${name} range "${range}" goes backwards`);
61
+ }
62
+ else {
63
+ from = parseValue(range, field, schedule, name);
64
+ to = stepText === undefined ? from : field.max;
65
+ }
66
+ for (let v = from; v <= to; v += step)
67
+ values.add(v);
68
+ }
69
+ return { values, any: text === "*" };
70
+ }
71
+ /** Parse a schedule into a function giving the first tick strictly after a time. Raises IL6013. */
72
+ export function parseCron(schedule) {
73
+ if (typeof schedule !== "string")
74
+ throw invalid(schedule, "it must be a string");
75
+ const parts = schedule.trim().split(/\s+/);
76
+ if (parts.length !== 5)
77
+ throw invalid(schedule, `it has ${parts.length} field(s), not 5`);
78
+ const [minute, hour, dom, month, dow] = parts.map((p, i) => parseField(p, FIELDS[i], schedule, FIELD_NAMES[i]));
79
+ if (dow.values.has(7))
80
+ dow.values.add(0); // 7 is Sunday too
81
+ const dayMatches = (d) => {
82
+ const domOk = dom.values.has(d.getUTCDate());
83
+ const dowOk = dow.values.has(d.getUTCDay());
84
+ // Standard cron: when both day fields are restricted, either one matching is enough.
85
+ if (!dom.any && !dow.any)
86
+ return domOk || dowOk;
87
+ return domOk && dowOk;
88
+ };
89
+ return (after) => {
90
+ const t = new Date(after.getTime());
91
+ t.setUTCSeconds(0, 0);
92
+ t.setUTCMinutes(t.getUTCMinutes() + 1);
93
+ // Enough steps to reach any valid tick (February 29 comes every four years, or eight around 2100).
94
+ for (let guard = 0; guard < 366 * 5 * 24 * 2; guard++) {
95
+ if (!month.values.has(t.getUTCMonth() + 1)) {
96
+ t.setUTCMonth(t.getUTCMonth() + 1, 1);
97
+ t.setUTCHours(0, 0, 0, 0);
98
+ }
99
+ else if (!dayMatches(t)) {
100
+ t.setUTCDate(t.getUTCDate() + 1);
101
+ t.setUTCHours(0, 0, 0, 0);
102
+ }
103
+ else if (!hour.values.has(t.getUTCHours())) {
104
+ t.setUTCHours(t.getUTCHours() + 1, 0, 0, 0);
105
+ }
106
+ else if (!minute.values.has(t.getUTCMinutes())) {
107
+ t.setUTCMinutes(t.getUTCMinutes() + 1, 0, 0);
108
+ }
109
+ else
110
+ return t;
111
+ }
112
+ throw invalid(schedule, "it never matches a date");
113
+ };
114
+ }
115
+ /** Run a job on a schedule: export const hourly = cron("0 * * * *", sendReport). Times are UTC. */
116
+ export function cron(schedule, job) {
117
+ const next = parseCron(schedule);
118
+ if (!job || job.kind !== "inferlo.job") {
119
+ throw new InferloError("IL6013", `cron(${JSON.stringify(schedule)}, ...) needs a job as its second argument.`, {
120
+ fix: 'Pass a job: cron("0 * * * *", job("hourly-report", { input: t.object({}) }).handle(async ({ db }) => { ... })).',
121
+ });
122
+ }
123
+ if (!job.options.input.safeParse({}).ok) {
124
+ throw new InferloError("IL6013", `The job "${job.name}" is run by cron with the input {}, but its input schema does not accept {}.`, {
125
+ fix: "Give jobs run by cron the input t.object({}) (or fields with defaults), and read what they need from the database.",
126
+ });
127
+ }
128
+ next(new Date(0)); // a schedule that never matches (such as "0 0 31 2 *") fails here, not in the worker
129
+ return { kind: "inferlo.cron", schedule: schedule.trim().split(/\s+/).join(" "), job, next };
130
+ }
131
+ export function isCron(value) {
132
+ return typeof value === "object" && value !== null && value.kind === "inferlo.cron";
133
+ }
134
+ /** A fixed UUID for one tick of a cron, so every instance queues the same job id. */
135
+ export async function cronTickId(def, tick) {
136
+ const data = new TextEncoder().encode(`inferlo.cron:${def.job.name}:${def.schedule}:${tick.toISOString()}`);
137
+ const bytes = new Uint8Array(await crypto.subtle.digest("SHA-256", data)).slice(0, 16);
138
+ bytes[6] = (bytes[6] & 0x0f) | 0x80; // version 8 (custom)
139
+ bytes[8] = (bytes[8] & 0x3f) | 0x80; // RFC 4122 variant
140
+ const hex = [...bytes].map((b) => b.toString(16).padStart(2, "0")).join("");
141
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
142
+ }
143
+ //# sourceMappingURL=cron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmB3C,MAAM,MAAM,GAAqB;IAC/B,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;IAChH,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;CAC7E,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAE/E,MAAM,GAAG,GAAG,qLAAqL,CAAC;AAElM,SAAS,OAAO,CAAC,QAAiB,EAAE,OAAe;IACjD,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACpH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAY,EAAE,QAAgB,EAAE,IAAY;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;QAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACjH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CAAC,IAAY,EAAE,KAAY,EAAE,QAAgB,EAAE,IAAY;IAC5E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAC5H,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,SAAS,QAAQ,YAAY,IAAI,uCAAuC,CAAC,CAAC;YACvJ,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAY,CAAC;QACjB,IAAI,EAAU,CAAC;QACf,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;YACjB,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC;QACjB,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,IAAI,KAAK,oBAAoB,IAAI,QAAQ,CAAC,CAAC;YACvG,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,IAAI,GAAG,EAAE;gBAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,IAAI,WAAW,KAAK,kBAAkB,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,EAAE,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC;AACvC,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,SAAS,CAAC,QAAgB;IACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,UAAU,KAAK,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAC1F,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IAClH,IAAI,GAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,GAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;IAC9D,MAAM,UAAU,GAAG,CAAC,CAAO,EAAW,EAAE;QACtC,MAAM,KAAK,GAAG,GAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,GAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,qFAAqF;QACrF,IAAI,CAAC,GAAI,CAAC,GAAG,IAAI,CAAC,GAAI,CAAC,GAAG;YAAE,OAAO,KAAK,IAAI,KAAK,CAAC;QAClD,OAAO,KAAK,IAAI,KAAK,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QACvC,mGAAmG;QACnG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC,KAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,CAAC,IAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC9C,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;gBAClD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC;;gBAAM,OAAO,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,IAAI,CAAmB,QAAgB,EAAE,GAAM;IAC7D,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,IAAK,GAAc,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACnD,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,4CAA4C,EAAE;YAC7G,GAAG,EAAE,iHAAiH;SACvH,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,CAAC,IAAI,8EAA8E,EAAE;YACnI,GAAG,EAAE,oHAAoH;SAC1H,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qFAAqF;IACxG,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAAiB,CAAC,IAAI,KAAK,cAAc,CAAC;AACnG,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,IAAU;IACvD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5G,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvF,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,qBAAqB;IAC3D,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,mBAAmB;IACzD,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7G,CAAC"}
@@ -48,9 +48,12 @@ export interface PlanMigrationOptions {
48
48
  /** Generate DROP statements for removed tables, columns and indexes. These delete data. Default false. */
49
49
  allowDrop?: boolean;
50
50
  /**
51
- * Generate default and required/optional changes of existing columns (SET DEFAULT, DROP DEFAULT,
52
- * SET NOT NULL, DROP NOT NULL). Making a column required fails at apply time (IL4020) if rows
53
- * still have NULL in it, unless the field has a fixed default, which fills them. Default false.
51
+ * Generate type, default, required/optional and enum value changes of existing columns (ALTER
52
+ * COLUMN ... TYPE, SET DEFAULT, DROP DEFAULT, SET NOT NULL, DROP NOT NULL, and replacing the enum's
53
+ * CHECK constraint). Changing the type fails at apply time (IL4022) if an existing value does not
54
+ * convert. Making a column required fails at apply time (IL4020) if rows still have NULL in it,
55
+ * unless the field has a fixed default, which fills them. Removing an enum value fails at apply
56
+ * time (IL4021) if rows still use it. Default false.
54
57
  */
55
58
  allowChange?: boolean;
56
59
  }
@@ -7,9 +7,9 @@
7
7
  * planMigration compares your models with migrations/snapshot.json (the models as of the last
8
8
  * generated migration) and returns the SQL for the difference. Additive changes are generated
9
9
  * directly. Drops of tables, columns and indexes delete data, so they are refused with IL4017
10
- * unless you pass { allowDrop: true } (inferlo db migrate --allow-drop). Default and required
11
- * changes are refused with IL4019 unless you pass { allowChange: true } (--allow-change). Renames
12
- * and other column changes are refused with IL4013, so nothing is lost silently. Snapshots in the
10
+ * unless you pass { allowDrop: true } (inferlo db migrate --allow-drop). Type, default, required and
11
+ * enum value changes are refused with IL4019 unless you pass { allowChange: true } (--allow-change).
12
+ * Renames and reference changes are refused with IL4013, so nothing is lost silently. Snapshots in the
13
13
  * 0.2.0 format (inferlo: 1) are read and upgraded; plans always return the current format (inferlo: 2).
14
14
  */
15
15
  import { InferloError } from "../errors.js";
@@ -135,17 +135,87 @@ function columnChanges(before, now) {
135
135
  out.push(before.primaryKey ? "primary key -> none" : "none -> primary key");
136
136
  return out;
137
137
  }
138
- /** Changes planMigration can generate with allowChange: only the default and required/optional differ. */
138
+ /** Changes planMigration can generate with allowChange: only the type, default, required/optional and enum values differ. */
139
139
  function isAlterable(before, now) {
140
- return columnChanges({ ...before, notNull: now.notNull, default: now.default }, now).length === 0;
140
+ return columnChanges({ ...before, type: now.type, notNull: now.notNull, default: now.default, enum: now.enum }, now).length === 0;
141
141
  }
142
- /** ALTER statements for a default and required/optional change (see isAlterable). */
142
+ const isString = (type) => type === "text" || type.startsWith("varchar(");
143
+ /**
144
+ * The USING clause for ALTER COLUMN ... TYPE, or "" when Postgres converts the values itself.
145
+ * Every conversion is strict: a value that does not fit fails the migration (IL4022) instead of
146
+ * being cut, rounded or set to NULL.
147
+ * - to text or varchar(n): no USING (too long values fail, they are not cut);
148
+ * - integer to double precision: no USING;
149
+ * - from jsonb: the JSON value's text ("hello", not "\"hello\""), then converted;
150
+ * - to jsonb: to_jsonb(value), so text becomes a JSON string;
151
+ * - boolean to integer or double precision: true is 1, false is 0;
152
+ * - anything else goes through the value's text, so 2.5 does not become the integer 3.
153
+ */
154
+ function usingSql(column, from, to) {
155
+ const c = q(column);
156
+ if (to === "jsonb")
157
+ return ` USING to_jsonb(${c})`;
158
+ if (from === "jsonb")
159
+ return isString(to) ? ` USING ${c} #>> '{}'` : ` USING (${c} #>> '{}')::${to}`;
160
+ if (isString(to))
161
+ return "";
162
+ if (from === "integer" && to === "double precision")
163
+ return "";
164
+ if (from === "boolean" && to === "integer")
165
+ return ` USING ${c}::integer`;
166
+ if (from === "boolean" && to === "double precision")
167
+ return ` USING ${c}::integer::double precision`;
168
+ return ` USING ${c}::text::${to}`;
169
+ }
170
+ /**
171
+ * The name Postgres gives the CHECK constraint of an enum column (written inline in the column
172
+ * definition): "<table>_<column>_check", with table and column shortened so it fits in 63 bytes,
173
+ * the same way Postgres shortens it (makeObjectName: trim the longer part one byte at a time).
174
+ */
175
+ function checkConstraintName(table, column) {
176
+ const encoder = new TextEncoder();
177
+ const a = encoder.encode(table);
178
+ const b = encoder.encode(column);
179
+ let n1 = a.length;
180
+ let n2 = b.length;
181
+ const available = 63 - "_".length - "_check".length;
182
+ while (n1 + n2 > available) {
183
+ if (n1 > n2)
184
+ n1--;
185
+ else
186
+ n2--;
187
+ }
188
+ // Never cut a multi-byte character in half (pg_mbcliplen).
189
+ const clip = (bytes, n) => {
190
+ while (n > 0 && n < bytes.length && (bytes[n] & 0xc0) === 0x80)
191
+ n--;
192
+ return new TextDecoder().decode(bytes.subarray(0, n));
193
+ };
194
+ return `${clip(a, n1)}_${clip(b, n2)}_check`;
195
+ }
196
+ /** ALTER statements for a type, default, required/optional and enum value change (see isAlterable). */
143
197
  function alterColumnSql(table, column, before, now) {
144
198
  const alter = `ALTER TABLE ${q(table)} ALTER COLUMN ${q(column)}`;
145
199
  const out = [];
200
+ const enumChanged = JSON.stringify(before.enum) !== JSON.stringify(now.enum);
201
+ const typeChanged = before.type !== now.type;
202
+ const check = q(checkConstraintName(table, column));
203
+ // The old constraint goes first, so filling NULL rows with a new enum default is allowed.
204
+ // No IF EXISTS: if the constraint has another name, the migration fails instead of keeping it.
205
+ if (enumChanged && before.enum)
206
+ out.push(`ALTER TABLE ${q(table)} DROP CONSTRAINT ${check}`);
146
207
  if (before.notNull && !now.notNull)
147
208
  out.push(`${alter} DROP NOT NULL`);
148
- if (before.default !== now.default)
209
+ if (typeChanged) {
210
+ // Postgres does not convert a default together with the values, so the old default goes
211
+ // first and the new one is set after the type change.
212
+ if (before.default !== undefined)
213
+ out.push(`${alter} DROP DEFAULT`);
214
+ out.push(`${alter} TYPE ${now.type}${usingSql(column, before.type, now.type)}`);
215
+ if (now.default !== undefined)
216
+ out.push(`${alter} SET DEFAULT ${now.default}`);
217
+ }
218
+ else if (before.default !== now.default)
149
219
  out.push(now.default === undefined ? `${alter} DROP DEFAULT` : `${alter} SET DEFAULT ${now.default}`);
150
220
  if (!before.notNull && now.notNull) {
151
221
  // Same as adding a required column with a default: existing rows get the default.
@@ -153,6 +223,10 @@ function alterColumnSql(table, column, before, now) {
153
223
  out.push(`UPDATE ${q(table)} SET ${q(column)} = ${now.default} WHERE ${q(column)} IS NULL`);
154
224
  out.push(`${alter} SET NOT NULL`);
155
225
  }
226
+ if (enumChanged && now.enum) {
227
+ const values = now.enum.map((v) => `'${v.replace(/'/g, "''")}'`).join(", ");
228
+ out.push(`ALTER TABLE ${q(table)} ADD CONSTRAINT ${check} CHECK (${q(column)} IN (${values}))`);
229
+ }
156
230
  return out;
157
231
  }
158
232
  /** SQL to bring the database from `previous` (or an empty database) to `models`. */
@@ -230,7 +304,7 @@ export function planMigration(models, previous, options = {}) {
230
304
  return column ? `${change} (${column.changes.join(", ")})` : change;
231
305
  });
232
306
  throw new InferloError("IL4013", `inferlo db migrate cannot generate these changes yet: ${explained.join(", ")}.`, {
233
- fix: "New tables, columns and indexes, drops with --allow-drop, and default and required changes with --allow-change are generated. Renames, type, enum value, reference and index changes are not yet: undo these model changes, or write the SQL yourself in a new migration file.",
307
+ fix: "New tables, columns and indexes, drops with --allow-drop, and type, default, required and enum value changes with --allow-change are generated. Renames, reference and index changes are not yet: undo these model changes, or write the SQL yourself in a new migration file.",
234
308
  details: { changes: refused, columns: changedColumns },
235
309
  expose: true,
236
310
  });
@@ -245,7 +319,7 @@ export function planMigration(models, previous, options = {}) {
245
319
  const changes = alterable.map((c) => `change column ${c.table}.${c.column} (${c.changes.join(", ")})`);
246
320
  if (changes.length && !options.allowChange) {
247
321
  throw new InferloError("IL4019", `Your model changes change existing columns: ${changes.join(", ")}.`, {
248
- fix: "If you mean to change these columns, run inferlo db migrate --allow-change (or planMigration(models, snapshot, { allowChange: true })) and review the file. Making a column required fails if rows still have NULL in it, unless the field has a fixed .default(value). Otherwise undo the model changes.",
322
+ fix: "If you mean to change these columns, run inferlo db migrate --allow-change (or planMigration(models, snapshot, { allowChange: true })) and review the file. Changing the type fails if an existing value does not convert. Making a column required fails if rows still have NULL in it, unless the field has a fixed .default(value). Removing an enum value fails if rows still use it. Otherwise undo the model changes.",
249
323
  details: { changes, columns: alterable },
250
324
  expose: true,
251
325
  });
@@ -286,6 +360,48 @@ function nullRowsError(error, migration) {
286
360
  expose: true,
287
361
  });
288
362
  }
363
+ /**
364
+ * IL4021 for a Postgres check violation (23514), for example adding an enum's CHECK constraint while
365
+ * rows still use a removed value. Undefined for any other error.
366
+ */
367
+ function checkViolationError(error, migration) {
368
+ const e = error;
369
+ if (!e || e.code !== "23514")
370
+ return undefined;
371
+ const match = /constraint "((?:[^"]|"")+)" of relation "((?:[^"]|"")+)"/.exec(e.message ?? "");
372
+ const table = e.table ?? match?.[2];
373
+ const constraint = e.constraint ?? match?.[1];
374
+ const where = table ? `rows in ${table}` : "rows";
375
+ return new InferloError("IL4021", `Migration ${migration} failed: ${where} have values that ${constraint ? `the check constraint ${constraint}` : "a check constraint"} does not allow, for example an enum value that was removed.`, {
376
+ fix: `Change those rows to an allowed value first: if ${migration} has not been applied anywhere, add UPDATE ${table ? q(table) : "<table>"} SET <column> = '<new value>' WHERE <column> = '<removed value>'; before the ADD CONSTRAINT statement. Or keep the removed enum value in the model.`,
377
+ details: { migration, table, constraint },
378
+ cause: error,
379
+ expose: true,
380
+ });
381
+ }
382
+ /** SQLSTATEs of a value that does not convert: invalid text, too long, out of range, bad date. */
383
+ const CONVERSION_ERRORS = new Set(["22P02", "22001", "22003", "22007", "22008", "22018"]);
384
+ const TYPE_CHANGE = new RegExp(`ALTER TABLE (${IDENT}) ALTER COLUMN (${IDENT}) TYPE `, "g");
385
+ const unquoteIdent = (s) => s.slice(1, -1).replace(/""/g, '"');
386
+ /**
387
+ * IL4022 for a value that does not convert, in a migration that changes a column type (ALTER COLUMN
388
+ * ... TYPE). Undefined for any other error, or when the migration changes no column type.
389
+ */
390
+ function conversionError(error, migration, sql) {
391
+ const e = error;
392
+ if (!e || !CONVERSION_ERRORS.has(e.code ?? ""))
393
+ return undefined;
394
+ const columns = [...sql.matchAll(TYPE_CHANGE)].map((m) => `${unquoteIdent(m[1])}.${unquoteIdent(m[2])}`);
395
+ if (!columns.length)
396
+ return undefined;
397
+ const reason = e.message ? ` (${e.message})` : "";
398
+ return new InferloError("IL4022", `Migration ${migration} failed: an existing value does not convert to the new type of ${columns.length > 1 ? `one of ${columns.join(", ")}` : columns[0]}${reason}.`, {
399
+ fix: `Change or clear the values that do not convert first: if ${migration} has not been applied anywhere, add an UPDATE before the ALTER COLUMN ... TYPE statement (for example UPDATE "<table>" SET "<column>" = NULL WHERE ...), or write your own USING expression. Or keep the old field type in the model.`,
400
+ details: { migration, columns, reason: e.message },
401
+ cause: error,
402
+ expose: true,
403
+ });
404
+ }
289
405
  /**
290
406
  * Run the migrations that are not yet recorded in the "inferlo_migrations" table, in name order,
291
407
  * each in its own transaction. Returns the names it applied. Safe to run from several processes
@@ -342,7 +458,7 @@ export async function applyMigrations(db, migrations, options = {}) {
342
458
  await tx.$sql(m.sql);
343
459
  }
344
460
  catch (error) {
345
- throw nullRowsError(error, m.name) ?? error;
461
+ throw nullRowsError(error, m.name) ?? checkViolationError(error, m.name) ?? conversionError(error, m.name, m.sql) ?? error;
346
462
  }
347
463
  await tx.$sql(`INSERT INTO "inferlo_migrations" ("name", "checksum") VALUES ($1, $2)`, [m.name, sums.get(m.name)]);
348
464
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
@@ -27,20 +27,89 @@ export interface FindManyOptions<R> {
27
27
  limit?: number;
28
28
  offset?: number;
29
29
  }
30
- export declare class Table<M extends AnyModel> {
30
+ export interface PaginateOptions<R> {
31
+ where?: Where<R>;
32
+ /**
33
+ * One field and direction: { createdAt: "desc" } (default { createdAt: "asc" }). Rows with the same
34
+ * value are ordered by id. The field must be required (not optional or nullable) and not json, array or object.
35
+ */
36
+ orderBy?: OrderBy<R>;
37
+ /** nextCursor from the previous page. Leave out (or null) for the first page. */
38
+ cursor?: string | null;
39
+ /** Rows per page. Default 100, maximum 1000. */
40
+ limit?: number;
41
+ }
42
+ /** One page: the rows, and the cursor for the next page (null on the last page). */
43
+ export interface Page<T> {
44
+ items: T[];
45
+ nextCursor: string | null;
46
+ }
47
+ type RefTable<S> = S extends {
48
+ readonly _ref: infer T extends string;
49
+ } ? T : never;
50
+ /** Relations of a model: one per t.ref field named <name>Id, mapped to the referenced table. ownerId: t.ref("users") gives owner -> "users". */
51
+ export type Relations<M extends AnyModel> = {
52
+ [K in keyof M["fields"] & string as K extends `${infer R}Id` ? ([RefTable<M["fields"][K]>] extends [never] ? never : R) : never]: RefTable<M["fields"][K]>;
53
+ };
54
+ type IsUnion<U, A = U> = U extends unknown ? ([A] extends [U] ? false : true) : never;
55
+ /** Relation names R of the fields <R>Id in X that reference table T. */
56
+ type RefFieldsTo<X extends AnyModel, T extends string> = {
57
+ [K in keyof X["fields"] & string]: K extends `${infer R}Id` ? [RefTable<X["fields"][K]>] extends [never] ? never : string extends RefTable<X["fields"][K]> ? never : RefTable<X["fields"][K]> extends T ? R : never : never;
58
+ }[keyof X["fields"] & string];
59
+ type ReverseKey<X extends AnyModel, T extends string, F extends string = RefFieldsTo<X, T>> = [F] extends [never] ? never : true extends IsUnion<F> ? `${X["name"]}By${Capitalize<F>}` : X["name"];
60
+ /**
61
+ * Reverse (has-many) relations of a model: one per model in Models with a t.ref field named <name>Id
62
+ * to this model, named after that model's table (users gets tickets). When a model has several such
63
+ * fields, each is named <table>By<Name> (ticketsByOwner, ticketsByAssignee).
64
+ */
65
+ export type ReverseRelations<M extends AnyModel, Models extends readonly AnyModel[]> = {
66
+ [X in Models[number] as Exclude<ReverseKey<X, M["name"]>, keyof M["fields"] | keyof Relations<M> | "id" | "createdAt" | "updatedAt">]: X;
67
+ };
68
+ /** Which relations to load: { owner: true } for a t.ref field, { tickets: true } for the rows that reference this one. */
69
+ export type Include<M extends AnyModel, Models extends readonly AnyModel[] = readonly []> = {
70
+ [R in keyof Relations<M> | keyof ReverseRelations<M, Models>]?: boolean;
71
+ };
72
+ type ModelNamed<Models extends readonly AnyModel[], N> = Extract<Models[number], {
73
+ name: N;
74
+ }> extends infer T extends AnyModel ? ([T] extends [never] ? AnyModel : T) : AnyModel;
75
+ type RefValue<M extends AnyModel, R extends string> = `${R}Id` extends keyof Row<M> ? Row<M>[`${R}Id`] : never;
76
+ /** A row with the included relations: Row<typeof Ticket> & { owner: Row<typeof User> }. Optional refs may be null. */
77
+ export type WithInclude<M extends AnyModel, Models extends readonly AnyModel[], I> = Row<M> & {
78
+ [R in keyof I & keyof Relations<M> & string as I[R] extends true ? R : never]: Row<ModelNamed<Models, Relations<M>[R]>> | (null extends RefValue<M, R> ? null : undefined extends RefValue<M, R> ? null : never);
79
+ } & {
80
+ [R in keyof I & keyof ReverseRows<M, Models> & string as I[R] extends true ? R : never]: ReverseRows<M, Models>[R];
81
+ };
82
+ type ReverseRows<M extends AnyModel, Models extends readonly AnyModel[]> = {
83
+ [K in keyof ReverseRelations<M, Models>]: Row<ReverseModel<M, Models, K>>[];
84
+ };
85
+ type ReverseModel<M extends AnyModel, Models extends readonly AnyModel[], K> = Models[number] extends infer X ? X extends AnyModel ? K extends ReverseKey<X, M["name"]> ? X : never : never : never;
86
+ /** Options for reading one row. */
87
+ export interface FindOptions<I> {
88
+ /** Load related rows: { owner: true } adds row.owner for ownerId, { tickets: true } adds row.tickets (rows that reference this one). One extra query per relation. */
89
+ include?: I;
90
+ }
91
+ export declare class Table<M extends AnyModel, Models extends readonly AnyModel[] = readonly AnyModel[]> {
31
92
  #private;
32
93
  readonly model: M;
33
- constructor(model: M, adapter: () => Adapter);
94
+ constructor(model: M, adapter: () => Adapter, models?: readonly AnyModel[]);
34
95
  /** Validate and insert one row. Returns the stored row. */
35
96
  insert(data: CreateInput<M>): Promise<Row<M>>;
36
97
  insertMany(items: CreateInput<M>[]): Promise<Row<M>[]>;
37
98
  /** Row by id, or null. */
38
- find(id: string): Promise<Row<M> | null>;
99
+ find<const I extends Include<M, Models> = {}>(id: string, options?: FindOptions<I>): Promise<WithInclude<M, Models, I> | null>;
39
100
  /** Row by id. Throws IL4001 (HTTP 404) when it does not exist. */
40
- get(id: string): Promise<Row<M>>;
101
+ get<const I extends Include<M, Models> = {}>(id: string, options?: FindOptions<I>): Promise<WithInclude<M, Models, I>>;
41
102
  /** First row matching where, or null. */
42
- findOne(where: Where<Row<M>>): Promise<Row<M> | null>;
43
- findMany(options?: FindManyOptions<Row<M>>): Promise<Row<M>[]>;
103
+ findOne<const I extends Include<M, Models> = {}>(where: Where<Row<M>>, options?: FindOptions<I>): Promise<WithInclude<M, Models, I> | null>;
104
+ /** Rows matching where. include: { owner: true } loads related rows with one extra query per relation. */
105
+ findMany<const I extends Include<M, Models> = {}>(options?: FindManyOptions<Row<M>> & FindOptions<I>): Promise<WithInclude<M, Models, I>[]>;
106
+ /**
107
+ * One page of rows in a stable order, for "load more" and API pagination:
108
+ * const { items, nextCursor } = await db.tickets.paginate({ where, orderBy: { createdAt: "desc" }, cursor, limit: 20 }).
109
+ * Pass nextCursor back as cursor for the next page; it is null on the last page. Pages never skip or repeat
110
+ * rows when rows are added or removed elsewhere in the list (keyset pagination, no offset).
111
+ */
112
+ paginate<const I extends Include<M, Models> = {}>(options?: PaginateOptions<Row<M>> & FindOptions<I>): Promise<Page<WithInclude<M, Models, I>>>;
44
113
  count(where?: Where<Row<M>>): Promise<number>;
45
114
  /** Validate and update one row by id. Throws IL4001 (HTTP 404) when it does not exist. */
46
115
  update(id: string, patch: UpdateInput<M>): Promise<Row<M>>;
@@ -53,7 +122,7 @@ export declare class Table<M extends AnyModel> {
53
122
  }
54
123
  /** db.<table> for every registered model, plus helpers. */
55
124
  export type Db<Models extends readonly AnyModel[]> = {
56
- [M in Models[number] as M["name"]]: Table<M>;
125
+ [M in Models[number] as M["name"]]: Table<M, Models>;
57
126
  } & DbHelpers;
58
127
  export interface DbHelpers {
59
128
  /** The underlying adapter. */
@@ -69,4 +138,11 @@ export interface DbHelpers {
69
138
  $close(): Promise<void>;
70
139
  }
71
140
  export declare function createDb<const Models extends readonly AnyModel[]>(models: Models, adapter: Adapter): Db<Models>;
141
+ /** A db client over an adapter that is already connected. Internal: createApp uses it for each request's ctx.db. */
142
+ export declare function bindDb<const Models extends readonly AnyModel[]>(models: Models, adapter: Adapter): Db<Models>;
143
+ /**
144
+ * An adapter that refuses new calls once signal is aborted, throwing signal.reason. A call already running
145
+ * finishes. Transactions get the same guard, so an aborted transaction rolls back.
146
+ */
147
+ export declare function guardAdapter(adapter: Adapter, signal: AbortSignal): Adapter;
72
148
  export {};