@refrakt-md/runes 0.39.0 → 0.41.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/dist/attribute-presets.d.ts +3 -2
- package/dist/attribute-presets.d.ts.map +1 -1
- package/dist/attribute-presets.js +2 -1
- package/dist/attribute-presets.js.map +1 -1
- package/dist/composed-rune.d.ts +61 -0
- package/dist/composed-rune.d.ts.map +1 -0
- package/dist/composed-rune.js +158 -0
- package/dist/composed-rune.js.map +1 -0
- package/dist/index.d.ts +12 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/composition-errors.d.ts +80 -0
- package/dist/lib/composition-errors.d.ts.map +1 -0
- package/dist/lib/composition-errors.js +82 -0
- package/dist/lib/composition-errors.js.map +1 -0
- package/dist/lib/composition.d.ts +167 -0
- package/dist/lib/composition.d.ts.map +1 -0
- package/dist/lib/composition.js +1182 -0
- package/dist/lib/composition.js.map +1 -0
- package/dist/lib/index.d.ts +30 -5
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +107 -16
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/preprocess.d.ts +3 -2
- package/dist/lib/preprocess.d.ts.map +1 -1
- package/dist/lib/preprocess.js +2 -1
- package/dist/lib/preprocess.js.map +1 -1
- package/dist/lib/registers.d.ts +2 -2
- package/dist/lib/registers.d.ts.map +1 -1
- package/dist/lib/registers.js +2 -1
- package/dist/lib/registers.js.map +1 -1
- package/dist/lib/resolver.d.ts +32 -4
- package/dist/lib/resolver.d.ts.map +1 -1
- package/dist/lib/resolver.js +87 -33
- package/dist/lib/resolver.js.map +1 -1
- package/dist/lib/schema-side-table.d.ts +26 -0
- package/dist/lib/schema-side-table.d.ts.map +1 -0
- package/dist/lib/schema-side-table.js +34 -0
- package/dist/lib/schema-side-table.js.map +1 -0
- package/dist/lib/schema-table.d.ts +16 -1
- package/dist/lib/schema-table.d.ts.map +1 -1
- package/dist/lib/schema-table.js +101 -3
- package/dist/lib/schema-table.js.map +1 -1
- package/dist/lib/slot-markers.d.ts +38 -0
- package/dist/lib/slot-markers.d.ts.map +1 -0
- package/dist/lib/slot-markers.js +105 -0
- package/dist/lib/slot-markers.js.map +1 -0
- package/dist/plugins.d.ts +31 -9
- package/dist/plugins.d.ts.map +1 -1
- package/dist/plugins.js +242 -64
- package/dist/plugins.js.map +1 -1
- package/dist/project-runes.d.ts +53 -0
- package/dist/project-runes.d.ts.map +1 -0
- package/dist/project-runes.js +85 -0
- package/dist/project-runes.js.map +1 -0
- package/dist/registers-pipeline.d.ts +1 -0
- package/dist/registers-pipeline.d.ts.map +1 -1
- package/dist/registers-pipeline.js +7 -1
- package/dist/registers-pipeline.js.map +1 -1
- package/dist/rune-dir.d.ts +52 -0
- package/dist/rune-dir.d.ts.map +1 -0
- package/dist/rune-dir.js +90 -0
- package/dist/rune-dir.js.map +1 -0
- package/dist/tags/sandbox.d.ts.map +1 -1
- package/dist/tags/sandbox.js +15 -3
- package/dist/tags/sandbox.js.map +1 -1
- package/package.json +3 -3
package/dist/plugins.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { selectLocaleBundle } from '@refrakt-md/transform';
|
|
2
2
|
import { defineRune, runeTagMap } from './rune.js';
|
|
3
|
+
import { checkComposedCatalog, composedPluginRune, coreCatalogRunes } from './composed-rune.js';
|
|
4
|
+
import { PROJECT_RUNES, readRuneDefinitions, withRuneDefinitions } from './rune-dir.js';
|
|
5
|
+
import { CompositionError } from './lib/composition-errors.js';
|
|
6
|
+
import { compositionFor, composedTypeName } from './lib/composition.js';
|
|
7
|
+
/** The resolution layer a rune came from: the project's own directory, or a plugin. */
|
|
8
|
+
const sourceOf = (pkg) => pkg.npmName === PROJECT_RUNES ? 'project' : 'plugin';
|
|
3
9
|
/** Reserved namespace names that cannot be used by user config or plugins. */
|
|
4
10
|
const RESERVED_FILE_ROOT_NAMESPACES = new Set(['site']);
|
|
5
11
|
/** Validate that a file-root namespace name is allowed. Throws on reserved
|
|
@@ -18,64 +24,150 @@ export function assertFileRootNamespaceAllowed(namespace, source) {
|
|
|
18
24
|
* Load a plugin by npm package name.
|
|
19
25
|
*
|
|
20
26
|
* Dynamically imports the package and extracts the Plugin export.
|
|
21
|
-
* Creates Rune instances from each plugin entry using defineRune().
|
|
27
|
+
* Creates Rune instances from each plugin entry using defineRune(). A plugin
|
|
28
|
+
* declaring a `runeDir` (SPEC-153 D2) has every `<rune>.md` in it loaded as a
|
|
29
|
+
* composed rune entry first, so from here on it is indistinguishable from an
|
|
30
|
+
* entry written in `Plugin.runes` (D1).
|
|
22
31
|
*/
|
|
23
|
-
export async function loadPlugin(npmPackageName) {
|
|
32
|
+
export async function loadPlugin(npmPackageName, options = {}) {
|
|
33
|
+
const base = options.from ?? import.meta.url;
|
|
24
34
|
let mod;
|
|
25
35
|
try {
|
|
26
|
-
|
|
36
|
+
if (options.from) {
|
|
37
|
+
const { createRequire } = await import('node:module');
|
|
38
|
+
const { pathToFileURL } = await import('node:url');
|
|
39
|
+
const entry = createRequire(base).resolve(npmPackageName);
|
|
40
|
+
mod = await import(/* @vite-ignore */ pathToFileURL(entry).href);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
mod = await import(/* @vite-ignore */ npmPackageName);
|
|
44
|
+
}
|
|
27
45
|
}
|
|
28
46
|
catch (err) {
|
|
29
47
|
throw new Error(`Failed to load plugin "${npmPackageName}": ${err.message}\n` +
|
|
30
48
|
`Make sure the package is installed: npm install ${npmPackageName}`);
|
|
31
49
|
}
|
|
32
|
-
|
|
50
|
+
let pkg = findPluginExport(mod, npmPackageName);
|
|
51
|
+
if (pkg.runeDir !== undefined)
|
|
52
|
+
pkg = await withRuneDir(pkg, npmPackageName, base);
|
|
33
53
|
validatePlugin(pkg, npmPackageName);
|
|
34
54
|
const runes = {};
|
|
35
55
|
const fixtures = {};
|
|
36
56
|
for (const [runeName, entry] of Object.entries(pkg.runes)) {
|
|
37
|
-
runes[runeName] =
|
|
38
|
-
|
|
39
|
-
schema: entry.transform,
|
|
40
|
-
description: entry.description ?? `Plugin rune from ${pkg.displayName ?? pkg.name}`,
|
|
41
|
-
aliases: entry.aliases,
|
|
42
|
-
seoType: entry.seoType,
|
|
43
|
-
authoringHints: entry.authoringHints,
|
|
44
|
-
});
|
|
45
|
-
if (entry.fixture) {
|
|
57
|
+
runes[runeName] = pluginRune(runeName, entry, pkg);
|
|
58
|
+
if (entry.fixture)
|
|
46
59
|
fixtures[runeName] = entry.fixture;
|
|
47
|
-
}
|
|
48
60
|
}
|
|
49
|
-
const fileFixtures = await discoverPluginFixtures(npmPackageName);
|
|
61
|
+
const fileFixtures = await discoverPluginFixtures(npmPackageName, base);
|
|
50
62
|
for (const [runeName, content] of Object.entries(fileFixtures)) {
|
|
51
63
|
if (!fixtures[runeName]) {
|
|
52
64
|
fixtures[runeName] = content;
|
|
53
65
|
}
|
|
54
66
|
}
|
|
55
|
-
const fileRoots = await resolvePluginFileRoots(pkg, npmPackageName);
|
|
67
|
+
const fileRoots = await resolvePluginFileRoots(pkg, npmPackageName, base);
|
|
56
68
|
return { pkg, npmName: npmPackageName, runes, fixtures, fileRoots };
|
|
57
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* The `Rune` one plugin entry defines. A composed entry (SPEC-153 D11) gets its
|
|
72
|
+
* schema and its block-less config from the definition; the entry's own
|
|
73
|
+
* fields, where set, win over the definition's.
|
|
74
|
+
*/
|
|
75
|
+
export function pluginRune(runeName, entry, pkg) {
|
|
76
|
+
if (entry.template !== undefined) {
|
|
77
|
+
const composed = composedPluginRune(runeName, entry);
|
|
78
|
+
return defineRune({
|
|
79
|
+
...composed.rune,
|
|
80
|
+
name: runeName,
|
|
81
|
+
schema: composed.rune.schema,
|
|
82
|
+
description: entry.description ?? composed.rune.description,
|
|
83
|
+
aliases: entry.aliases ?? composed.rune.aliases,
|
|
84
|
+
seoType: entry.seoType,
|
|
85
|
+
authoringHints: entry.authoringHints,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return defineRune({
|
|
89
|
+
name: runeName,
|
|
90
|
+
schema: entry.transform,
|
|
91
|
+
description: entry.description ?? `Plugin rune from ${pkg.displayName ?? pkg.name}`,
|
|
92
|
+
aliases: entry.aliases,
|
|
93
|
+
seoType: entry.seoType,
|
|
94
|
+
authoringHints: entry.authoringHints,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The directory a plugin package sits in, through `<pkg>/package.json`. Throws
|
|
99
|
+
* naming what needed it and the cause: a package that declares files it
|
|
100
|
+
* ships cannot be allowed to lose them quietly (SPEC-153 D3).
|
|
101
|
+
*/
|
|
102
|
+
async function resolvePackageDir(npmPackageName, base, purpose) {
|
|
103
|
+
const { createRequire } = await import('node:module');
|
|
104
|
+
const { dirname } = await import('node:path');
|
|
105
|
+
try {
|
|
106
|
+
return dirname(createRequire(base).resolve(`${npmPackageName}/package.json`));
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
const code = err.code;
|
|
110
|
+
const fix = code === 'ERR_PACKAGE_PATH_NOT_EXPORTED'
|
|
111
|
+
? ` Its \`exports\` map leaves out \`./package.json\`; add \`"./package.json": "./package.json"\` (SPEC-153 D6).`
|
|
112
|
+
: '';
|
|
113
|
+
throw new CompositionError('package-unresolvable', `Plugin "${npmPackageName}" declares ${purpose} but its package directory could not be located: ${err.message}${fix}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* SPEC-153 D2/D3 — the plugin with its rune directory read in: every
|
|
118
|
+
* `<rune>.md` becomes a `template` entry in a copy of `Plugin.runes`. The
|
|
119
|
+
* directory is as available as the plugin's JavaScript, so any failure here is
|
|
120
|
+
* a packaging bug and throws with the resolved path and the cause; it never
|
|
121
|
+
* yields fewer runes.
|
|
122
|
+
*/
|
|
123
|
+
async function withRuneDir(pkg, npmPackageName, base) {
|
|
124
|
+
const { readdirSync, readFileSync, statSync } = await import('node:fs');
|
|
125
|
+
const { join, relative, resolve, isAbsolute } = await import('node:path');
|
|
126
|
+
const declared = pkg.runeDir;
|
|
127
|
+
if (typeof declared !== 'string' || declared.length === 0) {
|
|
128
|
+
throw new CompositionError('rune-dir-invalid', `Plugin "${npmPackageName}" has an invalid \`runeDir\`. Expected a non-empty path relative to the plugin package directory.`);
|
|
129
|
+
}
|
|
130
|
+
const pkgDir = await resolvePackageDir(npmPackageName, base, `runeDir "${declared}"`);
|
|
131
|
+
const dir = resolve(pkgDir, declared);
|
|
132
|
+
const rel = relative(pkgDir, dir);
|
|
133
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
134
|
+
throw new CompositionError('rune-dir-invalid', `Plugin "${npmPackageName}" runeDir "${declared}" resolves to ${dir}, outside its package directory ${pkgDir}. A rune directory ships inside the package.`);
|
|
135
|
+
}
|
|
136
|
+
const where = `Plugin "${npmPackageName}" runeDir ${dir}`;
|
|
137
|
+
const reader = {
|
|
138
|
+
list() {
|
|
139
|
+
try {
|
|
140
|
+
return readdirSync(dir).filter((f) => statSync(join(dir, f)).isFile());
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
throw new CompositionError('rune-dir-unreadable', `${where} could not be read: ${err.message}. Check that the directory exists and is listed in the package's \`files\` (SPEC-153 D3).`);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
read(file) {
|
|
147
|
+
try {
|
|
148
|
+
return readFileSync(join(dir, file), 'utf-8');
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
throw new CompositionError('file-unreadable', `${where}: "${file}" could not be read: ${err.message}`);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
const files = readRuneDefinitions(reader, '', where);
|
|
156
|
+
return withRuneDefinitions(pkg, files, where, (file) => join(dir, file.path));
|
|
157
|
+
}
|
|
58
158
|
/** Resolve a plugin's declared `fileRoots` to absolute on-disk paths.
|
|
59
159
|
*
|
|
60
160
|
* Paths are interpreted relative to the plugin package's own directory
|
|
61
161
|
* (the dir containing the plugin's `package.json`). Throws if the package
|
|
62
|
-
* can't be located on disk (
|
|
63
|
-
*
|
|
64
|
-
* not silently dropping like file fixtures. */
|
|
65
|
-
async function resolvePluginFileRoots(pkg, npmPackageName) {
|
|
162
|
+
* can't be located on disk (a missing install, or an `exports` map without
|
|
163
|
+
* `./package.json`) — fileRoots that can't be reached is a misconfig worth
|
|
164
|
+
* surfacing, not silently dropping like file fixtures. */
|
|
165
|
+
async function resolvePluginFileRoots(pkg, npmPackageName, base = import.meta.url) {
|
|
66
166
|
const declared = pkg.fileRoots;
|
|
67
167
|
if (!declared || Object.keys(declared).length === 0)
|
|
68
168
|
return {};
|
|
69
|
-
const {
|
|
70
|
-
const
|
|
71
|
-
let pkgDir;
|
|
72
|
-
try {
|
|
73
|
-
const require = createRequire(import.meta.url);
|
|
74
|
-
pkgDir = dirname(require.resolve(`${npmPackageName}/package.json`));
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
throw new Error(`Plugin "${npmPackageName}" declares fileRoots but its package directory could not be located: ${err.message}`);
|
|
78
|
-
}
|
|
169
|
+
const { resolve } = await import('node:path');
|
|
170
|
+
const pkgDir = await resolvePackageDir(npmPackageName, base, 'fileRoots');
|
|
79
171
|
const resolved = {};
|
|
80
172
|
for (const [namespace, relativePath] of Object.entries(declared)) {
|
|
81
173
|
assertFileRootNamespaceAllowed(namespace, `plugin "${npmPackageName}"`);
|
|
@@ -95,7 +187,12 @@ async function resolvePluginFileRoots(pkg, npmPackageName) {
|
|
|
95
187
|
* 3. `prefer` value `"__core__"` forces core to win for that rune
|
|
96
188
|
* 4. Two plugins same name, no core: resolved by `prefer`, or throws
|
|
97
189
|
*/
|
|
98
|
-
export function mergePlugins(
|
|
190
|
+
export function mergePlugins(plugins, coreRuneNames, prefer, project) {
|
|
191
|
+
// SPEC-153 D8 — the project layer: core < plugin < project, core names
|
|
192
|
+
// never shadowable, a plugin's only through `runes.prefer`.
|
|
193
|
+
if (project)
|
|
194
|
+
checkProjectPrecedence(project, plugins, coreRuneNames, prefer);
|
|
195
|
+
const loaded = project ? [...plugins, project] : plugins;
|
|
99
196
|
const ownership = new Map();
|
|
100
197
|
for (const loadedPkg of loaded) {
|
|
101
198
|
for (const [name, rune] of Object.entries(loadedPkg.runes)) {
|
|
@@ -117,7 +214,7 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
117
214
|
runes[name] = c.rune;
|
|
118
215
|
provenance[name] = {
|
|
119
216
|
qualifiedId: `${c.pkg.pkg.name}:${name}`,
|
|
120
|
-
source:
|
|
217
|
+
source: sourceOf(c.pkg),
|
|
121
218
|
pluginName: c.pkg.pkg.name,
|
|
122
219
|
origin: c.pkg.npmName,
|
|
123
220
|
};
|
|
@@ -130,7 +227,7 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
130
227
|
runes[name] = match.rune;
|
|
131
228
|
provenance[name] = {
|
|
132
229
|
qualifiedId: `${match.pkg.pkg.name}:${name}`,
|
|
133
|
-
source:
|
|
230
|
+
source: sourceOf(match.pkg),
|
|
134
231
|
pluginName: match.pkg.pkg.name,
|
|
135
232
|
origin: match.pkg.npmName,
|
|
136
233
|
};
|
|
@@ -153,7 +250,7 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
153
250
|
runes[name] = c.rune;
|
|
154
251
|
provenance[name] = {
|
|
155
252
|
qualifiedId: `${c.pkg.pkg.name}:${name}`,
|
|
156
|
-
source:
|
|
253
|
+
source: sourceOf(c.pkg),
|
|
157
254
|
pluginName: c.pkg.pkg.name,
|
|
158
255
|
origin: c.pkg.npmName,
|
|
159
256
|
};
|
|
@@ -166,7 +263,7 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
166
263
|
runes[name] = match.rune;
|
|
167
264
|
provenance[name] = {
|
|
168
265
|
qualifiedId: `${match.pkg.pkg.name}:${name}`,
|
|
169
|
-
source:
|
|
266
|
+
source: sourceOf(match.pkg),
|
|
170
267
|
pluginName: match.pkg.pkg.name,
|
|
171
268
|
origin: match.pkg.npmName,
|
|
172
269
|
};
|
|
@@ -198,6 +295,13 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
198
295
|
themeRunes[key] = value;
|
|
199
296
|
}
|
|
200
297
|
}
|
|
298
|
+
// SPEC-145 D2a — a composed rune's config is generated from its
|
|
299
|
+
// definition, never hand-written beside it.
|
|
300
|
+
for (const rune of Object.values(loadedPkg.runes)) {
|
|
301
|
+
const info = compositionFor(rune.schema);
|
|
302
|
+
if (info?.config && info.typeName)
|
|
303
|
+
themeRunes[info.typeName] = info.config;
|
|
304
|
+
}
|
|
201
305
|
if (loadedPkg.pkg.theme?.icons) {
|
|
202
306
|
for (const [group, icons] of Object.entries(loadedPkg.pkg.theme.icons)) {
|
|
203
307
|
themeIcons[group] = { ...themeIcons[group], ...icons };
|
|
@@ -209,6 +313,10 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
209
313
|
}
|
|
210
314
|
}
|
|
211
315
|
}
|
|
316
|
+
// SPEC-145 — the composition checks that need every rune: cycles (by name),
|
|
317
|
+
// a composed type placed over a peer type (D9), a placed rune missing its
|
|
318
|
+
// required parent (D12). Here, at assembly, rather than at render.
|
|
319
|
+
checkComposedCatalog(runes, themeRunes);
|
|
212
320
|
const extensions = {};
|
|
213
321
|
for (const loadedPkg of loaded) {
|
|
214
322
|
if (loadedPkg.pkg.extends) {
|
|
@@ -276,6 +384,48 @@ export function mergePlugins(loaded, coreRuneNames, prefer) {
|
|
|
276
384
|
translations,
|
|
277
385
|
};
|
|
278
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* SPEC-153 D8 — a project rune may not take a core rune's name or alias: a
|
|
389
|
+
* `{% card %}` that means something local breaks every snippet, doc page and
|
|
390
|
+
* composition built on the core one. It may take a plugin rune's name only
|
|
391
|
+
* where `runes.prefer` says which wins (`"__project__"` for the project's).
|
|
392
|
+
*/
|
|
393
|
+
function checkProjectPrecedence(project, plugins, coreRuneNames, prefer) {
|
|
394
|
+
const coreOwner = new Map();
|
|
395
|
+
for (const name of coreRuneNames)
|
|
396
|
+
coreOwner.set(name, name);
|
|
397
|
+
for (const [name, rune] of Object.entries(coreCatalogRunes())) {
|
|
398
|
+
if (!coreRuneNames.has(name))
|
|
399
|
+
continue;
|
|
400
|
+
for (const alias of rune.aliases)
|
|
401
|
+
if (!coreOwner.has(alias))
|
|
402
|
+
coreOwner.set(alias, name);
|
|
403
|
+
}
|
|
404
|
+
const pluginOwners = new Map();
|
|
405
|
+
for (const p of plugins) {
|
|
406
|
+
for (const [name, rune] of Object.entries(p.runes)) {
|
|
407
|
+
for (const n of [name, ...rune.aliases]) {
|
|
408
|
+
pluginOwners.set(n, [...(pluginOwners.get(n) ?? []), p.npmName]);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
for (const [name, rune] of Object.entries(project.runes)) {
|
|
413
|
+
const file = `${name}.md`;
|
|
414
|
+
for (const n of [name, ...rune.aliases]) {
|
|
415
|
+
const as = n === name ? '' : ` (through its alias "${n}")`;
|
|
416
|
+
const core = coreOwner.get(n);
|
|
417
|
+
if (core) {
|
|
418
|
+
throw new CompositionError('project-core-name', `Project rune "${name}" (${file})${as} takes the name of core rune "${core}". A core rune's name cannot be shadowed: every snippet, page and composition that uses "${core}" would change meaning (SPEC-153 D8). Rename the definition.`);
|
|
419
|
+
}
|
|
420
|
+
const owners = pluginOwners.get(n);
|
|
421
|
+
if (owners && !prefer?.[n]) {
|
|
422
|
+
throw new CompositionError('project-plugin-name', `Project rune "${name}" (${file})${as} and the rune "${n}" from ${owners.join(', ')} share a name. Say which wins in refrakt.config.json:\n` +
|
|
423
|
+
` "runes": { "prefer": { "${n}": "${PROJECT_RUNES}" } }\n` +
|
|
424
|
+
`or rename the definition (SPEC-153 D8).`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
279
429
|
/**
|
|
280
430
|
* SPEC-035 — select the plugin translation dictionary for a locale, applying
|
|
281
431
|
* the Decision D5 region-strip fallback (`de-AT` → `de`). Returns the merged
|
|
@@ -325,7 +475,13 @@ export function applyAliases(runes, tags, aliases, provenance) {
|
|
|
325
475
|
export async function loadLocalRunes(localConfig, projectRoot) {
|
|
326
476
|
const runes = {};
|
|
327
477
|
const { resolve } = await import('node:path');
|
|
478
|
+
/** SPEC-153 D7 — `runes.local` takes a JS module for unpublished plugin
|
|
479
|
+
* development; a composed rune definition has its own home. */
|
|
480
|
+
const notADefinition = (name, modulePath, what) => new CompositionError('local-definition', `Local rune "${name}" at "${modulePath}" is ${what}. \`runes.local\` takes a JavaScript module exporting a rune with a \`transform\`, for developing a plugin before publishing it (SPEC-153 D7). Put a composed rune definition in the project's rune directory instead: move it to \`runes/${name}.md\` (or the directory \`runes.dir\` names) and remove this \`runes.local\` entry.`);
|
|
328
481
|
for (const [name, modulePath] of Object.entries(localConfig)) {
|
|
482
|
+
if (/\.(md|markdoc|mdoc)$/i.test(modulePath)) {
|
|
483
|
+
throw notADefinition(name, modulePath, 'a composed rune definition, not a module');
|
|
484
|
+
}
|
|
329
485
|
const absPath = resolve(projectRoot, modulePath);
|
|
330
486
|
let mod;
|
|
331
487
|
try {
|
|
@@ -335,6 +491,9 @@ export async function loadLocalRunes(localConfig, projectRoot) {
|
|
|
335
491
|
throw new Error(`Failed to load local rune "${name}" from "${modulePath}": ${err.message}`);
|
|
336
492
|
}
|
|
337
493
|
const entry = (mod.default ?? mod);
|
|
494
|
+
if (entry.template !== undefined) {
|
|
495
|
+
throw notADefinition(name, modulePath, 'a module exporting a composition `template`');
|
|
496
|
+
}
|
|
338
497
|
if (!entry.transform || typeof entry.transform !== 'object') {
|
|
339
498
|
throw new Error(`Local rune "${name}" at "${modulePath}" must export a transform (Markdoc Schema).`);
|
|
340
499
|
}
|
|
@@ -362,35 +521,37 @@ export async function loadLocalRunes(localConfig, projectRoot) {
|
|
|
362
521
|
* parsed into a {@link ParsedFixture} (frontmatter validated, body stripped).
|
|
363
522
|
*
|
|
364
523
|
* Returns an empty array when the package isn't resolvable or has no fixtures/
|
|
365
|
-
* directory.
|
|
366
|
-
*
|
|
367
|
-
*
|
|
524
|
+
* directory. Only the resolution is forgiven: a fixture whose frontmatter fails
|
|
525
|
+
* schema validation throws from `parseFixture`, and the CI corpus check
|
|
526
|
+
* (WORK-414) relies on the throw to fail loudly.
|
|
368
527
|
*/
|
|
369
|
-
export async function discoverPluginFixtureManifest(npmPackageName) {
|
|
528
|
+
export async function discoverPluginFixtureManifest(npmPackageName, base = import.meta.url) {
|
|
370
529
|
const manifest = [];
|
|
530
|
+
const { createRequire } = await import('node:module');
|
|
531
|
+
const { existsSync, readFileSync, readdirSync } = await import('node:fs');
|
|
532
|
+
const { dirname, join } = await import('node:path');
|
|
533
|
+
const { parseFixture } = await import('./fixtures.js');
|
|
534
|
+
let pkgDir;
|
|
371
535
|
try {
|
|
372
|
-
|
|
373
|
-
const { existsSync, readFileSync, readdirSync } = await import('node:fs');
|
|
374
|
-
const { dirname, join } = await import('node:path');
|
|
375
|
-
const { parseFixture } = await import('./fixtures.js');
|
|
376
|
-
const require = createRequire(import.meta.url);
|
|
377
|
-
const pkgJsonPath = require.resolve(`${npmPackageName}/package.json`);
|
|
378
|
-
const pkgDir = dirname(pkgJsonPath);
|
|
379
|
-
const fixturesDir = join(pkgDir, 'fixtures');
|
|
380
|
-
if (!existsSync(fixturesDir)) {
|
|
381
|
-
return manifest;
|
|
382
|
-
}
|
|
383
|
-
for (const file of readdirSync(fixturesDir).sort()) {
|
|
384
|
-
if (!file.endsWith('.md'))
|
|
385
|
-
continue;
|
|
386
|
-
const raw = readFileSync(join(fixturesDir, file), 'utf-8');
|
|
387
|
-
if (!raw.trim())
|
|
388
|
-
continue;
|
|
389
|
-
manifest.push(parseFixture(raw, file));
|
|
390
|
-
}
|
|
536
|
+
pkgDir = dirname(createRequire(base).resolve(`${npmPackageName}/package.json`));
|
|
391
537
|
}
|
|
392
538
|
catch {
|
|
393
|
-
//
|
|
539
|
+
// `<pkg>/package.json` did not resolve — the package is not installed, or it declares an
|
|
540
|
+
// `exports` map without a `./package.json` entry (ERR_PACKAGE_PATH_NOT_EXPORTED). A
|
|
541
|
+
// workspace link resolves fine. Skip file fixtures; a `runeDir`, which cannot be
|
|
542
|
+
// skipped, reports the same failure as an error (SPEC-153 D3).
|
|
543
|
+
return manifest;
|
|
544
|
+
}
|
|
545
|
+
const fixturesDir = join(pkgDir, 'fixtures');
|
|
546
|
+
if (!existsSync(fixturesDir))
|
|
547
|
+
return manifest;
|
|
548
|
+
for (const file of readdirSync(fixturesDir).sort()) {
|
|
549
|
+
if (!file.endsWith('.md'))
|
|
550
|
+
continue;
|
|
551
|
+
const raw = readFileSync(join(fixturesDir, file), 'utf-8');
|
|
552
|
+
if (!raw.trim())
|
|
553
|
+
continue;
|
|
554
|
+
manifest.push(parseFixture(raw, file));
|
|
394
555
|
}
|
|
395
556
|
return manifest;
|
|
396
557
|
}
|
|
@@ -401,9 +562,9 @@ export async function discoverPluginFixtureManifest(npmPackageName) {
|
|
|
401
562
|
* When a rune ships multiple scenarios, the `canonical` scenario wins (falling
|
|
402
563
|
* back to the first parsed). Backward-compatible with bare `<rune>.md` files.
|
|
403
564
|
*/
|
|
404
|
-
export async function discoverPluginFixtures(npmPackageName) {
|
|
565
|
+
export async function discoverPluginFixtures(npmPackageName, base = import.meta.url) {
|
|
405
566
|
const fixtures = {};
|
|
406
|
-
for (const fx of await discoverPluginFixtureManifest(npmPackageName)) {
|
|
567
|
+
for (const fx of await discoverPluginFixtureManifest(npmPackageName, base)) {
|
|
407
568
|
if (!fx.body)
|
|
408
569
|
continue;
|
|
409
570
|
// Prefer the canonical scenario; otherwise take the first one we see.
|
|
@@ -436,8 +597,9 @@ function isPlugin(value) {
|
|
|
436
597
|
typeof obj.runes === 'object' &&
|
|
437
598
|
obj.runes !== null);
|
|
438
599
|
}
|
|
439
|
-
/** Validate a loaded Plugin has required fields
|
|
440
|
-
|
|
600
|
+
/** Validate a loaded Plugin has required fields. Each rune entry carries
|
|
601
|
+
* exactly one of `transform` or `template` (SPEC-153 D11). */
|
|
602
|
+
export function validatePlugin(pkg, npmName) {
|
|
441
603
|
if (!pkg.name) {
|
|
442
604
|
throw new Error(`Plugin "${npmName}" has an empty name field`);
|
|
443
605
|
}
|
|
@@ -448,9 +610,25 @@ function validatePlugin(pkg, npmName) {
|
|
|
448
610
|
throw new Error(`Plugin "${npmName}" defines no runes`);
|
|
449
611
|
}
|
|
450
612
|
for (const [name, entry] of Object.entries(pkg.runes)) {
|
|
613
|
+
if (entry.template !== undefined) {
|
|
614
|
+
if (entry.transform !== undefined) {
|
|
615
|
+
throw new CompositionError('second-emit-path', `Plugin "${npmName}" rune "${name}" carries both a \`transform\` and a composition \`template\`. ` +
|
|
616
|
+
`A rune has exactly one emit path (SPEC-145 D5, SPEC-153 D11): drop the transform to compose, or the template to build its own output.`);
|
|
617
|
+
}
|
|
618
|
+
if (typeof entry.template !== 'string') {
|
|
619
|
+
throw new CompositionError('template-entry-invalid', `Plugin "${npmName}" rune "${name}" has an invalid template. ` +
|
|
620
|
+
`Expected a composed rune definition: YAML frontmatter and a Markdoc template, as one string.`);
|
|
621
|
+
}
|
|
622
|
+
const configKey = composedTypeName(name);
|
|
623
|
+
if (pkg.theme?.runes?.[configKey] !== undefined) {
|
|
624
|
+
throw new CompositionError('template-entry-invalid', `Plugin "${npmName}" rune "${name}" is composed but also has a hand-written theme config (\`theme.runes.${configKey}\`). ` +
|
|
625
|
+
`A composed rune's config is generated from its definition, and it has no block and ships no CSS (SPEC-145 D2, D2a).`);
|
|
626
|
+
}
|
|
627
|
+
continue;
|
|
628
|
+
}
|
|
451
629
|
if (!entry.transform || typeof entry.transform !== 'object') {
|
|
452
630
|
throw new Error(`Plugin "${npmName}" rune "${name}" has an invalid transform. ` +
|
|
453
|
-
`Expected a Markdoc Schema object (created via createContentModelSchema())
|
|
631
|
+
`Expected a Markdoc Schema object (created via createContentModelSchema()), or a composition \`template\`.`);
|
|
454
632
|
}
|
|
455
633
|
}
|
|
456
634
|
}
|
package/dist/plugins.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A project's own composed runes — SPEC-153 D4, D5, D8 and SPEC-145 D25.
|
|
3
|
+
*
|
|
4
|
+
* A project declares `runes.dir` (default `runes`), and every `<rune>.md` in it
|
|
5
|
+
* is a composed rune named after the file. The directory is read through
|
|
6
|
+
* `ProjectFiles` (D5), so the same code serves a build on disk and a hosted
|
|
7
|
+
* build over `memoryProjectFiles`, and containment is the provider's: a path
|
|
8
|
+
* that escapes the project root is refused there, not here.
|
|
9
|
+
*
|
|
10
|
+
* The definitions become `PluginRune` entries of a pseudo-plugin named
|
|
11
|
+
* `__project__`, through the same reader and the same `pluginRune` a plugin's
|
|
12
|
+
* `runeDir` uses (D1). `mergePlugins` takes it as its project layer and applies
|
|
13
|
+
* D8's precedence.
|
|
14
|
+
*/
|
|
15
|
+
import type { CompositionErrorCode } from './lib/composition-errors.js';
|
|
16
|
+
import type { ProjectFiles } from '@refrakt-md/types';
|
|
17
|
+
import type { LoadedPlugin } from './plugins.js';
|
|
18
|
+
import { PROJECT_RUNES } from './rune-dir.js';
|
|
19
|
+
export { PROJECT_RUNES };
|
|
20
|
+
/** `runes.dir` when a project does not declare one (D4). */
|
|
21
|
+
export declare const DEFAULT_PROJECT_RUNE_DIR = "runes";
|
|
22
|
+
/** One definition that did not load. */
|
|
23
|
+
export interface ProjectRuneFinding {
|
|
24
|
+
/** The definition's project-relative path, `<dir>/<rune>.md`. */
|
|
25
|
+
file: string;
|
|
26
|
+
/** 1-based line in that file. */
|
|
27
|
+
line: number;
|
|
28
|
+
/** The rune, when the file name is one. */
|
|
29
|
+
rune?: string;
|
|
30
|
+
/** Its entry in `COMPOSITION_ERRORS`, when the failure is a coded one. */
|
|
31
|
+
code?: CompositionErrorCode;
|
|
32
|
+
message: string;
|
|
33
|
+
}
|
|
34
|
+
/** What reading a project's rune directory produced: the runes that built,
|
|
35
|
+
* and a finding for each definition that did not. */
|
|
36
|
+
export interface ProjectRunesResult {
|
|
37
|
+
loaded: LoadedPlugin;
|
|
38
|
+
findings: ProjectRuneFinding[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Read and build every definition in a project's rune directory, collecting a
|
|
42
|
+
* finding for each that fails instead of stopping at the first — `refrakt
|
|
43
|
+
* validate` reports them all. A directory the provider does not have (absent,
|
|
44
|
+
* or refused because it escapes the root) defines no runes.
|
|
45
|
+
*/
|
|
46
|
+
export declare function checkProjectRunes(files: Pick<ProjectFiles, 'list' | 'read'>, dir?: string): ProjectRunesResult;
|
|
47
|
+
/**
|
|
48
|
+
* A project's runes, for a build: as {@link checkProjectRunes}, but the first
|
|
49
|
+
* definition that fails throws, naming its file and line. Pass the result to
|
|
50
|
+
* `mergePlugins` as its project layer.
|
|
51
|
+
*/
|
|
52
|
+
export declare function loadProjectRunes(files: Pick<ProjectFiles, 'list' | 'read'>, dir?: string): LoadedPlugin;
|
|
53
|
+
//# sourceMappingURL=project-runes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-runes.d.ts","sourceRoot":"","sources":["../src/project-runes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,aAAa,EAAsC,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,UAAU,CAAC;AAEhD,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;sDACsD;AACtD,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAoBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,EAC1C,GAAG,GAAE,MAAiC,GACpC,kBAAkB,CA8CpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,EAC1C,GAAG,GAAE,MAAiC,GACpC,YAAY,CAWd"}
|