@heychunky/core 0.28.2 → 0.29.1

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.
@@ -71,6 +71,11 @@ export declare function ensureLedger(db: Ledger): Promise<void>;
71
71
  * but it must not be answered by making the table, because this is the call an
72
72
  * unconfirmed plan makes and a plan that wrote to the database would not be a
73
73
  * plan. Any other error is real and is left alone.
74
+ *
75
+ * "No ledger table" is decided by Postgres's own code for an undefined table,
76
+ * `42P01`, never by message text — "does not exist" also appears in errors
77
+ * about columns, schemas and roles, and swallowing one of those would report
78
+ * a broken database as a fresh one.
74
79
  */
75
80
  export declare function applied(db: Ledger): Promise<Set<string>>;
76
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/admin/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,kEAAkE;AAClE,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,oEAAoE;AACpE,eAAO,MAAM,MAAM,0BAA0B,CAAC;AAE9C,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8DAA8D;AAC9D,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED,oEAAoE;AACpE,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAS9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,CAExE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQlF"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/admin/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,kEAAkE;AAClE,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,oEAAoE;AACpE,eAAO,MAAM,MAAM,0BAA0B,CAAC;AAE9C,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8DAA8D;AAC9D,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIlD;AAED,oEAAoE;AACpE,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAY9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,CAExE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,GAC7B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQlF"}
@@ -43,6 +43,11 @@ export async function ensureLedger(db) {
43
43
  * but it must not be answered by making the table, because this is the call an
44
44
  * unconfirmed plan makes and a plan that wrote to the database would not be a
45
45
  * plan. Any other error is real and is left alone.
46
+ *
47
+ * "No ledger table" is decided by Postgres's own code for an undefined table,
48
+ * `42P01`, never by message text — "does not exist" also appears in errors
49
+ * about columns, schemas and roles, and swallowing one of those would report
50
+ * a broken database as a fresh one.
46
51
  */
47
52
  export async function applied(db) {
48
53
  try {
@@ -50,8 +55,11 @@ export async function applied(db) {
50
55
  return new Set(rows.map((r) => String(r.id)));
51
56
  }
52
57
  catch (err) {
53
- const message = err instanceof Error ? err.message : String(err);
54
- if (/does not exist|undefined table|42P01/i.test(message))
58
+ // The caught value is whatever the client threw, so look before reading.
59
+ const code = typeof err === "object" && err !== null && "code" in err
60
+ ? err.code
61
+ : undefined;
62
+ if (code === "42P01")
55
63
  return new Set();
56
64
  throw err;
57
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/admin/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/admin/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,28 @@
1
+ /**
2
+ * Moving a change one rung up the ladder.
3
+ *
4
+ * Everything left of `main` happens without anybody: a branch, a pull request,
5
+ * a review, a merge. Nothing right of it moves unless a person asks — and this
6
+ * is what they are asking for. It is a command somebody gives, never a question
7
+ * put to them, which is the distinction the whole model rests on. A prompt
8
+ * offering to promote would manufacture the appearance of oversight; a person
9
+ * saying "go to staging" wanted staging.
10
+ *
11
+ * So there is no scheduler here and no trigger, and nothing in this file should
12
+ * ever acquire one. Two callers say it out loud — the CLI today, the superagent
13
+ * later — and neither may say it on its own behalf.
14
+ *
15
+ * The order is not negotiable:
16
+ *
17
+ * 1. work out what would ship, and say so
18
+ * 2. migrate the environment being promoted to
19
+ * 3. merge, which is what makes the deployment happen
20
+ *
21
+ * Migrations first because the merge *is* the deploy — Vercel builds the branch
22
+ * the moment it moves. A column the arriving code needs and cannot find is an
23
+ * outage; a column added early is invisible to the deployment still running.
24
+ */
25
+ import { github } from "./services/github.ts";
1
26
  import { type RunContext } from "./run.ts";
2
27
  import { type Environment } from "../config/environments.ts";
3
28
  import type { StepResult } from "./provision.ts";
@@ -38,6 +63,26 @@ export interface PromoteWatcher {
38
63
  start?(step: string): void;
39
64
  done?(result: StepResult): void;
40
65
  }
66
+ /**
67
+ * Where an app keeps its migrations, or null when it keeps them nowhere.
68
+ *
69
+ * `migrations/` at the root is the factory's own convention and was once the
70
+ * only place looked at. An app is free to keep them where its tooling puts
71
+ * them — Delters keeps them at `.chunky/db/migrations`, which is what its
72
+ * `drizzle.config.ts` says — so the app is asked first, through
73
+ * `paths.migrations` in its manifest.
74
+ *
75
+ * Failing that, the conventional places: the root, and `db/migrations` beside
76
+ * whichever chunks root the app declares. That covers both layouts in the
77
+ * estate without anybody editing a manifest.
78
+ *
79
+ * Null means every candidate answered "not there". Anything else throws,
80
+ * because a repository that would not answer is not an app with no migrations.
81
+ *
82
+ * Exported for the test that keeps it honest: the failure it exists to prevent
83
+ * is silent, so nothing else would catch it.
84
+ */
85
+ export declare function migrationsDir(gh: ReturnType<typeof github>, repo: string, ref: string): Promise<string | null>;
41
86
  /**
42
87
  * Promote, or — without `confirmed` — say what promoting would do.
43
88
  *
@@ -1 +1 @@
1
- {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/admin/promote.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAcjD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,EAAE,EAAE,WAAW,CAAC;IAChB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,mDAAmD;IACnD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CACjC;AAyBD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,UAAU,EACf,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,SAAS,CAAC,CA6FpB"}
1
+ {"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../src/admin/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAWzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAcjD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,EAAE,EAAE,WAAW,CAAC;IAChB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,WAAW,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7C,mDAAmD;IACnD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CACjC;AA4BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GACvD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB;AA4BD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,UAAU,EACf,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,SAAS,CAAC,CAkGpB"}
@@ -28,6 +28,13 @@ import { KEY_FOR } from "./run.js";
28
28
  import { folderFor } from "./syncenv.js";
29
29
  import { GIT_BRANCH } from "../config/environments.js";
30
30
  import { applied, apply, isDestructive, pending, MIGRATIONS_DIR } from "./migrations.js";
31
+ import { MANIFEST } from "./entrypoints.js";
32
+ import { NotFoundError } from "../http/errors.js";
33
+ /**
34
+ * The manifests in the estate, newest name first. Apps made before the rename
35
+ * carry `chunky.json`; Delters is one.
36
+ */
37
+ const MANIFESTS = [MANIFEST, "chunky.json"];
31
38
  /**
32
39
  * Where a promotion comes from.
33
40
  *
@@ -45,17 +52,94 @@ const branchFor = (env) => {
45
52
  throw new Error(`${env} is not an environment anything is built from`);
46
53
  return b;
47
54
  };
55
+ /**
56
+ * What the app's manifest says about where things live, or null when it has
57
+ * none. Apps made before the rename carry `chunky.json`; Delters is one.
58
+ */
59
+ async function manifestPaths(gh, repo, ref) {
60
+ for (const name of [MANIFEST, "chunky.json"]) {
61
+ let raw;
62
+ try {
63
+ raw = await gh.readFile(repo, name, ref);
64
+ }
65
+ catch (error) {
66
+ if (error instanceof NotFoundError)
67
+ continue;
68
+ throw error;
69
+ }
70
+ return JSON.parse(raw).paths ?? {};
71
+ }
72
+ return null;
73
+ }
74
+ /**
75
+ * Where an app keeps its migrations, or null when it keeps them nowhere.
76
+ *
77
+ * `migrations/` at the root is the factory's own convention and was once the
78
+ * only place looked at. An app is free to keep them where its tooling puts
79
+ * them — Delters keeps them at `.chunky/db/migrations`, which is what its
80
+ * `drizzle.config.ts` says — so the app is asked first, through
81
+ * `paths.migrations` in its manifest.
82
+ *
83
+ * Failing that, the conventional places: the root, and `db/migrations` beside
84
+ * whichever chunks root the app declares. That covers both layouts in the
85
+ * estate without anybody editing a manifest.
86
+ *
87
+ * Null means every candidate answered "not there". Anything else throws,
88
+ * because a repository that would not answer is not an app with no migrations.
89
+ *
90
+ * Exported for the test that keeps it honest: the failure it exists to prevent
91
+ * is silent, so nothing else would catch it.
92
+ */
93
+ export async function migrationsDir(gh, repo, ref) {
94
+ const paths = await manifestPaths(gh, repo, ref);
95
+ const declared = paths?.["migrations"];
96
+ if (typeof declared === "string" && declared)
97
+ return declared;
98
+ const chunks = paths?.["chunks"];
99
+ const roots = typeof chunks === "string" && chunks
100
+ ? [chunks]
101
+ : [".heychunky/chunks", ".chunky/chunks"];
102
+ const candidates = [
103
+ MIGRATIONS_DIR,
104
+ ...roots.map((r) => `${r.replace(/\/[^/]+$/, "")}/db/migrations`),
105
+ ];
106
+ for (const dir of candidates) {
107
+ try {
108
+ await gh.listDir(repo, dir, ref);
109
+ return dir;
110
+ }
111
+ catch (error) {
112
+ if (error instanceof NotFoundError)
113
+ continue;
114
+ // Anything that is not "it is not there" is not an answer. Letting it
115
+ // read as "no migrations" is how a promotion ships to a database that
116
+ // owes eleven statements.
117
+ throw error;
118
+ }
119
+ }
120
+ return null;
121
+ }
48
122
  /**
49
123
  * Read the statements sitting on a branch.
50
124
  *
51
125
  * From the branch being promoted *from*, because that is what the target is
52
- * about to receive. An app that has never needed a migration has no directory
53
- * and GitHub answers 404, which is "none" rather than a failure.
126
+ * about to receive.
127
+ *
128
+ * An app with nowhere to keep migrations owes none. An app whose repository
129
+ * would not answer owes an unknown number, and the difference is the whole
130
+ * point: `building/SKILL.md` says a false "missing" is the dangerous
131
+ * direction, and here it is worse than permission to create — promote's own
132
+ * order is migrations first *because the merge is the deploy*, so a false
133
+ * "nothing to run" skips the step and merges regardless.
54
134
  */
55
135
  async function migrationsOn(gh, repo, ref) {
56
- const paths = await gh.listFiles(repo, MIGRATIONS_DIR, ref).catch(() => []);
57
- const files = paths.filter((p) => p.endsWith(".sql")).sort((a, b) => a.localeCompare(b));
58
- return await Promise.all(files.map(async (id) => ({ id, sql: (await gh.readFile(repo, id, ref)).trim() })));
136
+ const dir = await migrationsDir(gh, repo, ref);
137
+ if (dir === null)
138
+ return { files: [], dir: null };
139
+ const paths = await gh.listFiles(repo, dir, ref);
140
+ const names = paths.filter((p) => p.endsWith(".sql")).sort((a, b) => a.localeCompare(b));
141
+ const files = await Promise.all(names.map(async (id) => ({ id, sql: (await gh.readFile(repo, id, ref)).trim() })));
142
+ return { files, dir };
59
143
  }
60
144
  /**
61
145
  * Promote, or — without `confirmed` — say what promoting would do.
@@ -96,15 +180,20 @@ export async function promote(spec, ctx, watch) {
96
180
  // app with migration files and no database is a different case, and still
97
181
  // a failure: those files have to run somewhere.
98
182
  watch?.start?.("migrations");
99
- const files = await migrationsOn(gh, spec.repo, source);
183
+ const { files, dir } = await migrationsOn(gh, spec.repo, source);
100
184
  const target_db = files.length
101
185
  ? db(await ctx.secrets.get(`${folderFor(spec.app, spec.to)}DATABASE_URL`))
102
186
  : undefined;
103
187
  const owed = target_db ? pending(files, await applied(target_db)) : [];
104
188
  const destructive = owed.filter((m) => isDestructive(m.sql)).map((m) => m.id);
189
+ // The directory is named either way. "Nothing to run" is a claim about a
190
+ // place, and a promotion that looked in the wrong one should say where it
191
+ // looked rather than let a reader assume it looked everywhere.
105
192
  settle("migrations", "exists", owed.length
106
- ? `${owed.length} to run${destructive.length ? ` · ${destructive.length} destructive` : ""}`
107
- : "nothing to run");
193
+ ? `${owed.length} to run in ${dir}${destructive.length ? ` · ${destructive.length} destructive` : ""}`
194
+ : dir === null
195
+ ? "nowhere to keep them, so none"
196
+ : `nothing to run · ${files.length} in ${dir}, all applied`);
108
197
  const plan = () => ({
109
198
  app: spec.app, to: spec.to, from, planned: true, shipping,
110
199
  migrations: owed.map((m) => m.id), destructive, steps,
@@ -1 +1 @@
1
- {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/admin/promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/admin/promote.ts"],"names":[],"mappings":"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"}
@@ -9,23 +9,29 @@ export declare abstract class HttpError extends Error {
9
9
  readonly status: number;
10
10
  readonly url: string;
11
11
  readonly body: string;
12
- constructor(name: string, message: string, status: number, url: string, body: string);
12
+ /**
13
+ * The provider's own error code, when it gave one — Postgres's SQLSTATE
14
+ * through Neon, for instance. A caller deciding "missing table" from the
15
+ * message text would also match a missing column; the code is exact.
16
+ */
17
+ readonly code: string | undefined;
18
+ constructor(name: string, message: string, status: number, url: string, body: string, code?: string);
13
19
  /** Whether trying the same request again could plausibly succeed. */
14
20
  abstract get retryable(): boolean;
15
21
  }
16
22
  /** The credential is wrong, expired, or lacks the permission. Never retry. */
17
23
  export declare class AuthError extends HttpError {
18
- constructor(status: number, url: string, body: string);
24
+ constructor(status: number, url: string, body: string, code?: string);
19
25
  get retryable(): boolean;
20
26
  }
21
27
  /** It does not exist. Often a normal state, not a failure. */
22
28
  export declare class NotFoundError extends HttpError {
23
- constructor(url: string, body: string);
29
+ constructor(url: string, body: string, code?: string);
24
30
  get retryable(): boolean;
25
31
  }
26
32
  /** The request was malformed. Retrying sends the same bad request. */
27
33
  export declare class ValidationError extends HttpError {
28
- constructor(status: number, url: string, body: string);
34
+ constructor(status: number, url: string, body: string, code?: string);
29
35
  get retryable(): boolean;
30
36
  }
31
37
  /**
@@ -36,21 +42,21 @@ export declare class ValidationError extends HttpError {
36
42
  * a client error and is not one — the request is correct and merely early.
37
43
  */
38
44
  export declare class BusyError extends HttpError {
39
- constructor(status: number, url: string, body: string);
45
+ constructor(status: number, url: string, body: string, code?: string);
40
46
  get retryable(): boolean;
41
47
  }
42
48
  /** Slow down. Carries the provider's own advice on how long to wait. */
43
49
  export declare class RateLimitError extends HttpError {
44
50
  /** Seconds to wait, when the provider said. */
45
51
  readonly retryAfter: number | undefined;
46
- constructor(url: string, body: string, retryAfter?: number);
52
+ constructor(url: string, body: string, retryAfter?: number, code?: string);
47
53
  get retryable(): boolean;
48
54
  }
49
55
  /** The provider broke. Worth trying again. */
50
56
  export declare class ServiceError extends HttpError {
51
- constructor(status: number, url: string, body: string);
57
+ constructor(status: number, url: string, body: string, code?: string);
52
58
  get retryable(): boolean;
53
59
  }
54
60
  /** Map a response onto the right error. */
55
- export declare function errorFor(status: number, url: string, body: string, retryAfter?: number): HttpError;
61
+ export declare function errorFor(status: number, url: string, body: string, retryAfter?: number, code?: string): HttpError;
56
62
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAQpF,qEAAqE;IACrE,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC;CACnC;AAED,8EAA8E;AAC9E,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAGrD,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED,8DAA8D;AAC9D,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAGrC,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED,sEAAsE;AACtE,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAGrD,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAGrD,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,wEAAwE;AACxE,qBAAa,cAAe,SAAQ,SAAS;IAC3C,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAI1D,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,8CAA8C;AAC9C,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAGrD,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAOlG"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IASnG,qEAAqE;IACrE,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC;CACnC;AAED,8EAA8E;AAC9E,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAGpE,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED,8DAA8D;AAC9D,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAGpD,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED,sEAAsE;AACtE,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAGpE,IAAI,SAAS,IAAI,OAAO,CAAkB;CAC3C;AAED;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAGpE,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,wEAAwE;AACxE,qBAAa,cAAe,SAAQ,SAAS;IAC3C,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAIzE,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,8CAA8C;AAC9C,qBAAa,YAAa,SAAQ,SAAS;gBAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAGpE,IAAI,SAAS,IAAI,OAAO,CAAiB;CAC1C;AAED,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAOjH"}
@@ -9,32 +9,39 @@ export class HttpError extends Error {
9
9
  status;
10
10
  url;
11
11
  body;
12
- constructor(name, message, status, url, body) {
12
+ /**
13
+ * The provider's own error code, when it gave one — Postgres's SQLSTATE
14
+ * through Neon, for instance. A caller deciding "missing table" from the
15
+ * message text would also match a missing column; the code is exact.
16
+ */
17
+ code;
18
+ constructor(name, message, status, url, body, code) {
13
19
  super(message);
14
20
  this.name = name;
15
21
  this.status = status;
16
22
  this.url = url;
17
23
  this.body = body;
24
+ this.code = code;
18
25
  }
19
26
  }
20
27
  /** The credential is wrong, expired, or lacks the permission. Never retry. */
21
28
  export class AuthError extends HttpError {
22
- constructor(status, url, body) {
23
- super("AuthError", `Not authorised (${status}) — the key is wrong or lacks permission`, status, url, body);
29
+ constructor(status, url, body, code) {
30
+ super("AuthError", `Not authorised (${status}) — the key is wrong or lacks permission`, status, url, body, code);
24
31
  }
25
32
  get retryable() { return false; }
26
33
  }
27
34
  /** It does not exist. Often a normal state, not a failure. */
28
35
  export class NotFoundError extends HttpError {
29
- constructor(url, body) {
30
- super("NotFoundError", "Not found", 404, url, body);
36
+ constructor(url, body, code) {
37
+ super("NotFoundError", "Not found", 404, url, body, code);
31
38
  }
32
39
  get retryable() { return false; }
33
40
  }
34
41
  /** The request was malformed. Retrying sends the same bad request. */
35
42
  export class ValidationError extends HttpError {
36
- constructor(status, url, body) {
37
- super("ValidationError", `Rejected (${status}): ${body.slice(0, 200)}`, status, url, body);
43
+ constructor(status, url, body, code) {
44
+ super("ValidationError", `Rejected (${status}): ${body.slice(0, 200)}`, status, url, body, code);
38
45
  }
39
46
  get retryable() { return false; }
40
47
  }
@@ -46,8 +53,8 @@ export class ValidationError extends HttpError {
46
53
  * a client error and is not one — the request is correct and merely early.
47
54
  */
48
55
  export class BusyError extends HttpError {
49
- constructor(status, url, body) {
50
- super("BusyError", `Busy (${status}) — the resource is mid-operation`, status, url, body);
56
+ constructor(status, url, body, code) {
57
+ super("BusyError", `Busy (${status}) — the resource is mid-operation`, status, url, body, code);
51
58
  }
52
59
  get retryable() { return true; }
53
60
  }
@@ -55,31 +62,31 @@ export class BusyError extends HttpError {
55
62
  export class RateLimitError extends HttpError {
56
63
  /** Seconds to wait, when the provider said. */
57
64
  retryAfter;
58
- constructor(url, body, retryAfter) {
59
- super("RateLimitError", `Rate limited${retryAfter ? ` — retry in ${retryAfter}s` : ""}`, 429, url, body);
65
+ constructor(url, body, retryAfter, code) {
66
+ super("RateLimitError", `Rate limited${retryAfter ? ` — retry in ${retryAfter}s` : ""}`, 429, url, body, code);
60
67
  this.retryAfter = retryAfter;
61
68
  }
62
69
  get retryable() { return true; }
63
70
  }
64
71
  /** The provider broke. Worth trying again. */
65
72
  export class ServiceError extends HttpError {
66
- constructor(status, url, body) {
67
- super("ServiceError", `Service error (${status})`, status, url, body);
73
+ constructor(status, url, body, code) {
74
+ super("ServiceError", `Service error (${status})`, status, url, body, code);
68
75
  }
69
76
  get retryable() { return true; }
70
77
  }
71
78
  /** Map a response onto the right error. */
72
- export function errorFor(status, url, body, retryAfter) {
79
+ export function errorFor(status, url, body, retryAfter, code) {
73
80
  if (status === 401 || status === 403)
74
- return new AuthError(status, url, body);
81
+ return new AuthError(status, url, body, code);
75
82
  if (status === 404)
76
- return new NotFoundError(url, body);
83
+ return new NotFoundError(url, body, code);
77
84
  if (status === 423)
78
- return new BusyError(status, url, body);
85
+ return new BusyError(status, url, body, code);
79
86
  if (status === 429)
80
- return new RateLimitError(url, body, retryAfter);
87
+ return new RateLimitError(url, body, retryAfter, code);
81
88
  if (status >= 500)
82
- return new ServiceError(status, url, body);
83
- return new ValidationError(status, url, body);
89
+ return new ServiceError(status, url, body, code);
90
+ return new ValidationError(status, url, body, code);
84
91
  }
85
92
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAahD;AAED,wBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM;iBAuCf,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;iBAW9C,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;cAatD,OAAO,CAAC,MAAM,EAAE,CAAC;mBAOZ,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;EAelD"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAahD;AAED,wBAAgB,EAAE,CAAC,gBAAgB,EAAE,MAAM;iBA0Cf,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;iBAW9C,MAAM,WAAU,OAAO,EAAE,KAAQ,OAAO,CAAC,IAAI,CAAC;cAatD,OAAO,CAAC,MAAM,EAAE,CAAC;mBAOZ,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;EAelD"}
@@ -68,8 +68,11 @@ export function db(connectionString) {
68
68
  if (!res.ok) {
69
69
  // Postgres's own message names the column or the constraint; a status
70
70
  // code alone sends someone to the wrong place. errorFor classifies it,
71
- // so a worker knows a syntax error will never succeed on retry.
72
- throw errorFor(res.status, endpoint, parsed.message ?? JSON.stringify(parsed));
71
+ // so a worker knows a syntax error will never succeed on retry. The
72
+ // SQLSTATE travels too, so a caller can compare exactly — "undefined
73
+ // table" is 42P01, not whatever the message happens to say.
74
+ const code = typeof parsed.code === "string" ? parsed.code : undefined;
75
+ throw errorFor(res.status, endpoint, parsed.message ?? JSON.stringify(parsed), undefined, code);
73
76
  }
74
77
  return parsed;
75
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/services/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,QAAQ,GAAG,GAAG;SACjB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,kEAAkE,CACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,gBAAwB;IACzC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,CAAC;IAEvC,KAAK,UAAU,IAAI,CACjB,IAAa,EACb,UAAkC,EAAE;QAEpC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,wBAAwB,EAAE,gBAAgB;gBAC1C,GAAG,OAAO;aACX;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,sEAAsE;YACtE,uEAAuE;YACvE,oEAAoE;YACpE,qEAAqE;YACrE,4DAA4D;YAC5D,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,KAAK,CAAC,GAAW,EAAE,SAAoB,EAAE;QACtD,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CACtB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EACrC,EAAE,sBAAsB,EAAE,MAAM,EAAE,CACnC,CAA4E,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,iEAAiE;IACjE,KAAK,UAAU,KAAK,CAAC,GAAW,EAAE,SAAoB,EAAE;QACtD,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAG/C,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK;QAEL,KAAK,CAAC,MAAM;YACV,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAC1B,gFAAgF,CACjF,CAAC;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAa;YACzB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAC1B;;;oCAG4B,EAC5B,CAAC,KAAK,CAAC,CACR,CAAC;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBAC5B,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,KAAK;aACrC,CAAC,CAAC,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heychunky/core",
3
- "version": "0.28.2",
3
+ "version": "0.29.1",
4
4
  "description": "The engine the Chunky CLI, worker and apps run on.",
5
5
  "license": "MIT",
6
6
  "type": "module",