@hegeldev/hegel 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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/binary.d.ts +27 -0
  4. package/dist/binary.d.ts.map +1 -0
  5. package/dist/binary.js +50 -0
  6. package/dist/binary.js.map +1 -0
  7. package/dist/collections.d.ts +114 -0
  8. package/dist/collections.d.ts.map +1 -0
  9. package/dist/collections.js +313 -0
  10. package/dist/collections.js.map +1 -0
  11. package/dist/combinators.d.ts +34 -0
  12. package/dist/combinators.d.ts.map +1 -0
  13. package/dist/combinators.js +152 -0
  14. package/dist/combinators.js.map +1 -0
  15. package/dist/conformance.d.ts +31 -0
  16. package/dist/conformance.d.ts.map +1 -0
  17. package/dist/conformance.js +60 -0
  18. package/dist/conformance.js.map +1 -0
  19. package/dist/connection.d.ts +82 -0
  20. package/dist/connection.d.ts.map +1 -0
  21. package/dist/connection.js +231 -0
  22. package/dist/connection.js.map +1 -0
  23. package/dist/crc32.d.ts +13 -0
  24. package/dist/crc32.d.ts.map +1 -0
  25. package/dist/crc32.js +30 -0
  26. package/dist/crc32.js.map +1 -0
  27. package/dist/derive.d.ts +225 -0
  28. package/dist/derive.d.ts.map +1 -0
  29. package/dist/derive.js +296 -0
  30. package/dist/derive.js.map +1 -0
  31. package/dist/embedded.d.ts +38 -0
  32. package/dist/embedded.d.ts.map +1 -0
  33. package/dist/embedded.js +237 -0
  34. package/dist/embedded.js.map +1 -0
  35. package/dist/floats.d.ts +57 -0
  36. package/dist/floats.d.ts.map +1 -0
  37. package/dist/floats.js +100 -0
  38. package/dist/floats.js.map +1 -0
  39. package/dist/formats.d.ts +62 -0
  40. package/dist/formats.d.ts.map +1 -0
  41. package/dist/formats.js +164 -0
  42. package/dist/formats.js.map +1 -0
  43. package/dist/generator.d.ts +80 -0
  44. package/dist/generator.d.ts.map +1 -0
  45. package/dist/generator.js +128 -0
  46. package/dist/generator.js.map +1 -0
  47. package/dist/generators/collections.d.ts +20 -0
  48. package/dist/generators/collections.d.ts.map +1 -0
  49. package/dist/generators/collections.js +209 -0
  50. package/dist/generators/collections.js.map +1 -0
  51. package/dist/generators/combinators.d.ts +15 -0
  52. package/dist/generators/combinators.d.ts.map +1 -0
  53. package/dist/generators/combinators.js +143 -0
  54. package/dist/generators/combinators.js.map +1 -0
  55. package/dist/generators/compose.d.ts +27 -0
  56. package/dist/generators/compose.d.ts.map +1 -0
  57. package/dist/generators/compose.js +82 -0
  58. package/dist/generators/compose.js.map +1 -0
  59. package/dist/generators/core.d.ts +53 -0
  60. package/dist/generators/core.d.ts.map +1 -0
  61. package/dist/generators/core.js +134 -0
  62. package/dist/generators/core.js.map +1 -0
  63. package/dist/generators/index.d.ts +18 -0
  64. package/dist/generators/index.d.ts.map +1 -0
  65. package/dist/generators/index.js +15 -0
  66. package/dist/generators/index.js.map +1 -0
  67. package/dist/generators/numeric.d.ts +40 -0
  68. package/dist/generators/numeric.d.ts.map +1 -0
  69. package/dist/generators/numeric.js +128 -0
  70. package/dist/generators/numeric.js.map +1 -0
  71. package/dist/generators/primitives.d.ts +138 -0
  72. package/dist/generators/primitives.d.ts.map +1 -0
  73. package/dist/generators/primitives.js +240 -0
  74. package/dist/generators/primitives.js.map +1 -0
  75. package/dist/generators/strings.d.ts +73 -0
  76. package/dist/generators/strings.d.ts.map +1 -0
  77. package/dist/generators/strings.js +215 -0
  78. package/dist/generators/strings.js.map +1 -0
  79. package/dist/generators/tuples.d.ts +11 -0
  80. package/dist/generators/tuples.d.ts.map +1 -0
  81. package/dist/generators/tuples.js +43 -0
  82. package/dist/generators/tuples.js.map +1 -0
  83. package/dist/generators.d.ts +408 -0
  84. package/dist/generators.d.ts.map +1 -0
  85. package/dist/generators.js +898 -0
  86. package/dist/generators.js.map +1 -0
  87. package/dist/index.d.ts +16 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +13 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/install.d.ts +6 -0
  92. package/dist/install.d.ts.map +1 -0
  93. package/dist/install.js +91 -0
  94. package/dist/install.js.map +1 -0
  95. package/dist/integers.d.ts +37 -0
  96. package/dist/integers.d.ts.map +1 -0
  97. package/dist/integers.js +63 -0
  98. package/dist/integers.js.map +1 -0
  99. package/dist/labels.d.ts +21 -0
  100. package/dist/labels.d.ts.map +1 -0
  101. package/dist/labels.js +20 -0
  102. package/dist/labels.js.map +1 -0
  103. package/dist/objects.d.ts +39 -0
  104. package/dist/objects.d.ts.map +1 -0
  105. package/dist/objects.js +98 -0
  106. package/dist/objects.js.map +1 -0
  107. package/dist/primitives.d.ts +14 -0
  108. package/dist/primitives.d.ts.map +1 -0
  109. package/dist/primitives.js +51 -0
  110. package/dist/primitives.js.map +1 -0
  111. package/dist/protocol.d.ts +25 -0
  112. package/dist/protocol.d.ts.map +1 -0
  113. package/dist/protocol.js +77 -0
  114. package/dist/protocol.js.map +1 -0
  115. package/dist/runner.d.ts +115 -0
  116. package/dist/runner.d.ts.map +1 -0
  117. package/dist/runner.js +455 -0
  118. package/dist/runner.js.map +1 -0
  119. package/dist/session.d.ts +19 -0
  120. package/dist/session.d.ts.map +1 -0
  121. package/dist/session.js +157 -0
  122. package/dist/session.js.map +1 -0
  123. package/dist/spans.d.ts +23 -0
  124. package/dist/spans.d.ts.map +1 -0
  125. package/dist/spans.js +51 -0
  126. package/dist/spans.js.map +1 -0
  127. package/dist/strings.d.ts +67 -0
  128. package/dist/strings.d.ts.map +1 -0
  129. package/dist/strings.js +107 -0
  130. package/dist/strings.js.map +1 -0
  131. package/dist/testCase.d.ts +118 -0
  132. package/dist/testCase.d.ts.map +1 -0
  133. package/dist/testCase.js +186 -0
  134. package/dist/testCase.js.map +1 -0
  135. package/dist/uv-install.sh +2226 -0
  136. package/dist/uv.d.ts +20 -0
  137. package/dist/uv.d.ts.map +1 -0
  138. package/dist/uv.js +103 -0
  139. package/dist/uv.js.map +1 -0
  140. package/dist/wtf8.d.ts +16 -0
  141. package/dist/wtf8.d.ts.map +1 -0
  142. package/dist/wtf8.js +52 -0
  143. package/dist/wtf8.js.map +1 -0
  144. package/package.json +60 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * Embedded mode implementation for Hegel TypeScript SDK.
