@reicek/neataptic-ts 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.
Files changed (272) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  4. package/.github/workflows/ci.yml +41 -0
  5. package/.github/workflows/deploy-pages.yml +29 -0
  6. package/.github/workflows/manual_release_pipeline.yml +62 -0
  7. package/.github/workflows/publish.yml +85 -0
  8. package/.github/workflows/release_dispatch.yml +38 -0
  9. package/.travis.yml +5 -0
  10. package/CONTRIBUTING.md +92 -0
  11. package/LICENSE +24 -0
  12. package/ONNX_EXPORT.md +87 -0
  13. package/README.md +1173 -0
  14. package/RELEASE.md +54 -0
  15. package/dist-docs/package.json +1 -0
  16. package/dist-docs/scripts/generate-docs.d.ts +2 -0
  17. package/dist-docs/scripts/generate-docs.d.ts.map +1 -0
  18. package/dist-docs/scripts/generate-docs.js +536 -0
  19. package/dist-docs/scripts/generate-docs.js.map +1 -0
  20. package/dist-docs/scripts/render-docs-html.d.ts +2 -0
  21. package/dist-docs/scripts/render-docs-html.d.ts.map +1 -0
  22. package/dist-docs/scripts/render-docs-html.js +148 -0
  23. package/dist-docs/scripts/render-docs-html.js.map +1 -0
  24. package/docs/FOLDERS.md +14 -0
  25. package/docs/README.md +1173 -0
  26. package/docs/architecture/README.md +1391 -0
  27. package/docs/architecture/index.html +938 -0
  28. package/docs/architecture/network/README.md +1210 -0
  29. package/docs/architecture/network/index.html +908 -0
  30. package/docs/assets/ascii-maze.bundle.js +16542 -0
  31. package/docs/assets/ascii-maze.bundle.js.map +7 -0
  32. package/docs/index.html +1419 -0
  33. package/docs/methods/README.md +670 -0
  34. package/docs/methods/index.html +477 -0
  35. package/docs/multithreading/README.md +274 -0
  36. package/docs/multithreading/index.html +215 -0
  37. package/docs/multithreading/workers/README.md +23 -0
  38. package/docs/multithreading/workers/browser/README.md +39 -0
  39. package/docs/multithreading/workers/browser/index.html +70 -0
  40. package/docs/multithreading/workers/index.html +57 -0
  41. package/docs/multithreading/workers/node/README.md +33 -0
  42. package/docs/multithreading/workers/node/index.html +66 -0
  43. package/docs/neat/README.md +1284 -0
  44. package/docs/neat/index.html +906 -0
  45. package/docs/src/README.md +2659 -0
  46. package/docs/src/index.html +1579 -0
  47. package/jest.config.ts +32 -0
  48. package/package.json +99 -0
  49. package/plans/HyperMorphoNEAT.md +293 -0
  50. package/plans/ONNX_EXPORT_PLAN.md +46 -0
  51. package/scripts/generate-docs.ts +486 -0
  52. package/scripts/render-docs-html.ts +138 -0
  53. package/scripts/types.d.ts +2 -0
  54. package/src/README.md +2659 -0
  55. package/src/architecture/README.md +1391 -0
  56. package/src/architecture/activationArrayPool.ts +135 -0
  57. package/src/architecture/architect.ts +635 -0
  58. package/src/architecture/connection.ts +148 -0
  59. package/src/architecture/group.ts +406 -0
  60. package/src/architecture/layer.ts +804 -0
  61. package/src/architecture/network/README.md +1210 -0
  62. package/src/architecture/network/network.activate.ts +223 -0
  63. package/src/architecture/network/network.connect.ts +157 -0
  64. package/src/architecture/network/network.deterministic.ts +167 -0
  65. package/src/architecture/network/network.evolve.ts +426 -0
  66. package/src/architecture/network/network.gating.ts +186 -0
  67. package/src/architecture/network/network.genetic.ts +247 -0
  68. package/src/architecture/network/network.mutate.ts +624 -0
  69. package/src/architecture/network/network.onnx.ts +463 -0
  70. package/src/architecture/network/network.prune.ts +216 -0
  71. package/src/architecture/network/network.remove.ts +96 -0
  72. package/src/architecture/network/network.serialize.ts +309 -0
  73. package/src/architecture/network/network.slab.ts +262 -0
  74. package/src/architecture/network/network.standalone.ts +246 -0
  75. package/src/architecture/network/network.stats.ts +59 -0
  76. package/src/architecture/network/network.topology.ts +86 -0
  77. package/src/architecture/network/network.training.ts +1278 -0
  78. package/src/architecture/network.ts +1302 -0
  79. package/src/architecture/node.ts +1288 -0
  80. package/src/architecture/onnx.ts +3 -0
  81. package/src/config.ts +83 -0
  82. package/src/methods/README.md +670 -0
  83. package/src/methods/activation.ts +372 -0
  84. package/src/methods/connection.ts +31 -0
  85. package/src/methods/cost.ts +347 -0
  86. package/src/methods/crossover.ts +63 -0
  87. package/src/methods/gating.ts +43 -0
  88. package/src/methods/methods.ts +8 -0
  89. package/src/methods/mutation.ts +300 -0
  90. package/src/methods/rate.ts +257 -0
  91. package/src/methods/selection.ts +65 -0
  92. package/src/multithreading/README.md +274 -0
  93. package/src/multithreading/multi.ts +339 -0
  94. package/src/multithreading/workers/README.md +23 -0
  95. package/src/multithreading/workers/browser/README.md +39 -0
  96. package/src/multithreading/workers/browser/testworker.ts +99 -0
  97. package/src/multithreading/workers/node/README.md +33 -0
  98. package/src/multithreading/workers/node/testworker.ts +72 -0
  99. package/src/multithreading/workers/node/worker.ts +70 -0
  100. package/src/multithreading/workers/workers.ts +22 -0
  101. package/src/neat/README.md +1284 -0
  102. package/src/neat/neat.adaptive.ts +544 -0
  103. package/src/neat/neat.compat.ts +164 -0
  104. package/src/neat/neat.constants.ts +20 -0
  105. package/src/neat/neat.diversity.ts +217 -0
  106. package/src/neat/neat.evaluate.ts +328 -0
  107. package/src/neat/neat.evolve.ts +1026 -0
  108. package/src/neat/neat.export.ts +249 -0
  109. package/src/neat/neat.helpers.ts +235 -0
  110. package/src/neat/neat.lineage.ts +220 -0
  111. package/src/neat/neat.multiobjective.ts +260 -0
  112. package/src/neat/neat.mutation.ts +718 -0
  113. package/src/neat/neat.objectives.ts +157 -0
  114. package/src/neat/neat.pruning.ts +190 -0
  115. package/src/neat/neat.selection.ts +269 -0
  116. package/src/neat/neat.speciation.ts +460 -0
  117. package/src/neat/neat.species.ts +151 -0
  118. package/src/neat/neat.telemetry.exports.ts +469 -0
  119. package/src/neat/neat.telemetry.ts +933 -0
  120. package/src/neat/neat.types.ts +275 -0
  121. package/src/neat.ts +1042 -0
  122. package/src/neataptic.ts +10 -0
  123. package/test/architecture/activationArrayPool.capacity.test.ts +19 -0
  124. package/test/architecture/activationArrayPool.test.ts +46 -0
  125. package/test/architecture/connection.test.ts +290 -0
  126. package/test/architecture/group.test.ts +950 -0
  127. package/test/architecture/layer.test.ts +1535 -0
  128. package/test/architecture/network.pruning.test.ts +65 -0
  129. package/test/architecture/node.test.ts +1602 -0
  130. package/test/examples/asciiMaze/asciiMaze.e2e.test.ts +499 -0
  131. package/test/examples/asciiMaze/asciiMaze.ts +41 -0
  132. package/test/examples/asciiMaze/browser-entry.ts +164 -0
  133. package/test/examples/asciiMaze/browserLogger.ts +221 -0
  134. package/test/examples/asciiMaze/browserTerminalUtility.ts +48 -0
  135. package/test/examples/asciiMaze/colors.ts +119 -0
  136. package/test/examples/asciiMaze/dashboardManager.ts +968 -0
  137. package/test/examples/asciiMaze/evolutionEngine.ts +1248 -0
  138. package/test/examples/asciiMaze/fitness.ts +136 -0
  139. package/test/examples/asciiMaze/index.html +128 -0
  140. package/test/examples/asciiMaze/index.ts +26 -0
  141. package/test/examples/asciiMaze/interfaces.ts +235 -0
  142. package/test/examples/asciiMaze/mazeMovement.ts +996 -0
  143. package/test/examples/asciiMaze/mazeUtils.ts +278 -0
  144. package/test/examples/asciiMaze/mazeVision.ts +402 -0
  145. package/test/examples/asciiMaze/mazeVisualization.ts +585 -0
  146. package/test/examples/asciiMaze/mazes.ts +245 -0
  147. package/test/examples/asciiMaze/networkRefinement.ts +76 -0
  148. package/test/examples/asciiMaze/networkVisualization.ts +901 -0
  149. package/test/examples/asciiMaze/terminalUtility.ts +73 -0
  150. package/test/methods/activation.test.ts +1142 -0
  151. package/test/methods/connection.test.ts +146 -0
  152. package/test/methods/cost.test.ts +1123 -0
  153. package/test/methods/crossover.test.ts +202 -0
  154. package/test/methods/gating.test.ts +144 -0
  155. package/test/methods/mutation.test.ts +451 -0
  156. package/test/methods/optimizers.advanced.test.ts +80 -0
  157. package/test/methods/optimizers.behavior.test.ts +105 -0
  158. package/test/methods/optimizers.formula.test.ts +89 -0
  159. package/test/methods/rate.cosineWarmRestarts.test.ts +44 -0
  160. package/test/methods/rate.linearWarmupDecay.test.ts +41 -0
  161. package/test/methods/rate.reduceOnPlateau.test.ts +45 -0
  162. package/test/methods/rate.test.ts +684 -0
  163. package/test/methods/selection.test.ts +245 -0
  164. package/test/multithreading/activations.functions.test.ts +54 -0
  165. package/test/multithreading/multi.test.ts +290 -0
  166. package/test/multithreading/worker.node.process.test.ts +39 -0
  167. package/test/multithreading/workers.coverage.test.ts +36 -0
  168. package/test/multithreading/workers.dynamic.import.test.ts +8 -0
  169. package/test/neat/neat.adaptive.complexityBudget.test.ts +34 -0
  170. package/test/neat/neat.adaptive.criterion.complexity.test.ts +50 -0
  171. package/test/neat/neat.adaptive.mutation.strategy.test.ts +37 -0
  172. package/test/neat/neat.adaptive.operator.decay.test.ts +31 -0
  173. package/test/neat/neat.adaptive.phasedComplexity.test.ts +25 -0
  174. package/test/neat/neat.adaptive.pruning.test.ts +25 -0
  175. package/test/neat/neat.adaptive.targetSpecies.test.ts +43 -0
  176. package/test/neat/neat.additional.coverage.test.ts +126 -0
  177. package/test/neat/neat.advanced.enhancements.test.ts +85 -0
  178. package/test/neat/neat.advanced.test.ts +589 -0
  179. package/test/neat/neat.diversity.autocompat.test.ts +47 -0
  180. package/test/neat/neat.diversity.metrics.test.ts +21 -0
  181. package/test/neat/neat.diversity.stats.test.ts +44 -0
  182. package/test/neat/neat.enhancements.test.ts +79 -0
  183. package/test/neat/neat.entropy.ancestorAdaptive.test.ts +133 -0
  184. package/test/neat/neat.entropy.compat.csv.test.ts +108 -0
  185. package/test/neat/neat.evolution.pruning.test.ts +39 -0
  186. package/test/neat/neat.fastmode.autotune.test.ts +42 -0
  187. package/test/neat/neat.innovation.test.ts +134 -0
  188. package/test/neat/neat.lineage.antibreeding.test.ts +35 -0
  189. package/test/neat/neat.lineage.entropy.test.ts +56 -0
  190. package/test/neat/neat.lineage.inbreeding.test.ts +49 -0
  191. package/test/neat/neat.lineage.pressure.test.ts +29 -0
  192. package/test/neat/neat.multiobjective.adaptive.test.ts +57 -0
  193. package/test/neat/neat.multiobjective.dynamic.schedule.test.ts +46 -0
  194. package/test/neat/neat.multiobjective.dynamic.test.ts +31 -0
  195. package/test/neat/neat.multiobjective.fastsort.delegation.test.ts +51 -0
  196. package/test/neat/neat.multiobjective.prune.test.ts +39 -0
  197. package/test/neat/neat.multiobjective.test.ts +21 -0
  198. package/test/neat/neat.mutation.undefined.pool.test.ts +24 -0
  199. package/test/neat/neat.objective.events.test.ts +26 -0
  200. package/test/neat/neat.objective.importance.test.ts +21 -0
  201. package/test/neat/neat.objective.lifetimes.test.ts +33 -0
  202. package/test/neat/neat.offspring.allocation.test.ts +22 -0
  203. package/test/neat/neat.operator.bandit.test.ts +17 -0
  204. package/test/neat/neat.operator.phases.test.ts +38 -0
  205. package/test/neat/neat.pruneInactive.behavior.test.ts +54 -0
  206. package/test/neat/neat.reenable.adaptation.test.ts +18 -0
  207. package/test/neat/neat.rng.state.test.ts +22 -0
  208. package/test/neat/neat.spawn.add.test.ts +123 -0
  209. package/test/neat/neat.speciation.test.ts +96 -0
  210. package/test/neat/neat.species.allocation.telemetry.test.ts +26 -0
  211. package/test/neat/neat.species.history.csv.test.ts +24 -0
  212. package/test/neat/neat.telemetry.advanced.test.ts +226 -0
  213. package/test/neat/neat.telemetry.csv.lineage.test.ts +19 -0
  214. package/test/neat/neat.telemetry.parity.test.ts +42 -0
  215. package/test/neat/neat.telemetry.stream.test.ts +19 -0
  216. package/test/neat/neat.telemetry.test.ts +16 -0
  217. package/test/neat/neat.test.ts +422 -0
  218. package/test/neat/neat.utilities.test.ts +44 -0
  219. package/test/network/__suppress_console.ts +9 -0
  220. package/test/network/acyclic.topoorder.test.ts +17 -0
  221. package/test/network/checkpoint.metricshook.test.ts +36 -0
  222. package/test/network/error.handling.test.ts +581 -0
  223. package/test/network/evolution.test.ts +285 -0
  224. package/test/network/genetic.test.ts +208 -0
  225. package/test/network/learning.capability.test.ts +244 -0
  226. package/test/network/mutation.effects.test.ts +492 -0
  227. package/test/network/network.activate.test.ts +115 -0
  228. package/test/network/network.activateBatch.test.ts +30 -0
  229. package/test/network/network.deterministic.test.ts +64 -0
  230. package/test/network/network.evolve.branches.test.ts +75 -0
  231. package/test/network/network.evolve.multithread.branches.test.ts +83 -0
  232. package/test/network/network.evolve.test.ts +100 -0
  233. package/test/network/network.gating.removal.test.ts +93 -0
  234. package/test/network/network.mutate.additional.test.ts +145 -0
  235. package/test/network/network.mutate.edgecases.test.ts +101 -0
  236. package/test/network/network.mutate.test.ts +101 -0
  237. package/test/network/network.prune.earlyexit.test.ts +38 -0
  238. package/test/network/network.remove.errors.test.ts +45 -0
  239. package/test/network/network.slab.fallbacks.test.ts +22 -0
  240. package/test/network/network.stats.test.ts +45 -0
  241. package/test/network/network.training.advanced.test.ts +149 -0
  242. package/test/network/network.training.basic.test.ts +228 -0
  243. package/test/network/network.training.helpers.test.ts +183 -0
  244. package/test/network/onnx.export.test.ts +310 -0
  245. package/test/network/onnx.import.test.ts +129 -0
  246. package/test/network/pruning.topology.test.ts +282 -0
  247. package/test/network/regularization.determinism.test.ts +83 -0
  248. package/test/network/regularization.dropconnect.test.ts +17 -0
  249. package/test/network/regularization.dropconnect.validation.test.ts +18 -0
  250. package/test/network/regularization.stochasticdepth.test.ts +27 -0
  251. package/test/network/regularization.test.ts +843 -0
  252. package/test/network/regularization.weightnoise.test.ts +30 -0
  253. package/test/network/setupTests.ts +2 -0
  254. package/test/network/standalone.test.ts +332 -0
  255. package/test/network/structure.serialization.test.ts +660 -0
  256. package/test/training/training.determinism.mixed-precision.test.ts +134 -0
  257. package/test/training/training.earlystopping.test.ts +91 -0
  258. package/test/training/training.edge-cases.test.ts +91 -0
  259. package/test/training/training.extensions.test.ts +47 -0
  260. package/test/training/training.gradient.features.test.ts +110 -0
  261. package/test/training/training.gradient.refinements.test.ts +170 -0
  262. package/test/training/training.gradient.separate-bias.test.ts +41 -0
  263. package/test/training/training.optimizer.test.ts +48 -0
  264. package/test/training/training.plateau.smoothing.test.ts +58 -0
  265. package/test/training/training.smoothing.types.test.ts +174 -0
  266. package/test/training/training.train.options.coverage.test.ts +52 -0
  267. package/test/utils/console-helper.ts +76 -0
  268. package/test/utils/jest-setup.ts +60 -0
  269. package/test/utils/test-helpers.ts +175 -0
  270. package/tsconfig.docs.json +12 -0
  271. package/tsconfig.json +21 -0
  272. package/webpack.config.js +49 -0
