marlarky 1.0.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 (274) hide show
  1. package/README.md +489 -0
  2. package/dist/adapters/faker-js-adapter.d.ts +44 -0
  3. package/dist/adapters/faker-js-adapter.d.ts.map +1 -0
  4. package/dist/adapters/faker-js-adapter.js +46 -0
  5. package/dist/adapters/faker-js-adapter.js.map +1 -0
  6. package/dist/adapters/index.d.ts +3 -0
  7. package/dist/adapters/index.d.ts.map +1 -0
  8. package/dist/adapters/index.js +3 -0
  9. package/dist/adapters/index.js.map +1 -0
  10. package/dist/adapters/simple-faker-adapter.d.ts +22 -0
  11. package/dist/adapters/simple-faker-adapter.d.ts.map +1 -0
  12. package/dist/adapters/simple-faker-adapter.js +54 -0
  13. package/dist/adapters/simple-faker-adapter.js.map +1 -0
  14. package/dist/cli.d.ts +7 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +588 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/defaults/index.d.ts +2 -0
  19. package/dist/defaults/index.d.ts.map +1 -0
  20. package/dist/defaults/index.js +2 -0
  21. package/dist/defaults/index.js.map +1 -0
  22. package/dist/defaults/word-lists.d.ts +22 -0
  23. package/dist/defaults/word-lists.d.ts.map +1 -0
  24. package/dist/defaults/word-lists.js +124 -0
  25. package/dist/defaults/word-lists.js.map +1 -0
  26. package/dist/generator/index.d.ts +2 -0
  27. package/dist/generator/index.d.ts.map +1 -0
  28. package/dist/generator/index.js +2 -0
  29. package/dist/generator/index.js.map +1 -0
  30. package/dist/generator/text-generator.d.ts +93 -0
  31. package/dist/generator/text-generator.d.ts.map +1 -0
  32. package/dist/generator/text-generator.js +411 -0
  33. package/dist/generator/text-generator.js.map +1 -0
  34. package/dist/generator/text-generator.test.d.ts +2 -0
  35. package/dist/generator/text-generator.test.d.ts.map +1 -0
  36. package/dist/generator/text-generator.test.js +151 -0
  37. package/dist/generator/text-generator.test.js.map +1 -0
  38. package/dist/grammar/index.d.ts +5 -0
  39. package/dist/grammar/index.d.ts.map +1 -0
  40. package/dist/grammar/index.js +3 -0
  41. package/dist/grammar/index.js.map +1 -0
  42. package/dist/grammar/phrase-builders.d.ts +72 -0
  43. package/dist/grammar/phrase-builders.d.ts.map +1 -0
  44. package/dist/grammar/phrase-builders.js +241 -0
  45. package/dist/grammar/phrase-builders.js.map +1 -0
  46. package/dist/grammar/sentence-templates.d.ts +67 -0
  47. package/dist/grammar/sentence-templates.d.ts.map +1 -0
  48. package/dist/grammar/sentence-templates.js +272 -0
  49. package/dist/grammar/sentence-templates.js.map +1 -0
  50. package/dist/index.d.ts +17 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +40 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/interfaces/faker-adapter.d.ts +25 -0
  55. package/dist/interfaces/faker-adapter.d.ts.map +1 -0
  56. package/dist/interfaces/faker-adapter.js +2 -0
  57. package/dist/interfaces/faker-adapter.js.map +1 -0
  58. package/dist/interfaces/index.d.ts +4 -0
  59. package/dist/interfaces/index.d.ts.map +1 -0
  60. package/dist/interfaces/index.js +2 -0
  61. package/dist/interfaces/index.js.map +1 -0
  62. package/dist/interfaces/lexicon-store.d.ts +39 -0
  63. package/dist/interfaces/lexicon-store.d.ts.map +1 -0
  64. package/dist/interfaces/lexicon-store.js +2 -0
  65. package/dist/interfaces/lexicon-store.js.map +1 -0
  66. package/dist/interfaces/rng.d.ts +25 -0
  67. package/dist/interfaces/rng.d.ts.map +1 -0
  68. package/dist/interfaces/rng.js +2 -0
  69. package/dist/interfaces/rng.js.map +1 -0
  70. package/dist/lexicon/index.d.ts +4 -0
  71. package/dist/lexicon/index.d.ts.map +1 -0
  72. package/dist/lexicon/index.js +4 -0
  73. package/dist/lexicon/index.js.map +1 -0
  74. package/dist/lexicon/loader.d.ts +24 -0
  75. package/dist/lexicon/loader.d.ts.map +1 -0
  76. package/dist/lexicon/loader.js +47 -0
  77. package/dist/lexicon/loader.js.map +1 -0
  78. package/dist/lexicon/store.d.ts +39 -0
  79. package/dist/lexicon/store.d.ts.map +1 -0
  80. package/dist/lexicon/store.js +291 -0
  81. package/dist/lexicon/store.js.map +1 -0
  82. package/dist/lexicon/validator.d.ts +10 -0
  83. package/dist/lexicon/validator.d.ts.map +1 -0
  84. package/dist/lexicon/validator.js +273 -0
  85. package/dist/lexicon/validator.js.map +1 -0
  86. package/dist/morphology/articles.d.ts +17 -0
  87. package/dist/morphology/articles.d.ts.map +1 -0
  88. package/dist/morphology/articles.js +66 -0
  89. package/dist/morphology/articles.js.map +1 -0
  90. package/dist/morphology/articles.test.d.ts +2 -0
  91. package/dist/morphology/articles.test.d.ts.map +1 -0
  92. package/dist/morphology/articles.test.js +56 -0
  93. package/dist/morphology/articles.test.js.map +1 -0
  94. package/dist/morphology/conjugate.d.ts +46 -0
  95. package/dist/morphology/conjugate.d.ts.map +1 -0
  96. package/dist/morphology/conjugate.js +337 -0
  97. package/dist/morphology/conjugate.js.map +1 -0
  98. package/dist/morphology/conjugate.test.d.ts +2 -0
  99. package/dist/morphology/conjugate.test.d.ts.map +1 -0
  100. package/dist/morphology/conjugate.test.js +168 -0
  101. package/dist/morphology/conjugate.test.js.map +1 -0
  102. package/dist/morphology/index.d.ts +6 -0
  103. package/dist/morphology/index.d.ts.map +1 -0
  104. package/dist/morphology/index.js +9 -0
  105. package/dist/morphology/index.js.map +1 -0
  106. package/dist/morphology/normalize.d.ts +52 -0
  107. package/dist/morphology/normalize.d.ts.map +1 -0
  108. package/dist/morphology/normalize.js +127 -0
  109. package/dist/morphology/normalize.js.map +1 -0
  110. package/dist/morphology/pluralize.d.ts +17 -0
  111. package/dist/morphology/pluralize.d.ts.map +1 -0
  112. package/dist/morphology/pluralize.js +186 -0
  113. package/dist/morphology/pluralize.js.map +1 -0
  114. package/dist/morphology/pluralize.test.d.ts +2 -0
  115. package/dist/morphology/pluralize.test.d.ts.map +1 -0
  116. package/dist/morphology/pluralize.test.js +86 -0
  117. package/dist/morphology/pluralize.test.js.map +1 -0
  118. package/dist/providers/index.d.ts +2 -0
  119. package/dist/providers/index.d.ts.map +1 -0
  120. package/dist/providers/index.js +2 -0
  121. package/dist/providers/index.js.map +1 -0
  122. package/dist/providers/word-provider.d.ts +125 -0
  123. package/dist/providers/word-provider.d.ts.map +1 -0
  124. package/dist/providers/word-provider.js +266 -0
  125. package/dist/providers/word-provider.js.map +1 -0
  126. package/dist/rng/index.d.ts +2 -0
  127. package/dist/rng/index.d.ts.map +1 -0
  128. package/dist/rng/index.js +2 -0
  129. package/dist/rng/index.js.map +1 -0
  130. package/dist/rng/seedable-rng.d.ts +19 -0
  131. package/dist/rng/seedable-rng.d.ts.map +1 -0
  132. package/dist/rng/seedable-rng.js +77 -0
  133. package/dist/rng/seedable-rng.js.map +1 -0
  134. package/dist/rng/seedable-rng.test.d.ts +2 -0
  135. package/dist/rng/seedable-rng.test.d.ts.map +1 -0
  136. package/dist/rng/seedable-rng.test.js +165 -0
  137. package/dist/rng/seedable-rng.test.js.map +1 -0
  138. package/dist/rules/index.d.ts +3 -0
  139. package/dist/rules/index.d.ts.map +1 -0
  140. package/dist/rules/index.js +2 -0
  141. package/dist/rules/index.js.map +1 -0
  142. package/dist/rules/rule-engine.d.ts +78 -0
  143. package/dist/rules/rule-engine.d.ts.map +1 -0
  144. package/dist/rules/rule-engine.js +271 -0
  145. package/dist/rules/rule-engine.js.map +1 -0
  146. package/dist/transforms/config-merge.d.ts +19 -0
  147. package/dist/transforms/config-merge.d.ts.map +1 -0
  148. package/dist/transforms/config-merge.js +88 -0
  149. package/dist/transforms/config-merge.js.map +1 -0
  150. package/dist/transforms/config-merge.test.d.ts +2 -0
  151. package/dist/transforms/config-merge.test.d.ts.map +1 -0
  152. package/dist/transforms/config-merge.test.js +91 -0
  153. package/dist/transforms/config-merge.test.js.map +1 -0
  154. package/dist/transforms/default-registry.d.ts +10 -0
  155. package/dist/transforms/default-registry.d.ts.map +1 -0
  156. package/dist/transforms/default-registry.js +17 -0
  157. package/dist/transforms/default-registry.js.map +1 -0
  158. package/dist/transforms/index.d.ts +15 -0
  159. package/dist/transforms/index.d.ts.map +1 -0
  160. package/dist/transforms/index.js +20 -0
  161. package/dist/transforms/index.js.map +1 -0
  162. package/dist/transforms/pipeline.d.ts +28 -0
  163. package/dist/transforms/pipeline.d.ts.map +1 -0
  164. package/dist/transforms/pipeline.js +176 -0
  165. package/dist/transforms/pipeline.js.map +1 -0
  166. package/dist/transforms/pipeline.test.d.ts +2 -0
  167. package/dist/transforms/pipeline.test.d.ts.map +1 -0
  168. package/dist/transforms/pipeline.test.js +175 -0
  169. package/dist/transforms/pipeline.test.js.map +1 -0
  170. package/dist/transforms/protection.d.ts +16 -0
  171. package/dist/transforms/protection.d.ts.map +1 -0
  172. package/dist/transforms/protection.js +97 -0
  173. package/dist/transforms/protection.js.map +1 -0
  174. package/dist/transforms/protection.test.d.ts +2 -0
  175. package/dist/transforms/protection.test.d.ts.map +1 -0
  176. package/dist/transforms/protection.test.js +79 -0
  177. package/dist/transforms/protection.test.js.map +1 -0
  178. package/dist/transforms/registry.d.ts +25 -0
  179. package/dist/transforms/registry.d.ts.map +1 -0
  180. package/dist/transforms/registry.js +32 -0
  181. package/dist/transforms/registry.js.map +1 -0
  182. package/dist/transforms/registry.test.d.ts +2 -0
  183. package/dist/transforms/registry.test.d.ts.map +1 -0
  184. package/dist/transforms/registry.test.js +64 -0
  185. package/dist/transforms/registry.test.js.map +1 -0
  186. package/dist/transforms/tokenizer.d.ts +26 -0
  187. package/dist/transforms/tokenizer.d.ts.map +1 -0
  188. package/dist/transforms/tokenizer.js +137 -0
  189. package/dist/transforms/tokenizer.js.map +1 -0
  190. package/dist/transforms/tokenizer.test.d.ts +2 -0
  191. package/dist/transforms/tokenizer.test.d.ts.map +1 -0
  192. package/dist/transforms/tokenizer.test.js +85 -0
  193. package/dist/transforms/tokenizer.test.js.map +1 -0
  194. package/dist/transforms/transforms/biz-jargon.d.ts +7 -0
  195. package/dist/transforms/transforms/biz-jargon.d.ts.map +1 -0
  196. package/dist/transforms/transforms/biz-jargon.js +117 -0
  197. package/dist/transforms/transforms/biz-jargon.js.map +1 -0
  198. package/dist/transforms/transforms/emoji.d.ts +7 -0
  199. package/dist/transforms/transforms/emoji.d.ts.map +1 -0
  200. package/dist/transforms/transforms/emoji.js +127 -0
  201. package/dist/transforms/transforms/emoji.js.map +1 -0
  202. package/dist/transforms/transforms/index.d.ts +17 -0
  203. package/dist/transforms/transforms/index.d.ts.map +1 -0
  204. package/dist/transforms/transforms/index.js +37 -0
  205. package/dist/transforms/transforms/index.js.map +1 -0
  206. package/dist/transforms/transforms/leet.d.ts +7 -0
  207. package/dist/transforms/transforms/leet.d.ts.map +1 -0
  208. package/dist/transforms/transforms/leet.js +109 -0
  209. package/dist/transforms/transforms/leet.js.map +1 -0
  210. package/dist/transforms/transforms/mock-case.d.ts +7 -0
  211. package/dist/transforms/transforms/mock-case.d.ts.map +1 -0
  212. package/dist/transforms/transforms/mock-case.js +116 -0
  213. package/dist/transforms/transforms/mock-case.js.map +1 -0
  214. package/dist/transforms/transforms/pig-latin.d.ts +7 -0
  215. package/dist/transforms/transforms/pig-latin.d.ts.map +1 -0
  216. package/dist/transforms/transforms/pig-latin.js +132 -0
  217. package/dist/transforms/transforms/pig-latin.js.map +1 -0
  218. package/dist/transforms/transforms/pig-latin.test.d.ts +2 -0
  219. package/dist/transforms/transforms/pig-latin.test.d.ts.map +1 -0
  220. package/dist/transforms/transforms/pig-latin.test.js +77 -0
  221. package/dist/transforms/transforms/pig-latin.test.js.map +1 -0
  222. package/dist/transforms/transforms/pirate.d.ts +7 -0
  223. package/dist/transforms/transforms/pirate.d.ts.map +1 -0
  224. package/dist/transforms/transforms/pirate.js +150 -0
  225. package/dist/transforms/transforms/pirate.js.map +1 -0
  226. package/dist/transforms/transforms/redact.d.ts +7 -0
  227. package/dist/transforms/transforms/redact.d.ts.map +1 -0
  228. package/dist/transforms/transforms/redact.js +109 -0
  229. package/dist/transforms/transforms/redact.js.map +1 -0
  230. package/dist/transforms/transforms/reverse-words.d.ts +7 -0
  231. package/dist/transforms/transforms/reverse-words.d.ts.map +1 -0
  232. package/dist/transforms/transforms/reverse-words.js +88 -0
  233. package/dist/transforms/transforms/reverse-words.js.map +1 -0
  234. package/dist/transforms/transforms/transforms.test.d.ts +11 -0
  235. package/dist/transforms/transforms/transforms.test.d.ts.map +1 -0
  236. package/dist/transforms/transforms/transforms.test.js +489 -0
  237. package/dist/transforms/transforms/transforms.test.js.map +1 -0
  238. package/dist/transforms/transforms/ubbi-dubbi.d.ts +7 -0
  239. package/dist/transforms/transforms/ubbi-dubbi.d.ts.map +1 -0
  240. package/dist/transforms/transforms/ubbi-dubbi.js +120 -0
  241. package/dist/transforms/transforms/ubbi-dubbi.js.map +1 -0
  242. package/dist/transforms/transforms/uwu.d.ts +7 -0
  243. package/dist/transforms/transforms/uwu.d.ts.map +1 -0
  244. package/dist/transforms/transforms/uwu.js +106 -0
  245. package/dist/transforms/transforms/uwu.js.map +1 -0
  246. package/dist/transforms/types.d.ts +159 -0
  247. package/dist/transforms/types.d.ts.map +1 -0
  248. package/dist/transforms/types.js +22 -0
  249. package/dist/transforms/types.js.map +1 -0
  250. package/dist/types/api.d.ts +158 -0
  251. package/dist/types/api.d.ts.map +1 -0
  252. package/dist/types/api.js +6 -0
  253. package/dist/types/api.js.map +1 -0
  254. package/dist/types/config.d.ts +86 -0
  255. package/dist/types/config.d.ts.map +1 -0
  256. package/dist/types/config.js +66 -0
  257. package/dist/types/config.js.map +1 -0
  258. package/dist/types/context.d.ts +74 -0
  259. package/dist/types/context.d.ts.map +1 -0
  260. package/dist/types/context.js +83 -0
  261. package/dist/types/context.js.map +1 -0
  262. package/dist/types/index.d.ts +7 -0
  263. package/dist/types/index.d.ts.map +1 -0
  264. package/dist/types/index.js +3 -0
  265. package/dist/types/index.js.map +1 -0
  266. package/dist/types/lexicon.d.ts +247 -0
  267. package/dist/types/lexicon.d.ts.map +1 -0
  268. package/dist/types/lexicon.js +6 -0
  269. package/dist/types/lexicon.js.map +1 -0
  270. package/examples/basic-usage.ts +48 -0
  271. package/examples/corporate-lexicon.ts +71 -0
  272. package/examples/lexicons/corporate-min.json +200 -0
  273. package/examples/with-tracing.ts +85 -0
  274. package/package.json +70 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * marlarky CLI
