@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,240 @@
1
+ /**
2
+ * Primitive and format generators: integers, floats, booleans, text, binary,
3
+ * just, sampledFrom, fromRegex, and format generators (emails, urls, etc.).
4
+ *
5
+ * @packageDocumentation
6
+ */
7
+ import { BasicGenerator } from "./core.js";
8
+ // ---------------------------------------------------------------------------
9
+ // Built-in generators
10
+ // ---------------------------------------------------------------------------
11
+ /**
12
+ * Generate integers.
13
+ *
14
+ * @param minValue - Minimum value (inclusive), or null for unbounded.
15
+ * @param maxValue - Maximum value (inclusive), or null for unbounded.
16
+ */
17
+ export function integers(minValue = null, maxValue = null) {
18
+ if (minValue !== null && maxValue !== null && minValue > maxValue) {
19
+ throw new Error(`Cannot have max_value=${maxValue} < min_value=${minValue}`);
20
+ }
21
+ const schema = { type: "integer" };
22
+ if (minValue !== null)
23
+ schema["min_value"] = minValue;
24
+ if (maxValue !== null)
25
+ schema["max_value"] = maxValue;
26
+ return new BasicGenerator(schema);
27
+ }
28
+ /**
29
+ * Generate floating-point numbers.
30
+ *
31
+ * By default, allows NaN and infinity unless a range is given. When a min or
32
+ * max is provided the defaults tighten: NaN becomes disallowed, and infinity
33
+ * is disallowed on the bounded side.
34
+ *
35
+ * @param minValue - Minimum value (inclusive), or null for unbounded.
36
+ * @param maxValue - Maximum value (inclusive), or null for unbounded.
37
+ * @param allowNan - Whether to allow NaN. Defaults to true only when both bounds are absent.
38
+ * @param allowInfinity - Whether to allow ±Infinity. Defaults to true when at least one bound is absent.
39
+ * @param excludeMin - Whether to exclude the minimum value (open interval on the left).
40
+ * @param excludeMax - Whether to exclude the maximum value (open interval on the right).
41
+ */
42
+ export function floats(minValue = null, maxValue = null, allowNan = null, allowInfinity = null, excludeMin = false, excludeMax = false) {
43
+ const hasMin = minValue !== null;
44
+ const hasMax = maxValue !== null;
45
+ const resolvedAllowNan = allowNan !== null ? allowNan : !hasMin && !hasMax;
46
+ const resolvedAllowInfinity = allowInfinity !== null ? allowInfinity : !hasMin || !hasMax;
47
+ if (resolvedAllowNan && (hasMin || hasMax)) {
48
+ throw new Error("Cannot have allow_nan=true with min_value or max_value");
49
+ }
50
+ if (hasMin && hasMax && minValue > maxValue) {
51
+ throw new Error(`There are no floats between min_value=${minValue} and max_value=${maxValue}`);
52
+ }
53
+ if (resolvedAllowInfinity && hasMin && hasMax) {
54
+ throw new Error("Cannot have allow_infinity=true with both min_value and max_value");
55
+ }
56
+ const schema = { type: "float" };
57
+ if (hasMin)
58
+ schema["min_value"] = minValue;
59
+ if (hasMax)
60
+ schema["max_value"] = maxValue;
61
+ schema["allow_nan"] = resolvedAllowNan;
62
+ schema["allow_infinity"] = resolvedAllowInfinity;
63
+ // exclude_min/exclude_max are only valid when the corresponding bound is set;
64
+ // sending them without a bound causes the server to return InvalidArgument.
65
+ schema["exclude_min"] = hasMin && excludeMin;
66
+ schema["exclude_max"] = hasMax && excludeMax;
67
+ schema["width"] = 64;
68
+ return new BasicGenerator(schema);
69
+ }
70
+ /**
71
+ * Generate booleans.
72
+ */
73
+ export function booleans() {
74
+ return new BasicGenerator({ type: "boolean" });
75
+ }
76
+ /**
77
+ * Generate text strings.
78
+ *
79
+ * @param minSize - Minimum number of Unicode codepoints. Defaults to 0.
80
+ * @param maxSize - Maximum number of Unicode codepoints, or null for unbounded.
81
+ * @param opts - Character filtering options.
82
+ */
83
+ export function text(minSize = 0, maxSize = null, opts = {}) {
84
+ if (minSize < 0) {
85
+ throw new Error(`min_size=${minSize} must be non-negative`);
86
+ }
87
+ if (maxSize !== null && maxSize < 0) {
88
+ throw new Error(`max_size=${maxSize} must be non-negative`);
89
+ }
90
+ if (maxSize !== null && minSize > maxSize) {
91
+ throw new Error(`Cannot have max_size=${maxSize} < min_size=${minSize}`);
92
+ }
93
+ const schema = { type: "string", min_size: minSize };
94
+ if (maxSize !== null)
95
+ schema["max_size"] = maxSize;
96
+ if (opts.codec !== undefined)
97
+ schema["codec"] = opts.codec;
98
+ if (opts.minCodepoint !== undefined)
99
+ schema["min_codepoint"] = opts.minCodepoint;
100
+ if (opts.maxCodepoint !== undefined)
101
+ schema["max_codepoint"] = opts.maxCodepoint;
102
+ if (opts.categories !== undefined)
103
+ schema["categories"] = opts.categories;
104
+ if (opts.excludeCategories !== undefined)
105
+ schema["exclude_categories"] = opts.excludeCategories;
106
+ if (opts.includeCharacters !== undefined)
107
+ schema["include_characters"] = opts.includeCharacters;
108
+ if (opts.excludeCharacters !== undefined)
109
+ schema["exclude_characters"] = opts.excludeCharacters;
110
+ return new BasicGenerator(schema);
111
+ }
112
+ /**
113
+ * Generate single Unicode characters.
114
+ *
115
+ * This is a convenience for `text(1, 1, opts)` — it generates single-character
116
+ * strings with the same character filtering options as {@link text}.
117
+ *
118
+ * @param opts - Character filtering options.
119
+ */
120
+ export function characters(opts = {}) {
121
+ return text(1, 1, opts);
122
+ }
123
+ /**
124
+ * Generate binary data (byte strings).
125
+ *
126
+ * The server returns CBOR byte strings which are decoded directly as
127
+ * `Uint8Array`. No transform is needed.
128
+ *
129
+ * @param minSize - Minimum byte length. Defaults to 0.
130
+ * @param maxSize - Maximum byte length, or null for unbounded.
131
+ */
132
+ export function binary(minSize = 0, maxSize = null) {
133
+ if (minSize < 0) {
134
+ throw new Error(`min_size=${minSize} must be non-negative`);
135
+ }
136
+ if (maxSize !== null && maxSize < 0) {
137
+ throw new Error(`max_size=${maxSize} must be non-negative`);
138
+ }
139
+ if (maxSize !== null && minSize > maxSize) {
140
+ throw new Error(`Cannot have max_size=${maxSize} < min_size=${minSize}`);
141
+ }
142
+ const schema = { type: "binary", min_size: minSize };
143
+ if (maxSize !== null)
144
+ schema["max_size"] = maxSize;
145
+ return new BasicGenerator(schema);
146
+ }
147
+ /**
148
+ * Always return the same constant value, ignoring the server's suggestion.
149
+ *
150
+ * @param value - The constant to always return.
151
+ */
152
+ export function just(value) {
153
+ return new BasicGenerator({ type: "constant", value: null }, (_raw) => value);
154
+ }
155
+ /**
156
+ * Pick uniformly at random from a list of values.
157
+ *
158
+ * The server generates an integer index; the transform maps it to the
159
+ * corresponding element of `values`.
160
+ *
161
+ * @param values - The list to sample from. Must be non-empty.
162
+ * @throws {Error} If `values` is empty.
163
+ */
164
+ export function sampledFrom(values) {
165
+ const elements = Array.from(values);
166
+ if (elements.length === 0) {
167
+ throw new Error("sampledFrom requires at least one element");
168
+ }
169
+ const schema = {
170
+ type: "integer",
171
+ min_value: 0,
172
+ max_value: elements.length - 1,
173
+ };
174
+ return new BasicGenerator(schema, (idx) => elements[idx]);
175
+ }
176
+ /**
177
+ * Generate strings matching a regular expression pattern.
178
+ *
179
+ * @param pattern - The regex pattern to match.
180
+ * @param fullmatch - If true (default), the entire string must match the pattern.
181
+ * If false, a substring match is sufficient.
182
+ */
183
+ export function fromRegex(pattern, fullmatch = true) {
184
+ return new BasicGenerator({ type: "regex", pattern, fullmatch });
185
+ }
186
+ /**
187
+ * Generate email addresses.
188
+ *
189
+ * Each generated value is a valid email address string containing '@'.
190
+ */
191
+ export function emails() {
192
+ return new BasicGenerator({ type: "email" });
193
+ }
194
+ /**
195
+ * Generate URLs.
196
+ *
197
+ * Each generated value is a valid URL string starting with "http://" or "https://".
198
+ */
199
+ export function urls() {
200
+ return new BasicGenerator({ type: "url" });
201
+ }
202
+ /**
203
+ * Generate domain names.
204
+ *
205
+ * @param maxLength - Optional maximum length for generated domain names.
206
+ */
207
+ export function domains(maxLength = null) {
208
+ if (maxLength !== null && (maxLength < 4 || maxLength > 255)) {
209
+ throw new Error(`max_length=${maxLength} must be between 4 and 255`);
210
+ }
211
+ const schema = { type: "domain" };
212
+ if (maxLength !== null)
213
+ schema["max_length"] = maxLength;
214
+ return new BasicGenerator(schema);
215
+ }
216
+ /**
217
+ * Generate dates.
218
+ *
219
+ * Each generated value is an ISO 8601 date string in YYYY-MM-DD format.
220
+ */
221
+ export function dates() {
222
+ return new BasicGenerator({ type: "date" });
223
+ }
224
+ /**
225
+ * Generate times.
226
+ *
227
+ * Each generated value is a time string containing ':'.
228
+ */
229
+ export function times() {
230
+ return new BasicGenerator({ type: "time" });
231
+ }
232
+ /**
233
+ * Generate datetimes.
234
+ *
235
+ * Each generated value is a datetime string containing 'T'.
236
+ */
237
+ export function datetimes() {
238
+ return new BasicGenerator({ type: "datetime" });
239
+ }
240
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/generators/primitives.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * String, character, binary, regex, and format generators.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { Generator } from "./core.js";
7
+ /**
8
+ * Options for character filtering, shared between text() and characters().
9
+ *
10
+ * `alphabet` is a shorthand that sets `includeCharacters` and clears categories.
11
+ * It cannot be combined with other character filtering options.
12
+ */
13
+ export interface CharacterFilterOptions {
14
+ /** Restrict to characters in this explicit set. Mutually exclusive with other character options. */
15
+ alphabet?: string;
16
+ /** Restrict to characters encodable in this codec (e.g. "ascii", "utf-8", "latin-1"). */
17
+ codec?: string;
18
+ /** Minimum Unicode codepoint (inclusive). */
19
+ minCodepoint?: number;
20
+ /** Maximum Unicode codepoint (inclusive). */
21
+ maxCodepoint?: number;
22
+ /** Include only characters from these Unicode general categories (e.g. ["L", "Nd"]). */
23
+ categories?: string[];
24
+ /** Exclude characters from these Unicode general categories. */
25
+ excludeCategories?: string[];
26
+ /** Always include these specific characters. */
27
+ includeCharacters?: string;
28
+ /** Always exclude these specific characters. */
29
+ excludeCharacters?: string;
30
+ }
31
+ export interface TextOptions extends CharacterFilterOptions {
32
+ minSize?: number;
33
+ maxSize?: number;
34
+ }
35
+ /** Generate text strings. */
36
+ export declare function text(options?: TextOptions): Generator<string>;
37
+ export type CharacterOptions = CharacterFilterOptions;
38
+ /** Generate single characters. */
39
+ export declare function characters(options?: CharacterOptions): Generator<string>;
40
+ export interface BinaryOptions {
41
+ minSize?: number;
42
+ maxSize?: number;
43
+ }
44
+ /** Generate binary data (Uint8Array). */
45
+ export declare function binary(options?: BinaryOptions): Generator<Uint8Array>;
46
+ export interface RegexOptions {
47
+ fullmatch?: boolean;
48
+ }
49
+ /** Generate strings matching a regex pattern. Defaults to substring match. */
50
+ export declare function fromRegex(pattern: string, options?: RegexOptions): Generator<string>;
51
+ /** Generate email addresses. */
52
+ export declare function emails(): Generator<string>;
53
+ /** Generate URLs. */
54
+ export declare function urls(): Generator<string>;
55
+ export interface DomainOptions {
56
+ /** Maximum length (must be between 4 and 255, default 255). */
57
+ maxLength?: number;
58
+ }
59
+ /** Generate domain names. */
60
+ export declare function domains(options?: DomainOptions): Generator<string>;
61
+ export interface IpAddressOptions {
62
+ /** Restrict to a specific IP version. Omit to generate either IPv4 or IPv6. */
63
+ version?: 4 | 6;
64
+ }
65
+ /** Generate IP address strings. Defaults to either IPv4 or IPv6; pass `{ version }` to restrict. */
66
+ export declare function ipAddresses(options?: IpAddressOptions): Generator<string>;
67
+ /** Generate date strings (ISO 8601). */
68
+ export declare function dates(): Generator<string>;
69
+ /** Generate time strings (ISO 8601). */
70
+ export declare function times(): Generator<string>;
71
+ /** Generate datetime strings (ISO 8601). */
72
+ export declare function datetimes(): Generator<string>;
73
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/generators/strings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAGtD;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsFD,6BAA6B;AAC7B,wBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAE7D;AAMD,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAgBtD,kCAAkC;AAClC,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAExE;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA0BD,yCAAyC;AACzC,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAErE;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAYD,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAEpF;AAQD,gCAAgC;AAChC,wBAAgB,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAE1C;AAQD,qBAAqB;AACrB,wBAAgB,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,CAExC;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,6BAA6B;AAC7B,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAElE;AAED,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACjB;AAQD,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAIzE;AAQD,wCAAwC;AACxC,wBAAgB,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAEzC;AAQD,wCAAwC;AACxC,wBAAgB,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAEzC;AAQD,4CAA4C;AAC5C,wBAAgB,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAE7C"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * String, character, binary, regex, and format generators.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { generateRaw } from "../testCase.js";
7
+ import { Generator, BasicGenerator } from "./core.js";
8
+ import { oneOf } from "./combinators.js";
9
+ function buildCharacterSchema(options) {
10
+ const hasAlphabet = options.alphabet !== undefined;
11
+ const hasCharParams = options.codec !== undefined ||
12
+ options.minCodepoint !== undefined ||
13
+ options.maxCodepoint !== undefined ||
14
+ options.categories !== undefined ||
15
+ options.excludeCategories !== undefined ||
16
+ options.includeCharacters !== undefined ||
17
+ options.excludeCharacters !== undefined;
18
+ if (hasAlphabet && hasCharParams) {
19
+ throw new Error("Cannot combine alphabet with other character filtering options");
20
+ }
21
+ if (hasAlphabet) {
22
+ // alphabet() in Rust sets categories=[] and includeCharacters=chars
23
+ return {
24
+ categories: [],
25
+ include_characters: options.alphabet,
26
+ };
27
+ }
28
+ const schema = {};
29
+ if (options.codec !== undefined)
30
+ schema["codec"] = options.codec;
31
+ if (options.minCodepoint !== undefined)
32
+ schema["min_codepoint"] = options.minCodepoint;
33
+ if (options.maxCodepoint !== undefined)
34
+ schema["max_codepoint"] = options.maxCodepoint;
35
+ if (options.categories !== undefined)
36
+ schema["categories"] = options.categories;
37
+ if (options.excludeCategories !== undefined)
38
+ schema["exclude_categories"] = options.excludeCategories;
39
+ if (options.includeCharacters !== undefined)
40
+ schema["include_characters"] = options.includeCharacters;
41
+ if (options.excludeCharacters !== undefined)
42
+ schema["exclude_characters"] = options.excludeCharacters;
43
+ return schema;
44
+ }
45
+ function parseString(raw) {
46
+ return String(raw);
47
+ }
48
+ function parseBytes(raw) {
49
+ // Buffer is a subclass of Uint8Array, so this catches both.
50
+ if (raw instanceof Uint8Array)
51
+ return raw;
52
+ throw new Error(`Expected bytes, got ${typeof raw}`);
53
+ }
54
+ /**
55
+ * Convenience base for generators that are pure schema+parse wrappers.
56
+ * Subclasses supply a schema in the constructor; doDraw and asBasic use it.
57
+ */
58
+ class SchemaStringGenerator extends Generator {
59
+ schema;
60
+ constructor(schema) {
61
+ super();
62
+ this.schema = schema;
63
+ }
64
+ doDraw(tc) {
65
+ return parseString(generateRaw(tc, this.schema));
66
+ }
67
+ asBasic() {
68
+ return new BasicGenerator(this.schema, parseString);
69
+ }
70
+ }
71
+ class TextGenerator extends SchemaStringGenerator {
72
+ constructor(options) {
73
+ const schema = {
74
+ type: "string",
75
+ min_size: options?.minSize ?? 0,
76
+ };
77
+ if (options?.maxSize !== undefined) {
78
+ schema["max_size"] = options.maxSize;
79
+ }
80
+ if (options) {
81
+ Object.assign(schema, buildCharacterSchema(options));
82
+ }
83
+ super(schema);
84
+ }
85
+ }
86
+ /** Generate text strings. */
87
+ export function text(options) {
88
+ return new TextGenerator(options);
89
+ }
90
+ class CharactersGenerator extends SchemaStringGenerator {
91
+ constructor(options) {
92
+ const schema = {
93
+ type: "string",
94
+ min_size: 1,
95
+ max_size: 1,
96
+ };
97
+ if (options) {
98
+ Object.assign(schema, buildCharacterSchema(options));
99
+ }
100
+ super(schema);
101
+ }
102
+ }
103
+ /** Generate single characters. */
104
+ export function characters(options) {
105
+ return new CharactersGenerator(options);
106
+ }
107
+ class BinaryGenerator extends Generator {
108
+ schema;
109
+ constructor(options) {
110
+ super();
111
+ const schema = {
112
+ type: "binary",
113
+ min_size: options?.minSize ?? 0,
114
+ };
115
+ if (options?.maxSize !== undefined) {
116
+ schema["max_size"] = options.maxSize;
117
+ }
118
+ this.schema = schema;
119
+ }
120
+ doDraw(tc) {
121
+ return parseBytes(generateRaw(tc, this.schema));
122
+ }
123
+ asBasic() {
124
+ return new BasicGenerator(this.schema, parseBytes);
125
+ }
126
+ }
127
+ /** Generate binary data (Uint8Array). */
128
+ export function binary(options) {
129
+ return new BinaryGenerator(options);
130
+ }
131
+ class FromRegexGenerator extends SchemaStringGenerator {
132
+ constructor(pattern, options) {
133
+ super({
134
+ type: "regex",
135
+ pattern,
136
+ fullmatch: options?.fullmatch ?? false,
137
+ });
138
+ }
139
+ }
140
+ /** Generate strings matching a regex pattern. Defaults to substring match. */
141
+ export function fromRegex(pattern, options) {
142
+ return new FromRegexGenerator(pattern, options);
143
+ }
144
+ class EmailsGenerator extends SchemaStringGenerator {
145
+ constructor() {
146
+ super({ type: "email" });
147
+ }
148
+ }
149
+ /** Generate email addresses. */
150
+ export function emails() {
151
+ return new EmailsGenerator();
152
+ }
153
+ class UrlsGenerator extends SchemaStringGenerator {
154
+ constructor() {
155
+ super({ type: "url" });
156
+ }
157
+ }
158
+ /** Generate URLs. */
159
+ export function urls() {
160
+ return new UrlsGenerator();
161
+ }
162
+ class DomainsGenerator extends SchemaStringGenerator {
163
+ constructor(options) {
164
+ const schema = { type: "domain" };
165
+ if (options?.maxLength !== undefined) {
166
+ schema["max_length"] = options.maxLength;
167
+ }
168
+ super(schema);
169
+ }
170
+ }
171
+ /** Generate domain names. */
172
+ export function domains(options) {
173
+ return new DomainsGenerator(options);
174
+ }
175
+ class IpAddressesGenerator extends SchemaStringGenerator {
176
+ constructor(version) {
177
+ super({ type: version === 4 ? "ipv4" : "ipv6" });
178
+ }
179
+ }
180
+ /** Generate IP address strings. Defaults to either IPv4 or IPv6; pass `{ version }` to restrict. */
181
+ export function ipAddresses(options) {
182
+ if (options?.version === 4)
183
+ return new IpAddressesGenerator(4);
184
+ if (options?.version === 6)
185
+ return new IpAddressesGenerator(6);
186
+ return oneOf(new IpAddressesGenerator(4), new IpAddressesGenerator(6));
187
+ }
188
+ class DatesGenerator extends SchemaStringGenerator {
189
+ constructor() {
190
+ super({ type: "date" });
191
+ }
192
+ }
193
+ /** Generate date strings (ISO 8601). */
194
+ export function dates() {
195
+ return new DatesGenerator();
196
+ }
197
+ class TimesGenerator extends SchemaStringGenerator {
198
+ constructor() {
199
+ super({ type: "time" });
200
+ }
201
+ }
202
+ /** Generate time strings (ISO 8601). */
203
+ export function times() {
204
+ return new TimesGenerator();
205
+ }
206
+ class DatetimesGenerator extends SchemaStringGenerator {
207
+ constructor() {
208
+ super({ type: "datetime" });
209
+ }
210
+ }
211
+ /** Generate datetime strings (ISO 8601). */
212
+ export function datetimes() {
213
+ return new DatetimesGenerator();
214
+ }
215
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/generators/strings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tuple generators.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { Generator } from "./core.js";
7
+ /** Generate tuples from the given element generators. */
8
+ export declare function tuples<T extends unknown[]>(...generators: {
9
+ [K in keyof T]: Generator<T[K]>;
10
+ }): Generator<T>;
11
+ //# sourceMappingURL=tuples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuples.d.ts","sourceRoot":"","sources":["../../src/generators/tuples.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAsCtD,yDAAyD;AACzD,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EACxC,GAAG,UAAU,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACjD,SAAS,CAAC,CAAC,CAAC,CAEd"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Tuple generators.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { Labels } from "../testCase.js";
7
+ import { Generator, BasicGenerator } from "./core.js";
8
+ class TuplesGenerator extends Generator {
9
+ generators;
10
+ basic;
11
+ constructor(generators) {
12
+ super();
13
+ this.generators = generators;
14
+ const basics = generators.map((g) => g.asBasic());
15
+ if (basics.every((b) => b !== null)) {
16
+ const validBasics = basics;
17
+ this.basic = new BasicGenerator({ type: "tuple", elements: validBasics.map((b) => b.schema) }, (raw) => {
18
+ if (!Array.isArray(raw))
19
+ throw new Error(`Expected array, got ${typeof raw}`);
20
+ return raw.map((v, i) => validBasics[i].parseRaw(v));
21
+ });
22
+ }
23
+ else {
24
+ this.basic = null;
25
+ }
26
+ }
27
+ doDraw(tc) {
28
+ if (this.basic)
29
+ return this.basic.doDraw(tc);
30
+ tc.startSpan(Labels.TUPLE);
31
+ const result = this.generators.map((g) => g.doDraw(tc));
32
+ tc.stopSpan();
33
+ return result;
34
+ }
35
+ asBasic() {
36
+ return this.basic;
37
+ }
38
+ }
39
+ /** Generate tuples from the given element generators. */
40
+ export function tuples(...generators) {
41
+ return new TuplesGenerator(generators);
42
+ }
43
+ //# sourceMappingURL=tuples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuples.js","sourceRoot":"","sources":["../../src/generators/tuples.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAY,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,eAAgB,SAAQ,SAAoB;IAC/B,UAAU,CAAuB;IACjC,KAAK,CAAmC;IAEzD,YAAY,UAAgC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,MAAmC,CAAC;YACxD,IAAI,CAAC,KAAK,GAAG,IAAI,cAAc,CAC7B,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAC7D,CAAC,GAAG,EAAE,EAAE;gBACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,GAAG,EAAE,CAAC,CAAC;gBAC9E,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,EAAY;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,EAAE,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED,yDAAyD;AACzD,MAAM,UAAU,MAAM,CACpB,GAAG,UAA+C;IAElD,OAAO,IAAI,eAAe,CAAC,UAAkC,CAA4B,CAAC;AAC5F,CAAC"}