@caretcms/caretize 0.1.0 → 0.1.2

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 (70) hide show
  1. package/README.md +41 -5
  2. package/dist/bind-collection.js +1 -1
  3. package/dist/bind-collection.js.map +1 -1
  4. package/dist/bind-route.d.ts.map +1 -1
  5. package/dist/bind-route.js +9 -4
  6. package/dist/bind-route.js.map +1 -1
  7. package/dist/cli-args.d.ts +16 -1
  8. package/dist/cli-args.d.ts.map +1 -1
  9. package/dist/cli-args.js +39 -3
  10. package/dist/cli-args.js.map +1 -1
  11. package/dist/cli.js +390 -27
  12. package/dist/cli.js.map +1 -1
  13. package/dist/detect.d.ts +17 -1
  14. package/dist/detect.d.ts.map +1 -1
  15. package/dist/detect.js +61 -22
  16. package/dist/detect.js.map +1 -1
  17. package/dist/diff.d.ts +20 -0
  18. package/dist/diff.d.ts.map +1 -0
  19. package/dist/diff.js +75 -0
  20. package/dist/diff.js.map +1 -0
  21. package/dist/discover.d.ts.map +1 -1
  22. package/dist/discover.js +8 -2
  23. package/dist/discover.js.map +1 -1
  24. package/dist/escalation.d.ts +47 -0
  25. package/dist/escalation.d.ts.map +1 -0
  26. package/dist/escalation.js +112 -0
  27. package/dist/escalation.js.map +1 -0
  28. package/dist/frontmatter.d.ts +41 -4
  29. package/dist/frontmatter.d.ts.map +1 -1
  30. package/dist/frontmatter.js +122 -12
  31. package/dist/frontmatter.js.map +1 -1
  32. package/dist/import-wrap.d.ts +30 -0
  33. package/dist/import-wrap.d.ts.map +1 -1
  34. package/dist/import-wrap.js +101 -7
  35. package/dist/import-wrap.js.map +1 -1
  36. package/dist/init.d.ts +70 -0
  37. package/dist/init.d.ts.map +1 -0
  38. package/dist/init.js +198 -0
  39. package/dist/init.js.map +1 -0
  40. package/dist/keys.d.ts +55 -0
  41. package/dist/keys.d.ts.map +1 -0
  42. package/dist/keys.js +84 -0
  43. package/dist/keys.js.map +1 -0
  44. package/dist/output.d.ts +63 -10
  45. package/dist/output.d.ts.map +1 -1
  46. package/dist/output.js +190 -22
  47. package/dist/output.js.map +1 -1
  48. package/dist/plan.d.ts +7 -0
  49. package/dist/plan.d.ts.map +1 -1
  50. package/dist/plan.js +17 -4
  51. package/dist/plan.js.map +1 -1
  52. package/dist/preflight.d.ts +2 -0
  53. package/dist/preflight.d.ts.map +1 -1
  54. package/dist/preflight.js +18 -3
  55. package/dist/preflight.js.map +1 -1
  56. package/dist/run.js +6 -4
  57. package/dist/run.js.map +1 -1
  58. package/dist/select-policy.d.ts +38 -0
  59. package/dist/select-policy.d.ts.map +1 -0
  60. package/dist/select-policy.js +44 -0
  61. package/dist/select-policy.js.map +1 -0
  62. package/dist/tiers.d.ts +42 -0
  63. package/dist/tiers.d.ts.map +1 -0
  64. package/dist/tiers.js +67 -0
  65. package/dist/tiers.js.map +1 -0
  66. package/dist/wrap.d.ts +9 -4
  67. package/dist/wrap.d.ts.map +1 -1
  68. package/dist/wrap.js +3 -2
  69. package/dist/wrap.js.map +1 -1
  70. package/package.json +2 -2
package/README.md CHANGED
@@ -1,20 +1,38 @@
1
1
  # @caretcms/caretize
2
2
 
