@refrakt-md/language-server 0.5.0 → 0.6.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.
- package/package.json +3 -3
- package/dist/parser/document.d.ts +0 -36
- package/dist/parser/document.d.ts.map +0 -1
- package/dist/parser/document.js +0 -152
- package/dist/parser/document.js.map +0 -1
- package/dist/parser/markdoc.d.ts +0 -12
- package/dist/parser/markdoc.d.ts.map +0 -1
- package/dist/parser/markdoc.js +0 -20
- package/dist/parser/markdoc.js.map +0 -1
- package/dist/providers/completion.d.ts +0 -4
- package/dist/providers/completion.d.ts.map +0 -1
- package/dist/providers/completion.js +0 -200
- package/dist/providers/completion.js.map +0 -1
- package/dist/providers/diagnostics.d.ts +0 -4
- package/dist/providers/diagnostics.d.ts.map +0 -1
- package/dist/providers/diagnostics.js +0 -50
- package/dist/providers/diagnostics.js.map +0 -1
- package/dist/providers/hover.d.ts +0 -4
- package/dist/providers/hover.d.ts.map +0 -1
- package/dist/providers/hover.js +0 -157
- package/dist/providers/hover.js.map +0 -1
- package/dist/providers/inspector.d.ts +0 -18
- package/dist/providers/inspector.d.ts.map +0 -1
- package/dist/providers/inspector.js +0 -257
- package/dist/providers/inspector.js.map +0 -1
- package/dist/registry/loader.d.ts +0 -108
- package/dist/registry/loader.d.ts.map +0 -1
- package/dist/registry/loader.js +0 -79
- package/dist/registry/loader.js.map +0 -1
- package/dist/server.d.ts +0 -3
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -51
- package/dist/server.js.map +0 -1
package/dist/providers/hover.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { MarkupKind, } from 'vscode-languageserver';
|
|
2
|
-
import { getRune } from '../registry/loader.js';
|
|
3
|
-
export function provideHover(params, documents) {
|
|
4
|
-
const document = documents.get(params.textDocument.uri);
|
|
5
|
-
if (!document)
|
|
6
|
-
return null;
|
|
7
|
-
const text = document.getText();
|
|
8
|
-
const offset = document.offsetAt(params.position);
|
|
9
|
-
// Try to find a rune tag name or attribute at the cursor position
|
|
10
|
-
const runeHover = getRuneHover(text, offset);
|
|
11
|
-
if (runeHover)
|
|
12
|
-
return runeHover;
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
function getRuneHover(text, offset) {
|
|
16
|
-
// Find the tag context around the cursor
|
|
17
|
-
// Look for {% ... %} containing the cursor
|
|
18
|
-
const before = text.slice(0, offset);
|
|
19
|
-
const after = text.slice(offset);
|
|
20
|
-
// Find nearest {% before cursor
|
|
21
|
-
const openIdx = before.lastIndexOf('{%');
|
|
22
|
-
if (openIdx === -1)
|
|
23
|
-
return null;
|
|
24
|
-
// Find the next %} after that opening
|
|
25
|
-
const closeSearch = text.slice(openIdx);
|
|
26
|
-
const closeOffset = closeSearch.indexOf('%}');
|
|
27
|
-
if (closeOffset === -1)
|
|
28
|
-
return null;
|
|
29
|
-
const closeIdx = openIdx + closeOffset + 2;
|
|
30
|
-
// Cursor must be within this tag
|
|
31
|
-
if (offset < openIdx || offset > closeIdx)
|
|
32
|
-
return null;
|
|
33
|
-
const tagContent = text.slice(openIdx, closeIdx);
|
|
34
|
-
// Parse the tag content
|
|
35
|
-
const isClosing = /^\{%\s*\//.test(tagContent);
|
|
36
|
-
const tagMatch = isClosing
|
|
37
|
-
? tagContent.match(/^\{%\s*\/\s*([a-zA-Z][a-zA-Z0-9-]*)/)
|
|
38
|
-
: tagContent.match(/^\{%\s*([a-zA-Z][a-zA-Z0-9-]*)/);
|
|
39
|
-
if (!tagMatch)
|
|
40
|
-
return null;
|
|
41
|
-
const tagName = tagMatch[1];
|
|
42
|
-
const tagNameStart = openIdx + tagMatch[0].indexOf(tagName);
|
|
43
|
-
const tagNameEnd = tagNameStart + tagName.length;
|
|
44
|
-
// Check if cursor is on the tag name
|
|
45
|
-
if (offset >= tagNameStart && offset <= tagNameEnd) {
|
|
46
|
-
return buildRuneHover(tagName);
|
|
47
|
-
}
|
|
48
|
-
// Check if cursor is on an attribute name (only for opening tags)
|
|
49
|
-
if (!isClosing) {
|
|
50
|
-
const afterTagName = tagContent.slice(tagMatch[0].length - (openIdx - openIdx));
|
|
51
|
-
// Find attribute names in the tag
|
|
52
|
-
const attrRegex = /([a-zA-Z_][a-zA-Z0-9_-]*)\s*=/g;
|
|
53
|
-
const tagStart = openIdx;
|
|
54
|
-
// Search within the tag content for attribute names
|
|
55
|
-
const contentAfterTag = text.slice(tagNameEnd, closeIdx);
|
|
56
|
-
let attrMatch;
|
|
57
|
-
while ((attrMatch = attrRegex.exec(contentAfterTag)) !== null) {
|
|
58
|
-
const attrStart = tagNameEnd + attrMatch.index;
|
|
59
|
-
const attrEnd = attrStart + attrMatch[1].length;
|
|
60
|
-
if (offset >= attrStart && offset <= attrEnd) {
|
|
61
|
-
return buildAttributeHover(tagName, attrMatch[1]);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
function buildRuneHover(tagName) {
|
|
68
|
-
const rune = getRune(tagName);
|
|
69
|
-
if (!rune)
|
|
70
|
-
return null;
|
|
71
|
-
const lines = [];
|
|
72
|
-
lines.push(`### ${rune.name}`);
|
|
73
|
-
if (rune.allNames.length > 1) {
|
|
74
|
-
const aliases = rune.allNames.filter(n => n !== rune.name);
|
|
75
|
-
lines.push(`*Aliases: ${aliases.join(', ')}*`);
|
|
76
|
-
}
|
|
77
|
-
lines.push('');
|
|
78
|
-
lines.push(rune.description);
|
|
79
|
-
if (Object.keys(rune.reinterprets).length > 0) {
|
|
80
|
-
lines.push('');
|
|
81
|
-
lines.push('**Reinterprets:**');
|
|
82
|
-
for (const [element, meaning] of Object.entries(rune.reinterprets)) {
|
|
83
|
-
lines.push(`- ${element} → ${meaning}`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (rune.seoType) {
|
|
87
|
-
lines.push('');
|
|
88
|
-
lines.push(`**SEO type:** \`${rune.seoType}\``);
|
|
89
|
-
}
|
|
90
|
-
const attrs = Object.entries(rune.attributes);
|
|
91
|
-
if (attrs.length > 0) {
|
|
92
|
-
lines.push('');
|
|
93
|
-
lines.push('**Attributes:**');
|
|
94
|
-
for (const [name, attr] of attrs) {
|
|
95
|
-
const parts = [`\`${name}\``];
|
|
96
|
-
if (attr.required)
|
|
97
|
-
parts.push('*(required)*');
|
|
98
|
-
parts.push(`— ${formatType(attr)}`);
|
|
99
|
-
if (attr.default !== undefined)
|
|
100
|
-
parts.push(`(default: \`${JSON.stringify(attr.default)}\`)`);
|
|
101
|
-
lines.push(`- ${parts.join(' ')}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return {
|
|
105
|
-
contents: {
|
|
106
|
-
kind: MarkupKind.Markdown,
|
|
107
|
-
value: lines.join('\n'),
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
function buildAttributeHover(tagName, attrName) {
|
|
112
|
-
const rune = getRune(tagName);
|
|
113
|
-
if (!rune)
|
|
114
|
-
return null;
|
|
115
|
-
const attr = rune.attributes[attrName];
|
|
116
|
-
if (!attr)
|
|
117
|
-
return null;
|
|
118
|
-
const lines = [];
|
|
119
|
-
lines.push(`**${attrName}** on \`{% ${rune.name} %}\``);
|
|
120
|
-
lines.push('');
|
|
121
|
-
const typeLine = [`**Type:** ${formatType(attr)}`];
|
|
122
|
-
lines.push(typeLine.join(''));
|
|
123
|
-
if (attr.required) {
|
|
124
|
-
lines.push('**Required:** yes');
|
|
125
|
-
}
|
|
126
|
-
if (attr.default !== undefined) {
|
|
127
|
-
lines.push(`**Default:** \`${JSON.stringify(attr.default)}\``);
|
|
128
|
-
}
|
|
129
|
-
if (attr.matches && Array.isArray(attr.matches)) {
|
|
130
|
-
lines.push('');
|
|
131
|
-
lines.push('**Allowed values:**');
|
|
132
|
-
for (const value of attr.matches) {
|
|
133
|
-
lines.push(`- \`${value}\``);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return {
|
|
137
|
-
contents: {
|
|
138
|
-
kind: MarkupKind.Markdown,
|
|
139
|
-
value: lines.join('\n'),
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
function formatType(attr) {
|
|
144
|
-
if (attr.matches && Array.isArray(attr.matches)) {
|
|
145
|
-
return attr.matches.map((v) => `\`"${v}"\``).join(' | ');
|
|
146
|
-
}
|
|
147
|
-
if (attr.type === String)
|
|
148
|
-
return '`string`';
|
|
149
|
-
if (attr.type === Number)
|
|
150
|
-
return '`number`';
|
|
151
|
-
if (attr.type === Boolean)
|
|
152
|
-
return '`boolean`';
|
|
153
|
-
if (Array.isArray(attr.type))
|
|
154
|
-
return '`array`';
|
|
155
|
-
return '`any`';
|
|
156
|
-
}
|
|
157
|
-
//# sourceMappingURL=hover.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../../src/providers/hover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Position, TextDocuments } from 'vscode-languageserver';
|
|
2
|
-
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
-
export interface InspectorResult {
|
|
4
|
-
runeName: string;
|
|
5
|
-
stages: {
|
|
6
|
-
ast: object;
|
|
7
|
-
transform: object;
|
|
8
|
-
serialized: object;
|
|
9
|
-
identity: object | null;
|
|
10
|
-
};
|
|
11
|
-
identityError?: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Inspect the rune at the given cursor position, running the full
|
|
15
|
-
* transformation pipeline and returning debug output for each stage.
|
|
16
|
-
*/
|
|
17
|
-
export declare function inspectRuneAtPosition(documents: TextDocuments<TextDocument>, uri: string, position: Position, workspaceRoot?: string): InspectorResult | null;
|
|
18
|
-
//# sourceMappingURL=inspector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/providers/inspector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAUvE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA2LD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,CAAC,YAAY,CAAC,EACtC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,GAAG,IAAI,CA2ExB"}
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import Markdoc from '@markdoc/markdoc';
|
|
2
|
-
import { serialize } from '@refrakt-md/runes';
|
|
3
|
-
import { createTransform } from '@refrakt-md/transform';
|
|
4
|
-
import { getMarkdocTags, getMarkdocNodes } from '../registry/loader.js';
|
|
5
|
-
import { createRequire } from 'node:module';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { readFileSync } from 'node:fs';
|
|
8
|
-
const { Tag } = Markdoc;
|
|
9
|
-
/**
|
|
10
|
-
* Find the innermost rune tag node at the given cursor position.
|
|
11
|
-
* Walks the AST depth-first, preferring the deepest (most nested) tag
|
|
12
|
-
* whose line range contains the cursor line.
|
|
13
|
-
*/
|
|
14
|
-
function findRuneAtPosition(ast, line) {
|
|
15
|
-
let best = null;
|
|
16
|
-
for (const node of ast.walk()) {
|
|
17
|
-
if (node.type !== 'tag' || !node.tag)
|
|
18
|
-
continue;
|
|
19
|
-
if (!node.lines || node.lines.length === 0)
|
|
20
|
-
continue;
|
|
21
|
-
const startLine = node.lines[0];
|
|
22
|
-
const endLine = node.lines[node.lines.length - 1];
|
|
23
|
-
if (line >= startLine && line <= endLine) {
|
|
24
|
-
// Prefer the innermost (deepest) tag — later matches in walk() are deeper
|
|
25
|
-
// or same level but we want the most specific one, so always update
|
|
26
|
-
if (!best || (node.lines.length <= best.lines.length)) {
|
|
27
|
-
best = node;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return best;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Summarize a Markdoc AST node for display in the inspector.
|
|
35
|
-
*/
|
|
36
|
-
function summarizeAstNode(node) {
|
|
37
|
-
const summary = {
|
|
38
|
-
type: node.type,
|
|
39
|
-
};
|
|
40
|
-
if (node.tag)
|
|
41
|
-
summary.tag = node.tag;
|
|
42
|
-
if (node.attributes && Object.keys(node.attributes).length > 0) {
|
|
43
|
-
summary.attributes = node.attributes;
|
|
44
|
-
}
|
|
45
|
-
if (node.lines && node.lines.length > 0) {
|
|
46
|
-
summary.lines = [node.lines[0], node.lines[node.lines.length - 1]];
|
|
47
|
-
}
|
|
48
|
-
if (node.children && node.children.length > 0) {
|
|
49
|
-
summary.children = node.children.map(child => {
|
|
50
|
-
if (child.type === 'tag' && child.tag) {
|
|
51
|
-
return { type: 'tag', tag: child.tag };
|
|
52
|
-
}
|
|
53
|
-
return { type: child.type };
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return summary;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Walk a renderable tree (Tag instances) to find a node whose typeof
|
|
60
|
-
* attribute matches a given rune type.
|
|
61
|
-
*/
|
|
62
|
-
function findRenderableByTypeof(tree, runeName) {
|
|
63
|
-
if (tree === null || tree === undefined)
|
|
64
|
-
return null;
|
|
65
|
-
if (typeof tree === 'string' || typeof tree === 'number')
|
|
66
|
-
return null;
|
|
67
|
-
if (Tag.isTag(tree)) {
|
|
68
|
-
// Rune schemas set typeof on the outermost rendered tag
|
|
69
|
-
if (tree.attributes?.typeof) {
|
|
70
|
-
// Check if this node's typeof relates to our rune
|
|
71
|
-
// The typeof is typically the PascalCase schema type name
|
|
72
|
-
return tree;
|
|
73
|
-
}
|
|
74
|
-
// Search children
|
|
75
|
-
for (const child of tree.children) {
|
|
76
|
-
const found = findRenderableByTypeof(child, runeName);
|
|
77
|
-
if (found)
|
|
78
|
-
return found;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (Array.isArray(tree)) {
|
|
82
|
-
for (const child of tree) {
|
|
83
|
-
const found = findRenderableByTypeof(child, runeName);
|
|
84
|
-
if (found)
|
|
85
|
-
return found;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Walk the full transformed tree to collect all nodes with typeof,
|
|
92
|
-
* in document order.
|
|
93
|
-
*/
|
|
94
|
-
function collectRenderablesByTypeof(tree) {
|
|
95
|
-
const results = [];
|
|
96
|
-
function walk(node) {
|
|
97
|
-
if (node === null || node === undefined)
|
|
98
|
-
return;
|
|
99
|
-
if (typeof node === 'string' || typeof node === 'number')
|
|
100
|
-
return;
|
|
101
|
-
if (Tag.isTag(node)) {
|
|
102
|
-
if (node.attributes?.typeof) {
|
|
103
|
-
results.push(node);
|
|
104
|
-
}
|
|
105
|
-
for (const child of node.children) {
|
|
106
|
-
walk(child);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if (Array.isArray(node)) {
|
|
110
|
-
for (const child of node) {
|
|
111
|
-
walk(child);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
walk(tree);
|
|
116
|
-
return results;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Summarize a renderable Tag node for display.
|
|
120
|
-
*/
|
|
121
|
-
function summarizeRenderable(node) {
|
|
122
|
-
if (node === null || node === undefined)
|
|
123
|
-
return { value: null };
|
|
124
|
-
if (typeof node === 'string')
|
|
125
|
-
return { text: node };
|
|
126
|
-
if (typeof node === 'number')
|
|
127
|
-
return { value: node };
|
|
128
|
-
if (Tag.isTag(node)) {
|
|
129
|
-
const summary = {
|
|
130
|
-
name: node.name,
|
|
131
|
-
};
|
|
132
|
-
if (node.attributes && Object.keys(node.attributes).length > 0) {
|
|
133
|
-
summary.attributes = node.attributes;
|
|
134
|
-
}
|
|
135
|
-
if (node.children && node.children.length > 0) {
|
|
136
|
-
summary.children = node.children.map(child => {
|
|
137
|
-
if (Tag.isTag(child)) {
|
|
138
|
-
const childSummary = { name: child.name };
|
|
139
|
-
if (child.attributes?.typeof)
|
|
140
|
-
childSummary.typeof = child.attributes.typeof;
|
|
141
|
-
if (child.attributes?.property)
|
|
142
|
-
childSummary.property = child.attributes.property;
|
|
143
|
-
if (child.attributes?.['data-name'])
|
|
144
|
-
childSummary['data-name'] = child.attributes['data-name'];
|
|
145
|
-
return childSummary;
|
|
146
|
-
}
|
|
147
|
-
if (typeof child === 'string')
|
|
148
|
-
return { text: child.slice(0, 50) };
|
|
149
|
-
return { type: typeof child };
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
return summary;
|
|
153
|
-
}
|
|
154
|
-
return { value: node };
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Try to load the theme's identity transform from the workspace.
|
|
158
|
-
*/
|
|
159
|
-
function loadThemeTransform(workspaceRoot) {
|
|
160
|
-
try {
|
|
161
|
-
const configPath = join(workspaceRoot, 'refrakt.config.json');
|
|
162
|
-
const configText = readFileSync(configPath, 'utf8');
|
|
163
|
-
const config = JSON.parse(configText);
|
|
164
|
-
if (!config.theme) {
|
|
165
|
-
return { transform: null, error: 'No "theme" field in refrakt.config.json' };
|
|
166
|
-
}
|
|
167
|
-
const req = createRequire(join(workspaceRoot, 'package.json'));
|
|
168
|
-
const themeTransform = req(`${config.theme}/transform`);
|
|
169
|
-
const themeConfig = themeTransform.luminaConfig ?? themeTransform.default;
|
|
170
|
-
if (!themeConfig) {
|
|
171
|
-
return { transform: null, error: `Theme "${config.theme}" does not export a config` };
|
|
172
|
-
}
|
|
173
|
-
return { transform: createTransform(themeConfig) };
|
|
174
|
-
}
|
|
175
|
-
catch (err) {
|
|
176
|
-
if (err?.code === 'ENOENT') {
|
|
177
|
-
return { transform: null, error: 'No refrakt.config.json found' };
|
|
178
|
-
}
|
|
179
|
-
if (err?.code === 'MODULE_NOT_FOUND') {
|
|
180
|
-
return { transform: null, error: `Theme package not installed: ${err.message}` };
|
|
181
|
-
}
|
|
182
|
-
return { transform: null, error: `Failed to load theme: ${err.message}` };
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Inspect the rune at the given cursor position, running the full
|
|
187
|
-
* transformation pipeline and returning debug output for each stage.
|
|
188
|
-
*/
|
|
189
|
-
export function inspectRuneAtPosition(documents, uri, position, workspaceRoot) {
|
|
190
|
-
const document = documents.get(uri);
|
|
191
|
-
if (!document)
|
|
192
|
-
return null;
|
|
193
|
-
const text = document.getText();
|
|
194
|
-
// Stage 1: Parse to AST
|
|
195
|
-
const ast = Markdoc.parse(text);
|
|
196
|
-
// Find the rune tag at cursor
|
|
197
|
-
const runeNode = findRuneAtPosition(ast, position.line);
|
|
198
|
-
if (!runeNode || !runeNode.tag)
|
|
199
|
-
return null;
|
|
200
|
-
const runeName = runeNode.tag;
|
|
201
|
-
// Summarize AST for the found rune
|
|
202
|
-
const astStage = summarizeAstNode(runeNode);
|
|
203
|
-
// Stage 2: Transform
|
|
204
|
-
const tags = getMarkdocTags();
|
|
205
|
-
const nodes = getMarkdocNodes();
|
|
206
|
-
const transformed = Markdoc.transform(ast, { tags, nodes });
|
|
207
|
-
// Find the matching renderable node — collect all typeof nodes in order,
|
|
208
|
-
// then find the one corresponding to our rune by matching tag name index
|
|
209
|
-
const allTagNodes = [];
|
|
210
|
-
for (const node of ast.walk()) {
|
|
211
|
-
if (node.type === 'tag' && node.tag) {
|
|
212
|
-
allTagNodes.push(node);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
const runeIndex = allTagNodes.indexOf(runeNode);
|
|
216
|
-
const allRenderables = collectRenderablesByTypeof(transformed);
|
|
217
|
-
const matchedRenderable = runeIndex >= 0 && runeIndex < allRenderables.length
|
|
218
|
-
? allRenderables[runeIndex]
|
|
219
|
-
: findRenderableByTypeof(transformed, runeName);
|
|
220
|
-
const transformStage = matchedRenderable
|
|
221
|
-
? summarizeRenderable(matchedRenderable)
|
|
222
|
-
: { error: 'Could not find transformed output for this rune' };
|
|
223
|
-
// Stage 3: Serialize
|
|
224
|
-
const serializedStage = matchedRenderable
|
|
225
|
-
? serialize(matchedRenderable)
|
|
226
|
-
: { error: 'No transform output to serialize' };
|
|
227
|
-
// Stage 4: Identity Transform (theme-dependent)
|
|
228
|
-
let identityStage = null;
|
|
229
|
-
let identityError;
|
|
230
|
-
if (matchedRenderable && workspaceRoot) {
|
|
231
|
-
const { transform, error } = loadThemeTransform(workspaceRoot);
|
|
232
|
-
if (transform) {
|
|
233
|
-
const serialized = serialize(matchedRenderable);
|
|
234
|
-
identityStage = transform(serialized);
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
identityError = error;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
else if (!workspaceRoot) {
|
|
241
|
-
identityError = 'Workspace root not available';
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
identityError = 'No transform output for identity transform';
|
|
245
|
-
}
|
|
246
|
-
return {
|
|
247
|
-
runeName,
|
|
248
|
-
stages: {
|
|
249
|
-
ast: astStage,
|
|
250
|
-
transform: transformStage,
|
|
251
|
-
serialized: serializedStage,
|
|
252
|
-
identity: identityStage,
|
|
253
|
-
},
|
|
254
|
-
identityError,
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
//# sourceMappingURL=inspector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/providers/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAIvC,OAAO,EAAE,SAAS,EAAiB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAaxB;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,GAAS,EAAE,IAAY;IACjD,IAAI,IAAI,GAAgB,IAAI,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,SAAS;QAC/C,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAErD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAElD,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACzC,0EAA0E;YAC1E,oEAAoE;YACpE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,IAAU;IAClC,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IAEF,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;YACzC,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAAwB,EAAE,QAAgB;IACxE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEtE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,wDAAwD;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC5B,kDAAkD;YAClD,0DAA0D;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,kBAAkB;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,0BAA0B,CAAC,IAAwB;IAC1D,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,SAAS,IAAI,CAAC,IAAwB;QACpC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAEjE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAwB;IACnD,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAErD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAA4B;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrB,MAAM,YAAY,GAA4B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;oBACnE,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM;wBAAE,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;oBAC5E,IAAI,KAAK,CAAC,UAAU,EAAE,QAAQ;wBAAE,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAClF,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC;wBAAE,YAAY,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBAC/F,OAAO,YAAY,CAAC;gBACtB,CAAC;gBACD,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACnE,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QAC/E,CAAC;QAED,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,cAAc,CAAC,YAAY,IAAI,cAAc,CAAC,OAAO,CAAC;QAE1E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,MAAM,CAAC,KAAK,4BAA4B,EAAE,CAAC;QACxF,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,GAAG,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QACnF,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,yBAAyB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAsC,EACtC,GAAW,EACX,QAAkB,EAClB,aAAsB;IAEtB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAEhC,wBAAwB;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhC,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;IAE9B,mCAAmC;IACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE5C,qBAAqB;IACrB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE5D,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,WAAW,GAAW,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,cAAc,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IAC/D,MAAM,iBAAiB,GAAG,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,cAAc,CAAC,MAAM;QAC3E,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAElD,MAAM,cAAc,GAAG,iBAAiB;QACtC,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;QACxC,CAAC,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IAEjE,qBAAqB;IACrB,MAAM,eAAe,GAAG,iBAAiB;QACvC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAW;QACxC,CAAC,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;IAElD,gDAAgD;IAChD,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,aAAiC,CAAC;IAEtC,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAChD,aAAa,GAAG,SAAS,CAAC,UAAU,CAAW,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1B,aAAa,GAAG,8BAA8B,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,4CAA4C,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,QAAQ;QACR,MAAM,EAAE;YACN,GAAG,EAAE,QAAQ;YACb,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,eAAe;YAC3B,QAAQ,EAAE,aAAa;SACxB;QACD,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import type { SchemaAttribute } from '@markdoc/markdoc';
|
|
3
|
-
export interface RuneInfo {
|
|
4
|
-
/** Primary rune name */
|
|
5
|
-
name: string;
|
|
6
|
-
/** All names (primary + aliases) */
|
|
7
|
-
allNames: string[];
|
|
8
|
-
/** Human-readable description */
|
|
9
|
-
description: string;
|
|
10
|
-
/** How this rune reinterprets Markdown primitives */
|
|
11
|
-
reinterprets: Record<string, string>;
|
|
12
|
-
/** Schema.org SEO type, if any */
|
|
13
|
-
seoType: string | undefined;
|
|
14
|
-
/** Attribute definitions from the schema */
|
|
15
|
-
attributes: Record<string, SchemaAttribute>;
|
|
16
|
-
}
|
|
17
|
-
/** Look up a rune by any of its names (primary or alias) */
|
|
18
|
-
export declare function getRune(name: string): RuneInfo | undefined;
|
|
19
|
-
/** Get all registered runes (one entry per rune, not per alias) */
|
|
20
|
-
export declare function getAllRunes(): readonly RuneInfo[];
|
|
21
|
-
/** Get all name→RuneInfo mappings (includes aliases) */
|
|
22
|
-
export declare function getAllNames(): ReadonlyMap<string, RuneInfo>;
|
|
23
|
-
/** Get the Markdoc tags config for validation/parsing */
|
|
24
|
-
export declare function getMarkdocTags(): {
|
|
25
|
-
else: import("@markdoc/markdoc").Schema<Readonly<Partial<{
|
|
26
|
-
nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>>;
|
|
27
|
-
tags: Record<string, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>;
|
|
28
|
-
variables: Record<string, any>;
|
|
29
|
-
functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
|
|
30
|
-
partials: Record<string, any>;
|
|
31
|
-
validation?: {
|
|
32
|
-
parents?: import("@markdoc/markdoc").Node[] | undefined;
|
|
33
|
-
validateFunctions?: boolean | undefined;
|
|
34
|
-
environment?: string | undefined;
|
|
35
|
-
} | undefined;
|
|
36
|
-
}>>, string>;
|
|
37
|
-
if: import("@markdoc/markdoc").Schema<Readonly<Partial<{
|
|
38
|
-
nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>>;
|
|
39
|
-
tags: Record<string, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>;
|
|
40
|
-
variables: Record<string, any>;
|
|
41
|
-
functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
|
|
42
|
-
partials: Record<string, any>;
|
|
43
|
-
validation?: {
|
|
44
|
-
parents?: import("@markdoc/markdoc").Node[] | undefined;
|
|
45
|
-
validateFunctions?: boolean | undefined;
|
|
46
|
-
environment?: string | undefined;
|
|
47
|
-
} | undefined;
|
|
48
|
-
}>>, string>;
|
|
49
|
-
partial: import("@markdoc/markdoc").Schema<Readonly<Partial<{
|
|
50
|
-
nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>>;
|
|
51
|
-
tags: Record<string, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>;
|
|
52
|
-
variables: Record<string, any>;
|
|
53
|
-
functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
|
|
54
|
-
partials: Record<string, any>;
|
|
55
|
-
validation?: {
|
|
56
|
-
parents?: import("@markdoc/markdoc").Node[] | undefined;
|
|
57
|
-
validateFunctions?: boolean | undefined;
|
|
58
|
-
environment?: string | undefined;
|
|
59
|
-
} | undefined;
|
|
60
|
-
}>>, string>;
|
|
61
|
-
slot: import("@markdoc/markdoc").Schema<Readonly<Partial<{
|
|
62
|
-
nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>>;
|
|
63
|
-
tags: Record<string, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>;
|
|
64
|
-
variables: Record<string, any>;
|
|
65
|
-
functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
|
|
66
|
-
partials: Record<string, any>;
|
|
67
|
-
validation?: {
|
|
68
|
-
parents?: import("@markdoc/markdoc").Node[] | undefined;
|
|
69
|
-
validateFunctions?: boolean | undefined;
|
|
70
|
-
environment?: string | undefined;
|
|
71
|
-
} | undefined;
|
|
72
|
-
}>>, string>;
|
|
73
|
-
table: import("@markdoc/markdoc").Schema<Readonly<Partial<{
|
|
74
|
-
nodes: Partial<Record<import("@markdoc/markdoc").NodeType, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>>;
|
|
75
|
-
tags: Record<string, import("@markdoc/markdoc").Schema<Readonly<Partial<any>>, string>>;
|
|
76
|
-
variables: Record<string, any>;
|
|
77
|
-
functions: Record<string, import("@markdoc/markdoc").ConfigFunction>;
|
|
78
|
-
partials: Record<string, any>;
|
|
79
|
-
validation?: {
|
|
80
|
-
parents?: import("@markdoc/markdoc").Node[] | undefined;
|
|
81
|
-
validateFunctions?: boolean | undefined;
|
|
82
|
-
environment?: string | undefined;
|
|
83
|
-
} | undefined;
|
|
84
|
-
}>>, string>;
|
|
85
|
-
};
|
|
86
|
-
/** Get the Markdoc nodes config for validation/parsing */
|
|
87
|
-
export declare function getMarkdocNodes(): {
|
|
88
|
-
heading: import("@markdoc/markdoc").Schema;
|
|
89
|
-
paragraph: import("@markdoc/markdoc").Schema;
|
|
90
|
-
fence: import("@markdoc/markdoc").Schema;
|
|
91
|
-
list: import("@markdoc/markdoc").Schema;
|
|
92
|
-
item: import("@markdoc/markdoc").Schema;
|
|
93
|
-
em: import("@markdoc/markdoc").Schema;
|
|
94
|
-
strong: import("@markdoc/markdoc").Schema;
|
|
95
|
-
text: import("@markdoc/markdoc").Schema;
|
|
96
|
-
link: import("@markdoc/markdoc").Schema;
|
|
97
|
-
hardbreak: import("@markdoc/markdoc").Schema;
|
|
98
|
-
image: import("@markdoc/markdoc").Schema;
|
|
99
|
-
table: import("@markdoc/markdoc").Schema;
|
|
100
|
-
thead: import("@markdoc/markdoc").Schema;
|
|
101
|
-
tbody: import("@markdoc/markdoc").Schema;
|
|
102
|
-
th: import("@markdoc/markdoc").Schema;
|
|
103
|
-
tr: import("@markdoc/markdoc").Schema;
|
|
104
|
-
error: {};
|
|
105
|
-
};
|
|
106
|
-
/** Find rune names similar to the given name, sorted by distance */
|
|
107
|
-
export declare function findSimilar(name: string, maxDistance?: number): string[];
|
|
108
|
-
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kCAAkC;IAClC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAwBD,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE1D;AAED,mEAAmE;AACnE,wBAAgB,WAAW,IAAI,SAAS,QAAQ,EAAE,CAEjD;AAED,wDAAwD;AACxD,wBAAgB,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAE3D;AAED,yDAAyD;AACzD,wBAAgB,cAAc;;;;;;;kBAiD6rB,CAAC;mBAAuB,CAAC;6BAAgG,CAAC;uBAA8C,CAAC;;;;;;;;;kBAA8mB,CAAC;mBAAuB,CAAC;6BAAgG,CAAC;uBAA8C,CAAC;;;;;;;;;kBAAmnB,CAAC;mBAAuB,CAAC;6BAAgG,CAAC;uBAA8C,CAAC;;;;;;;;;kBAAgnB,CAAC;mBAAuB,CAAC;6BAAgG,CAAC;uBAA8C,CAAC;;;;;;;;;kBAAinB,CAAC;mBAAuB,CAAC;6BAAgG,CAAC;uBAA8C,CAAC;;;EA/Cz+H;AAED,0DAA0D;AAC1D,wBAAgB,eAAe;;;;;;;;;;;;;;;;;;EAE9B;AAqBD,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,MAAM,EAAE,CAmBnE"}
|
package/dist/registry/loader.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import { runes, tags, nodes } from '@refrakt-md/runes';
|
|
3
|
-
/** Map of every name (primary + alias) → RuneInfo */
|
|
4
|
-
const runesByName = new Map();
|
|
5
|
-
/** All unique RuneInfo objects (one per rune, not per alias) */
|
|
6
|
-
const allRunes = [];
|
|
7
|
-
// Build the index
|
|
8
|
-
for (const rune of Object.values(runes)) {
|
|
9
|
-
const info = {
|
|
10
|
-
name: rune.name,
|
|
11
|
-
allNames: rune.names,
|
|
12
|
-
description: rune.description,
|
|
13
|
-
reinterprets: rune.reinterprets,
|
|
14
|
-
seoType: rune.seoType,
|
|
15
|
-
attributes: (rune.schema.attributes ?? {}),
|
|
16
|
-
};
|
|
17
|
-
allRunes.push(info);
|
|
18
|
-
for (const name of rune.names) {
|
|
19
|
-
runesByName.set(name, info);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
/** Look up a rune by any of its names (primary or alias) */
|
|
23
|
-
export function getRune(name) {
|
|
24
|
-
return runesByName.get(name);
|
|
25
|
-
}
|
|
26
|
-
/** Get all registered runes (one entry per rune, not per alias) */
|
|
27
|
-
export function getAllRunes() {
|
|
28
|
-
return allRunes;
|
|
29
|
-
}
|
|
30
|
-
/** Get all name→RuneInfo mappings (includes aliases) */
|
|
31
|
-
export function getAllNames() {
|
|
32
|
-
return runesByName;
|
|
33
|
-
}
|
|
34
|
-
/** Get the Markdoc tags config for validation/parsing */
|
|
35
|
-
export function getMarkdocTags() {
|
|
36
|
-
return tags;
|
|
37
|
-
}
|
|
38
|
-
/** Get the Markdoc nodes config for validation/parsing */
|
|
39
|
-
export function getMarkdocNodes() {
|
|
40
|
-
return nodes;
|
|
41
|
-
}
|
|
42
|
-
/** Simple Levenshtein distance */
|
|
43
|
-
function levenshtein(a, b) {
|
|
44
|
-
const m = a.length;
|
|
45
|
-
const n = b.length;
|
|
46
|
-
const dp = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0));
|
|
47
|
-
for (let i = 0; i <= m; i++)
|
|
48
|
-
dp[i][0] = i;
|
|
49
|
-
for (let j = 0; j <= n; j++)
|
|
50
|
-
dp[0][j] = j;
|
|
51
|
-
for (let i = 1; i <= m; i++) {
|
|
52
|
-
for (let j = 1; j <= n; j++) {
|
|
53
|
-
dp[i][j] = a[i - 1] === b[j - 1]
|
|
54
|
-
? dp[i - 1][j - 1]
|
|
55
|
-
: 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return dp[m][n];
|
|
59
|
-
}
|
|
60
|
-
/** Find rune names similar to the given name, sorted by distance */
|
|
61
|
-
export function findSimilar(name, maxDistance = 3) {
|
|
62
|
-
const results = [];
|
|
63
|
-
for (const rune of allRunes) {
|
|
64
|
-
const distance = levenshtein(name, rune.name);
|
|
65
|
-
if (distance <= maxDistance && distance > 0) {
|
|
66
|
-
results.push({ name: rune.name, distance });
|
|
67
|
-
}
|
|
68
|
-
// Also check aliases
|
|
69
|
-
for (const alias of rune.allNames.slice(1)) {
|
|
70
|
-
const d = levenshtein(name, alias);
|
|
71
|
-
if (d <= maxDistance && d > 0) {
|
|
72
|
-
results.push({ name: alias, distance: d });
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
results.sort((a, b) => a.distance - b.distance);
|
|
77
|
-
return results.map(r => r.name);
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"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"}
|