@functional-examples/documentation 0.0.1 → 0.1.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/README.md +20 -2
- package/README.md.template +4 -26
- package/dist/extractor/extractor.js +3 -3
- package/dist/extractor/extractor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/templates/guide-renderer.d.ts +12 -1
- package/dist/templates/guide-renderer.d.ts.map +1 -1
- package/dist/templates/guide-renderer.js +7 -2
- package/dist/templates/guide-renderer.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -6,6 +6,7 @@ Documentation generation plugin for functional-examples.
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
npm install @functional-examples/documentation
|
|
9
|
+
|
|
9
10
|
```
|
|
10
11
|
|
|
11
12
|
## Overview
|
|
@@ -16,18 +17,33 @@ This plugin generates documentation from your scanned examples using customizabl
|
|
|
16
17
|
|
|
17
18
|
```typescript
|
|
18
19
|
import { createDocumentationPlugin } from '@functional-examples/documentation';
|
|
20
|
+
import { createJavaScriptPlugin } from '@functional-examples/javascript';
|
|
19
21
|
import type { Config } from 'functional-examples';
|
|
20
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Configuration demonstrating the documentation plugin.
|
|
25
|
+
*
|
|
26
|
+
* The documentation plugin:
|
|
27
|
+
* - Adds the `generate` CLI command
|
|
28
|
+
* - Enables template-based doc generation
|
|
29
|
+
* - Provides prose helpers (file(), region(), fencedBlock())
|
|
30
|
+
*/
|
|
21
31
|
const config: Config = {
|
|
22
32
|
plugins: [
|
|
33
|
+
createJavaScriptPlugin(),
|
|
23
34
|
createDocumentationPlugin({
|
|
24
|
-
outputDir: '
|
|
35
|
+
outputDir: 'generated-docs',
|
|
25
36
|
format: 'markdown',
|
|
26
37
|
}),
|
|
27
38
|
],
|
|
39
|
+
scan: {
|
|
40
|
+
include: ['src/**/*'],
|
|
41
|
+
exclude: ['**/node_modules/**', '**/dist/**'],
|
|
42
|
+
},
|
|
28
43
|
};
|
|
29
44
|
|
|
30
45
|
export default config;
|
|
46
|
+
|
|
31
47
|
```
|
|
32
48
|
|
|
33
49
|
## Features
|
|
@@ -47,13 +63,15 @@ Inside prose files (README.md in examples), use:
|
|
|
47
63
|
```markdown
|
|
48
64
|
<%= file('utils.ts') %> <% /* Embed a file as a fenced code block */ %>
|
|
49
65
|
<%= region('setup') %> <% /* Embed a code region */ %>
|
|
66
|
+
|
|
50
67
|
```
|
|
51
68
|
|
|
52
69
|
Inside guide documents, reference any example:
|
|
53
70
|
|
|
54
71
|
```markdown
|
|
55
72
|
<%= example('basic-usage').file('scan.ts') %>
|
|
56
|
-
<%= example('basic-usage').region('
|
|
73
|
+
<%= example('basic-usage').region('scan') %>
|
|
74
|
+
|
|
57
75
|
```
|
|
58
76
|
|
|
59
77
|
## License
|
package/README.md.template
CHANGED
|
@@ -4,9 +4,7 @@ Documentation generation plugin for functional-examples.
|
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
npm install @functional-examples/documentation
|
|
9
|
-
```
|
|
7
|
+
<%= example('devkit-readme').file('snippets/install-documentation.sh') %>
|
|
10
8
|
|
|
11
9
|
## Overview
|
|
12
10
|
|
|
@@ -14,21 +12,7 @@ This plugin generates documentation from your scanned examples using customizabl
|
|
|
14
12
|
|
|
15
13
|
## Usage
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
import { createDocumentationPlugin } from '@functional-examples/documentation';
|
|
19
|
-
import type { Config } from 'functional-examples';
|
|
20
|
-
|
|
21
|
-
const config: Config = {
|
|
22
|
-
plugins: [
|
|
23
|
-
createDocumentationPlugin({
|
|
24
|
-
outputDir: './docs/examples',
|
|
25
|
-
format: 'markdown',
|
|
26
|
-
}),
|
|
27
|
-
],
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export default config;
|
|
31
|
-
```
|
|
15
|
+
<%= example('documentation-plugin').file('functional-examples.config.ts') %>
|
|
32
16
|
|
|
33
17
|
## Features
|
|
34
18
|
|
|
@@ -44,17 +28,11 @@ export default config;
|
|
|
44
28
|
|
|
45
29
|
Inside prose files (README.md in examples), use:
|
|
46
30
|
|
|
47
|
-
|
|
48
|
-
<\%= file('utils.ts') \%> <\% /* Embed a file as a fenced code block */ \%>
|
|
49
|
-
<\%= region('setup') \%> <\% /* Embed a code region */ \%>
|
|
50
|
-
```
|
|
31
|
+
<%= example('devkit-readme').file('snippets/documentation-prose-helpers.md') %>
|
|
51
32
|
|
|
52
33
|
Inside guide documents, reference any example:
|
|
53
34
|
|
|
54
|
-
|
|
55
|
-
<\%= example('basic-usage').file('scan.ts') \%>
|
|
56
|
-
<\%= example('basic-usage').region('config-setup') \%>
|
|
57
|
-
```
|
|
35
|
+
<%= example('devkit-readme').file('snippets/documentation-guide-helpers.md') %>
|
|
58
36
|
|
|
59
37
|
## License
|
|
60
38
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseYaml } from '@functional-examples/devkit';
|
|
1
|
+
import { ExampleFile, parseYaml } from '@functional-examples/devkit';
|
|
2
2
|
import * as fs from 'node:fs/promises';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
const EXTRACTOR_NAME = 'markdown-frontmatter-extractor';
|
|
@@ -68,12 +68,12 @@ export function createMarkdownExtractor() {
|
|
|
68
68
|
: undefined,
|
|
69
69
|
rootPath: path.dirname(absPath),
|
|
70
70
|
files: [
|
|
71
|
-
{
|
|
71
|
+
new ExampleFile({
|
|
72
72
|
absolutePath: absPath,
|
|
73
73
|
relativePath: candidate.name,
|
|
74
74
|
raw: content,
|
|
75
75
|
parsed: body,
|
|
76
|
-
},
|
|
76
|
+
}),
|
|
77
77
|
],
|
|
78
78
|
metadata,
|
|
79
79
|
extractorName: EXTRACTOR_NAME,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/extractor/extractor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/extractor/extractor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -28,5 +28,5 @@ export { templateHelpers } from './templates/helpers.js';
|
|
|
28
28
|
export { ConsumptionTracker } from './templates/consumption-tracker.js';
|
|
29
29
|
export { createProseHelpers, fencedBlock } from './templates/prose-helpers.js';
|
|
30
30
|
export { createGuideRenderer } from './templates/guide-renderer.js';
|
|
31
|
-
export type { GuideRenderer, ExampleAccessor } from './templates/guide-renderer.js';
|
|
31
|
+
export type { GuideRenderer, GuideRendererOptions, ExampleAccessor } from './templates/guide-renderer.js';
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,6BAA6B,CAAC;AAG5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAQtF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,0BAA+B,GACvC,MAAM,CAAC,sBAAsB,CAAC,CAkBhC;AAGD,YAAY,EACV,0BAA0B,EAC1B,YAAY,EACZ,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,6BAA6B,CAAC;AAG5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAQtF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,0BAA+B,GACvC,MAAM,CAAC,sBAAsB,CAAC,CAkBhC;AAGD,YAAY,EACV,0BAA0B,EAC1B,YAAY,EACZ,kCAAkC,EAClC,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -37,6 +37,17 @@ export interface ExampleAccessor {
|
|
|
37
37
|
/** The example's description. */
|
|
38
38
|
description?: string;
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Options for createGuideRenderer.
|
|
42
|
+
*/
|
|
43
|
+
export interface GuideRendererOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Additional helper functions exposed in guide templates by their key name.
|
|
46
|
+
* Each key becomes a variable available directly in the template:
|
|
47
|
+
* `<%= myHelper('arg') %>`
|
|
48
|
+
*/
|
|
49
|
+
customHelpers?: Record<string, unknown>;
|
|
50
|
+
}
|
|
40
51
|
/**
|
|
41
52
|
* Create a guide renderer bound to a set of scanned examples.
|
|
42
53
|
*
|
|
@@ -55,5 +66,5 @@ export interface ExampleAccessor {
|
|
|
55
66
|
* const html = await renderer.renderFile('docs/guides/getting-started.md');
|
|
56
67
|
* ```
|
|
57
68
|
*/
|
|
58
|
-
export declare function createGuideRenderer(examples: ScannedExample[]): GuideRenderer;
|
|
69
|
+
export declare function createGuideRenderer(examples: ScannedExample[], options?: GuideRendererOptions): GuideRenderer;
|
|
59
70
|
//# sourceMappingURL=guide-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-renderer.d.ts","sourceRoot":"","sources":["../../src/templates/guide-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM/E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,wEAAwE;IACxE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,mDAAmD;IACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,gCAAgC;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"guide-renderer.d.ts","sourceRoot":"","sources":["../../src/templates/guide-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM/E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,wEAAwE;IACxE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,mDAAmD;IACnD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,gCAAgC;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EAAE,EAC1B,OAAO,GAAE,oBAAyB,GACjC,aAAa,CA6Ef"}
|
|
@@ -32,7 +32,7 @@ import { fencedBlock } from './prose-helpers.js';
|
|
|
32
32
|
* const html = await renderer.renderFile('docs/guides/getting-started.md');
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
|
-
export function createGuideRenderer(examples) {
|
|
35
|
+
export function createGuideRenderer(examples, options = {}) {
|
|
36
36
|
// Build lookup map: example ID → ScannedExample
|
|
37
37
|
const examplesById = new Map(examples.map((ex) => [ex.id, ex]));
|
|
38
38
|
/**
|
|
@@ -69,11 +69,15 @@ export function createGuideRenderer(examples) {
|
|
|
69
69
|
description: ex.description,
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
|
+
const { customHelpers = {} } = options;
|
|
73
|
+
const customVarBindings = Object.keys(customHelpers)
|
|
74
|
+
.map((k) => `var ${k} = it.custom.${k};`)
|
|
75
|
+
.join(' ');
|
|
72
76
|
// Separate Eta instance for guide templates with injected helper names
|
|
73
77
|
const guideEta = new Eta({
|
|
74
78
|
autoEscape: false,
|
|
75
79
|
autoTrim: false,
|
|
76
|
-
functionHeader:
|
|
80
|
+
functionHeader: `var example = it.example, examples = it.examples, helpers = it.helpers; ${customVarBindings}`,
|
|
77
81
|
});
|
|
78
82
|
function render(markdown) {
|
|
79
83
|
return guideEta
|
|
@@ -81,6 +85,7 @@ export function createGuideRenderer(examples) {
|
|
|
81
85
|
example: exampleAccessor,
|
|
82
86
|
examples,
|
|
83
87
|
helpers: templateHelpers,
|
|
88
|
+
custom: customHelpers,
|
|
84
89
|
})
|
|
85
90
|
.replaceAll('\\%', '%');
|
|
86
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-renderer.js","sourceRoot":"","sources":["../../src/templates/guide-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"guide-renderer.js","sourceRoot":"","sources":["../../src/templates/guide-renderer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@functional-examples/documentation",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Documentation generation plugin for functional-examples",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"templates"
|
|
21
21
|
],
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"functional-examples": "0.0
|
|
23
|
+
"functional-examples": "0.1.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependenciesMeta": {
|
|
26
26
|
"yaml": {
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
"cli-forge": "1.2.0",
|
|
32
32
|
"eta": "^3.5.0",
|
|
33
33
|
"zod": "4.3.6",
|
|
34
|
-
"@functional-examples/devkit": "0.0
|
|
34
|
+
"@functional-examples/devkit": "0.1.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "22.19.8",
|
|
38
38
|
"typescript": "^5.7.2",
|
|
39
39
|
"vitest": "^1.3.1",
|
|
40
40
|
"yaml": "^2.7.1",
|
|
41
|
-
"
|
|
42
|
-
"functional-examples": "0.0
|
|
41
|
+
"functional-examples": "0.1.0",
|
|
42
|
+
"@functional-examples/devkit": "0.1.0"
|
|
43
43
|
},
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"author": {
|