3
- Make an existing Astro site editable with [CaretCMS](https://github.com/web-stacked/caretcms): `caretize` scans your `.astro` templates and interactively inserts `data-caret` attributes (plus `editable()` wraps for data arrays), turning static markup into inline-editable content — no schema or config rewrite required.
3
+ Make an existing Astro site editable with [CaretCMS](https://github.com/web-stacked/caretcms): `caretize` scans your `.astro` templates and inserts `data-caret` attributes (plus `editable()` wraps for data arrays), turning static markup into inline-editable content — no schema or config rewrite required.
4
4
 
5
5
  The static HTML you already have *is* the seed content: CaretCMS renders the original text until an editor saves an override, so caretize only has to mark what's editable.
6
6
 
7
7
  ```sh
8
- # in your Astro project root — preview first, write nothing
8
+ # in your Astro project root — set CaretCMS up first (deps + astro.config + .env)
9
+ npx @caretcms/caretize init
10
+
11
+ # preview what would be tagged, write nothing
9
12
  npx @caretcms/caretize --dry-run
13
+ npx @caretcms/caretize --diff
10
14
 
11
- # then run the interactive review
15
+ # default: apply safe edits, show a diff you can --restore
12
16
  npx @caretcms/caretize
17
+
18
+ # approve each change before writing
19
+ npx @caretcms/caretize --review
13
20
  ```
14
21
 
22
+ `init` is optional but is the fastest path on a project that hasn't wired
23
+ CaretCMS yet: it installs `@caretcms/core`, wires `caret()` into `astro.config`, and
24
+ scaffolds a `.env` with a generated `CARET_SESSION_SECRET`.
25
+
26
+ - **Static Astro projects** (default): `caret({ delivery: "static" })` — no SSR adapter.
27
+ - **Server projects** (`output: "server"` already): keeps or adds adapter + `caret()`.
28
+
29
+ An existing config is only edited via verified pure insertions (shown as a diff you
30
+ confirm, backed up first); when its shape isn't safe to touch automatically it prints
31
+ a snippet to paste instead.
32
+
15
33
  ## What it does
16
34
 
17
- For every candidate it finds, caretize shows the element and proposed binding and asks:
35
+ By default caretize **optimistically applies** high-confidence candidates, then shows a before→after diff. Use `--review` to approve each binding interactively:
18
36
 
19
37
  ```
20
38
  src/pages/index.astro
@@ -30,7 +48,7 @@ src/pages/index.astro
30
48
 
31
49
  ## Safety model
32
50
 
33
- - **Nothing is written until the review ends.** Every output is verified in memory first: it must re-parse as valid Astro and be a pure insertion of the original (your bytes survive untouched, in order).
51
+ - **Nothing unsafe is written.** Every output is verified in memory first: it must re-parse as valid Astro and be a pure insertion of the original (your bytes survive untouched, in order).
34
52
  - **All-or-nothing:** if any file fails verification, the run aborts having written nothing.
35
53
  - **Backups:** every written file is first copied to `.caret/.caretize-bak/`; `caretize --restore` reverts the most recent run. Git is the real undo — caretize warns when your tree is dirty.
36
54
  - Multibyte-safe: offsets are computed and spliced on UTF-8 buffers (emoji/em-dashes can't corrupt a tag).
@@ -39,9 +57,16 @@ src/pages/index.astro
39
57
 
40
58
  ```
41
59
  caretize [path] [options]
60
+ caretize init wire CaretCMS into the project, then tag
42
61
 
62
+ init set up CaretCMS first: install @caretcms/core, wire
63
+ caret() into astro.config (static delivery by default;
64
+ server projects get SSR adapter wiring), scaffold .env
43
65
  path file or directory to scan (default: src/)
66
+ --review approve each change before writing; richer tiers still
67
+ offered at the end
44
68
  --dry-run print the plan, write nothing
69
+ --diff preview exact before→after, write nothing
45
70
  -y, --yes auto-accept all suggestions at/above min-confidence
46
71
  --min-confidence <lvl> high (default) | medium | low
47
72
  --no-images skip <img> elements
@@ -53,6 +78,12 @@ caretize [path] [options]
53
78
  to its current entry via getStaticPaths props
54
79
  --rich also tag mixed-content blocks whose markup is
55
80
  sanitizer-safe inline formatting (data-caret-rich)
81
+ --rich-class also tag rich blocks whose inline children carry a
82
+ class — implies --rich; class round-trips once blessed
83
+ via caret({ allowedClasses }) (hint names which)
84
+ --all every opt-in tier at once: --bind-collections,
85
+ --bind-routes, --rich, --rich-class, AND
86
+ --min-confidence low
56
87
  --scope <collection::id> override the inferred scope (validated against the
57
88
  runtime grammar: ^[a-z][a-z0-9_-]*$ :: ^[a-z0-9][a-z0-9_-]*$)
58
89
  --report <file> write a JSON report
@@ -64,7 +95,12 @@ caretize [path] [options]
64
95
  1. `npm run dev`
65
96
  2. Sign in at `/admin` — with no `CARET_EDIT_PASSWORD` set, a temporary dev password is printed in your terminal
66
97
  3. Click any tagged element to edit it in place; the Studio lives at `/admin/cms`
98
+ 4. Use Preview / Publish / Discard in the editor toolbar for draft workflow
67
99
 
68
100
  Requires [`@caretcms/core`](https://www.npmjs.com/package/@caretcms/core) wired into `astro.config.mjs` (caretize's preflight checks this and tells you if it isn't).
69
101
 
102
+ **Static Astro sites:** use `caret({ delivery: "static" })` (caretize `init` does this by default). Edit locally in dev; after Publish, rebuild so CaretCMS bakes stored content into static HTML. See [static delivery docs](https://github.com/web-stacked/caretcms/blob/main/docs/static-delivery.md).
103
+
104
+ **Server sites:** use `output: "server"` with an SSR adapter and `caret()` for per-request rewriting in production.
105
+
70
106
  MIT © CaretCMS contributors
@@ -67,7 +67,7 @@ export function soleDataField(el, param) {
67
67
  if (child.type === "expression") {
68
68
  if (field)
69
69
  return null; // more than one expression
70
- const m = new RegExp(`^${param}\\.data\\.([A-Za-z_$][\\w$]*)$`).exec(expressionJs(child).trim());
70
+ const m = new RegExp(`^${escapeRe(param)}\\.data\\.([A-Za-z_$][\\w$]*)$`).exec(expressionJs(child).trim());
71
71
  if (!m)
72
72
  return null;
73
73
  field = m[1];
@@ -1 +1 @@
1
- {"version":3,"file":"bind-collection.js","sourceRoot":"","sources":["../src/bind-collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,SAAS,EAAgC,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmB5C,uEAAuE;AACvE,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,6EAA6E;AAC7E,yEAAyE;AACzE,+EAA+E;AAC/E,yEAAyE;AACzE,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAC5B,uHAAuH,CAAC;AAE1H,kEAAkE;AAClE,MAAM,MAAM,GAAG,+DAA+D,CAAC;AAE/E,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,GAAG,IAAK,KAA4B,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAC/D,IAAI,KAAK,CAAC;AACb,CAAC;AAED;;;oEAGoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,EAAU,EAAE,IAAY;IAC3D,OAAO,IAAI,MAAM,CACf,kEAAkE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAC7F,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED;;;2EAG2E;AAC3E,MAAM,UAAU,aAAa,CAAC,EAAW,EAAE,KAAa;IACtD,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAK,KAA4B,CAAC,KAAK,EAAE,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC,CAAC,qBAAqB;YACnF,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;YACnD,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC,IAAI,CAClE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAC3B,CAAC;YACF,IAAI,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YACpB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,uDAAuD;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAc,EAAE,GAAc;IACxE,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACnB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,kCAAkC;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAC9C,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;IAChC,IAAI,EAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,CACZ,IAAe,EACf,GAAmE,EAC7D,EAAE;QACR,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,UAAU,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;gBACrB,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,CAAC;iBAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,4DAA4D;gBAC5D,sEAAsE;gBACtE,mEAAmE;gBACnE,kDAAkD;gBAClD,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IACE,OAAO;YACP,SAAS,CAAC,IAAI,CAAC;YACf,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,CAAC,YAAY,CAAC,IAAI,CAAC;YACnB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9B,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YACtD,IAAI,KAAK,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,GAAG,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC;oBACX,WAAW;oBACX,SAAS,EAAE,cAAc,GAAG,KAAK,GAAG,GAAG;oBACvC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,KAAK;oBACL,GAAG,EAAE,IAAI,CAAC,IAAI;oBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;YAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC;IACF,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"bind-collection.js","sourceRoot":"","sources":["../src/bind-collection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bind-route.d.ts","sourceRoot":"","sources":["../src/bind-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EACL,KAAK,oBAAoB,EAM1B,MAAM,sBAAsB,CAAC;AAmE9B;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,GACb,oBAAoB,EAAE,CA6CxB"}
1
+ {"version":3,"file":"bind-route.d.ts","sourceRoot":"","sources":["../src/bind-route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EACL,KAAK,oBAAoB,EAM1B,MAAM,sBAAsB,CAAC;AAwE9B;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,GACb,oBAAoB,EAAE,CA6CxB"}
@@ -33,11 +33,14 @@ import { isTagNode } from "./parse.js";
33
33
  import { frontmatterRange } from "./frontmatter.js";
34
34
  import { GET_COLLECTION_RE, expressionJs, hasCaretAttr, iteratorParamShadows, soleDataField, } from "./bind-collection.js";
35
35
  import { isRewritableTextTag } from "./detect.js";
36
+ import { escapeRe } from "./identifiers.js";
36
37
  // `posts.map((post) => ...` — receiver + the iteration parameter.
37
38
  const MAP_PARAM_RE = /([A-Za-z_$][\w$]*)\s*\.\s*map\s*\(\s*\(?\s*([A-Za-z_$][\w$]*)/g;
38
- /** A standalone identifier inside an object/destructure body (shorthand key). */
39
+ /** A standalone identifier inside an object/destructure body (shorthand key).
40
+ * Identifiers are escaped — `$post` is a legal name whose `$` would otherwise
41
+ * anchor mid-pattern and silently never match. */
39
42
  function shorthand(name) {
40
- return new RegExp(`(?:^|[{,\\s])${name}(?:\\s*[,}]|\\s*$)`);
43
+ return new RegExp(`(?:^|[{,\\s])${escapeRe(name)}(?:\\s*[,}]|\\s*$)`);
41
44
  }
42
45
  /**
43
46
  * Resolve the template's current-entry variable and its collection from the
@@ -74,7 +77,9 @@ function resolveEntryBinding(fmText) {
74
77
  if (!propsObj)
75
78
  return null;
76
79
  const propsInner = propsObj[1];
77
- const explicit = new RegExp(`([A-Za-z_$][\\w$]*)\\s*:\\s*${param}\\b`).exec(propsInner);
80
+ // (?![\w$]) instead of \b: \b sits between word/non-word chars, so it never
81
+ // closes an identifier that ENDS in `$` (post$ followed by "," has no \b).
82
+ const explicit = new RegExp(`([A-Za-z_$][\\w$]*)\\s*:\\s*${escapeRe(param)}(?![\\w$])`).exec(propsInner);
78
83
  const propKey = explicit
79
84
  ? explicit[1]
80
85
  : shorthand(param).test(propsInner)
@@ -87,7 +92,7 @@ function resolveEntryBinding(fmText) {
87
92
  if (!destruct)
88
93
  return null;
89
94
  const dInner = destruct[1];
90
- const rename = new RegExp(`\\b${propKey}\\s*:\\s*([A-Za-z_$][\\w$]*)`).exec(dInner);
95
+ const rename = new RegExp(`(?<![\\w$])${escapeRe(propKey)}\\s*:\\s*([A-Za-z_$][\\w$]*)`).exec(dInner);
91
96
  const entryVar = rename
92
97
  ? rename[1]
93
98
  : shorthand(propKey).test(dInner)
@@ -1 +1 @@
1
- {"version":3,"file":"bind-route.js","sourceRoot":"","sources":["../src/bind-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bind-route.js","sourceRoot":"","sources":["../src/bind-route.ts"],"names":[],"mappings":"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"}
@@ -9,22 +9,37 @@ import { type Scope } from "./name.js";
9
9
  export interface Args {
10
10
  target?: string;
11
11
  dryRun: boolean;
12
+ diff: boolean;
12
13
  yes: boolean;
14
+ /** Approve each change before it's written (opt back into the per-file review).
15
+ * Without it, the default is optimistic: apply the safe tier, then show a diff
16
+ * you can --restore. */
17
+ review: boolean;
13
18
  minConfidence: Confidence;
14
19
  noImages: boolean;
15
20
  rich: boolean;
21
+ /** Also tag styled-span headings (rich blocks whose inline children carry a
22
+ * class). Implies --rich. The class round-trips only once blessed via
23
+ * caret({ allowedClasses }); the hint names which. Included in --all. */
24
+ richClass: boolean;
16
25
  noProps: boolean;
17
26
  bindCollections: boolean;
18
27
  bindRoutes: boolean;
28
+ /** Turn on EVERY opt-in tier at once (collections + routes + rich + low
29
+ * confidence) — the one flag that replaces the four-flag incantation. */
30
+ all: boolean;
19
31
  scope?: Scope;
20
32
  report?: string;
21
33
  restore: boolean;
34
+ /** `caretize init` — wire CaretCMS into the project (deps + astro.config +
35
+ * .env) before tagging, instead of just warning that it isn't set up. */
36
+ init: boolean;
22
37
  help: boolean;
23
38
  version: boolean;
24
39
  }
25
40
  /** Thrown on an invalid invocation; cli.ts maps it to a stderr message + exit 2. */
26
41
  export declare class CliUsageError extends Error {
27
42
  }
28
- export declare const HELP = "caretize \u00B7 make an Astro project editable (data-caret + editable())\n\nUsage: caretize [path] [options]\n\n path file or directory to scan (default: src/)\n --dry-run print the plan, write nothing\n -y, --yes auto-accept all suggestions at/above min-confidence\n --min-confidence <lvl> high (default) | medium | low\n --no-images skip <img> elements\n --no-props skip hoisting static component-prop strings to editable()\n --bind-collections bind getCollection().map() loops in place \u2014 a leaf\n element rendering {item.data.field} gets a per-row\n data-caret (direct-render only; props stay flagged)\n --bind-routes bind a dynamic collection-detail route to the current\n entry \u2014 a leaf rendering {entry.data.field} (entry from\n getStaticPaths props) gets a data-caret instead of the\n page being skipped as a dynamic route\n --rich also tag mixed-content blocks whose markup is\n sanitizer-safe inline formatting (data-caret-rich)\n --scope <collection::id> override the inferred scope\n --report <file> write a JSON report\n --restore restore the most recent backup, then exit\n -h, --help show this help\n -v, --version print version\n";
43
+ export declare const HELP = "caretize \u00B7 make an Astro project editable (data-caret + editable())\n\nUsage: caretize [path] [options]\n caretize init wire CaretCMS into the project, then tag\n\nBy default caretize applies the safe edits, then shows a diff you can undo with\n--restore. Use --review to approve each change first, or --diff to preview only.\n\n init set up CaretCMS first: install @caretcms/core, wire\n caret() into astro.config, and scaffold .env. Static\n Astro projects use static delivery by default; server\n projects keep SSR adapter wiring\n path file or directory to scan (default: src/)\n --review approve each default change before writing; the richer\n tiers are still offered (decline with n)\n --dry-run print the plan, write nothing\n --diff preview the exact before\u2192after changes, write nothing\n -y, --yes auto-accept all suggestions at/above min-confidence\n --min-confidence <lvl> high (default) | medium | low\n --no-images skip <img> elements\n --no-props skip hoisting static component-prop strings to editable()\n --bind-collections bind getCollection().map() loops in place \u2014 a leaf\n element rendering {item.data.field} gets a per-row\n data-caret (direct-render only; props stay flagged)\n --bind-routes bind a dynamic collection-detail route to the current\n entry \u2014 a leaf rendering {entry.data.field} (entry from\n getStaticPaths props) gets a data-caret instead of the\n page being skipped as a dynamic route\n --rich also tag mixed-content blocks whose markup is\n sanitizer-safe inline formatting (data-caret-rich)\n --rich-class also tag rich blocks whose inline children carry a\n class (e.g. <h1>\u2026<span class=\"gold\">\u2026</span>\u2026). Implies\n --rich. The class is kept only once you add it to\n caret({ allowedClasses }) \u2014 the hint names which.\n --all turn on every opt-in tier at once: --bind-collections,\n --bind-routes, --rich, --rich-class, AND\n --min-confidence low. The one-flag \"make as much\n editable as possible\" \u2014 includes the low-confidence\n spots, so review the result\n --scope <collection::id> override the inferred scope\n --report <file> write a JSON report\n --restore restore the most recent backup, then exit\n -h, --help show this help\n -v, --version print version\n";
29
44
  export declare function parseArgs(argv: string[]): Args;
30
45
  //# sourceMappingURL=cli-args.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAErE,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,aAAa,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,eAAO,MAAM,IAAI,o9CAwBhB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA2D9C"}
1
+ {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAErE,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb;;6BAEyB;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,UAAU,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd;;8EAE0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB;8EAC0E;IAC1E,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB;8EAC0E;IAC1E,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,eAAO,MAAM,IAAI,s6FA4ChB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgE9C"}
package/dist/cli-args.js CHANGED
@@ -11,9 +11,20 @@ export class CliUsageError extends Error {
11
11
  export const HELP = `caretize · make an Astro project editable (data-caret + editable())
12
12
 
13
13
  Usage: caretize [path] [options]
14
+ caretize init wire CaretCMS into the project, then tag
14
15
 
16
+ By default caretize applies the safe edits, then shows a diff you can undo with
17
+ --restore. Use --review to approve each change first, or --diff to preview only.
18
+
19
+ init set up CaretCMS first: install @caretcms/core, wire
20
+ caret() into astro.config, and scaffold .env. Static
21
+ Astro projects use static delivery by default; server
22
+ projects keep SSR adapter wiring
15
23
  path file or directory to scan (default: src/)
24
+ --review approve each default change before writing; the richer
25
+ tiers are still offered (decline with n)
16
26
  --dry-run print the plan, write nothing
27
+ --diff preview the exact before→after changes, write nothing
17
28
  -y, --yes auto-accept all suggestions at/above min-confidence
18
29
  --min-confidence <lvl> high (default) | medium | low
19
30
  --no-images skip <img> elements
@@ -27,6 +38,15 @@ Usage: caretize [path] [options]
27
38
  page being skipped as a dynamic route
28
39
  --rich also tag mixed-content blocks whose markup is
29
40
  sanitizer-safe inline formatting (data-caret-rich)
41
+ --rich-class also tag rich blocks whose inline children carry a
42
+ class (e.g. <h1>…<span class="gold">…</span>…). Implies
43
+ --rich. The class is kept only once you add it to
44
+ caret({ allowedClasses }) — the hint names which.
45
+ --all turn on every opt-in tier at once: --bind-collections,
46
+ --bind-routes, --rich, --rich-class, AND
47
+ --min-confidence low. The one-flag "make as much
48
+ editable as possible" — includes the low-confidence
49
+ spots, so review the result
30
50
  --scope <collection::id> override the inferred scope
31
51
  --report <file> write a JSON report
32
52
  --restore restore the most recent backup, then exit
@@ -35,9 +55,9 @@ Usage: caretize [path] [options]
35
55
  `;
36
56
  export function parseArgs(argv) {
37
57
  const a = {
38
- dryRun: false, yes: false, minConfidence: "high",
39
- noImages: false, rich: false, noProps: false, bindCollections: false,
40
- bindRoutes: false, restore: false, help: false, version: false,
58
+ dryRun: false, diff: false, yes: false, review: false, minConfidence: "high",
59
+ noImages: false, rich: false, richClass: false, noProps: false, bindCollections: false,
60
+ bindRoutes: false, all: false, restore: false, init: false, help: false, version: false,
41
61
  };
42
62
  for (let i = 0; i < argv.length; i++) {
43
63
  const arg = argv[i];
@@ -45,6 +65,12 @@ export function parseArgs(argv) {
45
65
  case "--dry-run":
46
66
  a.dryRun = true;
47
67
  break;
68
+ case "--diff":
69
+ a.diff = true;
70
+ break;
71
+ case "--review":
72
+ a.review = true;
73
+ break;
48
74
  case "-y":
49
75
  case "--yes":
50
76
  a.yes = true;
@@ -64,9 +90,19 @@ export function parseArgs(argv) {
64
90
  case "--rich":
65
91
  a.rich = true;
66
92
  break;
93
+ case "--rich-class":
94
+ a.richClass = true;
95
+ break;
96
+ case "--all":
97
+ case "--everything":
98
+ a.all = true;
99
+ break;
67
100
  case "--restore":
68
101
  a.restore = true;
69
102
  break;
103
+ case "init":
104
+ a.init = true;
105
+ break;
70
106
  case "--help":
71
107
  case "-h":
72
108
  a.help = true;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}