canopycms 0.0.25 → 0.0.26
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.
- package/dist/ai/index.d.ts +1 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/json-to-markdown.d.ts.map +1 -1
- package/dist/ai/json-to-markdown.js +10 -2
- package/dist/ai/json-to-markdown.js.map +1 -1
- package/dist/ai/transform-components.d.ts +27 -0
- package/dist/ai/transform-components.d.ts.map +1 -0
- package/dist/ai/transform-components.js +168 -0
- package/dist/ai/transform-components.js.map +1 -0
- package/dist/ai/types.d.ts +50 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/cli/generate-ai-content.js +121 -1
- package/package.json +1 -1
package/dist/ai/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
export { defineAIContentConfig } from './types';
|
|
8
8
|
export { createAIContentHandler } from './handler';
|
|
9
9
|
export { generateAIContent } from './generate';
|
|
10
|
-
export type { AIContentConfig, ExcludeConfig, BundleConfig, BundleFilter, FieldTransformFn, FieldTransforms, AIManifest, AIManifestCollection, AIManifestEntry, AIManifestBundle, AIEntry, AIEntryMeta, } from './types';
|
|
10
|
+
export type { AIContentConfig, ExcludeConfig, BundleConfig, BundleFilter, FieldTransformFn, FieldTransforms, ComponentProps, ComponentTransformFn, ComponentTransforms, BodyTransformFn, BodyTransforms, AIManifest, AIManifestCollection, AIManifestEntry, AIManifestBundle, AIEntry, AIEntryMeta, } from './types';
|
|
11
11
|
export type { AIContentHandlerOptions } from './handler';
|
|
12
12
|
export type { GenerateOptions, GenerateResult } from './generate';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ai/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,WAAW,GACZ,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-to-markdown.d.ts","sourceRoot":"","sources":["../../src/ai/json-to-markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"json-to-markdown.d.ts","sourceRoot":"","sources":["../../src/ai/json-to-markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,CA2BhF"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Handles all CanopyCMS field types including nested objects and blocks.
|
|
6
6
|
*/
|
|
7
7
|
import { stripMdxImports } from './strip-mdx.js';
|
|
8
|
+
import { applyComponentTransforms } from './transform-components.js';
|
|
8
9
|
/**
|
|
9
10
|
* Convert an entry to clean markdown suitable for AI consumption.
|
|
10
11
|
*
|
|
@@ -63,9 +64,16 @@ function renderMarkdownEntry(entry, config, skipFields) {
|
|
|
63
64
|
if (parts.length > 0) {
|
|
64
65
|
parts.push('');
|
|
65
66
|
}
|
|
66
|
-
// Append body —
|
|
67
|
+
// Append body — pipeline: stripMdxImports → componentTransforms → bodyTransforms
|
|
67
68
|
if (entry.body) {
|
|
68
|
-
|
|
69
|
+
let body = entry.format === 'mdx' ? stripMdxImports(entry.body) : entry.body;
|
|
70
|
+
if (config?.componentTransforms && Object.keys(config.componentTransforms).length > 0) {
|
|
71
|
+
body = applyComponentTransforms(body, config.componentTransforms);
|
|
72
|
+
}
|
|
73
|
+
const bodyTransformFn = config?.bodyTransforms?.[entry.entryType];
|
|
74
|
+
if (bodyTransformFn) {
|
|
75
|
+
body = bodyTransformFn(body, entry);
|
|
76
|
+
}
|
|
69
77
|
parts.push(body.trim());
|
|
70
78
|
parts.push('');
|
|
71
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-to-markdown.js","sourceRoot":"","sources":["../../src/ai/json-to-markdown.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-to-markdown.js","sourceRoot":"","sources":["../../src/ai/json-to-markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDX component transform engine for AI content generation.
|
|
3
|
+
*
|
|
4
|
+
* Parses JSX components from MDX body content and applies adopter-defined
|
|
5
|
+
* transforms to convert them to clean markdown. Components inside fenced
|
|
6
|
+
* code blocks are left untouched.
|
|
7
|
+
*
|
|
8
|
+
* Uses a convergence loop: each pass transforms the innermost matching
|
|
9
|
+
* components, so nested components are handled naturally (inner first,
|
|
10
|
+
* outer on subsequent passes).
|
|
11
|
+
*/
|
|
12
|
+
import type { ComponentProps, ComponentTransforms } from './types';
|
|
13
|
+
/**
|
|
14
|
+
* Parse JSX attribute string into a props object.
|
|
15
|
+
*
|
|
16
|
+
* Handles: `key="value"`, `key='value'`, `key={expr}`, and boolean `key` (→ "true").
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseComponentProps(attrString: string): ComponentProps;
|
|
19
|
+
/**
|
|
20
|
+
* Apply component transforms to a body string.
|
|
21
|
+
*
|
|
22
|
+
* For each registered component name, finds JSX tags in the body and calls
|
|
23
|
+
* the corresponding transform function. Processes via convergence loop to
|
|
24
|
+
* handle nesting (inner components first, outer on subsequent passes).
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyComponentTransforms(body: string, transforms: ComponentTransforms): string;
|
|
27
|
+
//# sourceMappingURL=transform-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-components.d.ts","sourceRoot":"","sources":["../../src/ai/transform-components.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAElE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAiBtE;AAkDD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAiE9F"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDX component transform engine for AI content generation.
|
|
3
|
+
*
|
|
4
|
+
* Parses JSX components from MDX body content and applies adopter-defined
|
|
5
|
+
* transforms to convert them to clean markdown. Components inside fenced
|
|
6
|
+
* code blocks are left untouched.
|
|
7
|
+
*
|
|
8
|
+
* Uses a convergence loop: each pass transforms the innermost matching
|
|
9
|
+
* components, so nested components are handled naturally (inner first,
|
|
10
|
+
* outer on subsequent passes).
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Parse JSX attribute string into a props object.
|
|
14
|
+
*
|
|
15
|
+
* Handles: `key="value"`, `key='value'`, `key={expr}`, and boolean `key` (→ "true").
|
|
16
|
+
*/
|
|
17
|
+
export function parseComponentProps(attrString) {
|
|
18
|
+
const props = {};
|
|
19
|
+
if (!attrString)
|
|
20
|
+
return props;
|
|
21
|
+
// Match attribute patterns: name="value", name='value', name={expr}, or bare name
|
|
22
|
+
// eslint-disable-next-line security/detect-unsafe-regex
|
|
23
|
+
const attrRegex = /(\w+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|\{([^}]*)\}))?/g;
|
|
24
|
+
let match;
|
|
25
|
+
while ((match = attrRegex.exec(attrString)) !== null) {
|
|
26
|
+
const name = match[1];
|
|
27
|
+
// Double-quoted, single-quoted, expression, or boolean
|
|
28
|
+
const value = match[2] ?? match[3] ?? match[4] ?? 'true';
|
|
29
|
+
props[name] = value;
|
|
30
|
+
}
|
|
31
|
+
return props;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Mask fenced code blocks so component transforms don't touch them.
|
|
35
|
+
* Returns the masked string and a restore function.
|
|
36
|
+
*/
|
|
37
|
+
/** Regex fragment matching JSX attribute content, skipping quoted strings containing '>'. */
|
|
38
|
+
const ATTR_CONTENT = `(?:[^>"']|"[^"]*"|'[^']*')*`;
|
|
39
|
+
const BLOCK_PREFIX = '<<CODEBLOCK';
|
|
40
|
+
const BLOCK_SUFFIX = '>>';
|
|
41
|
+
const BLOCK_RESTORE_RE = /<<CODEBLOCK(\d+)>>/g;
|
|
42
|
+
const INLINE_PREFIX = '<<INLINECODE';
|
|
43
|
+
const INLINE_SUFFIX = '>>';
|
|
44
|
+
const INLINE_RESTORE_RE = /<<INLINECODE(\d+)>>/g;
|
|
45
|
+
/**
|
|
46
|
+
* Mask fenced code blocks and inline code spans so component transforms
|
|
47
|
+
* don't touch them. Returns the masked string and a restore function.
|
|
48
|
+
*/
|
|
49
|
+
function maskCodeBlocks(body) {
|
|
50
|
+
const blocks = [];
|
|
51
|
+
const inlines = [];
|
|
52
|
+
// 1. Mask fenced code blocks
|
|
53
|
+
let masked = body.replace(/^(```|~~~).*\n[\s\S]*?\n\1\s*$/gm, (block) => {
|
|
54
|
+
const idx = blocks.length;
|
|
55
|
+
blocks.push(block);
|
|
56
|
+
return `${BLOCK_PREFIX}${idx}${BLOCK_SUFFIX}`;
|
|
57
|
+
});
|
|
58
|
+
// 2. Mask inline code spans (double-backtick first, then single-backtick)
|
|
59
|
+
masked = masked.replace(/``[^`]+``|`[^`]+`/g, (span) => {
|
|
60
|
+
const idx = inlines.length;
|
|
61
|
+
inlines.push(span);
|
|
62
|
+
return `${INLINE_PREFIX}${idx}${INLINE_SUFFIX}`;
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
masked,
|
|
66
|
+
restore: (s) => {
|
|
67
|
+
// Restore in reverse order: inline first, then blocks
|
|
68
|
+
s = s.replace(INLINE_RESTORE_RE, (_, i) => inlines[Number(i)]);
|
|
69
|
+
s = s.replace(BLOCK_RESTORE_RE, (_, i) => blocks[Number(i)]);
|
|
70
|
+
return s;
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Apply component transforms to a body string.
|
|
76
|
+
*
|
|
77
|
+
* For each registered component name, finds JSX tags in the body and calls
|
|
78
|
+
* the corresponding transform function. Processes via convergence loop to
|
|
79
|
+
* handle nesting (inner components first, outer on subsequent passes).
|
|
80
|
+
*/
|
|
81
|
+
export function applyComponentTransforms(body, transforms) {
|
|
82
|
+
const names = Object.keys(transforms);
|
|
83
|
+
if (names.length === 0)
|
|
84
|
+
return body;
|
|
85
|
+
// Mask code blocks to protect them from transformation
|
|
86
|
+
const { masked, restore } = maskCodeBlocks(body);
|
|
87
|
+
let result = masked;
|
|
88
|
+
const MAX_PASSES = 10;
|
|
89
|
+
for (let pass = 0; pass < MAX_PASSES; pass++) {
|
|
90
|
+
let changed = false;
|
|
91
|
+
for (const name of names) {
|
|
92
|
+
const transform = transforms[name];
|
|
93
|
+
// Match self-closing tags: <Name ... />
|
|
94
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
95
|
+
const selfClosingRegex = new RegExp(`<${escapeRegex(name)}(\\s${ATTR_CONTENT}?)?\\s*/>`, 'g');
|
|
96
|
+
result = result.replace(selfClosingRegex, (raw, attrStr) => {
|
|
97
|
+
const props = parseComponentProps(attrStr?.trim() ?? '');
|
|
98
|
+
const replacement = transform(props, '');
|
|
99
|
+
if (replacement === undefined)
|
|
100
|
+
return raw;
|
|
101
|
+
changed = true;
|
|
102
|
+
return replacement;
|
|
103
|
+
});
|
|
104
|
+
// Match opening + closing tag pairs: <Name ...>children</Name>
|
|
105
|
+
// Search from an advancing offset to handle undefined (passthrough) returns
|
|
106
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
107
|
+
const openRegex = new RegExp(`<${escapeRegex(name)}(\\s${ATTR_CONTENT})?>`, 'g');
|
|
108
|
+
let openMatch;
|
|
109
|
+
while ((openMatch = openRegex.exec(result)) !== null) {
|
|
110
|
+
const openStart = openMatch.index;
|
|
111
|
+
const openEnd = openStart + openMatch[0].length;
|
|
112
|
+
const attrStr = openMatch[1]?.trim() ?? '';
|
|
113
|
+
// Find matching close tag, accounting for nesting
|
|
114
|
+
const closeTag = `</${name}>`;
|
|
115
|
+
const closeIdx = findMatchingClose(result, openEnd, name, closeTag);
|
|
116
|
+
if (closeIdx === -1)
|
|
117
|
+
break; // unmatched — stop processing this component
|
|
118
|
+
const children = result.slice(openEnd, closeIdx);
|
|
119
|
+
const fullEnd = closeIdx + closeTag.length;
|
|
120
|
+
const props = parseComponentProps(attrStr);
|
|
121
|
+
const replacement = transform(props, children);
|
|
122
|
+
if (replacement === undefined) {
|
|
123
|
+
// Skip past this match — advance regex past the closing tag
|
|
124
|
+
openRegex.lastIndex = fullEnd;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
result = result.slice(0, openStart) + replacement + result.slice(fullEnd);
|
|
128
|
+
changed = true;
|
|
129
|
+
// Reset regex to search from replacement position (it may be shorter/longer)
|
|
130
|
+
openRegex.lastIndex = openStart + replacement.length;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!changed)
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return restore(result);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Find the index of the matching closing tag, accounting for nested
|
|
140
|
+
* instances of the same component.
|
|
141
|
+
*/
|
|
142
|
+
function findMatchingClose(body, startFrom, name, closeTag) {
|
|
143
|
+
let depth = 1;
|
|
144
|
+
const pos = startFrom;
|
|
145
|
+
// Regex to find either an opening or closing tag for this component
|
|
146
|
+
// eslint-disable-next-line security/detect-non-literal-regexp
|
|
147
|
+
const tagRegex = new RegExp(`<${escapeRegex(name)}(?:\\s${ATTR_CONTENT})?>|<${escapeRegex(name)}(?:\\s${ATTR_CONTENT})?\\s*/>|${escapeRegex(closeTag)}`, 'g');
|
|
148
|
+
tagRegex.lastIndex = pos;
|
|
149
|
+
let match;
|
|
150
|
+
while ((match = tagRegex.exec(body)) !== null) {
|
|
151
|
+
const tag = match[0];
|
|
152
|
+
if (tag === closeTag) {
|
|
153
|
+
depth--;
|
|
154
|
+
if (depth === 0)
|
|
155
|
+
return match.index;
|
|
156
|
+
}
|
|
157
|
+
else if (!tag.endsWith('/>')) {
|
|
158
|
+
// Opening tag (not self-closing)
|
|
159
|
+
depth++;
|
|
160
|
+
}
|
|
161
|
+
// Self-closing tags don't affect depth
|
|
162
|
+
}
|
|
163
|
+
return -1;
|
|
164
|
+
}
|
|
165
|
+
function escapeRegex(s) {
|
|
166
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=transform-components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-components.js","sourceRoot":"","sources":["../../src/ai/transform-components.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/types.d.ts
CHANGED
|
@@ -74,6 +74,52 @@ export type FieldTransformFn = (value: unknown, fieldConfig: FieldConfig) => str
|
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
76
|
export type FieldTransforms = Record<string, Record<string, FieldTransformFn>>;
|
|
77
|
+
/**
|
|
78
|
+
* Parsed props from a JSX component tag.
|
|
79
|
+
* Values are always strings (parsed from attribute syntax).
|
|
80
|
+
* Boolean attributes (no value) are represented as `"true"`.
|
|
81
|
+
*/
|
|
82
|
+
export type ComponentProps = Record<string, string>;
|
|
83
|
+
/**
|
|
84
|
+
* Transform function for a specific MDX component.
|
|
85
|
+
* Return `undefined` to keep the original JSX unchanged.
|
|
86
|
+
*
|
|
87
|
+
* @param props - Parsed props from the JSX tag
|
|
88
|
+
* @param children - Inner content between open/close tags (empty string for self-closing)
|
|
89
|
+
* @returns Markdown string to replace the component, or `undefined` to keep original
|
|
90
|
+
*/
|
|
91
|
+
export type ComponentTransformFn = (props: ComponentProps, children: string) => string | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Component transform overrides, keyed by PascalCase component name.
|
|
94
|
+
* Applied to all MD/MDX entry types — component names are global to a project.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* {
|
|
99
|
+
* Callout: (props, children) => `> **${props.type ?? 'Note'}:** ${children}`,
|
|
100
|
+
* Spacer: () => '',
|
|
101
|
+
* ChecklistItem: (props, children) =>
|
|
102
|
+
* `- [ ] ${props.label ? `**${props.label}:** ` : ''}${children}`,
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export type ComponentTransforms = Record<string, ComponentTransformFn>;
|
|
107
|
+
/**
|
|
108
|
+
* Body transform function for MD/MDX entry bodies.
|
|
109
|
+
* Receives the body after stripMdxImports and componentTransforms have been applied.
|
|
110
|
+
*/
|
|
111
|
+
export type BodyTransformFn = (body: string, entry: AIEntryMeta) => string;
|
|
112
|
+
/**
|
|
113
|
+
* Body transform overrides, keyed by entry type name.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* {
|
|
118
|
+
* guideline: (body) => body.replace(/\s*\|\|[^\n]+/g, ''),
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export type BodyTransforms = Record<string, BodyTransformFn>;
|
|
77
123
|
/**
|
|
78
124
|
* Main AI content configuration. Shared by route handler and build utility.
|
|
79
125
|
*/
|
|
@@ -84,6 +130,10 @@ export interface AIContentConfig {
|
|
|
84
130
|
bundles?: BundleConfig[];
|
|
85
131
|
/** Per-entry-type, per-field markdown overrides */
|
|
86
132
|
fieldTransforms?: FieldTransforms;
|
|
133
|
+
/** Per-component MDX transforms (applied before bodyTransforms) */
|
|
134
|
+
componentTransforms?: ComponentTransforms;
|
|
135
|
+
/** Per-entry-type body transforms (applied after componentTransforms) */
|
|
136
|
+
bodyTransforms?: BodyTransforms;
|
|
87
137
|
}
|
|
88
138
|
/**
|
|
89
139
|
* Identity function for type-checking AI content config.
|
package/dist/ai/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAM5C;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sGAAsG;IACtG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,MAAM,EAAE,YAAY,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,KAAK,MAAM,CAAA;AAEnF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAE9E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,gDAAgD;IAChD,OAAO,CAAC,EAAE,YAAY,EAAE,CAAA;IACxB,mDAAmD;IACnD,eAAe,CAAC,EAAE,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsJH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAuB;IAC3D,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1974,6 +1974,119 @@ function stripMdxImports(body) {
|
|
|
1974
1974
|
return result.join("\n").replace(/\n{3,}/g, "\n\n").trim();
|
|
1975
1975
|
}
|
|
1976
1976
|
|
|
1977
|
+
// dist/ai/transform-components.js
|
|
1978
|
+
function parseComponentProps(attrString) {
|
|
1979
|
+
const props = {};
|
|
1980
|
+
if (!attrString)
|
|
1981
|
+
return props;
|
|
1982
|
+
const attrRegex = /(\w+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|\{([^}]*)\}))?/g;
|
|
1983
|
+
let match;
|
|
1984
|
+
while ((match = attrRegex.exec(attrString)) !== null) {
|
|
1985
|
+
const name = match[1];
|
|
1986
|
+
const value = match[2] ?? match[3] ?? match[4] ?? "true";
|
|
1987
|
+
props[name] = value;
|
|
1988
|
+
}
|
|
1989
|
+
return props;
|
|
1990
|
+
}
|
|
1991
|
+
var ATTR_CONTENT = `(?:[^>"']|"[^"]*"|'[^']*')*`;
|
|
1992
|
+
var BLOCK_PREFIX = "<<CODEBLOCK";
|
|
1993
|
+
var BLOCK_SUFFIX = ">>";
|
|
1994
|
+
var BLOCK_RESTORE_RE = /<<CODEBLOCK(\d+)>>/g;
|
|
1995
|
+
var INLINE_PREFIX = "<<INLINECODE";
|
|
1996
|
+
var INLINE_SUFFIX = ">>";
|
|
1997
|
+
var INLINE_RESTORE_RE = /<<INLINECODE(\d+)>>/g;
|
|
1998
|
+
function maskCodeBlocks(body) {
|
|
1999
|
+
const blocks = [];
|
|
2000
|
+
const inlines = [];
|
|
2001
|
+
let masked = body.replace(/^(```|~~~).*\n[\s\S]*?\n\1\s*$/gm, (block) => {
|
|
2002
|
+
const idx = blocks.length;
|
|
2003
|
+
blocks.push(block);
|
|
2004
|
+
return `${BLOCK_PREFIX}${idx}${BLOCK_SUFFIX}`;
|
|
2005
|
+
});
|
|
2006
|
+
masked = masked.replace(/``[^`]+``|`[^`]+`/g, (span) => {
|
|
2007
|
+
const idx = inlines.length;
|
|
2008
|
+
inlines.push(span);
|
|
2009
|
+
return `${INLINE_PREFIX}${idx}${INLINE_SUFFIX}`;
|
|
2010
|
+
});
|
|
2011
|
+
return {
|
|
2012
|
+
masked,
|
|
2013
|
+
restore: (s) => {
|
|
2014
|
+
s = s.replace(INLINE_RESTORE_RE, (_, i) => inlines[Number(i)]);
|
|
2015
|
+
s = s.replace(BLOCK_RESTORE_RE, (_, i) => blocks[Number(i)]);
|
|
2016
|
+
return s;
|
|
2017
|
+
}
|
|
2018
|
+
};
|
|
2019
|
+
}
|
|
2020
|
+
function applyComponentTransforms(body, transforms) {
|
|
2021
|
+
const names = Object.keys(transforms);
|
|
2022
|
+
if (names.length === 0)
|
|
2023
|
+
return body;
|
|
2024
|
+
const { masked, restore } = maskCodeBlocks(body);
|
|
2025
|
+
let result = masked;
|
|
2026
|
+
const MAX_PASSES = 10;
|
|
2027
|
+
for (let pass = 0; pass < MAX_PASSES; pass++) {
|
|
2028
|
+
let changed = false;
|
|
2029
|
+
for (const name of names) {
|
|
2030
|
+
const transform = transforms[name];
|
|
2031
|
+
const selfClosingRegex = new RegExp(`<${escapeRegex(name)}(\\s${ATTR_CONTENT}?)?\\s*/>`, "g");
|
|
2032
|
+
result = result.replace(selfClosingRegex, (raw, attrStr) => {
|
|
2033
|
+
const props = parseComponentProps(attrStr?.trim() ?? "");
|
|
2034
|
+
const replacement = transform(props, "");
|
|
2035
|
+
if (replacement === void 0)
|
|
2036
|
+
return raw;
|
|
2037
|
+
changed = true;
|
|
2038
|
+
return replacement;
|
|
2039
|
+
});
|
|
2040
|
+
const openRegex = new RegExp(`<${escapeRegex(name)}(\\s${ATTR_CONTENT})?>`, "g");
|
|
2041
|
+
let openMatch;
|
|
2042
|
+
while ((openMatch = openRegex.exec(result)) !== null) {
|
|
2043
|
+
const openStart = openMatch.index;
|
|
2044
|
+
const openEnd = openStart + openMatch[0].length;
|
|
2045
|
+
const attrStr = openMatch[1]?.trim() ?? "";
|
|
2046
|
+
const closeTag = `</${name}>`;
|
|
2047
|
+
const closeIdx = findMatchingClose(result, openEnd, name, closeTag);
|
|
2048
|
+
if (closeIdx === -1)
|
|
2049
|
+
break;
|
|
2050
|
+
const children = result.slice(openEnd, closeIdx);
|
|
2051
|
+
const fullEnd = closeIdx + closeTag.length;
|
|
2052
|
+
const props = parseComponentProps(attrStr);
|
|
2053
|
+
const replacement = transform(props, children);
|
|
2054
|
+
if (replacement === void 0) {
|
|
2055
|
+
openRegex.lastIndex = fullEnd;
|
|
2056
|
+
continue;
|
|
2057
|
+
}
|
|
2058
|
+
result = result.slice(0, openStart) + replacement + result.slice(fullEnd);
|
|
2059
|
+
changed = true;
|
|
2060
|
+
openRegex.lastIndex = openStart + replacement.length;
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
if (!changed)
|
|
2064
|
+
break;
|
|
2065
|
+
}
|
|
2066
|
+
return restore(result);
|
|
2067
|
+
}
|
|
2068
|
+
function findMatchingClose(body, startFrom, name, closeTag) {
|
|
2069
|
+
let depth = 1;
|
|
2070
|
+
const pos = startFrom;
|
|
2071
|
+
const tagRegex = new RegExp(`<${escapeRegex(name)}(?:\\s${ATTR_CONTENT})?>|<${escapeRegex(name)}(?:\\s${ATTR_CONTENT})?\\s*/>|${escapeRegex(closeTag)}`, "g");
|
|
2072
|
+
tagRegex.lastIndex = pos;
|
|
2073
|
+
let match;
|
|
2074
|
+
while ((match = tagRegex.exec(body)) !== null) {
|
|
2075
|
+
const tag = match[0];
|
|
2076
|
+
if (tag === closeTag) {
|
|
2077
|
+
depth--;
|
|
2078
|
+
if (depth === 0)
|
|
2079
|
+
return match.index;
|
|
2080
|
+
} else if (!tag.endsWith("/>")) {
|
|
2081
|
+
depth++;
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
return -1;
|
|
2085
|
+
}
|
|
2086
|
+
function escapeRegex(s) {
|
|
2087
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
2088
|
+
}
|
|
2089
|
+
|
|
1977
2090
|
// dist/ai/json-to-markdown.js
|
|
1978
2091
|
function entryToMarkdown(entry, config) {
|
|
1979
2092
|
const parts = [];
|
|
@@ -2017,7 +2130,14 @@ function renderMarkdownEntry(entry, config, skipFields) {
|
|
|
2017
2130
|
parts.push("");
|
|
2018
2131
|
}
|
|
2019
2132
|
if (entry.body) {
|
|
2020
|
-
|
|
2133
|
+
let body = entry.format === "mdx" ? stripMdxImports(entry.body) : entry.body;
|
|
2134
|
+
if (config?.componentTransforms && Object.keys(config.componentTransforms).length > 0) {
|
|
2135
|
+
body = applyComponentTransforms(body, config.componentTransforms);
|
|
2136
|
+
}
|
|
2137
|
+
const bodyTransformFn = config?.bodyTransforms?.[entry.entryType];
|
|
2138
|
+
if (bodyTransformFn) {
|
|
2139
|
+
body = bodyTransformFn(body, entry);
|
|
2140
|
+
}
|
|
2021
2141
|
parts.push(body.trim());
|
|
2022
2142
|
parts.push("");
|
|
2023
2143
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"//": "@codemirror/language, @lezer/highlight: workaround — @mdxeditor/editor uses cm6-theme-basic-light which peer-requires these but mdxeditor doesn't declare them as dependencies",
|
|
3
3
|
"name": "canopycms",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.26",
|
|
5
5
|
"description": "CanopyCMS core package: schema-driven content, branch-aware editing, and editor UI for Next.js.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|