@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 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: './docs/examples',
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('config-setup') %>
73
+ <%= example('basic-usage').region('scan') %>
74
+
57
75
  ```
58
76
 
59
77
  ## License
@@ -4,9 +4,7 @@ Documentation generation plugin for functional-examples.
4
4
 
5
5
  ## Installation
6
6
 
7
- ```bash
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
- ```typescript
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
- ```markdown
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
- ```markdown
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":"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"}
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
@@ -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,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,aAAa,CAwE7E"}
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: 'var example = it.example, examples = it.examples, helpers = it.helpers;',
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;AA8BjD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA0B;IAC5D,gDAAgD;IAChD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEhE;;OAEG;IACH,SAAS,eAAe,CAAC,EAAU;QACjC,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,qDAAqD,EAAE,iBAAiB,SAAS,EAAE,CACpF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,CAAC,YAAoB;gBACvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;gBACpE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChE,MAAM,IAAI,KAAK,CACb,yBAAyB,EAAE,uBAAuB,YAAY,iBAAiB,QAAQ,EAAE,CAC1F,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;gBAChD,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YAED,MAAM,CAAC,QAAgB;gBACrB,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACzD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CACb,yBAAyB,EAAE,2BAA2B,QAAQ,SAAS,CACxE,CAAC;gBACJ,CAAC;gBACD,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnE,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,QAAQ,EAAE,EAAE,CAAC,QAAmC;YAChD,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,WAAW,EAAE,EAAE,CAAC,WAAW;SAC5B,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;QACvB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,cAAc,EACZ,yEAAyE;KAC5E,CAAC,CAAC;IAEH,SAAS,MAAM,CAAC,QAAgB;QAC9B,OAAO,QAAQ;aACZ,YAAY,CAAC,QAAQ,EAAE;YACtB,OAAO,EAAE,eAAe;YACxB,QAAQ;YACR,OAAO,EAAE,eAAe;SACzB,CAAC;aACD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,QAAgB;QACxC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,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.1",
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.1"
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.1"
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
- "@functional-examples/devkit": "0.0.1",
42
- "functional-examples": "0.0.1"
41
+ "functional-examples": "0.1.0",
42
+ "@functional-examples/devkit": "0.1.0"
43
43
  },
44
44
  "license": "MIT",
45
45
  "author": {