package/RELEASE.md ADDED
@@ -0,0 +1,54 @@
1
+ # Releasing NeatapticTS
2
+
3
+ This repository provides a small release flow using a dedicated manual pipeline and release-triggered publishers.
4
+
5
+ Primary workflow used for releases
6
+
7
+ - Manual release pipeline (Actions → "Manual release pipeline") — preferred manual entrypoint.
8
+ - Inputs:
9
+ - `level`: `patch` | `minor` | `major` (default: `patch`)
10
+ - `branch`: branch to release from (default: `release`)
11
+ - What it does:
12
+ 1. Checks out the specified branch.
13
+ 2. Runs `npm version <level>` which updates `package.json`, creates a commit and a tag.
14
+ 3. Pushes the commit and tag to the remote.
15
+ 4. Exits; the repository `release` event (tag/release published) will trigger the publishing workflows.
16
+
17
+ Release-triggered workflows
18
+
19
+ - `publish.yml` (trigger: `release: published`) — builds and publishes packages to:
20
+ - npmjs.org (uses `NPM_TOKEN` secret)
21
+ - GitHub Packages (scoped package: `@reicek/neataptic-ts`)
22
+
23
+ - `deploy-pages.yml` (trigger: `release: published`) — runs `npm run docs` and publishes `docs/` to the `gh-pages` branch.
24
+
25
+ Required repository secrets
26
+
27
+ - `NPM_TOKEN` — npm auth token with publish rights (add at Settings → Secrets → Actions).
28
+ - `GITHUB_TOKEN` — automatically provided to Actions (no manual setup required) and used for GitHub Packages and Pages deploy.
29
+
30
+ How to publish a new release (recommended)
31
+
32
+ 1. Ensure your release branch (default `release`) contains the changes you want to publish.
33
+ 2. Go to the repository Actions tab, choose "Manual release pipeline" and click "Run workflow".
34
+ 3. Select `level` (patch/minor/major) and `branch` (e.g., `release`), then run.
35
+ 4. The workflow will create a tag and push it. After the tag is pushed, GitHub will fire the `release` event and the `publish` and `deploy-pages` workflows will run automatically.
36
+
37
+ Verification after release
38
+
39
+ - npm: check https://www.npmjs.com/package/@reicek/neataptic-ts for the published version.
40
+ - GitHub Packages: check the Packages tab on the repository.
41
+ - Docs: check https://reicek.github.io/NeatapticTS/ after the `gh-pages` deploy completes.
42
+
43
+ Troubleshooting & notes
44
+
45
+ - Branch protection: if the chosen branch has protection rules that prevent the Actions bot from pushing commits/tags, the manual pipeline may fail to push. In that case you can:
46
+ - Temporarily allow Actions to push, or
47
+ - Use a PAT (personal access token) stored as a secret and update the workflow to use it for pushing, or
48
+ - Create the tag locally and push it from your machine.
49
+
50
+ - Avoid duplicate publishers: the manual pipeline intentionally only bumps/tags/pushes and does not publish directly — the `publish` and `deploy-pages` workflows run on the `release` event and perform the actual publishing steps once.
51
+
52
+ - If you'd like a single workflow to perform bump+publish+deploy in one run (instead of splitting by event), tell me and I can convert the manual pipeline to do everything and remove the release-triggered workflows.
53
+
54
+ If you want I can also add automatic changelog generation (from commits) and include the generated release notes in the GitHub Release body.
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-docs.d.ts","sourceRoot":"","sources":["../../scripts/generate-docs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,536 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ /*
49
+ * Generates per-folder README.md aggregating exported symbols' JSDoc.
50
+ * - Copies root README.md into docs/ (manual content retained)
51
+ * - Skips generating README for src root (leave top-level README manual)
52
+ * Usage: npm run docs:folders
53
+ */
54
+ const ts_morph_1 = require("ts-morph");
55
+ const fast_glob_1 = __importDefault(require("fast-glob"));
56
+ const path = __importStar(require("path"));
57
+ const fs_extra_1 = __importDefault(require("fs-extra"));
58
+ const SRC_DIR = path.resolve('src');
59
+ const DOCS_DIR = path.resolve('docs');
60
+ const ROOT_README_SRC = path.resolve('README.md');
61
+ const ROOT_README_DEST = path.join(DOCS_DIR, 'README.md');
62
+ const project = new ts_morph_1.Project({
63
+ tsConfigFilePath: path.resolve('tsconfig.json'),
64
+ skipAddingFilesFromTsConfig: true
65
+ });
66
+ function main() {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
69
+ yield fs_extra_1.default.ensureDir(DOCS_DIR);
70
+ // Copy root README (manual) into docs
71
+ if (yield fs_extra_1.default.pathExists(ROOT_README_SRC)) {
72
+ yield fs_extra_1.default.copyFile(ROOT_README_SRC, ROOT_README_DEST);
73
+ }
74
+ const filePaths = yield (0, fast_glob_1.default)(['**/*.ts'], { cwd: SRC_DIR, absolute: true, ignore: ['**/*.d.ts'] });
75
+ for (const p of filePaths) {
76
+ if (/\.test\.ts$/i.test(p))
77
+ continue; // skip test specification files
78
+ project.addSourceFileAtPath(p);
79
+ }
80
+ const all = project.getSourceFiles();
81
+ const sourceFiles = all.filter((sf) => {
82
+ const fp = sf.getFilePath();
83
+ return !fp.endsWith('.d.ts') && !/node_modules/.test(fp);
84
+ });
85
+ console.log(`[docs] Loaded ${sourceFiles.length} source files (raw: ${all.length})`);
86
+ const dirMap = new Map();
87
+ for (const sf of sourceFiles) {
88
+ const exported = sf.getExportedDeclarations();
89
+ // capture file-level/module JSDoc if present
90
+ const fileJsDocs = ((_b = (_a = sf).getJsDocs) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
91
+ const fileDocPrimary = fileJsDocs[0];
92
+ const fileDocDesc = (_d = (_c = fileDocPrimary === null || fileDocPrimary === void 0 ? void 0 : fileDocPrimary.getDescription) === null || _c === void 0 ? void 0 : _c.call(fileDocPrimary)) === null || _d === void 0 ? void 0 : _d.trim();
93
+ // ensure fileMap exists early so we can add file-level doc
94
+ const dir = path.dirname(sf.getFilePath());
95
+ let fileMap = dirMap.get(dir);
96
+ if (!fileMap) {
97
+ fileMap = new Map();
98
+ dirMap.set(dir, fileMap);
99
+ }
100
+ if (fileDocDesc) {
101
+ const fileSummarySymbol = {
102
+ kind: 'File',
103
+ name: '__file_summary__',
104
+ filePath: sf.getFilePath(),
105
+ jsdoc: { description: fileDocDesc }
106
+ };
107
+ const arr0 = fileMap.get(sf.getFilePath()) || [];
108
+ arr0.push(fileSummarySymbol);
109
+ fileMap.set(sf.getFilePath(), arr0);
110
+ console.log(`[docs] Added file summary for ${sf.getBaseName()}`);
111
+ }
112
+ if (exported.size) {
113
+ console.log(`[docs] ${sf.getBaseName()} exports: ${exported.size}`);
114
+ for (const [, decls] of exported) {
115
+ for (const decl of decls) {
116
+ const sym = decl.getSymbol();
117
+ if (!sym)
118
+ continue;
119
+ const rendered = renderSymbol(sym, decl.getKindName(), sf.getFilePath());
120
+ if (rendered) {
121
+ const arr = fileMap.get(sf.getFilePath()) || [];
122
+ arr.push(rendered);
123
+ fileMap.set(sf.getFilePath(), arr);
124
+ }
125
+ // special-case: exported variable with object literal initializer (e.g. Activation = { ... })
126
+ try {
127
+ if (decl.getKindName && decl.getKindName() === 'VariableDeclaration') {
128
+ const init = (_f = (_e = decl).getInitializer) === null || _f === void 0 ? void 0 : _f.call(_e);
129
+ if (init && init.getKindName && init.getKindName() === 'ObjectLiteralExpression') {
130
+ const props = ((_g = init.getProperties) === null || _g === void 0 ? void 0 : _g.call(init)) || [];
131
+ for (const p of props) {
132
+ const propName = ((_h = p.getName) === null || _h === void 0 ? void 0 : _h.call(p)) || (p.getSymbol && ((_k = (_j = p.getSymbol()) === null || _j === void 0 ? void 0 : _j.getName) === null || _k === void 0 ? void 0 : _k.call(_j)));
133
+ const renderedProp = renderDeclaration(p, String(propName), ((_l = p.getKindName) === null || _l === void 0 ? void 0 : _l.call(p)) || 'Property', sf.getFilePath(), sym.getName());
134
+ if (renderedProp) {
135
+ const arr2 = fileMap.get(sf.getFilePath()) || [];
136
+ arr2.push(renderedProp);
137
+ fileMap.set(sf.getFilePath(), arr2);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ catch (e) { /* ignore introspection errors */ }
144
+ // special-case: exported class -> include members
145
+ try {
146
+ if (decl.getKindName && decl.getKindName() === 'ClassDeclaration') {
147
+ const members = ((_o = (_m = decl).getMembers) === null || _o === void 0 ? void 0 : _o.call(_m)) || [];
148
+ for (const m of members) {
149
+ const memberName = (_p = m.getName) === null || _p === void 0 ? void 0 : _p.call(m);
150
+ if (!memberName)
151
+ continue;
152
+ const renderedMember = renderDeclaration(m, String(memberName), ((_q = m.getKindName) === null || _q === void 0 ? void 0 : _q.call(m)) || 'ClassMember', sf.getFilePath(), sym.getName());
153
+ if (renderedMember) {
154
+ const arr3 = fileMap.get(sf.getFilePath()) || [];
155
+ arr3.push(renderedMember);
156
+ fileMap.set(sf.getFilePath(), arr3);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ catch (e) { /* ignore */ }
162
+ }
163
+ }
164
+ }
165
+ // Additionally capture top-level, non-exported declarations if they have JSDoc
166
+ try {
167
+ const stmts = ((_s = (_r = sf).getStatements) === null || _s === void 0 ? void 0 : _s.call(_r)) || [];
168
+ for (const st of stmts) {
169
+ const decls = (st.getDeclarations && st.getDeclarations()) || [st];
170
+ for (const d of decls) {
171
+ const jsdocs = ((_u = (_t = d).getJsDocs) === null || _u === void 0 ? void 0 : _u.call(_t)) || [];
172
+ const hasExport = (d.getSymbol && ((_x = (_w = (_v = d.getSymbol()) === null || _v === void 0 ? void 0 : _v.getDeclarations) === null || _w === void 0 ? void 0 : _w.call(_v)) === null || _x === void 0 ? void 0 : _x.some((x) => x.isExported && x.isExported()))) || false;
173
+ if (!jsdocs.length)
174
+ continue; // only include documented non-exported declarations
175
+ // skip if already added via exported processing
176
+ const name = ((_y = d.getName) === null || _y === void 0 ? void 0 : _y.call(d)) || (d.getSymbol && ((_0 = (_z = d.getSymbol()) === null || _z === void 0 ? void 0 : _z.getName) === null || _0 === void 0 ? void 0 : _0.call(_z)));
177
+ if (!name)
178
+ continue;
179
+ const already = (fileMap.get(sf.getFilePath()) || []).some(s => s.name === name || s.name === `${name}` || s.name === `${name}`);
180
+ if (already)
181
+ continue;
182
+ const rendered = renderDeclaration(d, String(name), ((_1 = d.getKindName) === null || _1 === void 0 ? void 0 : _1.call(d)) || 'Declaration', sf.getFilePath());
183
+ if (rendered) {
184
+ const arr4 = fileMap.get(sf.getFilePath()) || [];
185
+ arr4.push(rendered);
186
+ fileMap.set(sf.getFilePath(), arr4);
187
+ }
188
+ }
189
+ }
190
+ }
191
+ catch (e) { /* ignore */ }
192
+ }
193
+ for (const [dir, fileMap] of dirMap) {
194
+ // Tidy & deduplicate symbols per file before rendering
195
+ for (const [filePath, symbols] of fileMap) {
196
+ const seen = new Map();
197
+ const deduped = [];
198
+ for (const s of symbols) {
199
+ // normalize name
200
+ const normName = normalizeName(s, filePath);
201
+ const key = `${s.parent || ''}::${normName}::${s.signature || ''}`;
202
+ const existing = seen.get(key);
203
+ if (existing) {
204
+ // merge jsdoc fields conservatively
205
+ existing.jsdoc.description = existing.jsdoc.description || s.jsdoc.description;
206
+ existing.jsdoc.summary = existing.jsdoc.summary || s.jsdoc.summary;
207
+ existing.jsdoc.deprecated = existing.jsdoc.deprecated || s.jsdoc.deprecated;
208
+ if (s.jsdoc.params) {
209
+ existing.jsdoc.params = (existing.jsdoc.params || []).slice();
210
+ for (const p of s.jsdoc.params) {
211
+ if (!existing.jsdoc.params.some(ep => ep.name === p.name))
212
+ existing.jsdoc.params.push(p);
213
+ }
214
+ }
215
+ if (!existing.signature && s.signature)
216
+ existing.signature = s.signature;
217
+ }
218
+ else {
219
+ const clone = Object.assign(Object.assign({}, s), { name: normName, jsdoc: Object.assign(Object.assign({}, s.jsdoc), { params: s.jsdoc.params ? s.jsdoc.params.slice() : undefined }) });
220
+ seen.set(key, clone);
221
+ deduped.push(clone);
222
+ }
223
+ }
224
+ fileMap.set(filePath, deduped);
225
+ }
226
+ const relDir = path.relative(SRC_DIR, dir); // '' means src root
227
+ if (relDir.startsWith('..'))
228
+ continue; // outside src
229
+ const outDir = relDir === '' ? path.join(DOCS_DIR, 'src') : path.join(DOCS_DIR, relDir);
230
+ yield fs_extra_1.default.ensureDir(outDir);
231
+ const outFile = path.join(outDir, 'README.md');
232
+ const md = buildDirectoryReadme(relDir, fileMap);
233
+ yield writeIfChanged(outFile, md);
234
+ // Also emit directly into the src folder tree so GitHub shows it inline when browsing code.
235
+ const srcTargetDir = path.join(SRC_DIR, relDir);
236
+ const srcReadme = path.join(srcTargetDir, 'README.md');
237
+ yield emitSourceReadme(srcReadme, md);
238
+ }
239
+ const rootNode = { name: 'src', path: 'src', children: new Map(), fileCount: 0 };
240
+ const relDirs = [...dirMap.keys()].map(d => path.relative(SRC_DIR, d)).filter(d => !d.startsWith('..'));
241
+ for (const rel of relDirs) {
242
+ const clean = rel === '' ? 'src' : rel.replace(/\\/g, '/');
243
+ const parts = clean.split('/');
244
+ let node = rootNode;
245
+ let acc = '';
246
+ for (const part of parts) {
247
+ acc = acc ? `${acc}/${part}` : part;
248
+ if (!node.children.has(part)) {
249
+ node.children.set(part, { name: part, path: acc, children: new Map() });
250
+ }
251
+ node = node.children.get(part);
252
+ }
253
+ // attach file count if available
254
+ const abs = path.join(SRC_DIR, rel === '' ? '' : rel);
255
+ const fm = dirMap.get(abs);
256
+ if (fm)
257
+ node.fileCount = fm.size;
258
+ }
259
+ const lines = ['# Docs Index', '', 'Auto-generated index of source folders (click to open folder README).', ''];
260
+ function renderNode(n, level) {
261
+ const indent = ' '.repeat(Math.max(0, level));
262
+ const label = (n.path === 'src' && level === 0) ? 'src (root)' : n.name;
263
+ const link = `${n.path}/README.md`;
264
+ const count = n.fileCount ? ` — ${n.fileCount} file${n.fileCount > 1 ? 's' : ''}` : '';
265
+ lines.push(`${indent}- [${label}](${link})${count}`);
266
+ const childNames = [...n.children.keys()].sort();
267
+ for (const k of childNames)
268
+ renderNode(n.children.get(k), level + 1);
269
+ }
270
+ // Render top-level root and its children (skip a duplicate 'src' nesting)
271
+ renderNode(rootNode, 0);
272
+ yield fs_extra_1.default.writeFile(path.join(DOCS_DIR, 'FOLDERS.md'), lines.join('\n') + '\n', 'utf8');
273
+ console.log('Per-folder README generation complete.');
274
+ });
275
+ }
276
+ function renderSymbol(sym, fallbackKind, filePath) {
277
+ var _a, _b, _c;
278
+ const decl = sym.getDeclarations()[0];
279
+ if (!decl)
280
+ return null;
281
+ const kind = decl.getKindName();
282
+ const allow = /ClassDeclaration|FunctionDeclaration|InterfaceDeclaration|EnumDeclaration|TypeAliasDeclaration|VariableDeclaration/;
283
+ if (!allow.test(kind))
284
+ return null;
285
+ // ts-morph Declaration with JSDoc support; cast to any to access getJsDocs generically
286
+ const jsDocs = ((_b = (_a = decl).getJsDocs) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
287
+ if (jsDocs.some((j) => j.getTags().some((t) => t.getTagName() === 'internal')))
288
+ return null;
289
+ const primary = jsDocs[0];
290
+ const fullDesc = primary === null || primary === void 0 ? void 0 : primary.getDescription().trim();
291
+ const summary = (_c = fullDesc === null || fullDesc === void 0 ? void 0 : fullDesc.split(/\r?\n\r?\n/)[0]) === null || _c === void 0 ? void 0 : _c.trim();
292
+ const tags = (primary === null || primary === void 0 ? void 0 : primary.getTags()) || [];
293
+ const paramsTags = tags.filter(t => t.getTagName() === 'param');
294
+ const returnsTag = tags.find(t => t.getTagName() === 'returns' || t.getTagName() === 'return');
295
+ const deprecatedTag = tags.find(t => t.getTagName() === 'deprecated');
296
+ let signature;
297
+ try {
298
+ const sig = decl.getType().getCallSignatures()[0];
299
+ if (sig) {
300
+ const params = sig.getParameters().map((p) => {
301
+ const decls = p.getDeclarations();
302
+ const t = p.getTypeAtLocation(decls[0] || decl).getText();
303
+ return `${p.getName()}: ${t}`;
304
+ }).join(', ');
305
+ const ret = sig.getReturnType().getText();
306
+ signature = `(${params}) => ${ret}`;
307
+ }
308
+ }
309
+ catch ( /* ignore */_d) { /* ignore */ }
310
+ const params = paramsTags.map(t => {
311
+ const text = t.getText();
312
+ const match = text.match(/@param\s+(\w+)/);
313
+ const name = (match === null || match === void 0 ? void 0 : match[1]) || '';
314
+ const raw = t.getComment();
315
+ const doc = Array.isArray(raw) ? raw.map(r => r.getText ? r.getText() : String(r)).join(' ').trim() : (raw || undefined);
316
+ return { name, doc };
317
+ });
318
+ return {
319
+ kind: fallbackKind || kind,
320
+ name: sym.getName(),
321
+ parent: undefined,
322
+ filePath,
323
+ signature,
324
+ jsdoc: {
325
+ summary,
326
+ description: fullDesc,
327
+ params: params.length ? params : undefined,
328
+ returns: (() => { const r = returnsTag === null || returnsTag === void 0 ? void 0 : returnsTag.getComment(); return typeof r === 'string' ? r.trim() : undefined; })(),
329
+ deprecated: (() => { const r = deprecatedTag === null || deprecatedTag === void 0 ? void 0 : deprecatedTag.getComment(); return typeof r === 'string' ? r.trim() : undefined; })()
330
+ }
331
+ };
332
+ }
333
+ // Render a declaration-like object (node) which may not have a symbol
334
+ function renderDeclaration(decl, forcedName, forcedKind, filePath, parentName) {
335
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
336
+ if (!decl)
337
+ return null;
338
+ try {
339
+ const kind = forcedKind || ((_a = decl.getKindName) === null || _a === void 0 ? void 0 : _a.call(decl)) || ((_b = decl.getKind) === null || _b === void 0 ? void 0 : _b.call(decl)) || 'Declaration';
340
+ const name = forcedName || ((_c = decl.getName) === null || _c === void 0 ? void 0 : _c.call(decl)) || (decl.getSymbol && ((_e = (_d = decl.getSymbol()) === null || _d === void 0 ? void 0 : _d.getName) === null || _e === void 0 ? void 0 : _e.call(_d))) || (parentName ? `${parentName}.${forcedName}` : '');
341
+ const jsDocs = ((_f = decl.getJsDocs) === null || _f === void 0 ? void 0 : _f.call(decl)) || [];
342
+ if (!jsDocs.length)
343
+ return null;
344
+ if (jsDocs.some((j) => j.getTags().some((t) => t.getTagName() === 'internal')))
345
+ return null;
346
+ const primary = jsDocs[0];
347
+ const fullDesc = (_h = (_g = primary === null || primary === void 0 ? void 0 : primary.getDescription) === null || _g === void 0 ? void 0 : _g.call(primary)) === null || _h === void 0 ? void 0 : _h.trim();
348
+ const summary = (_j = fullDesc === null || fullDesc === void 0 ? void 0 : fullDesc.split(/\r?\n\r?\n/)[0]) === null || _j === void 0 ? void 0 : _j.trim();
349
+ const tags = (primary === null || primary === void 0 ? void 0 : primary.getTags()) || [];
350
+ const paramsTags = tags.filter(t => t.getTagName() === 'param');
351
+ const returnsTag = tags.find(t => t.getTagName() === 'returns' || t.getTagName() === 'return');
352
+ const deprecatedTag = tags.find(t => t.getTagName() === 'deprecated');
353
+ let signature;
354
+ try {
355
+ const type = ((_k = decl.getType) === null || _k === void 0 ? void 0 : _k.call(decl)) || (decl.getSymbol && ((_m = (_l = decl.getSymbol()) === null || _l === void 0 ? void 0 : _l.getType) === null || _m === void 0 ? void 0 : _m.call(_l)));
356
+ const sig = (_o = type === null || type === void 0 ? void 0 : type.getCallSignatures) === null || _o === void 0 ? void 0 : _o.call(type)[0];
357
+ if (sig) {
358
+ const params = sig.getParameters().map((p) => {
359
+ const decls = p.getDeclarations();
360
+ const t = p.getTypeAtLocation(decls[0] || decl).getText();
361
+ return `${p.getName()}: ${t}`;
362
+ }).join(', ');
363
+ const ret = sig.getReturnType().getText();
364
+ signature = `(${params}) => ${ret}`;
365
+ }
366
+ }
367
+ catch ( /* ignore */_p) { /* ignore */ }
368
+ const params = paramsTags.map(t => {
369
+ var _a, _b;
370
+ const text = ((_a = t.getText) === null || _a === void 0 ? void 0 : _a.call(t)) || '';
371
+ const match = text.match(/@param\s+(\w+)/);
372
+ const name = (match === null || match === void 0 ? void 0 : match[1]) || '';
373
+ const raw = (_b = t.getComment) === null || _b === void 0 ? void 0 : _b.call(t);
374
+ const doc = Array.isArray(raw) ? raw.map(r => r.getText ? r.getText() : String(r)).join(' ').trim() : (raw || undefined);
375
+ return { name, doc };
376
+ });
377
+ return {
378
+ kind,
379
+ name,
380
+ parent: parentName || undefined,
381
+ filePath: filePath || '',
382
+ signature,
383
+ jsdoc: {
384
+ summary,
385
+ description: fullDesc,
386
+ params: params.length ? params : undefined,
387
+ returns: (() => { var _a; const r = (_a = returnsTag === null || returnsTag === void 0 ? void 0 : returnsTag.getComment) === null || _a === void 0 ? void 0 : _a.call(returnsTag); return typeof r === 'string' ? r.trim() : undefined; })(),
388
+ deprecated: (() => { var _a; const r = (_a = deprecatedTag === null || deprecatedTag === void 0 ? void 0 : deprecatedTag.getComment) === null || _a === void 0 ? void 0 : _a.call(deprecatedTag); return typeof r === 'string' ? r.trim() : undefined; })()
389
+ }
390
+ };
391
+ }
392
+ catch (e) {
393
+ return null;
394
+ }
395
+ }
396
+ // Normalize a symbol name: prefer meaningful names over 'default', fallback to file basename
397
+ function normalizeName(s, filePath) {
398
+ let name = (s.name || '').toString();
399
+ if (!name || name === 'default' || name === '__file_summary__') {
400
+ // try to derive from file path or signature
401
+ const base = path.basename(filePath || '', '.ts');
402
+ if (s.kind === 'File' || name === '__file_summary__')
403
+ return base;
404
+ // if parent exists, qualify with parent
405
+ if (s.parent)
406
+ return `${s.parent}.${base}`;
407
+ // try to extract from signature
408
+ if (s.signature)
409
+ return `${base}${s.signature.split(')')[0]})`;
410
+ return base;
411
+ }
412
+ // strip trailing redundant '()' or 'function ' prefixes
413
+ name = name.replace(/^function\s+/, '').replace(/\(\)$/, '');
414
+ return name;
415
+ }
416
+ function buildDirectoryReadme(relDir, fileMap) {
417
+ var _a, _b, _c;
418
+ const title = relDir.replace(/\\/g, '/');
419
+ const lines = [
420
+ `# ${title}`,
421
+ ''
422
+ ];
423
+ const filesSorted = [...fileMap.keys()].sort();
424
+ for (const file of filesSorted) {
425
+ const relFile = path.relative(SRC_DIR, file).replace(/\\/g, '/');
426
+ lines.push(`## ${relFile}`, '');
427
+ const symbols = fileMap.get(file).slice().sort((a, b) => (a.parent || a.name).localeCompare(b.parent || b.name) || a.name.localeCompare(b.name));
428
+ // extract file summary if present
429
+ const fileSummaryIdx = symbols.findIndex(s => s.name === '__file_summary__' && s.kind === 'File');
430
+ if (fileSummaryIdx >= 0) {
431
+ const fsym = symbols.splice(fileSummaryIdx, 1)[0];
432
+ if (fsym.jsdoc.description)
433
+ lines.push(fsym.jsdoc.description, '');
434
+ }
435
+ // Group by parent: top-level (no parent) and parent groups
436
+ const topLevel = symbols.filter(s => !s.parent);
437
+ const byParent = new Map();
438
+ for (const s of symbols.filter(s => s.parent)) {
439
+ const arr = byParent.get(s.parent) || [];
440
+ arr.push(s);
441
+ byParent.set(s.parent, arr);
442
+ }
443
+ // render top-level symbols
444
+ for (const s of topLevel) {
445
+ lines.push(`### ${s.name}`);
446
+ if (s.signature)
447
+ lines.push('', '`' + s.signature + '`');
448
+ if (s.jsdoc.description)
449
+ lines.push('', s.jsdoc.description);
450
+ if (s.jsdoc.deprecated)
451
+ lines.push('', `**Deprecated:** ${s.jsdoc.deprecated}`);
452
+ if ((_a = s.jsdoc.params) === null || _a === void 0 ? void 0 : _a.length) {
453
+ lines.push('', 'Parameters:');
454
+ for (const p of s.jsdoc.params)
455
+ lines.push(`- \`${p.name}\`${p.doc ? ' - ' + p.doc : ''}`);
456
+ }
457
+ if (s.jsdoc.returns)
458
+ lines.push('', `Returns: ${s.jsdoc.returns}`);
459
+ lines.push('');
460
+ // if this top-level has grouped children (byParent keyed by this name), render them nested
461
+ const children = byParent.get(s.name);
462
+ if (children) {
463
+ children.sort((a, b) => a.name.localeCompare(b.name));
464
+ for (const c of children) {
465
+ lines.push(`#### ${c.name}`);
466
+ if (c.signature)
467
+ lines.push('', '`' + c.signature + '`');
468
+ if (c.jsdoc.description)
469
+ lines.push('', c.jsdoc.description);
470
+ if (c.jsdoc.deprecated)
471
+ lines.push('', `**Deprecated:** ${c.jsdoc.deprecated}`);
472
+ if ((_b = c.jsdoc.params) === null || _b === void 0 ? void 0 : _b.length) {
473
+ lines.push('', 'Parameters:');
474
+ for (const p of c.jsdoc.params)
475
+ lines.push(`- \`${p.name}\`${p.doc ? ' - ' + p.doc : ''}`);
476
+ }
477
+ if (c.jsdoc.returns)
478
+ lines.push('', `Returns: ${c.jsdoc.returns}`);
479
+ lines.push('');
480
+ }
481
+ }
482
+ }
483
+ // Render any parent groups that didn't have a top-level parent symbol (e.g., object literal properties grouped under exported var)
484
+ for (const [parentName, group] of byParent) {
485
+ if (topLevel.some(t => t.name === parentName))
486
+ continue; // already rendered under its parent item
487
+ lines.push(`### ${parentName}`, '');
488
+ group.sort((a, b) => a.name.localeCompare(b.name));
489
+ for (const c of group) {
490
+ lines.push(`#### ${c.name}`);
491
+ if (c.signature)
492
+ lines.push('', '`' + c.signature + '`');
493
+ if (c.jsdoc.description)
494
+ lines.push('', c.jsdoc.description);
495
+ if (c.jsdoc.deprecated)
496
+ lines.push('', `**Deprecated:** ${c.jsdoc.deprecated}`);
497
+ if ((_c = c.jsdoc.params) === null || _c === void 0 ? void 0 : _c.length) {
498
+ lines.push('', 'Parameters:');
499
+ for (const p of c.jsdoc.params)
500
+ lines.push(`- \`${p.name}\`${p.doc ? ' - ' + p.doc : ''}`);
501
+ }
502
+ if (c.jsdoc.returns)
503
+ lines.push('', `Returns: ${c.jsdoc.returns}`);
504
+ lines.push('');
505
+ }
506
+ }
507
+ }
508
+ return lines.join('\n').trim() + '\n';
509
+ }
510
+ function writeIfChanged(file, content) {
511
+ return __awaiter(this, void 0, void 0, function* () {
512
+ if (yield fs_extra_1.default.pathExists(file)) {
513
+ const prev = yield fs_extra_1.default.readFile(file, 'utf8');
514
+ if (prev === content)
515
+ return;
516
+ }
517
+ yield fs_extra_1.default.writeFile(file, content, 'utf8');
518
+ });
519
+ }
520
+ // Write README into src folders, but avoid overwriting a manual README unless previously generated.
521
+ function emitSourceReadme(file, content) {
522
+ return __awaiter(this, void 0, void 0, function* () {
523
+ // Always overwrite to keep docs in sync (educational repo preference: no banner / frictionless reading)
524
+ if (yield fs_extra_1.default.pathExists(file)) {
525
+ const prev = yield fs_extra_1.default.readFile(file, 'utf8');
526
+ if (prev === content)
527
+ return;
528
+ }
529
+ yield fs_extra_1.default.writeFile(file, content, 'utf8');
530
+ });
531
+ }
532
+ main().catch(e => {
533
+ console.error(e);
534
+ process.exit(1);
535
+ });
536
+ //# sourceMappingURL=generate-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-docs.js","sourceRoot":"","sources":["../../scripts/generate-docs.ts"],"names":[],"mappings":"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"}