3
+ *
4
+ * Creates a Unix socket server, spawns the hegel CLI in client mode,
5
+ * and manages the test loop.
6
+ */
7
+ import * as net from "node:net";
8
+ import * as fs from "node:fs";
9
+ import * as os from "node:os";
10
+ import * as path from "node:path";
11
+ import { spawn } from "node:child_process";
12
+ import { ensureHegel } from "./install.js";
13
+ import { setEmbeddedConnection, clearEmbeddedConnection, setIsLastRun, } from "./connection.js";
14
+ export var Verbosity;
15
+ (function (Verbosity) {
16
+ Verbosity["Quiet"] = "quiet";
17
+ Verbosity["Normal"] = "normal";
18
+ Verbosity["Verbose"] = "verbose";
19
+ Verbosity["Debug"] = "debug";
20
+ })(Verbosity || (Verbosity = {}));
21
+ /**
22
+ * Special error thrown by assume() to signal test rejection.
23
+ */
24
+ export class RejectError extends Error {
25
+ constructor() {
26
+ super("HEGEL_REJECT");
27
+ this.name = "RejectError";
28
+ }
29
+ }
30
+ /**
31
+ * Builder class for configuring and running Hegel tests.
32
+ */
33
+ export class Hegel {
34
+ testFn;
35
+ _testCases = 100;
36
+ _verbosity = Verbosity.Normal;
37
+ constructor(testFn) {
38
+ this.testFn = testFn;
39
+ }
40
+ /**
41
+ * Set the number of test cases to run.
42
+ */
43
+ testCases(n) {
44
+ this._testCases = n;
45
+ return this;
46
+ }
47
+ /**
48
+ * Set the verbosity level.
49
+ */
50
+ verbosity(v) {
51
+ this._verbosity = v;
52
+ return this;
53
+ }
54
+ /**
55
+ * Run the test.
56
+ */
57
+ run() {
58
+ return runEmbedded(this.testFn, this._testCases, this._verbosity);
59
+ }
60
+ }
61
+ /**
62
+ * Simple wrapper for running a Hegel test with default options.
63
+ */
64
+ export function hegel(testFn) {
65
+ return new Hegel(testFn).run();
66
+ }
67
+ /**
68
+ * Run embedded mode: create socket server, spawn hegel, handle connections.
69
+ * Returns a Promise that resolves when all tests complete.
70
+ */
71
+ function runEmbedded(testFn, testCases, verbosity) {
72
+ return new Promise((resolve, reject) => {
73
+ const hegelPath = ensureHegel();
74
+ // Create temp directory for socket
75
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "hegel-ts-"));
76
+ const socketPath = path.join(tmpDir, "hegel.sock");
77
+ // Track exit code from hegel process
78
+ let hegelExitCode = 0;
79
+ // Track cleanup state
80
+ let cleaned = false;
81
+ const cleanup = () => {
82
+ if (cleaned)
83
+ return;
84
+ cleaned = true;
85
+ try {
86
+ fs.unlinkSync(socketPath);
87
+ }
88
+ catch { }
89
+ try {
90
+ fs.rmdirSync(tmpDir);
91
+ }
92
+ catch { }
93
+ };
94
+ // Create Unix socket server
95
+ const server = net.createServer();
96
+ server.listen(socketPath);
97
+ // Spawn hegel in client mode
98
+ const child = spawn(hegelPath, [
99
+ "--client-mode",
100
+ socketPath,
101
+ "--test-cases",
102
+ testCases.toString(),
103
+ "--no-tui",
104
+ "--verbosity",
105
+ verbosity,
106
+ ], {
107
+ stdio: ["ignore", "inherit", "inherit"],
108
+ });
109
+ child.on("exit", code => {
110
+ if (verbosity === Verbosity.Debug) {
111
+ console.error(`hegel-ts: hegel exited with code ${code}`);
112
+ }
113
+ hegelExitCode = code ?? 0;
114
+ server.close();
115
+ });
116
+ child.on("error", err => {
117
+ console.error(`hegel-ts: failed to spawn hegel: ${err.message}`);
118
+ cleanup();
119
+ reject(new Error(`Failed to spawn hegel: ${err.message}`));
120
+ });
121
+ // Handle connections synchronously using a queue
122
+ const connectionQueue = [];
123
+ let processing = false;
124
+ let connectionCount = 0;
125
+ server.on("connection", socket => {
126
+ connectionCount++;
127
+ if (verbosity === Verbosity.Debug) {
128
+ console.error(`hegel-ts: connection #${connectionCount} received`);
129
+ }
130
+ connectionQueue.push(socket);
131
+ processQueue();
132
+ });
133
+ function processQueue() {
134
+ if (processing || connectionQueue.length === 0)
135
+ return;
136
+ processing = true;
137
+ const socket = connectionQueue.shift();
138
+ if (verbosity === Verbosity.Debug) {
139
+ console.error(`hegel-ts: processing connection, queue size: ${connectionQueue.length}`);
140
+ }
141
+ handleConnection(socket, testFn, verbosity)
142
+ .catch(err => {
143
+ console.error(`hegel-ts: connection error: ${err.message}`);
144
+ })
145
+ .finally(() => {
146
+ if (verbosity === Verbosity.Debug) {
147
+ console.error(`hegel-ts: connection complete`);
148
+ }
149
+ processing = false;
150
+ processQueue();
151
+ });
152
+ }
153
+ server.on("close", () => {
154
+ if (verbosity === Verbosity.Debug) {
155
+ console.error("hegel-ts: server closed");
156
+ }
157
+ cleanup();
158
+ if (hegelExitCode !== 0) {
159
+ reject(new Error(`Hegel server exited with code ${hegelExitCode}`));
160
+ return;
161
+ }
162
+ resolve();
163
+ });
164
+ });
165
+ }
166
+ /**
167
+ * Handle a single connection from hegel (one test case).
168
+ */
169
+ async function handleConnection(socket, testFn, verbosity) {
170
+ return new Promise((resolve, reject) => {
171
+ let buffer = "";
172
+ const onData = (data) => {
173
+ buffer += data.toString();
174
+ // Check for complete handshake message
175
+ const newlineIndex = buffer.indexOf("\n");
176
+ if (newlineIndex === -1)
177
+ return;
178
+ const line = buffer.slice(0, newlineIndex);
179
+ buffer = buffer.slice(newlineIndex + 1);
180
+ socket.removeListener("data", onData);
181
+ try {
182
+ // Parse handshake
183
+ const handshake = JSON.parse(line);
184
+ const isLastRun = handshake.is_last_run ?? false;
185
+ if (verbosity === Verbosity.Debug) {
186
+ console.error(`hegel-ts: handshake received: is_last_run=${isLastRun}`);
187
+ }
188
+ // Send acknowledgment
189
+ socket.write(JSON.stringify({ type: "handshake_ack" }) + "\n");
190
+ // Set up connection state for generators
191
+ setIsLastRun(isLastRun);
192
+ setEmbeddedConnection(socket, buffer);
193
+ // Run test function
194
+ let result;
195
+ try {
196
+ testFn();
197
+ result = { type: "test_result", result: "pass" };
198
+ }
199
+ catch (err) {
200
+ if (err instanceof RejectError) {
201
+ result = { type: "test_result", result: "reject" };
202
+ }
203
+ else {
204
+ const message = err instanceof Error ? err.message : String(err);
205
+ result = { type: "test_result", result: "fail", message };
206
+ // Print error details on last run
207
+ if (isLastRun) {
208
+ console.error(`\nTest failed: ${message}`);
209
+ if (err instanceof Error && err.stack) {
210
+ console.error(err.stack);
211
+ }
212
+ }
213
+ }
214
+ }
215
+ finally {
216
+ clearEmbeddedConnection();
217
+ }
218
+ if (verbosity === Verbosity.Debug) {
219
+ console.error(`hegel-ts: sending result: ${JSON.stringify(result)}`);
220
+ }
221
+ // Send result
222
+ socket.write(JSON.stringify(result) + "\n", () => {
223
+ socket.end();
224
+ resolve();
225
+ });
226
+ }
227
+ catch (err) {
228
+ socket.end();
229
+ reject(err);
230
+ }
231
+ };
232
+ socket.on("data", onData);
233
+ socket.on("error", reject);
234
+ socket.on("close", () => resolve());
235
+ });
236
+ }
237
+ //# sourceMappingURL=embedded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../src/embedded.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,GACb,MAAM,iBAAiB,CAAA;AAExB,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,4BAAe,CAAA;AACjB,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC;QACE,KAAK,CAAC,cAAc,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,KAAK;IACR,MAAM,CAAY;IAClB,UAAU,GAAW,GAAG,CAAA;IACxB,UAAU,GAAc,SAAS,CAAC,MAAM,CAAA;IAEhD,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,CAAS;QACjB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,CAAY;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,GAAG;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IACnE,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,MAAkB;IACtC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAClB,MAAkB,EAClB,SAAiB,EACjB,SAAoB;IAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,WAAW,EAAE,CAAA;QAE/B,mCAAmC;QACnC,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAA;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAElD,qCAAqC;QACrC,IAAI,aAAa,GAAG,CAAC,CAAA;QAErB,sBAAsB;QACtB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;YAC3B,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACtB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC,CAAA;QAED,4BAA4B;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEzB,6BAA6B;QAC7B,MAAM,KAAK,GAAG,KAAK,CACjB,SAAS,EACT;YACE,eAAe;YACf,UAAU;YACV,cAAc;YACd,SAAS,CAAC,QAAQ,EAAE;YACpB,UAAU;YACV,aAAa;YACb,SAAS;SACV,EACD;YACE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;SACxC,CACF,CAAA;QAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;YACtB,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;YAC3D,CAAC;YACD,aAAa,GAAG,IAAI,IAAI,CAAC,CAAA;YACzB,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAChE,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC5D,CAAC,CAAC,CAAA;QAEF,iDAAiD;QACjD,MAAM,eAAe,GAAiB,EAAE,CAAA;QACxC,IAAI,UAAU,GAAG,KAAK,CAAA;QAEtB,IAAI,eAAe,GAAG,CAAC,CAAA;QACvB,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE;YAC/B,eAAe,EAAE,CAAA;YACjB,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,yBAAyB,eAAe,WAAW,CAAC,CAAA;YACpE,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5B,YAAY,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,SAAS,YAAY;YACnB,IAAI,UAAU,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YACtD,UAAU,GAAG,IAAI,CAAA;YAEjB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAG,CAAA;YACvC,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CACX,gDAAgD,eAAe,CAAC,MAAM,EAAE,CACzE,CAAA;YACH,CAAC;YACD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;iBACxC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;YAC7D,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAA;gBAChD,CAAC;gBACD,UAAU,GAAG,KAAK,CAAA;gBAClB,YAAY,EAAE,CAAA;YAChB,CAAC,CAAC,CAAA;QACN,CAAC;QAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;YAC1C,CAAC;YACD,OAAO,EAAE,CAAA;YACT,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,aAAa,EAAE,CAAC,CAAC,CAAA;gBACnE,OAAM;YACR,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,MAAkB,EAClB,MAAkB,EAClB,SAAoB;IAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,GAAG,EAAE,CAAA;QAEf,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;YAEzB,uCAAuC;YACvC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACzC,IAAI,YAAY,KAAK,CAAC,CAAC;gBAAE,OAAM;YAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;YAC1C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;YAEvC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAErC,IAAI,CAAC;gBACH,kBAAkB;gBAClB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAClC,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,IAAI,KAAK,CAAA;gBAEhD,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAA;gBACzE,CAAC;gBAED,sBAAsB;gBACtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;gBAE9D,yCAAyC;gBACzC,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAErC,oBAAoB;gBACpB,IAAI,MAA0D,CAAA;gBAC9D,IAAI,CAAC;oBACH,MAAM,EAAE,CAAA;oBACR,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;gBAClD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;wBAC/B,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;oBACpD,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBAChE,MAAM,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;wBAEzD,kCAAkC;wBAClC,IAAI,SAAS,EAAE,CAAC;4BACd,OAAO,CAAC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;4BAC1C,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gCACtC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;4BAC1B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;wBAAS,CAAC;oBACT,uBAAuB,EAAE,CAAA;gBAC3B,CAAC;gBAED,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACtE,CAAC;gBAED,cAAc;gBACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE;oBAC/C,MAAM,CAAC,GAAG,EAAE,CAAA;oBACZ,OAAO,EAAE,CAAA;gBACX,CAAC,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,EAAE,CAAA;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC;QACH,CAAC,CAAA;QAED,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { JsonSchema, BaseGenerator } from "./generator.js";
2
+ /**
3
+ * Generator for floating-point values with builder pattern.
4
+ */
5
+ export declare class FloatGenerator extends BaseGenerator<number> {
6
+ private readonly _min?;
7
+ private readonly _max?;
8
+ private readonly _excludeMin;
9
+ private readonly _excludeMax;
10
+ private readonly _allowNan;
11
+ private readonly _allowInfinity;
12
+ private constructor();
13
+ /**
14
+ * Create a new FloatGenerator.
15
+ */
16
+ static create(): FloatGenerator;
17
+ /**
18
+ * Set the minimum value.
19
+ */
20
+ min(value: number): FloatGenerator;
21
+ /**
22
+ * Set the maximum value.
23
+ */
24
+ max(value: number): FloatGenerator;
25
+ /**
26
+ * Exclude the minimum value from the range.
27
+ */
28
+ excludeMin(): FloatGenerator;
29
+ /**
30
+ * Exclude the maximum value from the range.
31
+ */
32
+ excludeMax(): FloatGenerator;
33
+ /**
34
+ * Set whether NaN values can be generated.
35
+ */
36
+ allowNan(allow: boolean): FloatGenerator;
37
+ /**
38
+ * Set whether infinity values can be generated.
39
+ */
40
+ allowInfinity(allow: boolean): FloatGenerator;
41
+ generate(): number;
42
+ schema(): JsonSchema;
43
+ }
44
+ /**
45
+ * Create a generator for floating-point values.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // Generate any float
50
+ * const gen = floats();
51
+ *
52
+ * // Generate floats in a range (exclusive)
53
+ * const bounded = floats().min(0).max(1).excludeMin().excludeMax();
54
+ * ```
55
+ */
56
+ export declare function floats(): FloatGenerator;
57
+ //# sourceMappingURL=floats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floats.d.ts","sourceRoot":"","sources":["../src/floats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE1D;;GAEG;AACH,qBAAa,cAAe,SAAQ,aAAa,CAAC,MAAM,CAAC;IAErD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IANjC,OAAO;IAWP;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,cAAc;IAI/B;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAWlC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc;IAWlC;;OAEG;IACH,UAAU,IAAI,cAAc;IAW5B;;OAEG;IACH,UAAU,IAAI,cAAc;IAW5B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc;IAWxC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc;IAW7C,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,UAAU;CAoBrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,IAAI,cAAc,CAEvC"}
package/dist/floats.js ADDED
@@ -0,0 +1,100 @@
1
+ import { generateFromSchema } from "./connection.js";
2
+ import { BaseGenerator } from "./generator.js";
3
+ /**
4
+ * Generator for floating-point values with builder pattern.
5
+ */
6
+ export class FloatGenerator extends BaseGenerator {
7
+ _min;
8
+ _max;
9
+ _excludeMin;
10
+ _excludeMax;
11
+ _allowNan;
12
+ _allowInfinity;
13
+ constructor(_min, _max, _excludeMin = false, _excludeMax = false, _allowNan = true, _allowInfinity = true) {
14
+ super();
15
+ this._min = _min;
16
+ this._max = _max;
17
+ this._excludeMin = _excludeMin;
18
+ this._excludeMax = _excludeMax;
19
+ this._allowNan = _allowNan;
20
+ this._allowInfinity = _allowInfinity;
21
+ }
22
+ /**
23
+ * Create a new FloatGenerator.
24
+ */
25
+ static create() {
26
+ return new FloatGenerator();
27
+ }
28
+ /**
29
+ * Set the minimum value.
30
+ */
31
+ min(value) {
32
+ return new FloatGenerator(value, this._max, this._excludeMin, this._excludeMax, this._allowNan, this._allowInfinity);
33
+ }
34
+ /**
35
+ * Set the maximum value.
36
+ */
37
+ max(value) {
38
+ return new FloatGenerator(this._min, value, this._excludeMin, this._excludeMax, this._allowNan, this._allowInfinity);
39
+ }
40
+ /**
41
+ * Exclude the minimum value from the range.
42
+ */
43
+ excludeMin() {
44
+ return new FloatGenerator(this._min, this._max, true, this._excludeMax, this._allowNan, this._allowInfinity);
45
+ }
46
+ /**
47
+ * Exclude the maximum value from the range.
48
+ */
49
+ excludeMax() {
50
+ return new FloatGenerator(this._min, this._max, this._excludeMin, true, this._allowNan, this._allowInfinity);
51
+ }
52
+ /**
53
+ * Set whether NaN values can be generated.
54
+ */
55
+ allowNan(allow) {
56
+ return new FloatGenerator(this._min, this._max, this._excludeMin, this._excludeMax, allow, this._allowInfinity);
57
+ }
58
+ /**
59
+ * Set whether infinity values can be generated.
60
+ */
61
+ allowInfinity(allow) {
62
+ return new FloatGenerator(this._min, this._max, this._excludeMin, this._excludeMax, this._allowNan, allow);
63
+ }
64
+ generate() {
65
+ return generateFromSchema(this.schema());
66
+ }
67
+ schema() {
68
+ const schema = {
69
+ type: "number",
70
+ exclude_minimum: this._excludeMin,
71
+ exclude_maximum: this._excludeMax,
72
+ allow_nan: this._allowNan,
73
+ allow_infinity: this._allowInfinity,
74
+ width: 64, // JavaScript numbers are always f64
75
+ };
76
+ if (this._min !== undefined) {
77
+ schema.minimum = this._min;
78
+ }
79
+ if (this._max !== undefined) {
80
+ schema.maximum = this._max;
81
+ }
82
+ return schema;
83
+ }
84
+ }
85
+ /**
86
+ * Create a generator for floating-point values.
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * // Generate any float
91
+ * const gen = floats();
92
+ *
93
+ * // Generate floats in a range (exclusive)
94
+ * const bounded = floats().min(0).max(1).excludeMin().excludeMax();
95
+ * ```
96
+ */
97
+ export function floats() {
98
+ return FloatGenerator.create();
99
+ }
100
+ //# sourceMappingURL=floats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floats.js","sourceRoot":"","sources":["../src/floats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { Generator, JsonSchema, BaseGenerator } from "./generator.js";
2
+ /**
3
+ * Create a generator for email addresses.
4
+ */
5
+ export declare function emails(): Generator<string>;
6
+ /**
7
+ * Create a generator for URLs.
8
+ */
9
+ export declare function urls(): Generator<string>;
10
+ /**
11
+ * Generator for domain names with optional max length.
12
+ */
13
+ export declare class DomainGenerator extends BaseGenerator<string> {
14
+ private readonly _maxLength;
15
+ private constructor();
16
+ static create(): DomainGenerator;
17
+ /**
18
+ * Set the maximum length for the domain.
19
+ */
20
+ maxLength(value: number): DomainGenerator;
21
+ generate(): string;
22
+ schema(): JsonSchema;
23
+ }
24
+ /**
25
+ * Create a generator for domain names.
26
+ */
27
+ export declare function domains(): DomainGenerator;
28
+ /**
29
+ * Generator for IP addresses.
30
+ */
31
+ export declare class IpAddressGenerator extends BaseGenerator<string> {
32
+ private readonly _version;
33
+ private constructor();
34
+ static create(): IpAddressGenerator;
35
+ /**
36
+ * Generate only IPv4 addresses.
37
+ */
38
+ v4(): IpAddressGenerator;
39
+ /**
40
+ * Generate only IPv6 addresses.
41
+ */
42
+ v6(): IpAddressGenerator;
43
+ generate(): string;
44
+ schema(): JsonSchema;
45
+ }
46
+ /**
47
+ * Create a generator for IP addresses.
48
+ */
49
+ export declare function ipAddresses(): IpAddressGenerator;
50
+ /**
51
+ * Create a generator for date strings (ISO 8601 date format).
52
+ */
53
+ export declare function dates(): Generator<string>;
54
+ /**
55
+ * Create a generator for time strings (ISO 8601 time format).
56
+ */
57
+ export declare function times(): Generator<string>;
58
+ /**
59
+ * Create a generator for datetime strings (ISO 8601 datetime format).
60
+ */
61
+ export declare function datetimes(): Generator<string>;
62
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AA0BrE;;GAEG;AACH,wBAAgB,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAE1C;AAWD;;GAEG;AACH,wBAAgB,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAExC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAA/C,OAAO;IAIP,MAAM,CAAC,MAAM,IAAI,eAAe;IAIhC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAIzC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,UAAU;CAMrB;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,eAAe,CAEzC;AAOD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,MAAM,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAA7C,OAAO;IAIP,MAAM,CAAC,MAAM,IAAI,kBAAkB;IAInC;;OAEG;IACH,EAAE,IAAI,kBAAkB;IAIxB;;OAEG;IACH,EAAE,IAAI,kBAAkB;IAIxB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,UAAU;CAYrB;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,kBAAkB,CAEhD;AAWD;;GAEG;AACH,wBAAgB,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAEzC;AAWD;;GAEG;AACH,wBAAgB,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAEzC;AAWD;;GAEG;AACH,wBAAgB,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAE7C"}
@@ -0,0 +1,164 @@
1
+ import { generateFromSchema } from "./connection.js";
2
+ import { BaseGenerator } from "./generator.js";
3
+ /**
4
+ * Base class for format string generators.
5
+ */
6
+ class FormatGenerator extends BaseGenerator {
7
+ generate() {
8
+ return generateFromSchema(this.schema());
9
+ }
10
+ schema() {
11
+ return this.getSchema();
12
+ }
13
+ }
14
+ /**
15
+ * Generator for email addresses.
16
+ */
17
+ class EmailGenerator extends FormatGenerator {
18
+ getSchema() {
19
+ return { type: "email" };
20
+ }
21
+ }
22
+ /**
23
+ * Create a generator for email addresses.
24
+ */
25
+ export function emails() {
26
+ return new EmailGenerator();
27
+ }
28
+ /**
29
+ * Generator for URLs.
30
+ */
31
+ class UrlGenerator extends FormatGenerator {
32
+ getSchema() {
33
+ return { type: "url" };
34
+ }
35
+ }
36
+ /**
37
+ * Create a generator for URLs.
38
+ */
39
+ export function urls() {
40
+ return new UrlGenerator();
41
+ }
42
+ /**
43
+ * Generator for domain names with optional max length.
44
+ */
45
+ export class DomainGenerator extends BaseGenerator {
46
+ _maxLength;
47
+ constructor(_maxLength = 255) {
48
+ super();
49
+ this._maxLength = _maxLength;
50
+ }
51
+ static create() {
52
+ return new DomainGenerator();
53
+ }
54
+ /**
55
+ * Set the maximum length for the domain.
56
+ */
57
+ maxLength(value) {
58
+ return new DomainGenerator(value);
59
+ }
60
+ generate() {
61
+ return generateFromSchema(this.schema());
62
+ }
63
+ schema() {
64
+ return {
65
+ type: "domain",
66
+ max_length: this._maxLength,
67
+ };
68
+ }
69
+ }
70
+ /**
71
+ * Create a generator for domain names.
72
+ */
73
+ export function domains() {
74
+ return DomainGenerator.create();
75
+ }
76
+ /**
77
+ * Generator for IP addresses.
78
+ */
79
+ export class IpAddressGenerator extends BaseGenerator {
80
+ _version;
81
+ constructor(_version = "any") {
82
+ super();
83
+ this._version = _version;
84
+ }
85
+ static create() {
86
+ return new IpAddressGenerator();
87
+ }
88
+ /**
89
+ * Generate only IPv4 addresses.
90
+ */
91
+ v4() {
92
+ return new IpAddressGenerator("v4");
93
+ }
94
+ /**
95
+ * Generate only IPv6 addresses.
96
+ */
97
+ v6() {
98
+ return new IpAddressGenerator("v6");
99
+ }
100
+ generate() {
101
+ return generateFromSchema(this.schema());
102
+ }
103
+ schema() {
104
+ switch (this._version) {
105
+ case "v4":
106
+ return { type: "ipv4" };
107
+ case "v6":
108
+ return { type: "ipv6" };
109
+ default:
110
+ return {
111
+ one_of: [{ type: "ipv4" }, { type: "ipv6" }],
112
+ };
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Create a generator for IP addresses.
118
+ */
119
+ export function ipAddresses() {
120
+ return IpAddressGenerator.create();
121
+ }
122
+ /**
123
+ * Generator for date strings (YYYY-MM-DD format).
124
+ */
125
+ class DateGenerator extends FormatGenerator {
126
+ getSchema() {
127
+ return { type: "date" };
128
+ }
129
+ }
130
+ /**
131
+ * Create a generator for date strings (ISO 8601 date format).
132
+ */
133
+ export function dates() {
134
+ return new DateGenerator();
135
+ }
136
+ /**
137
+ * Generator for time strings (HH:MM:SS format).
138
+ */
139
+ class TimeGenerator extends FormatGenerator {
140
+ getSchema() {
141
+ return { type: "time" };
142
+ }
143
+ }
144
+ /**
145
+ * Create a generator for time strings (ISO 8601 time format).
146
+ */
147
+ export function times() {
148
+ return new TimeGenerator();
149
+ }
150
+ /**
151
+ * Generator for datetime strings (ISO 8601 format).
152
+ */
153
+ class DateTimeGenerator extends FormatGenerator {
154
+ getSchema() {
155
+ return { type: "datetime" };
156
+ }
157
+ }
158
+ /**
159
+ * Create a generator for datetime strings (ISO 8601 datetime format).
160
+ */
161
+ export function datetimes() {
162
+ return new DateTimeGenerator();
163
+ }
164
+ //# sourceMappingURL=formats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}