embedex 0.1.0 → 0.1.1
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/README.md +18 -12
- package/package.json +16 -3
- package/src/bin/cli.js +3 -3
- package/src/bin/cli.js.map +1 -1
- package/src/bin/processResult.js +3 -1
- package/src/bin/processResult.js.map +1 -1
- package/src/lib/embed.d.ts +1 -1
- package/src/lib/embed.js +3 -3
- package/src/lib/embed.js.map +1 -1
- package/src/lib/internal/createExampleMap.d.ts +3 -3
- package/src/lib/internal/createExampleMap.js +1 -1
- package/src/lib/internal/createExampleMap.js.map +1 -1
- package/src/lib/internal/processTargets.d.ts +2 -2
- package/src/lib/internal/processTargets.js +10 -5
- package/src/lib/internal/processTargets.js.map +1 -1
- package/src/lib/internal/types.d.ts +3 -3
- package/src/lib/types.d.ts +2 -2
- package/static/logo.png +0 -0
package/README.md
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
<p align="center">
|
|
3
|
-
<img alt="embedex logo." src="./static/logo.png" width=320>
|
|
4
|
-
</p>
|
|
1
|
+
# embedex <!-- omit from toc -->
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
A command-line interface (CLI) that embeds examples into TypeDoc comments.
|
|
7
4
|
|
|
8
|
-
|
|
5
|
+
You can write code directly in TypeDoc comments using the [`@example` tag](https://typedoc.org/tags/example/), but keeping them up to date and guaranteed runnable is challenging since they aren't type-checked, linted, or tested.
|
|
9
6
|
|
|
10
|
-
While [`typedoc-plugin-include-example`](https://github.com/ferdodo/typedoc-plugin-include-example) embeds code into the resulting TypeDoc,
|
|
7
|
+
While [`typedoc-plugin-include-example`](https://github.com/ferdodo/typedoc-plugin-include-example) embeds code into the resulting TypeDoc, the examples aren't in your code, so IDEs cannot show them on hover.
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
Keep your examples up to date, running, and showing on hover in IDEs with `embedex`.
|
|
13
10
|
|
|
14
11
|
## Table of contents <!-- omit from toc -->
|
|
15
12
|
|
|
@@ -20,8 +17,16 @@ Ensure your example code runs and shows up in your IDE with `embedex`.
|
|
|
20
17
|
|
|
21
18
|
## Install
|
|
22
19
|
|
|
20
|
+
Install as a dev dependency in your project:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npm install --save-dev embedex
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or globally:
|
|
27
|
+
|
|
23
28
|
```sh
|
|
24
|
-
npm install
|
|
29
|
+
npm install --global embedex
|
|
25
30
|
```
|
|
26
31
|
|
|
27
32
|
## Usage
|
|
@@ -76,13 +81,14 @@ npm install -D embedex
|
|
|
76
81
|
```
|
|
77
82
|
Usage: embedex [options]
|
|
78
83
|
|
|
79
|
-
|
|
84
|
+
A command-line interface (CLI) that embeds examples into TypeDoc comments.
|
|
80
85
|
|
|
81
86
|
Options:
|
|
82
87
|
-V, --version output the version number
|
|
83
88
|
-e, --examplesGlob <pattern> examples glob pattern (default: "examples/**/*.ts")
|
|
84
|
-
-c, --check
|
|
85
|
-
|
|
89
|
+
-c, --check verify if examples are correctly embedded without making changes,
|
|
90
|
+
exits with non-zero code if updates are needed; useful for CI/CD
|
|
91
|
+
pipelines (default: false)
|
|
86
92
|
-v, --verbose show verbose output (default: false)
|
|
87
93
|
-h, --help display help for command
|
|
88
94
|
```
|
package/package.json
CHANGED
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "embedex",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "0.1.
|
|
3
|
+
"description": "A command-line interface (CLI) that embeds examples into TypeDoc comments.",
|
|
4
|
+
"version": "0.1.1",
|
|
5
5
|
"bin": {
|
|
6
6
|
"embedex": "./src/bin/cli.js"
|
|
7
7
|
},
|
|
8
|
+
"bugs": "https://github.com/ClipboardHealth/core-utils/issues",
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"@commander-js/extra-typings": "12.1.0",
|
|
10
11
|
"glob": "11.0.0",
|
|
11
12
|
"tslib": "2.8.0",
|
|
12
13
|
"yoctocolors-cjs": "2.1.2"
|
|
13
14
|
},
|
|
14
|
-
"keywords": [
|
|
15
|
+
"keywords": [
|
|
16
|
+
"cli",
|
|
17
|
+
"documentation",
|
|
18
|
+
"embed",
|
|
19
|
+
"examples",
|
|
20
|
+
"typedoc",
|
|
21
|
+
"typescript"
|
|
22
|
+
],
|
|
15
23
|
"license": "MIT",
|
|
16
24
|
"main": "./src/index.js",
|
|
17
25
|
"publishConfig": {
|
|
18
26
|
"access": "public"
|
|
19
27
|
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"directory": "packages/embedex",
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/ClipboardHealth/core-utils.git"
|
|
32
|
+
},
|
|
20
33
|
"type": "commonjs",
|
|
21
34
|
"typings": "./src/index.d.ts",
|
|
22
35
|
"types": "./src/index.d.ts"
|
package/src/bin/cli.js
CHANGED
|
@@ -7,10 +7,10 @@ const embed_1 = require("../lib/embed");
|
|
|
7
7
|
const processResult_1 = require("./processResult");
|
|
8
8
|
const program = new extra_typings_1.Command()
|
|
9
9
|
.name(package_json_1.name)
|
|
10
|
-
.description(
|
|
10
|
+
.description(package_json_1.description)
|
|
11
11
|
.version(String(package_json_1.version))
|
|
12
12
|
.addOption(new extra_typings_1.Option("-e, --examplesGlob <pattern>", "examples glob pattern").default("examples/**/*.ts"))
|
|
13
|
-
.addOption(new extra_typings_1.Option("-c, --check", "
|
|
13
|
+
.addOption(new extra_typings_1.Option("-c, --check", "verify if examples are correctly embedded without making changes, exits with non-zero code if updates are needed; useful for CI/CD pipelines").default(false))
|
|
14
14
|
.addOption(new extra_typings_1.Option("-v, --verbose", "show verbose output").default(false));
|
|
15
15
|
program.parse();
|
|
16
16
|
const options = program.opts();
|
|
@@ -21,8 +21,8 @@ if (verbose) {
|
|
|
21
21
|
console.log((0, processResult_1.dim)("cwd:\n ", cwd));
|
|
22
22
|
}
|
|
23
23
|
(0, embed_1.embed)({
|
|
24
|
-
examplesGlob,
|
|
25
24
|
cwd,
|
|
25
|
+
examplesGlob,
|
|
26
26
|
write: !check,
|
|
27
27
|
})
|
|
28
28
|
.then((result) => {
|
package/src/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/bin/cli.ts"],"names":[],"mappings":";;;AACA,+DAA8D;AAE9D,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/bin/cli.ts"],"names":[],"mappings":";;;AACA,+DAA8D;AAE9D,qDAAgE;AAChE,wCAAqC;AACrC,mDAAqD;AAErD,MAAM,OAAO,GAAG,IAAI,uBAAO,EAAE;KAC1B,IAAI,CAAC,mBAAI,CAAC;KACV,WAAW,CAAC,0BAAW,CAAC;KACxB,OAAO,CAAC,MAAM,CAAC,sBAAO,CAAC,CAAC;KACxB,SAAS,CACR,IAAI,sBAAM,CAAC,8BAA8B,EAAE,uBAAuB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAChG;KACA,SAAS,CACR,IAAI,sBAAM,CACR,aAAa,EACb,8IAA8I,CAC/I,CAAC,OAAO,CAAC,KAAK,CAAC,CACjB;KACA,SAAS,CAAC,IAAI,sBAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhF,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1B,IAAI,OAAO,EAAE,CAAC;IACZ,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,IAAA,aAAK,EAAC;IACJ,GAAG;IACH,YAAY;IACZ,KAAK,EAAE,CAAC,KAAK;CACd,CAAC;KACC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACf,MAAM,MAAM,GAAG,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/src/bin/processResult.js
CHANGED
|
@@ -30,7 +30,6 @@ function processResult(params) {
|
|
|
30
30
|
code,
|
|
31
31
|
paths: { target: relative(target), examples: examples.map((path) => relative(path)) },
|
|
32
32
|
});
|
|
33
|
-
// eslint-disable-next-line default-case
|
|
34
33
|
switch (code) {
|
|
35
34
|
case "NO_CHANGE": {
|
|
36
35
|
output.push(toOutput());
|
|
@@ -44,6 +43,9 @@ function processResult(params) {
|
|
|
44
43
|
output.push(toOutput(check));
|
|
45
44
|
break;
|
|
46
45
|
}
|
|
46
|
+
default: {
|
|
47
|
+
throw new Error(`Unknown embed ${JSON.stringify(embed)}`);
|
|
48
|
+
}
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
return output.sort((a, b) => a.code.localeCompare(b.code));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processResult.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/bin/processResult.ts"],"names":[],"mappings":";;AAYA,kBAEC;AAED,
|
|
1
|
+
{"version":3,"file":"processResult.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/bin/processResult.ts"],"names":[],"mappings":"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"}
|
package/src/lib/embed.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type EmbedParams, type EmbedResult } from "./types";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Embed examples into TypeDoc comments.
|
|
4
4
|
*/
|
|
5
5
|
export declare function embed(params: Readonly<EmbedParams>): Promise<EmbedResult>;
|
package/src/lib/embed.js
CHANGED
|
@@ -6,13 +6,13 @@ const createExampleMap_1 = require("./internal/createExampleMap");
|
|
|
6
6
|
const createTargetMap_1 = require("./internal/createTargetMap");
|
|
7
7
|
const processTargets_1 = require("./internal/processTargets");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Embed examples into TypeDoc comments.
|
|
10
10
|
*/
|
|
11
11
|
async function embed(params) {
|
|
12
12
|
const { examplesGlob: globPattern, cwd, write } = params;
|
|
13
|
-
const exampleMap = await (0, createExampleMap_1.createExampleMap)({
|
|
13
|
+
const exampleMap = await (0, createExampleMap_1.createExampleMap)({ cwd, globPattern });
|
|
14
14
|
const targetMap = await (0, createTargetMap_1.createTargetMap)({ exampleMap });
|
|
15
|
-
const embeds = (0, processTargets_1.processTargets)({
|
|
15
|
+
const embeds = (0, processTargets_1.processTargets)({ cwd, exampleMap, targetMap });
|
|
16
16
|
await Promise.all(embeds.map(async (embed) => {
|
|
17
17
|
if (write && embed.code === "UPDATE") {
|
|
18
18
|
await (0, promises_1.writeFile)(embed.paths.target, embed.updatedContent);
|
package/src/lib/embed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/lib/embed.ts"],"names":[],"mappings":";;AAUA,sBA0BC;AApCD,+CAA6C;AAE7C,kEAA+D;AAC/D,gEAA6D;AAC7D,8DAA2D;AAG3D;;GAEG;AACI,KAAK,UAAU,KAAK,CAAC,MAA6B;IACvD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAgB,EAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../../../../../packages/embedex/src/lib/embed.ts"],"names":[],"mappings":";;AAUA,sBA0BC;AApCD,+CAA6C;AAE7C,kEAA+D;AAC/D,gEAA6D;AAC7D,8DAA2D;AAG3D;;GAEG;AACI,KAAK,UAAU,KAAK,CAAC,MAA6B;IACvD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,IAAA,mCAAgB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAe,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,IAAA,+BAAc,EAAC,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9D,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAA,oBAAS,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC9B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ExampleMap } from "./types";
|
|
2
|
-
export declare function createExampleMap(params: {
|
|
3
|
-
globPattern: string;
|
|
2
|
+
export declare function createExampleMap(params: Readonly<{
|
|
4
3
|
cwd: string;
|
|
5
|
-
|
|
4
|
+
globPattern: string;
|
|
5
|
+
}>): Promise<ExampleMap>;
|
|
@@ -6,7 +6,7 @@ const node_path_1 = require("node:path");
|
|
|
6
6
|
const glob_1 = require("glob");
|
|
7
7
|
const EXAMPLE_MARKER_PREFIX = "// ";
|
|
8
8
|
async function createExampleMap(params) {
|
|
9
|
-
const {
|
|
9
|
+
const { cwd, globPattern } = params;
|
|
10
10
|
const exampleMap = new Map();
|
|
11
11
|
const paths = await (0, glob_1.glob)(globPattern, { absolute: true, cwd, nodir: true });
|
|
12
12
|
for await (const path of paths) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createExampleMap.js","sourceRoot":"","sources":["../../../../../../packages/embedex/src/lib/internal/createExampleMap.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"createExampleMap.js","sourceRoot":"","sources":["../../../../../../packages/embedex/src/lib/internal/createExampleMap.ts"],"names":[],"mappings":";;AAUA,4CAsBC;AAhCD,+CAA4C;AAC5C,yCAAiC;AAEjC,+BAA4B;AAK5B,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE7B,KAAK,UAAU,gBAAgB,CACpC,MAAsD;IAEtD,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE;gBACnB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxB,OAAO,EAAE,KAAK;qBACX,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;qBAClC,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Embed } from "../types";
|
|
2
2
|
import { type ExampleMap, type TargetMap } from "./types";
|
|
3
3
|
export declare function processTargets(params: Readonly<{
|
|
4
|
-
exampleMap: ExampleMap;
|
|
5
4
|
cwd: string;
|
|
6
|
-
|
|
5
|
+
exampleMap: Readonly<ExampleMap>;
|
|
6
|
+
targetMap: Readonly<TargetMap>;
|
|
7
7
|
}>): Embed[];
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.processTargets = processTargets;
|
|
4
4
|
const node_path_1 = require("node:path");
|
|
5
5
|
function processTargets(params) {
|
|
6
|
-
const { exampleMap, targetMap
|
|
6
|
+
const { cwd, exampleMap, targetMap } = params;
|
|
7
7
|
function absolutePath(path) {
|
|
8
8
|
return (0, node_path_1.join)(cwd, path);
|
|
9
9
|
}
|
|
@@ -18,8 +18,13 @@ function processTargets(params) {
|
|
|
18
18
|
let updatedContent = content;
|
|
19
19
|
for (const { fullMatch, language, indent, example } of matches) {
|
|
20
20
|
const exampleContent = exampleMap.get(absolutePath(example));
|
|
21
|
-
const
|
|
22
|
-
|
|
21
|
+
const codeBlock = exampleContent.content.includes("```") ? "````" : "```";
|
|
22
|
+
const replacement = `${codeBlock}${language}\n${prefixLines({
|
|
23
|
+
content: [
|
|
24
|
+
`// ${example}`,
|
|
25
|
+
...exampleContent.content.replace("*/", "*\\/").split("\n"),
|
|
26
|
+
codeBlock,
|
|
27
|
+
],
|
|
23
28
|
indent,
|
|
24
29
|
})}`;
|
|
25
30
|
updatedContent = updatedContent.replaceAll(fullMatch, replacement);
|
|
@@ -34,9 +39,9 @@ function processTargets(params) {
|
|
|
34
39
|
}
|
|
35
40
|
function matchAll(params) {
|
|
36
41
|
const { content, exists } = params;
|
|
37
|
-
return [...content.matchAll(
|
|
42
|
+
return [...content.matchAll(/(`{3,4})(typescript|ts)\n(\s+)\*\s+\/\/\s(.+)\n[\S\s]*?\1/g)]
|
|
38
43
|
.map((match) => {
|
|
39
|
-
const [fullMatch, language, indent, example] = match;
|
|
44
|
+
const [fullMatch, , language, indent, example] = match;
|
|
40
45
|
return isDefined(fullMatch) &&
|
|
41
46
|
isDefined(language) &&
|
|
42
47
|
isDefined(indent) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processTargets.js","sourceRoot":"","sources":["../../../../../../packages/embedex/src/lib/internal/processTargets.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"processTargets.js","sourceRoot":"","sources":["../../../../../../packages/embedex/src/lib/internal/processTargets.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@ export interface Example {
|
|
|
3
3
|
content: string;
|
|
4
4
|
targets: TargetPath[];
|
|
5
5
|
}
|
|
6
|
-
export type ExampleMap =
|
|
6
|
+
export type ExampleMap = ReadonlyMap<ExamplePath, Example>;
|
|
7
7
|
interface Target {
|
|
8
8
|
content: string;
|
|
9
|
-
examples:
|
|
9
|
+
examples: ReadonlySet<ExamplePath>;
|
|
10
10
|
}
|
|
11
|
-
export type TargetMap =
|
|
11
|
+
export type TargetMap = ReadonlyMap<TargetPath, Target>;
|
|
12
12
|
export {};
|
package/src/lib/types.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export type ExamplePath = string;
|
|
2
2
|
export type TargetPath = string;
|
|
3
3
|
export interface EmbedParams {
|
|
4
|
-
examplesGlob: string;
|
|
5
4
|
cwd: string;
|
|
5
|
+
examplesGlob: string;
|
|
6
6
|
write: boolean;
|
|
7
7
|
}
|
|
8
8
|
export type Code = "NO_CHANGE" | "NO_MATCH" | "UPDATE";
|
|
9
9
|
export interface Result {
|
|
10
10
|
code: Code;
|
|
11
11
|
paths: {
|
|
12
|
-
target: TargetPath;
|
|
13
12
|
examples: ExamplePath[];
|
|
13
|
+
target: TargetPath;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
export type NoMatch = Result & {
|
package/static/logo.png
DELETED
|
Binary file
|