astro-lilypond 0.6.0 → 0.8.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/components/LilyPond.astro +15 -20
- package/dist/execLilyPond.d.ts +1 -1
- package/dist/execLilyPond.d.ts.map +1 -1
- package/dist/execLilyPond.js +1 -1
- package/dist/execLilyPond.js.map +1 -1
- package/dist/index.d.ts +12 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -19
- package/dist/index.js.map +1 -1
- package/dist/plugins/rehype.d.ts.map +1 -1
- package/dist/plugins/rehype.js +16 -15
- package/dist/plugins/rehype.js.map +1 -1
- package/dist/plugins/remark.d.ts.map +1 -1
- package/dist/plugins/remark.js +16 -15
- package/dist/plugins/remark.js.map +1 -1
- package/dist/plugins/satteri.d.ts.map +1 -1
- package/dist/plugins/satteri.js +15 -17
- package/dist/plugins/satteri.js.map +1 -1
- package/dist/plugins/types.d.ts +2 -3
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/readOutputFile.d.ts +1 -1
- package/dist/readOutputFile.d.ts.map +1 -1
- package/dist/readOutputFile.js +33 -14
- package/dist/readOutputFile.js.map +1 -1
- package/dist/render.d.ts +72 -11
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +18 -4
- package/dist/render.js.map +1 -1
- package/dist/types/lilypondVersion.d.ts +6 -0
- package/dist/types/lilypondVersion.d.ts.map +1 -0
- package/dist/types/lilypondVersion.js +2 -0
- package/dist/types/lilypondVersion.js.map +1 -0
- package/dist/utils/assetsUrlBaseFor.d.ts +1 -2
- package/dist/utils/assetsUrlBaseFor.d.ts.map +1 -1
- package/dist/utils/assetsUrlBaseFor.js +3 -5
- package/dist/utils/assetsUrlBaseFor.js.map +1 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/lyImportQuery.d.ts +21 -0
- package/dist/utils/lyImportQuery.d.ts.map +1 -0
- package/dist/utils/lyImportQuery.js +26 -0
- package/dist/utils/lyImportQuery.js.map +1 -0
- package/dist/utils/renderedHtml.d.ts +7 -0
- package/dist/utils/renderedHtml.d.ts.map +1 -0
- package/dist/utils/renderedHtml.js +14 -0
- package/dist/utils/renderedHtml.js.map +1 -0
- package/dist/utils/resolveDefaults.d.ts +4 -0
- package/dist/utils/resolveDefaults.d.ts.map +1 -0
- package/dist/utils/resolveDefaults.js +11 -0
- package/dist/utils/resolveDefaults.js.map +1 -0
- package/dist/writeAsset.d.ts +15 -9
- package/dist/writeAsset.d.ts.map +1 -1
- package/dist/writeAsset.js +60 -20
- package/dist/writeAsset.js.map +1 -1
- package/package.json +1 -1
- package/dist/utils/imgTag.d.ts +0 -5
- package/dist/utils/imgTag.d.ts.map +0 -1
- package/dist/utils/imgTag.js +0 -7
- package/dist/utils/imgTag.js.map +0 -1
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
---
|
|
2
|
-
const HTML_ENTITIES: Record<string, string> = {
|
|
3
|
-
"&": "&",
|
|
4
|
-
"<": "<",
|
|
5
|
-
">": ">",
|
|
6
|
-
'"': """,
|
|
7
|
-
"'": "'",
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
function escapeHtml(text: unknown): string {
|
|
11
|
-
return String(text).replace(/[&<>"']/g, (c) => HTML_ENTITIES[c] ?? c);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
2
|
interface Props {
|
|
15
|
-
content: string;
|
|
3
|
+
content: { srcs: string[] };
|
|
16
4
|
class?: string | undefined;
|
|
17
5
|
style?: string | undefined;
|
|
18
6
|
}
|
|
19
7
|
|
|
20
8
|
const { content, class: className, style } = Astro.props;
|
|
21
|
-
|
|
22
|
-
let html = content;
|
|
23
|
-
if (className)
|
|
24
|
-
html = html.replace('class="lilypond"', `class="lilypond ${className}"`);
|
|
25
|
-
if (style)
|
|
26
|
-
html = html.replace(/<(svg|img)\b/, `<$1 style="${escapeHtml(style)}"`);
|
|
9
|
+
const { srcs } = content;
|
|
27
10
|
---
|
|
28
11
|
|
|
29
|
-
|
|
12
|
+
{
|
|
13
|
+
srcs.length === 1 ? (
|
|
14
|
+
<img data-lilypond-image class={className} src={srcs[0]} alt="" style={style} />
|
|
15
|
+
) : (
|
|
16
|
+
<ol data-lilypond-group class={className} style={style}>
|
|
17
|
+
{srcs.map((src) => (
|
|
18
|
+
<li>
|
|
19
|
+
<img data-lilypond-image src={src} alt="" />
|
|
20
|
+
</li>
|
|
21
|
+
))}
|
|
22
|
+
</ol>
|
|
23
|
+
)
|
|
24
|
+
}
|
package/dist/execLilyPond.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execLilyPond.d.ts","sourceRoot":"","sources":["../src/execLilyPond.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"execLilyPond.d.ts","sourceRoot":"","sources":["../src/execLilyPond.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
package/dist/execLilyPond.js
CHANGED
|
@@ -8,7 +8,7 @@ const MAX_BUFFER = 16 * 1024 * 1024; // 16 MiB
|
|
|
8
8
|
* build output); throws a normalized Error on a non-zero exit or timeout.
|
|
9
9
|
*/
|
|
10
10
|
export async function execLilyPond(options) {
|
|
11
|
-
const { binaryPath, format,
|
|
11
|
+
const { binaryPath, format, crop, resolution, includePaths, timeout, inputPath, outputBase, } = options;
|
|
12
12
|
const args = [
|
|
13
13
|
// Render the correct format
|
|
14
14
|
`--format=${format}`,
|
package/dist/execLilyPond.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execLilyPond.js","sourceRoot":"","sources":["../src/execLilyPond.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AAa9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,OAA4B;IAE5B,MAAM,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"execLilyPond.js","sourceRoot":"","sources":["../src/execLilyPond.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,SAAS;AAa9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,OAA4B;IAE5B,MAAM,EACL,UAAU,EACV,MAAM,EACN,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,UAAU,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,IAAI,GAAG;QACZ,4BAA4B;QAC5B,YAAY,MAAM,EAAE;QAEpB,uEAAuE;QACvE,iCAAiC;QAEjC,mEAAmE;QACnE,qCAAqC;QACrC,uFAAuF;QACvF,oGAAoG;QACpG,gCAAgC;QAChC,8CAA8C;QAC9C,+BAA+B,UAAU,EAAE;QAC3C,eAAe;QACf,yBAAyB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;QAE7C,4FAA4F;QAC5F,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;QAE5C,UAAU;QACV,UAAU;QACV,SAAS;KACT,CAAC;IAEF,yEAAyE;IACzE,mEAAmE;IACnE,+DAA+D;IAC/D,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACJ,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE;YACnD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,UAAU;SACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IACC,GAAG;YACH,OAAO,GAAG,KAAK,QAAQ;YACtB,GAAyB,CAAC,IAAI,KAAK,YAAY,EAC/C,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,SAAS,GACd,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG;YAChD,CAAC,CAAC,MAAM,CAAE,GAA2B,CAAC,MAAM,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,IAAI,KAAK,CACd,SAAS,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAC/D,CAAC;IACH,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
import type { AstroIntegration } from "astro";
|
|
2
2
|
import { type PluginOptions } from "./plugins/index.js";
|
|
3
|
-
|
|
3
|
+
import { type LilypondDefaults } from "./render.js";
|
|
4
|
+
export type { LilypondDefaults, PluginOptions as LilypondPluginOptions };
|
|
5
|
+
/**
|
|
6
|
+
* The default export of a `.ly`/`.lilypond`/`.ily` import — one URL per
|
|
7
|
+
* rendered page, in order, for `<LilyPond>` to build markup from.
|
|
8
|
+
*/
|
|
9
|
+
export interface LilypondContent {
|
|
10
|
+
srcs: string[];
|
|
11
|
+
}
|
|
4
12
|
export interface LilypondOptions extends PluginOptions {
|
|
5
|
-
/**
|
|
6
|
-
* LilyPond version string to prepend automatically to every block that
|
|
7
|
-
* doesn't already declare `\version`. Example: `"2.24.0"`.
|
|
8
|
-
*
|
|
9
|
-
* When omitted, blocks must include `\version` themselves.
|
|
10
|
-
*/
|
|
11
|
-
version?: string;
|
|
12
13
|
/**
|
|
13
14
|
* Output format to be written to a file under `outputDir`.
|
|
14
15
|
* @default "svg"
|
|
15
16
|
*/
|
|
16
17
|
format?: "svg" | "png";
|
|
17
18
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
resolution?: number;
|
|
22
|
-
/**
|
|
23
|
-
* Crop the output tightly to the content bounding box.
|
|
24
|
-
* @default true
|
|
19
|
+
* Defaults passed to each score.
|
|
20
|
+
* Defaults can still be overridden by individual `.ly` files.
|
|
25
21
|
*/
|
|
26
|
-
|
|
22
|
+
defaults?: LilypondDefaults;
|
|
27
23
|
/**
|
|
28
24
|
* Milliseconds to wait for a single `lilypond` invocation before
|
|
29
25
|
* aborting it.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EACN,KAAK,aAAa,EAKlB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EACN,KAAK,aAAa,EAKlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEN,KAAK,gBAAgB,EAGrB,MAAM,aAAa,CAAC;AAiBrB,YAAY,EAAE,gBAAgB,EAAE,aAAa,IAAI,qBAAqB,EAAE,CAAC;AAEzE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,EAAE,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACrD;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AA2DD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAC/B,OAAO,GAAE,eAAoB,GAC3B,gBAAgB,CA2IlB"}
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,9 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { pruneOrphanedAssets, pruneStaleAssets } from "./deleteAssets.js";
|
|
6
6
|
import { rehypePlugin, remarkPlugin, satteriPlugin, } from "./plugins/index.js";
|
|
7
|
-
import { defaultOptions, render } from "./render.js";
|
|
8
|
-
import { assetsUrlBaseFor, contentHashFor,
|
|
9
|
-
import {
|
|
7
|
+
import { defaultOptions, render, resolveCrop, } from "./render.js";
|
|
8
|
+
import { assetsUrlBaseFor, contentHashFor, includePathsFor, parseLyImportQuery, prependVersion, resolveDefaults, sourceNameFor, titleFor, } from "./utils/index.js";
|
|
9
|
+
import { writeAssets } from "./writeAsset.js";
|
|
10
10
|
const execFileAsync = promisify(execFile);
|
|
11
11
|
const LY_EXTENSIONS = [".ly", ".lilypond", ".ily"];
|
|
12
12
|
function lyFilePlugin(options) {
|
|
@@ -14,38 +14,46 @@ function lyFilePlugin(options) {
|
|
|
14
14
|
name: "vite-plugin-astro-lilypond-ly",
|
|
15
15
|
enforce: "pre",
|
|
16
16
|
async transform(source, id) {
|
|
17
|
-
|
|
17
|
+
// undefined means an unrecognized query param (e.g. Vite's `?raw`,
|
|
18
|
+
// `?url`) — not ours to render, so let it fall through.
|
|
19
|
+
const query = parseLyImportQuery(id);
|
|
20
|
+
if (!query)
|
|
18
21
|
return;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
const { pathname, cropOverride } = query;
|
|
23
|
+
if (!LY_EXTENSIONS.some((ext) => pathname.endsWith(ext)))
|
|
24
|
+
return;
|
|
25
|
+
const { version, resolution, crop: cropSetting, } = resolveDefaults(options.defaults);
|
|
26
|
+
const crop = cropOverride ?? resolveCrop(cropSetting, "component");
|
|
27
|
+
const src = version ? prependVersion(source, version) : source;
|
|
22
28
|
const format = options.format ?? defaultOptions.format;
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const includePaths = includePathsFor(id);
|
|
26
|
-
const sourceName = sourceNameFor(id);
|
|
29
|
+
const includePaths = includePathsFor(pathname);
|
|
30
|
+
const sourceName = sourceNameFor(pathname);
|
|
27
31
|
const title = titleFor(sourceName);
|
|
28
32
|
const hash = contentHashFor({ source: src, format, resolution, crop });
|
|
29
|
-
const
|
|
30
|
-
const url = await writeAsset({
|
|
33
|
+
const assets = await writeAssets({
|
|
31
34
|
hash,
|
|
32
35
|
title,
|
|
33
36
|
format,
|
|
34
37
|
outputDir: options.assetsDir,
|
|
35
38
|
urlBase: options.assetsUrlBase,
|
|
36
39
|
trackAsset: options.trackAsset,
|
|
37
|
-
|
|
40
|
+
getBuffers: () => render(src, {
|
|
38
41
|
format,
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
crop,
|
|
43
|
+
defaults: options.defaults,
|
|
41
44
|
timeout: options.timeout,
|
|
42
45
|
includePaths,
|
|
43
46
|
sourceName,
|
|
44
47
|
}),
|
|
45
48
|
});
|
|
46
|
-
|
|
49
|
+
// Keyed by the full id (including query) so `./score.ly` and
|
|
50
|
+
// `./score.ly?crop` are tracked as independent sources.
|
|
51
|
+
await options.pruneStaleAssets(id, assets.map((asset) => asset.fileName));
|
|
52
|
+
const content = {
|
|
53
|
+
srcs: assets.map((asset) => asset.url),
|
|
54
|
+
};
|
|
47
55
|
return {
|
|
48
|
-
code: `export default ${JSON.stringify(
|
|
56
|
+
code: `export default ${JSON.stringify(content)}`,
|
|
49
57
|
};
|
|
50
58
|
},
|
|
51
59
|
};
|
|
@@ -138,7 +146,7 @@ export default function lilypond(options = {}) {
|
|
|
138
146
|
"astro:config:done": ({ injectTypes }) => {
|
|
139
147
|
injectTypes({
|
|
140
148
|
filename: "ly-types.d.ts",
|
|
141
|
-
content: LY_EXTENSIONS.map((ext) => `declare module "*${ext}" {\n const
|
|
149
|
+
content: LY_EXTENSIONS.map((ext) => `declare module "*${ext}" {\n const content: import("astro-lilypond").LilypondContent;\n export default content;\n}`).join("\n"),
|
|
142
150
|
});
|
|
143
151
|
},
|
|
144
152
|
"astro:build:done": async ({ logger }) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAGN,YAAY,EACZ,YAAY,EACZ,aAAa,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../../src/plugins/rehype.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rehype.d.ts","sourceRoot":"","sources":["../../src/plugins/rehype.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQxD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAIxD,wBAAgB,YAAY,CAC3B,OAAO,EAAE,mBAAmB,GAE1B,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CA8ExD"}
|
package/dist/plugins/rehype.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { visit } from "unist-util-visit";
|
|
2
|
-
import { defaultOptions, render } from "../render.js";
|
|
3
|
-
import { contentHashFor,
|
|
4
|
-
import {
|
|
2
|
+
import { defaultOptions, render, resolveCrop } from "../render.js";
|
|
3
|
+
import { contentHashFor, includePathsFor, isLilypondLang, prependVersion, renderedHtml, resolveDefaults, sourceNameFor, titleFor, } from "../utils/index.js";
|
|
4
|
+
import { writeAssets } from "../writeAsset.js";
|
|
5
5
|
// Typed loosely so it's assignable to both RehypePlugin and the unified
|
|
6
6
|
// Plugin generic regardless of which @types/hast version the host project pins.
|
|
7
7
|
export function rehypePlugin(options) {
|
|
@@ -32,31 +32,32 @@ export function rehypePlugin(options) {
|
|
|
32
32
|
.filter((c) => c.type === "text")
|
|
33
33
|
.map((c) => c.value)
|
|
34
34
|
.join("");
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
: raw;
|
|
35
|
+
const { version, resolution, crop: cropSetting, } = resolveDefaults(options.defaults);
|
|
36
|
+
const source = version ? prependVersion(raw, version) : raw;
|
|
38
37
|
const format = options.format ?? defaultOptions.format;
|
|
39
|
-
const
|
|
40
|
-
const crop = options.crop ?? defaultOptions.crop;
|
|
38
|
+
const crop = resolveCrop(cropSetting, "markdown");
|
|
41
39
|
const hash = contentHashFor({ source, format, resolution, crop });
|
|
42
|
-
|
|
43
|
-
const promise = writeAsset({
|
|
40
|
+
const promise = writeAssets({
|
|
44
41
|
hash,
|
|
45
42
|
title,
|
|
46
43
|
format,
|
|
47
44
|
outputDir: options.assetsDir,
|
|
48
45
|
urlBase: options.assetsUrlBase,
|
|
49
46
|
trackAsset: options.trackAsset,
|
|
50
|
-
|
|
47
|
+
getBuffers: () => render(source, {
|
|
51
48
|
format,
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
crop,
|
|
50
|
+
defaults: options.defaults,
|
|
54
51
|
timeout: options.timeout,
|
|
55
52
|
includePaths,
|
|
56
53
|
sourceName,
|
|
57
54
|
}),
|
|
58
|
-
}).then((
|
|
59
|
-
|
|
55
|
+
}).then((assets) => {
|
|
56
|
+
fileNames.push(...assets.map((asset) => asset.fileName));
|
|
57
|
+
const rawNode = {
|
|
58
|
+
type: "raw",
|
|
59
|
+
value: renderedHtml(assets.map((asset) => asset.url)),
|
|
60
|
+
};
|
|
60
61
|
parent.children[index] = rawNode;
|
|
61
62
|
});
|
|
62
63
|
promises.push(promise);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rehype.js","sourceRoot":"","sources":["../../src/plugins/rehype.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"rehype.js","sourceRoot":"","sources":["../../src/plugins/rehype.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../../src/plugins/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"remark.d.ts","sourceRoot":"","sources":["../../src/plugins/remark.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AActC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAExD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAuD5D,CAAC"}
|
package/dist/plugins/remark.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { visit } from "unist-util-visit";
|
|
2
|
-
import { defaultOptions, render } from "../render.js";
|
|
3
|
-
import { contentHashFor,
|
|
4
|
-
import {
|
|
2
|
+
import { defaultOptions, render, resolveCrop } from "../render.js";
|
|
3
|
+
import { contentHashFor, includePathsFor, isLilypondLang, prependVersion, renderedHtml, resolveDefaults, sourceNameFor, titleFor, } from "../utils/index.js";
|
|
4
|
+
import { writeAssets } from "../writeAsset.js";
|
|
5
5
|
export const remarkPlugin = (options) => {
|
|
6
6
|
return async (tree, file) => {
|
|
7
7
|
const promises = [];
|
|
@@ -12,31 +12,32 @@ export const remarkPlugin = (options) => {
|
|
|
12
12
|
visit(tree, "code", (node, index, parent) => {
|
|
13
13
|
if (!isLilypondLang(node.lang) || index === undefined || !parent)
|
|
14
14
|
return;
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
: node.value;
|
|
15
|
+
const { version, resolution, crop: cropSetting, } = resolveDefaults(options.defaults);
|
|
16
|
+
const source = version ? prependVersion(node.value, version) : node.value;
|
|
18
17
|
const format = options.format ?? defaultOptions.format;
|
|
19
|
-
const
|
|
20
|
-
const crop = options.crop ?? defaultOptions.crop;
|
|
18
|
+
const crop = resolveCrop(cropSetting, "markdown");
|
|
21
19
|
const hash = contentHashFor({ source, format, resolution, crop });
|
|
22
|
-
|
|
23
|
-
const promise = writeAsset({
|
|
20
|
+
const promise = writeAssets({
|
|
24
21
|
hash,
|
|
25
22
|
title,
|
|
26
23
|
format,
|
|
27
24
|
outputDir: options.assetsDir,
|
|
28
25
|
urlBase: options.assetsUrlBase,
|
|
29
26
|
trackAsset: options.trackAsset,
|
|
30
|
-
|
|
27
|
+
getBuffers: () => render(source, {
|
|
31
28
|
format,
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
crop,
|
|
30
|
+
defaults: options.defaults,
|
|
34
31
|
timeout: options.timeout,
|
|
35
32
|
includePaths,
|
|
36
33
|
sourceName,
|
|
37
34
|
}),
|
|
38
|
-
}).then((
|
|
39
|
-
|
|
35
|
+
}).then((assets) => {
|
|
36
|
+
fileNames.push(...assets.map((asset) => asset.fileName));
|
|
37
|
+
const htmlNode = {
|
|
38
|
+
type: "html",
|
|
39
|
+
value: renderedHtml(assets.map((asset) => asset.url)),
|
|
40
|
+
};
|
|
40
41
|
parent.children[index] = htmlNode;
|
|
41
42
|
});
|
|
42
43
|
promises.push(promise);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remark.js","sourceRoot":"","sources":["../../src/plugins/remark.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"remark.js","sourceRoot":"","sources":["../../src/plugins/remark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satteri.d.ts","sourceRoot":"","sources":["../../src/plugins/satteri.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"satteri.d.ts","sourceRoot":"","sources":["../../src/plugins/satteri.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAuB,MAAM,SAAS,CAAC;AAa1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD,wBAAgB,aAAa,CAC5B,OAAO,EAAE,oBAAoB,GAC3B,qBAAqB,CAwDvB"}
|
package/dist/plugins/satteri.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defaultOptions, render } from "../render.js";
|
|
2
|
-
import { contentHashFor,
|
|
3
|
-
import {
|
|
1
|
+
import { defaultOptions, render, resolveCrop } from "../render.js";
|
|
2
|
+
import { contentHashFor, includePathsFor, isLilypondLang, prependVersion, renderedHtml, resolveDefaults, sourceNameFor, titleFor, } from "../utils/index.js";
|
|
3
|
+
import { writeAssets } from "../writeAsset.js";
|
|
4
4
|
export function satteriPlugin(options) {
|
|
5
5
|
return {
|
|
6
6
|
name: "astro-lilypond",
|
|
@@ -10,28 +10,25 @@ export function satteriPlugin(options) {
|
|
|
10
10
|
async code(node, ctx) {
|
|
11
11
|
if (!isLilypondLang(node.lang))
|
|
12
12
|
return undefined;
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
: node.value;
|
|
13
|
+
const { version, resolution, crop: cropSetting, } = resolveDefaults(options.defaults);
|
|
14
|
+
const source = version ? prependVersion(node.value, version) : node.value;
|
|
16
15
|
const format = options.format ?? defaultOptions.format;
|
|
17
|
-
const resolution = options.resolution ?? defaultOptions.resolution;
|
|
18
|
-
const crop = options.crop ?? defaultOptions.crop;
|
|
19
16
|
const includePaths = includePathsFor(ctx.fileURL);
|
|
20
17
|
const sourceName = sourceNameFor(ctx.fileURL);
|
|
21
18
|
const title = titleFor(sourceName);
|
|
19
|
+
const crop = resolveCrop(cropSetting, "markdown");
|
|
22
20
|
const hash = contentHashFor({ source, format, resolution, crop });
|
|
23
|
-
const
|
|
24
|
-
const url = await writeAsset({
|
|
21
|
+
const assets = await writeAssets({
|
|
25
22
|
hash,
|
|
26
23
|
title,
|
|
27
24
|
format,
|
|
28
25
|
outputDir: options.assetsDir,
|
|
29
26
|
urlBase: options.assetsUrlBase,
|
|
30
27
|
trackAsset: options.trackAsset,
|
|
31
|
-
|
|
28
|
+
getBuffers: () => render(source, {
|
|
32
29
|
format,
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
crop,
|
|
31
|
+
defaults: options.defaults,
|
|
35
32
|
timeout: options.timeout,
|
|
36
33
|
includePaths,
|
|
37
34
|
sourceName,
|
|
@@ -40,11 +37,12 @@ export function satteriPlugin(options) {
|
|
|
40
37
|
// Sätteri has no per-file "done" hook, so prune per block instead.
|
|
41
38
|
if (ctx.fileURL) {
|
|
42
39
|
const index = ctx.indexOf(node) ?? "root";
|
|
43
|
-
await options.pruneStaleAssets(`${ctx.fileURL.href}#${index}`,
|
|
44
|
-
fileName,
|
|
45
|
-
]);
|
|
40
|
+
await options.pruneStaleAssets(`${ctx.fileURL.href}#${index}`, assets.map((asset) => asset.fileName));
|
|
46
41
|
}
|
|
47
|
-
return {
|
|
42
|
+
return {
|
|
43
|
+
type: "html",
|
|
44
|
+
value: renderedHtml(assets.map((asset) => asset.url)),
|
|
45
|
+
};
|
|
48
46
|
},
|
|
49
47
|
};
|
|
50
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satteri.js","sourceRoot":"","sources":["../../src/plugins/satteri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"satteri.js","sourceRoot":"","sources":["../../src/plugins/satteri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EACN,cAAc,EACd,eAAe,EACf,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,QAAQ,GACR,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,MAAM,UAAU,aAAa,CAC5B,OAA6B;IAE7B,OAAO;QACN,IAAI,EAAE,gBAAgB;QACtB,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,KAAK,CAAC,IAAI,CACT,IAAoB,EACpB,GAAwB;YAExB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACjD,MAAM,EACL,OAAO,EACP,UAAU,EACV,IAAI,EAAE,WAAW,GACjB,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC;YACvD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAChC,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,aAAa;gBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,UAAU,EAAE,GAAG,EAAE,CAChB,MAAM,CAAC,MAAM,EAAE;oBACd,MAAM;oBACN,IAAI;oBACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,YAAY;oBACZ,UAAU;iBACV,CAAC;aACH,CAAC,CAAC;YAEH,mEAAmE;YACnE,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;gBAC1C,MAAM,OAAO,CAAC,gBAAgB,CAC7B,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,EAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CACrC,CAAC;YACH,CAAC;YAED,OAAO;gBACN,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACrD,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC"}
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC3D,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAElB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IAEtB,6EAA6E;IAC7E,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,wEAAwE;IACxE,gBAAgB,EAAE,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,MAAM,EAAE,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB"}
|
package/dist/readOutputFile.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ import type { Format } from "./render.js";
|
|
|
6
6
|
* the generic `"input.ly"`.
|
|
7
7
|
*/
|
|
8
8
|
export declare function safeInputFileName(sourceName: string | undefined): string;
|
|
9
|
-
export declare function readOutputFile(base: string, format: Format, crop: boolean): Promise<Buffer>;
|
|
9
|
+
export declare function readOutputFile(base: string, format: Format, crop: boolean): Promise<Buffer[]>;
|
|
10
10
|
//# sourceMappingURL=readOutputFile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readOutputFile.d.ts","sourceRoot":"","sources":["../src/readOutputFile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOxE;
|
|
1
|
+
{"version":3,"file":"readOutputFile.d.ts","sourceRoot":"","sources":["../src/readOutputFile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOxE;AAkBD,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACX,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
|
package/dist/readOutputFile.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { basename } from "node:path";
|
|
1
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
3
|
/**
|
|
4
4
|
* Resolves the base name to use for the temp input file. Strips any
|
|
5
5
|
* directory components from `sourceName` (it may be a full path) and
|
|
@@ -15,28 +15,47 @@ export function safeInputFileName(sourceName) {
|
|
|
15
15
|
}
|
|
16
16
|
return base;
|
|
17
17
|
}
|
|
18
|
+
/** Sorts by the numeric page captured in `match[1]`, ascending. */
|
|
19
|
+
function byPageNumber(a, b) {
|
|
20
|
+
return Number(a[1]) - Number(b[1]);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Multi-page naming convention per format: SVG (and PDF/PS/EPS, should they
|
|
24
|
+
* be added to `FORMATS`) uses `<base>-1.<ext>`; PNG uses `<base>-page1.<ext>`.
|
|
25
|
+
* Listed explicitly so adding a format means stating its convention here,
|
|
26
|
+
* not guessing among known patterns.
|
|
27
|
+
*/
|
|
28
|
+
const PAGE_NUMBER_INFIX = {
|
|
29
|
+
svg: "-",
|
|
30
|
+
png: "-page",
|
|
31
|
+
};
|
|
18
32
|
export async function readOutputFile(base, format, crop) {
|
|
19
33
|
// --define-default crop writes <base>.cropped.<format> alongside <base>.<format>
|
|
20
34
|
if (crop) {
|
|
21
35
|
try {
|
|
22
|
-
return await readFile(`${base}.cropped.${format}`);
|
|
36
|
+
return [await readFile(`${base}.cropped.${format}`)];
|
|
23
37
|
}
|
|
24
38
|
catch (err) {
|
|
25
39
|
throw new Error(`expected cropped output at ${base}.cropped.${format} but it was not found: ${err instanceof Error ? err.message : String(err)}`);
|
|
26
40
|
}
|
|
27
41
|
}
|
|
28
|
-
// Regular output: single page → <base>.<format
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
42
|
+
// Regular output: single page → <base>.<format>; multi-page → numbered
|
|
43
|
+
// per `PAGE_NUMBER_INFIX`. List the directory once so the full page
|
|
44
|
+
// count is known up front, rather than probing paths one at a time.
|
|
45
|
+
const dir = dirname(base);
|
|
46
|
+
const prefix = basename(base);
|
|
47
|
+
const entries = await readdir(dir);
|
|
48
|
+
if (entries.includes(`${prefix}.${format}`)) {
|
|
49
|
+
return [await readFile(join(dir, `${prefix}.${format}`))];
|
|
32
50
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
const pagePattern = new RegExp(`^${prefix}${PAGE_NUMBER_INFIX[format]}(\\d+)\\.${format}$`);
|
|
52
|
+
const pages = entries
|
|
53
|
+
.map((name) => name.match(pagePattern))
|
|
54
|
+
.filter((match) => match !== null)
|
|
55
|
+
.sort(byPageNumber);
|
|
56
|
+
if (pages.length > 0) {
|
|
57
|
+
return Promise.all(pages.map((match) => readFile(join(dir, match[0]))));
|
|
40
58
|
}
|
|
59
|
+
throw new Error(`no ${format} output found in ${dir}`);
|
|
41
60
|
}
|
|
42
61
|
//# sourceMappingURL=readOutputFile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readOutputFile.js","sourceRoot":"","sources":["../src/readOutputFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"readOutputFile.js","sourceRoot":"","sources":["../src/readOutputFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGpD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B;IAC/D,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,OAAO,UAAU,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,mEAAmE;AACnE,SAAS,YAAY,CAAC,CAAmB,EAAE,CAAmB;IAC7D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAA2B;IACjD,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,OAAO;CACZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,IAAY,EACZ,MAAc,EACd,IAAa;IAEb,iFAAiF;IACjF,IAAI,IAAI,EAAE,CAAC;QACV,IAAI,CAAC;YACJ,OAAO,CAAC,MAAM,QAAQ,CAAC,GAAG,IAAI,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACd,8BAA8B,IAAI,YAAY,MAAM,0BACnD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAChD,EAAE,CACF,CAAC;QACH,CAAC;IACF,CAAC;IAED,uEAAuE;IACvE,oEAAoE;IACpE,oEAAoE;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,MAAM,CAC7B,IAAI,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,MAAM,GAAG,CAC3D,CAAC;IACF,MAAM,KAAK,GAAG,OAAO;SACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACtC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;SAC5D,IAAI,CAAC,YAAY,CAAC,CAAC;IACrB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,MAAM,MAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC;AACxD,CAAC"}
|