4
+ * Command-line interface for the marlarky text generator
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
package/dist/cli.js ADDED
@@ -0,0 +1,588 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * marlarky CLI
4
+ * Command-line interface for the marlarky text generator
5
+ */
6
+ import { parseArgs } from 'node:util';
7
+ import { readFileSync } from 'node:fs';
8
+ import { resolve, dirname } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { TextGenerator, SimpleFakerAdapter, loadLexiconFromString, validateLexicon, createDefaultRegistry, } from './index.js';
11
+ // ---------- Node 18 ESM __dirname polyfill ----------
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ // ---------- Version ----------
15
+ function getVersion() {
16
+ try {
17
+ const pkgPath = resolve(__dirname, '..', 'package.json');
18
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
19
+ return pkg.version;
20
+ }
21
+ catch {
22
+ return 'unknown';
23
+ }
24
+ }
25
+ // ---------- Help text ----------
26
+ const MAIN_HELP = `
27
+ marlarky - Generate syntactically plausible English text
28
+
29
+ Usage:
30
+ marlarky <command> [options]
31
+
32
+ Commands:
33
+ sentence Generate one or more sentences
34
+ paragraph Generate one or more paragraphs
35
+ text Generate a text block (multiple paragraphs)
36
+ validate Validate a lexicon JSON file
37
+ list List available transforms or sentence types
38
+
39
+ Global Options:
40
+ -s, --seed <n> RNG seed for deterministic output
41
+ -l, --lexicon <path> Path to a lexicon JSON file
42
+ -a, --archetype <name> Archetype to activate from the lexicon
43
+ -x, --transform <id> Apply an output transform (repeatable, comma-separated)
44
+ -t, --trace Output JSON trace to stderr
45
+ -j, --json Output full result as JSON to stdout
46
+ -n, --count <n> Number of units to generate (default: 1)
47
+ -h, --help Show help
48
+ -v, --version Show version
49
+
50
+ Examples:
51
+ marlarky sentence
52
+ marlarky sentence --seed 42 --type question
53
+ marlarky paragraph --sentences 5 --lexicon ./corp.json
54
+ marlarky text --paragraphs 3 --archetype corporate
55
+ marlarky sentence --transform pigLatin
56
+ marlarky sentence --transform leet,uwu --json
57
+ marlarky validate ./my-lexicon.json
58
+ marlarky list transforms
59
+ `.trimStart();
60
+ const SENTENCE_HELP = `
61
+ marlarky sentence - Generate one or more sentences
62
+
63
+ Usage:
64
+ marlarky sentence [options]
65
+
66
+ Options:
67
+ --type <type> Sentence type: simpleDeclarative, compound,
68
+ introAdverbial, subordinate, interjection, question
69
+ --hints <tags> Comma-separated hint tags (e.g. domain:tech,register:formal)
70
+ --min-words <n> Minimum word count per sentence
71
+ --max-words <n> Maximum word count per sentence
72
+ -x, --transform <id> Apply an output transform (repeatable, comma-separated)
73
+ -s, --seed <n> RNG seed for deterministic output
74
+ -l, --lexicon <path> Path to a lexicon JSON file
75
+ -a, --archetype <name> Archetype to activate from the lexicon
76
+ -t, --trace Output JSON trace to stderr
77
+ -j, --json Output full result as JSON to stdout
78
+ -n, --count <n> Number of sentences to generate (default: 1)
79
+ -h, --help Show this help
80
+
81
+ Examples:
82
+ marlarky sentence
83
+ marlarky sentence --seed 42 --type question
84
+ marlarky sentence --count 5 --lexicon ./corp.json --archetype corporate
85
+ marlarky sentence --transform pigLatin --seed 42
86
+ marlarky sentence --min-words 10 --max-words 20
87
+ `.trimStart();
88
+ const PARAGRAPH_HELP = `
89
+ marlarky paragraph - Generate one or more paragraphs
90
+
91
+ Usage:
92
+ marlarky paragraph [options]
93
+
94
+ Options:
95
+ --sentences <n> Exact number of sentences per paragraph
96
+ --min-sentences <n> Minimum sentences per paragraph
97
+ --max-sentences <n> Maximum sentences per paragraph
98
+ --hints <tags> Comma-separated hint tags
99
+ -x, --transform <id> Apply an output transform (repeatable, comma-separated)
100
+ -s, --seed <n> RNG seed for deterministic output
101
+ -l, --lexicon <path> Path to a lexicon JSON file
102
+ -a, --archetype <name> Archetype to activate from the lexicon
103
+ -t, --trace Output JSON trace to stderr
104
+ -j, --json Output full result as JSON to stdout
105
+ -n, --count <n> Number of paragraphs to generate (default: 1)
106
+ -h, --help Show this help
107
+
108
+ Examples:
109
+ marlarky paragraph --sentences 5 --seed 42
110
+ marlarky paragraph --count 3 --lexicon ./corp.json
111
+ marlarky paragraph --transform pirate
112
+ `.trimStart();
113
+ const TEXT_HELP = `
114
+ marlarky text - Generate a text block (multiple paragraphs)
115
+
116
+ Usage:
117
+ marlarky text [options]
118
+
119
+ Options:
120
+ --paragraphs <n> Exact number of paragraphs
121
+ --min-paragraphs <n> Minimum paragraphs
122
+ --max-paragraphs <n> Maximum paragraphs
123
+ --hints <tags> Comma-separated hint tags
124
+ -x, --transform <id> Apply an output transform (repeatable, comma-separated)
125
+ -s, --seed <n> RNG seed for deterministic output
126
+ -l, --lexicon <path> Path to a lexicon JSON file
127
+ -a, --archetype <name> Archetype to activate from the lexicon
128
+ -t, --trace Output JSON trace to stderr
129
+ -j, --json Output full result as JSON to stdout
130
+ -n, --count <n> Number of text blocks to generate (default: 1)
131
+ -h, --help Show this help
132
+
133
+ Examples:
134
+ marlarky text --paragraphs 3 --seed 42
135
+ marlarky text --lexicon ./corp.json --archetype corporate
136
+ marlarky text --transform bizJargon
137
+ `.trimStart();
138
+ const VALIDATE_HELP = `
139
+ marlarky validate - Validate a lexicon JSON file
140
+
141
+ Usage:
142
+ marlarky validate <file.json> [options]
143
+
144
+ Options:
145
+ --json Output validation result as JSON
146
+ -h, --help Show this help
147
+
148
+ Examples:
149
+ marlarky validate ./my-lexicon.json
150
+ marlarky validate ./my-lexicon.json --json
151
+ `.trimStart();
152
+ const LIST_HELP = `
153
+ marlarky list - List available transforms or sentence types
154
+
155
+ Usage:
156
+ marlarky list <category>
157
+
158
+ Categories:
159
+ transforms List all registered output transforms
160
+ types List all sentence types
161
+
162
+ Options:
163
+ --json Output as JSON
164
+ -h, --help Show this help
165
+
166
+ Examples:
167
+ marlarky list transforms
168
+ marlarky list types
169
+ marlarky list transforms --json
170
+ `.trimStart();
171
+ // ---------- Constants ----------
172
+ const GLOBAL_OPTIONS = {
173
+ seed: { type: 'string', short: 's' },
174
+ lexicon: { type: 'string', short: 'l' },
175
+ archetype: { type: 'string', short: 'a' },
176
+ transform: { type: 'string', short: 'x', multiple: true },
177
+ trace: { type: 'boolean', short: 't', default: false },
178
+ json: { type: 'boolean', short: 'j', default: false },
179
+ count: { type: 'string', short: 'n' },
180
+ help: { type: 'boolean', short: 'h', default: false },
181
+ };
182
+ const VALID_SENTENCE_TYPES = [
183
+ 'simpleDeclarative',
184
+ 'compound',
185
+ 'introAdverbial',
186
+ 'subordinate',
187
+ 'interjection',
188
+ 'question',
189
+ ];
190
+ // ---------- Utilities ----------
191
+ function die(message) {
192
+ process.stderr.write(`Error: ${message}\n`);
193
+ process.exit(1);
194
+ }
195
+ function parsePositiveInt(value, defaultValue) {
196
+ if (value === undefined || value === null)
197
+ return defaultValue;
198
+ const n = Number(value);
199
+ if (!Number.isInteger(n) || n < 1) {
200
+ die(`Expected a positive integer, got "${String(value)}"`);
201
+ }
202
+ return n;
203
+ }
204
+ function parseHints(value) {
205
+ if (value === undefined || value === null)
206
+ return undefined;
207
+ return String(value).split(',').map(s => s.trim()).filter(Boolean);
208
+ }
209
+ /**
210
+ * Parse --transform flags into a TransformStep pipeline and OutputTransformsConfig override.
211
+ * Accepts repeatable --transform flags and/or comma-separated IDs.
212
+ * Returns undefined if no transforms specified.
213
+ */
214
+ function parseTransformOverride(values) {
215
+ const raw = values['transform'];
216
+ if (!raw)
217
+ return undefined;
218
+ // raw may be a single string or string[] depending on parseArgs multiple flag
219
+ const entries = Array.isArray(raw)
220
+ ? raw.flatMap(v => v.split(','))
221
+ : String(raw).split(',');
222
+ const ids = entries.map(s => s.trim()).filter(Boolean);
223
+ if (ids.length === 0)
224
+ return undefined;
225
+ // Validate that all IDs exist in the default registry
226
+ const registry = createDefaultRegistry();
227
+ for (const id of ids) {
228
+ if (!registry.has(id)) {
229
+ const available = registry.list().map(t => t.id).join(', ');
230
+ die(`Unknown transform "${id}". Available: ${available}`);
231
+ }
232
+ }
233
+ const pipeline = ids.map(id => ({ id }));
234
+ return {
235
+ enabled: true,
236
+ pipeline,
237
+ };
238
+ }
239
+ // ---------- Generator factory ----------
240
+ function createGenerator(values) {
241
+ let lexicon;
242
+ if (values['lexicon']) {
243
+ const lexiconPath = resolve(String(values['lexicon']));
244
+ try {
245
+ const json = readFileSync(lexiconPath, 'utf-8');
246
+ lexicon = loadLexiconFromString(json);
247
+ }
248
+ catch (err) {
249
+ die(`Loading lexicon: ${err instanceof Error ? err.message : String(err)}`);
250
+ }
251
+ }
252
+ const generator = new TextGenerator({
253
+ fakerAdapter: new SimpleFakerAdapter(),
254
+ lexicon,
255
+ enableTrace: !!values['trace'] || !!values['json'],
256
+ });
257
+ if (values['seed'] !== undefined) {
258
+ const seed = Number(values['seed']);
259
+ if (Number.isNaN(seed)) {
260
+ die(`--seed must be a number, got "${String(values['seed'])}"`);
261
+ }
262
+ generator.setSeed(seed);
263
+ }
264
+ if (values['archetype']) {
265
+ generator.setArchetype(String(values['archetype']));
266
+ }
267
+ return generator;
268
+ }
269
+ // ---------- Output ----------
270
+ function emitResult(result, trace, jsonOutput) {
271
+ if (typeof result === 'string') {
272
+ if (jsonOutput) {
273
+ process.stdout.write(JSON.stringify({ text: result }, null, 2) + '\n');
274
+ }
275
+ else {
276
+ process.stdout.write(result + '\n');
277
+ }
278
+ }
279
+ else {
280
+ if (jsonOutput) {
281
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
282
+ }
283
+ else {
284
+ process.stdout.write(result.text + '\n');
285
+ }
286
+ if (trace && !jsonOutput && result.trace) {
287
+ const traceOutput = {
288
+ trace: result.trace,
289
+ meta: result.meta,
290
+ };
291
+ process.stderr.write(JSON.stringify(traceOutput, null, 2) + '\n');
292
+ }
293
+ }
294
+ }
295
+ // ---------- Subcommand handlers ----------
296
+ function handleSentence() {
297
+ const { values } = parseArgs({
298
+ args: process.argv.slice(3),
299
+ options: {
300
+ ...GLOBAL_OPTIONS,
301
+ type: { type: 'string' },
302
+ hints: { type: 'string' },
303
+ 'min-words': { type: 'string' },
304
+ 'max-words': { type: 'string' },
305
+ },
306
+ strict: true,
307
+ });
308
+ if (values['help']) {
309
+ process.stdout.write(SENTENCE_HELP);
310
+ process.exit(0);
311
+ }
312
+ if (values['type'] && !VALID_SENTENCE_TYPES.includes(values['type'])) {
313
+ die(`Invalid sentence type "${String(values['type'])}". Valid types: ${VALID_SENTENCE_TYPES.join(', ')}`);
314
+ }
315
+ const generator = createGenerator(values);
316
+ const count = parsePositiveInt(values['count'], 1);
317
+ const transformOverride = parseTransformOverride(values);
318
+ const opts = {};
319
+ if (values['type'])
320
+ opts.type = values['type'];
321
+ opts.hints = parseHints(values['hints']);
322
+ if (values['min-words'] !== undefined)
323
+ opts.minWords = parsePositiveInt(values['min-words'], 1);
324
+ if (values['max-words'] !== undefined)
325
+ opts.maxWords = parsePositiveInt(values['max-words'], 1);
326
+ if (transformOverride)
327
+ opts.outputTransforms = transformOverride;
328
+ const jsonOutput = !!values['json'];
329
+ for (let i = 0; i < count; i++) {
330
+ const result = generator.sentence(opts);
331
+ emitResult(result, !!values['trace'], jsonOutput);
332
+ }
333
+ }
334
+ function handleParagraph() {
335
+ const { values } = parseArgs({
336
+ args: process.argv.slice(3),
337
+ options: {
338
+ ...GLOBAL_OPTIONS,
339
+ sentences: { type: 'string' },
340
+ 'min-sentences': { type: 'string' },
341
+ 'max-sentences': { type: 'string' },
342
+ hints: { type: 'string' },
343
+ },
344
+ strict: true,
345
+ });
346
+ if (values['help']) {
347
+ process.stdout.write(PARAGRAPH_HELP);
348
+ process.exit(0);
349
+ }
350
+ const generator = createGenerator(values);
351
+ const count = parsePositiveInt(values['count'], 1);
352
+ const transformOverride = parseTransformOverride(values);
353
+ const opts = {};
354
+ if (values['sentences'] !== undefined)
355
+ opts.sentences = parsePositiveInt(values['sentences'], 1);
356
+ if (values['min-sentences'] !== undefined)
357
+ opts.minSentences = parsePositiveInt(values['min-sentences'], 1);
358
+ if (values['max-sentences'] !== undefined)
359
+ opts.maxSentences = parsePositiveInt(values['max-sentences'], 1);
360
+ opts.hints = parseHints(values['hints']);
361
+ if (transformOverride)
362
+ opts.outputTransforms = transformOverride;
363
+ const jsonOutput = !!values['json'];
364
+ for (let i = 0; i < count; i++) {
365
+ const result = generator.paragraph(opts);
366
+ emitResult(result, !!values['trace'], jsonOutput);
367
+ }
368
+ }
369
+ function handleText() {
370
+ const { values } = parseArgs({
371
+ args: process.argv.slice(3),
372
+ options: {
373
+ ...GLOBAL_OPTIONS,
374
+ paragraphs: { type: 'string' },
375
+ 'min-paragraphs': { type: 'string' },
376
+ 'max-paragraphs': { type: 'string' },
377
+ hints: { type: 'string' },
378
+ },
379
+ strict: true,
380
+ });
381
+ if (values['help']) {
382
+ process.stdout.write(TEXT_HELP);
383
+ process.exit(0);
384
+ }
385
+ const generator = createGenerator(values);
386
+ const count = parsePositiveInt(values['count'], 1);
387
+ const transformOverride = parseTransformOverride(values);
388
+ const opts = {};
389
+ if (values['paragraphs'] !== undefined)
390
+ opts.paragraphs = parsePositiveInt(values['paragraphs'], 1);
391
+ if (values['min-paragraphs'] !== undefined)
392
+ opts.minParagraphs = parsePositiveInt(values['min-paragraphs'], 1);
393
+ if (values['max-paragraphs'] !== undefined)
394
+ opts.maxParagraphs = parsePositiveInt(values['max-paragraphs'], 1);
395
+ opts.hints = parseHints(values['hints']);
396
+ if (transformOverride)
397
+ opts.outputTransforms = transformOverride;
398
+ const jsonOutput = !!values['json'];
399
+ for (let i = 0; i < count; i++) {
400
+ const result = generator.textBlock(opts);
401
+ emitResult(result, !!values['trace'], jsonOutput);
402
+ }
403
+ }
404
+ function handleValidate() {
405
+ const { values, positionals } = parseArgs({
406
+ args: process.argv.slice(3),
407
+ options: {
408
+ json: { type: 'boolean', default: false },
409
+ help: { type: 'boolean', short: 'h', default: false },
410
+ },
411
+ allowPositionals: true,
412
+ strict: true,
413
+ });
414
+ if (values['help']) {
415
+ process.stdout.write(VALIDATE_HELP);
416
+ process.exit(0);
417
+ }
418
+ const filePath = positionals[0];
419
+ if (!filePath) {
420
+ die('No file path provided.\nUsage: marlarky validate <file.json> [--json]');
421
+ }
422
+ const resolvedPath = resolve(filePath);
423
+ let content;
424
+ try {
425
+ content = readFileSync(resolvedPath, 'utf-8');
426
+ }
427
+ catch (err) {
428
+ die(`Reading file: ${err instanceof Error ? err.message : String(err)}`);
429
+ }
430
+ let parsed;
431
+ try {
432
+ parsed = JSON.parse(content);
433
+ }
434
+ catch (err) {
435
+ const msg = `Invalid JSON: ${err instanceof Error ? err.message : String(err)}`;
436
+ if (values['json']) {
437
+ process.stdout.write(JSON.stringify({
438
+ valid: false,
439
+ errors: [{ path: '', message: msg, severity: 'error' }],
440
+ warnings: [],
441
+ }, null, 2) + '\n');
442
+ }
443
+ else {
444
+ process.stderr.write(msg + '\n');
445
+ }
446
+ process.exit(1);
447
+ }
448
+ const result = validateLexicon(parsed);
449
+ if (values['json']) {
450
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
451
+ process.exit(result.valid ? 0 : 1);
452
+ }
453
+ if (result.valid && result.warnings.length === 0) {
454
+ process.stdout.write(`Valid lexicon: ${resolvedPath}\n`);
455
+ process.exit(0);
456
+ }
457
+ if (result.valid) {
458
+ process.stdout.write(`Valid lexicon with warnings: ${resolvedPath}\n\n`);
459
+ }
460
+ else {
461
+ process.stderr.write(`Invalid lexicon: ${resolvedPath}\n\n`);
462
+ }
463
+ if (result.errors.length > 0) {
464
+ process.stderr.write('Errors:\n');
465
+ for (const err of result.errors) {
466
+ process.stderr.write(` ${err.path}: ${err.message}\n`);
467
+ }
468
+ }
469
+ if (result.warnings.length > 0) {
470
+ const stream = result.valid ? process.stdout : process.stderr;
471
+ stream.write('\nWarnings:\n');
472
+ for (const warn of result.warnings) {
473
+ stream.write(` ${warn.path}: ${warn.message}\n`);
474
+ }
475
+ }
476
+ process.exit(result.valid ? 0 : 1);
477
+ }
478
+ function handleList() {
479
+ const { values, positionals } = parseArgs({
480
+ args: process.argv.slice(3),
481
+ options: {
482
+ json: { type: 'boolean', default: false },
483
+ help: { type: 'boolean', short: 'h', default: false },
484
+ },
485
+ allowPositionals: true,
486
+ strict: true,
487
+ });
488
+ if (values['help']) {
489
+ process.stdout.write(LIST_HELP);
490
+ process.exit(0);
491
+ }
492
+ const category = positionals[0];
493
+ if (!category) {
494
+ die('No category specified.\nUsage: marlarky list <transforms|types>');
495
+ }
496
+ switch (category) {
497
+ case 'transforms': {
498
+ const registry = createDefaultRegistry();
499
+ const transforms = registry.list();
500
+ if (values['json']) {
501
+ const data = transforms.map(t => ({
502
+ id: t.id,
503
+ version: t.version,
504
+ deterministic: t.capabilities.deterministic,
505
+ safeToStack: t.capabilities.safeToStack,
506
+ preferredOrder: t.capabilities.preferredOrder ?? null,
507
+ }));
508
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
509
+ }
510
+ else {
511
+ process.stdout.write('Available transforms:\n\n');
512
+ for (const t of transforms) {
513
+ const order = t.capabilities.preferredOrder !== undefined
514
+ ? ` (order: ${t.capabilities.preferredOrder})`
515
+ : '';
516
+ process.stdout.write(` ${t.id} v${t.version}${order}\n`);
517
+ }
518
+ process.stdout.write(`\n${transforms.length} transforms registered.\n`);
519
+ }
520
+ break;
521
+ }
522
+ case 'types': {
523
+ if (values['json']) {
524
+ process.stdout.write(JSON.stringify(VALID_SENTENCE_TYPES, null, 2) + '\n');
525
+ }
526
+ else {
527
+ process.stdout.write('Available sentence types:\n\n');
528
+ for (const t of VALID_SENTENCE_TYPES) {
529
+ process.stdout.write(` ${t}\n`);
530
+ }
531
+ }
532
+ break;
533
+ }
534
+ default:
535
+ die(`Unknown list category "${category}". Valid: transforms, types`);
536
+ }
537
+ }
538
+ // ---------- Main dispatch ----------
539
+ function main() {
540
+ const { values: topValues, positionals } = parseArgs({
541
+ args: process.argv.slice(2),
542
+ options: {
543
+ help: { type: 'boolean', short: 'h', default: false },
544
+ version: { type: 'boolean', short: 'v', default: false },
545
+ },
546
+ allowPositionals: true,
547
+ strict: false,
548
+ });
549
+ if (topValues['version']) {
550
+ process.stdout.write(getVersion() + '\n');
551
+ process.exit(0);
552
+ }
553
+ const command = positionals[0];
554
+ if (topValues['help'] && !command) {
555
+ process.stdout.write(MAIN_HELP);
556
+ process.exit(0);
557
+ }
558
+ if (!command) {
559
+ process.stderr.write('Error: No command specified.\n\n');
560
+ process.stderr.write(MAIN_HELP);
561
+ process.exit(1);
562
+ }
563
+ switch (command) {
564
+ case 'sentence':
565
+ return handleSentence();
566
+ case 'paragraph':
567
+ return handleParagraph();
568
+ case 'text':
569
+ return handleText();
570
+ case 'validate':
571
+ return handleValidate();
572
+ case 'list':
573
+ return handleList();
574
+ default:
575
+ process.stderr.write(`Error: Unknown command "${command}".\n\n`);
576
+ process.stderr.write(MAIN_HELP);
577
+ process.exit(1);
578
+ }
579
+ }
580
+ // ---------- Entry point ----------
581
+ try {
582
+ main();
583
+ }
584
+ catch (err) {
585
+ process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
586
+ process.exit(1);
587
+ }
588
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_NOUNS, DEFAULT_VERBS, DEFAULT_ADJECTIVES, DEFAULT_ADVERBS, DEFAULT_PREPOSITIONS, DEFAULT_CONJUNCTIONS, DEFAULT_SUBORDINATORS, DEFAULT_INTERJECTIONS, DEFAULT_DETERMINERS, DEFAULT_SUBJECT_PRONOUNS, DEFAULT_OBJECT_PRONOUNS, DEFAULT_POSSESSIVE_DETERMINERS, DEFAULT_MODALS, DEFAULT_RELATIVES, DEFAULT_TRANSITIONS, DEFAULT_QUESTION_WORDS, DEFAULT_AUXILIARIES, } from './word-lists.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/defaults/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_NOUNS, DEFAULT_VERBS, DEFAULT_ADJECTIVES, DEFAULT_ADVERBS, DEFAULT_PREPOSITIONS, DEFAULT_CONJUNCTIONS, DEFAULT_SUBORDINATORS, DEFAULT_INTERJECTIONS, DEFAULT_DETERMINERS, DEFAULT_SUBJECT_PRONOUNS, DEFAULT_OBJECT_PRONOUNS, DEFAULT_POSSESSIVE_DETERMINERS, DEFAULT_MODALS, DEFAULT_RELATIVES, DEFAULT_TRANSITIONS, DEFAULT_QUESTION_WORDS, DEFAULT_AUXILIARIES, } from './word-lists.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/defaults/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Default Curated Word Lists
3
+ * Used when no lexicon is provided or as fallback
4
+ */
5
+ export declare const DEFAULT_NOUNS: string[];
6
+ export declare const DEFAULT_VERBS: string[];
7
+ export declare const DEFAULT_ADJECTIVES: string[];
8
+ export declare const DEFAULT_ADVERBS: string[];
9
+ export declare const DEFAULT_PREPOSITIONS: string[];
10
+ export declare const DEFAULT_CONJUNCTIONS: string[];
11
+ export declare const DEFAULT_SUBORDINATORS: string[];
12
+ export declare const DEFAULT_INTERJECTIONS: string[];
13
+ export declare const DEFAULT_DETERMINERS: string[];
14
+ export declare const DEFAULT_SUBJECT_PRONOUNS: string[];
15
+ export declare const DEFAULT_OBJECT_PRONOUNS: string[];
16
+ export declare const DEFAULT_POSSESSIVE_DETERMINERS: string[];
17
+ export declare const DEFAULT_MODALS: string[];
18
+ export declare const DEFAULT_RELATIVES: string[];
19
+ export declare const DEFAULT_TRANSITIONS: string[];
20
+ export declare const DEFAULT_QUESTION_WORDS: string[];
21
+ export declare const DEFAULT_AUXILIARIES: string[];
22
+ //# sourceMappingURL=word-lists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"word-lists.d.ts","sourceRoot":"","sources":["../../src/defaults/word-lists.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,aAAa,UAWzB,CAAC;AAGF,eAAO,MAAM,aAAa,UAYzB,CAAC;AAGF,eAAO,MAAM,kBAAkB,UAU9B,CAAC;AAGF,eAAO,MAAM,eAAe,UAU3B,CAAC;AAGF,eAAO,MAAM,oBAAoB,UAMhC,CAAC;AAGF,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAGF,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAGF,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAGF,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAGF,eAAO,MAAM,wBAAwB,UAEpC,CAAC;AAGF,eAAO,MAAM,uBAAuB,UAEnC,CAAC;AAGF,eAAO,MAAM,8BAA8B,UAE1C,CAAC;AAGF,eAAO,MAAM,cAAc,UAE1B,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAE7B,CAAC;AAGF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAGF,eAAO,MAAM,sBAAsB,UAElC,CAAC;AAGF,eAAO,MAAM,mBAAmB,UAG/B,CAAC"}