@ultimat3/cli 14.0.0 → 16.0.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 (2) hide show
  1. package/package.json +29 -29
  2. package/src/schema-drift.ts +13 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultimat3/cli",
3
- "version": "14.0.0",
3
+ "version": "16.0.0",
4
4
  "description": "The `x` binary: new, dev, build, verify, generate, db, mcp, doctor, deploy",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,34 +37,34 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@babel/core": "^7.28.4",
40
- "@ultimat3/action": "14.0.0",
41
- "@ultimat3/admin": "14.0.0",
42
- "@ultimat3/ai": "14.0.0",
43
- "@ultimat3/auth": "14.0.0",
44
- "@ultimat3/cache": "14.0.0",
45
- "@ultimat3/core": "14.0.0",
46
- "@ultimat3/db": "14.0.0",
47
- "@ultimat3/entity": "14.0.0",
48
- "@ultimat3/flags": "14.0.0",
49
- "@ultimat3/http": "14.0.0",
50
- "@ultimat3/i18n": "14.0.0",
51
- "@ultimat3/jobs": "14.0.0",
52
- "@ultimat3/mail": "14.0.0",
53
- "@ultimat3/manifest": "14.0.0",
54
- "@ultimat3/mcp": "14.0.0",
55
- "@ultimat3/money": "14.0.0",
56
- "@ultimat3/notify": "14.0.0",
57
- "@ultimat3/policy": "14.0.0",
58
- "@ultimat3/pwa": "14.0.0",
59
- "@ultimat3/query": "14.0.0",
60
- "@ultimat3/realtime": "14.0.0",
61
- "@ultimat3/render": "14.0.0",
62
- "@ultimat3/schema": "14.0.0",
63
- "@ultimat3/scraping": "14.0.0",
64
- "@ultimat3/seo": "14.0.0",
65
- "@ultimat3/storage": "14.0.0",
66
- "@ultimat3/testing": "14.0.0",
67
- "@ultimat3/time": "14.0.0",
40
+ "@ultimat3/action": "16.0.0",
41
+ "@ultimat3/admin": "16.0.0",
42
+ "@ultimat3/ai": "16.0.0",
43
+ "@ultimat3/auth": "16.0.0",
44
+ "@ultimat3/cache": "16.0.0",
45
+ "@ultimat3/core": "16.0.0",
46
+ "@ultimat3/db": "16.0.0",
47
+ "@ultimat3/entity": "16.0.0",
48
+ "@ultimat3/flags": "16.0.0",
49
+ "@ultimat3/http": "16.0.0",
50
+ "@ultimat3/i18n": "16.0.0",
51
+ "@ultimat3/jobs": "16.0.0",
52
+ "@ultimat3/mail": "16.0.0",
53
+ "@ultimat3/manifest": "16.0.0",
54
+ "@ultimat3/mcp": "16.0.0",
55
+ "@ultimat3/money": "16.0.0",
56
+ "@ultimat3/notify": "16.0.0",
57
+ "@ultimat3/policy": "16.0.0",
58
+ "@ultimat3/pwa": "16.0.0",
59
+ "@ultimat3/query": "16.0.0",
60
+ "@ultimat3/realtime": "16.0.0",
61
+ "@ultimat3/render": "16.0.0",
62
+ "@ultimat3/schema": "16.0.0",
63
+ "@ultimat3/scraping": "16.0.0",
64
+ "@ultimat3/seo": "16.0.0",
65
+ "@ultimat3/storage": "16.0.0",
66
+ "@ultimat3/testing": "16.0.0",
67
+ "@ultimat3/time": "16.0.0",
68
68
  "babel-preset-solid": "^1.9.15"
69
69
  }
70
70
  }
@@ -61,8 +61,19 @@ function repairFix(
61
61
  const named = unrendered.find(
62
62
  (entry) => entry.table === difference.table && entry.name === difference.name,
63
63
  );
64
- const blocked = named ?? unrendered[0];
65
- if (blocked !== undefined) return blocked.fix;
64
+ // The entry ABOUT this difference carries the edit that repairs it, so it is the whole answer.
65
+ if (named !== undefined) return named.fix;
66
+ // Otherwise `x db gen` is still unsafe — it would drop what the other entries name — but the
67
+ // reader must NOT be handed a different declaration's edit as the instruction for this one.
68
+ // Reading `unrendered[0]` did exactly that: a column default and an index each got
69
+ // `invariant('org_slug_shape', …)`, an edit in another file about another rule.
70
+ // No `x db gen` in this branch, and that is the point: while ANY declaration reaches no SQL,
71
+ // regenerating drops it, so the command is the wrong instruction for every difference in the
72
+ // app — not only for the one the entry names.
73
+ const blocker = unrendered[0];
74
+ if (blocker !== undefined) {
75
+ return `${blocker.fix} # ${blocker.table}.${blocker.name} reaches no SQL, so regenerating would drop it; repair that before recording ${difference.name}`;
76
+ }
66
77
  // "record", not "add": one finding covers a declaration the migrations never carried AND one they
67
78
  // carry differently, so `add` would be a wrong migration name for half of them. `undeclared` gets
68
79
  // both branches, in the order they are safe — regenerating emits the DROP, and the declaration