@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.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/binary.d.ts +27 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +50 -0
- package/dist/binary.js.map +1 -0
- package/dist/collections.d.ts +114 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +313 -0
- package/dist/collections.js.map +1 -0
- package/dist/combinators.d.ts +34 -0
- package/dist/combinators.d.ts.map +1 -0
- package/dist/combinators.js +152 -0
- package/dist/combinators.js.map +1 -0
- package/dist/conformance.d.ts +31 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +60 -0
- package/dist/conformance.js.map +1 -0
- package/dist/connection.d.ts +82 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +231 -0
- package/dist/connection.js.map +1 -0
- package/dist/crc32.d.ts +13 -0
- package/dist/crc32.d.ts.map +1 -0
- package/dist/crc32.js +30 -0
- package/dist/crc32.js.map +1 -0
- package/dist/derive.d.ts +225 -0
- package/dist/derive.d.ts.map +1 -0
- package/dist/derive.js +296 -0
- package/dist/derive.js.map +1 -0
- package/dist/embedded.d.ts +38 -0
- package/dist/embedded.d.ts.map +1 -0
- package/dist/embedded.js +237 -0
- package/dist/embedded.js.map +1 -0
- package/dist/floats.d.ts +57 -0
- package/dist/floats.d.ts.map +1 -0
- package/dist/floats.js +100 -0
- package/dist/floats.js.map +1 -0
- package/dist/formats.d.ts +62 -0
- package/dist/formats.d.ts.map +1 -0
- package/dist/formats.js +164 -0
- package/dist/formats.js.map +1 -0
- package/dist/generator.d.ts +80 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +128 -0
- package/dist/generator.js.map +1 -0
- package/dist/generators/collections.d.ts +20 -0
- package/dist/generators/collections.d.ts.map +1 -0
- package/dist/generators/collections.js +209 -0
- package/dist/generators/collections.js.map +1 -0
- package/dist/generators/combinators.d.ts +15 -0
- package/dist/generators/combinators.d.ts.map +1 -0
- package/dist/generators/combinators.js +143 -0
- package/dist/generators/combinators.js.map +1 -0
- package/dist/generators/compose.d.ts +27 -0
- package/dist/generators/compose.d.ts.map +1 -0
- package/dist/generators/compose.js +82 -0
- package/dist/generators/compose.js.map +1 -0
- package/dist/generators/core.d.ts +53 -0
- package/dist/generators/core.d.ts.map +1 -0
- package/dist/generators/core.js +134 -0
- package/dist/generators/core.js.map +1 -0
- package/dist/generators/index.d.ts +18 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +15 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/numeric.d.ts +40 -0
- package/dist/generators/numeric.d.ts.map +1 -0
- package/dist/generators/numeric.js +128 -0
- package/dist/generators/numeric.js.map +1 -0
- package/dist/generators/primitives.d.ts +138 -0
- package/dist/generators/primitives.d.ts.map +1 -0
- package/dist/generators/primitives.js +240 -0
- package/dist/generators/primitives.js.map +1 -0
- package/dist/generators/strings.d.ts +73 -0
- package/dist/generators/strings.d.ts.map +1 -0
- package/dist/generators/strings.js +215 -0
- package/dist/generators/strings.js.map +1 -0
- package/dist/generators/tuples.d.ts +11 -0
- package/dist/generators/tuples.d.ts.map +1 -0
- package/dist/generators/tuples.js +43 -0
- package/dist/generators/tuples.js.map +1 -0
- package/dist/generators.d.ts +408 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +898 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +6 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +91 -0
- package/dist/install.js.map +1 -0
- package/dist/integers.d.ts +37 -0
- package/dist/integers.d.ts.map +1 -0
- package/dist/integers.js +63 -0
- package/dist/integers.js.map +1 -0
- package/dist/labels.d.ts +21 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +20 -0
- package/dist/labels.js.map +1 -0
- package/dist/objects.d.ts +39 -0
- package/dist/objects.d.ts.map +1 -0
- package/dist/objects.js +98 -0
- package/dist/objects.js.map +1 -0
- package/dist/primitives.d.ts +14 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +51 -0
- package/dist/primitives.js.map +1 -0
- package/dist/protocol.d.ts +25 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +77 -0
- package/dist/protocol.js.map +1 -0
- package/dist/runner.d.ts +115 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +455 -0
- package/dist/runner.js.map +1 -0
- package/dist/session.d.ts +19 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +157 -0
- package/dist/session.js.map +1 -0
- package/dist/spans.d.ts +23 -0
- package/dist/spans.d.ts.map +1 -0
- package/dist/spans.js +51 -0
- package/dist/spans.js.map +1 -0
- package/dist/strings.d.ts +67 -0
- package/dist/strings.d.ts.map +1 -0
- package/dist/strings.js +107 -0
- package/dist/strings.js.map +1 -0
- package/dist/testCase.d.ts +118 -0
- package/dist/testCase.d.ts.map +1 -0
- package/dist/testCase.js +186 -0
- package/dist/testCase.js.map +1 -0
- package/dist/uv-install.sh +2226 -0
- package/dist/uv.d.ts +20 -0
- package/dist/uv.d.ts.map +1 -0
- package/dist/uv.js +103 -0
- package/dist/uv.js.map +1 -0
- package/dist/wtf8.d.ts +16 -0
- package/dist/wtf8.d.ts.map +1 -0
- package/dist/wtf8.js +52 -0
- package/dist/wtf8.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition generators: composite and record.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { Labels } from "../testCase.js";
|
|
7
|
+
import { Generator, BasicGenerator } from "./core.js";
|
|
8
|
+
class ComposedGenerator extends Generator {
|
|
9
|
+
fn;
|
|
10
|
+
constructor(fn) {
|
|
11
|
+
super();
|
|
12
|
+
this.fn = fn;
|
|
13
|
+
}
|
|
14
|
+
doDraw(tc) {
|
|
15
|
+
return this.fn(tc);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Create a generator from an imperative function. */
|
|
19
|
+
export function composite(fn) {
|
|
20
|
+
return new ComposedGenerator(fn);
|
|
21
|
+
}
|
|
22
|
+
class RecordGenerator extends Generator {
|
|
23
|
+
keys;
|
|
24
|
+
generators;
|
|
25
|
+
basic;
|
|
26
|
+
constructor(schema) {
|
|
27
|
+
super();
|
|
28
|
+
this.keys = Object.keys(schema);
|
|
29
|
+
this.generators = this.keys.map((k) => schema[k]);
|
|
30
|
+
const basics = this.generators.map((g) => g.asBasic());
|
|
31
|
+
if (basics.every((b) => b !== null)) {
|
|
32
|
+
const validBasics = basics;
|
|
33
|
+
const keys = this.keys;
|
|
34
|
+
this.basic = new BasicGenerator({ type: "tuple", elements: validBasics.map((b) => b.schema) }, (raw) => {
|
|
35
|
+
/* v8 ignore start: server always returns array for tuple schema */
|
|
36
|
+
if (!Array.isArray(raw))
|
|
37
|
+
throw new Error(`Expected array, got ${typeof raw}`);
|
|
38
|
+
/* v8 ignore stop */
|
|
39
|
+
const obj = {};
|
|
40
|
+
for (let i = 0; i < keys.length; i++) {
|
|
41
|
+
obj[keys[i]] = validBasics[i].parseRaw(raw[i]);
|
|
42
|
+
}
|
|
43
|
+
return obj;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this.basic = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
doDraw(tc) {
|
|
51
|
+
if (this.basic)
|
|
52
|
+
return this.basic.doDraw(tc);
|
|
53
|
+
tc.startSpan(Labels.FIXED_DICT);
|
|
54
|
+
const obj = {};
|
|
55
|
+
for (let i = 0; i < this.keys.length; i++) {
|
|
56
|
+
obj[this.keys[i]] = this.generators[i].doDraw(tc);
|
|
57
|
+
}
|
|
58
|
+
tc.stopSpan();
|
|
59
|
+
return obj;
|
|
60
|
+
}
|
|
61
|
+
asBasic() {
|
|
62
|
+
return this.basic;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate plain objects by drawing each field from its generator.
|
|
67
|
+
* Uses the schema-based path (tuple schema) when all fields have asBasic(),
|
|
68
|
+
* otherwise falls back to composite draws with a FIXED_DICT span.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const userGen = record({
|
|
73
|
+
* name: text({ minSize: 1 }),
|
|
74
|
+
* age: integers({ minValue: 0, maxValue: 120 }),
|
|
75
|
+
* active: booleans(),
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export function record(schema) {
|
|
80
|
+
return new RecordGenerator(schema);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/generators/compose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator base class, BasicGenerator descriptor, and internal combinators.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { TestCase, type GeneratorLike } from "../testCase.js";
|
|
7
|
+
/**
|
|
8
|
+
* Base class for all generators. Generators produce values of type T
|
|
9
|
+
* synchronously by communicating with the hegel server.
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class Generator<T> implements GeneratorLike<T> {
|
|
12
|
+
/** @internal */
|
|
13
|
+
abstract doDraw(tc: TestCase): T;
|
|
14
|
+
/**
|
|
15
|
+
* Return a BasicGenerator descriptor (schema + parse) if this generator can
|
|
16
|
+
* be expressed as one, otherwise null. Used by parent generators that want
|
|
17
|
+
* to compose a schema from their children.
|
|
18
|
+
*
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
asBasic(): BasicGenerator<T> | null;
|
|
22
|
+
/**
|
|
23
|
+
* Transform generated values using a function.
|
|
24
|
+
* When the source has a schema, the schema is preserved.
|
|
25
|
+
*/
|
|
26
|
+
map<U>(f: (value: T) => U): Generator<U>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate a value, then use it to choose another generator.
|
|
29
|
+
*/
|
|
30
|
+
flatMap<U>(f: (value: T) => Generator<U>): Generator<U>;
|
|
31
|
+
/**
|
|
32
|
+
* Only keep values that satisfy the predicate.
|
|
33
|
+
* Retries up to 3 times, then rejects the test case.
|
|
34
|
+
*/
|
|
35
|
+
filter(predicate: (value: T) => boolean): Generator<T>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Schema-based generator descriptor. Holds a schema and an optional parse
|
|
39
|
+
* callback that transforms the raw server response into a value of type T.
|
|
40
|
+
*
|
|
41
|
+
* Other generators produce a BasicGenerator from `asBasic()` when they can be
|
|
42
|
+
* expressed as a single schema, letting parent generators (oneOf, arrays, ...)
|
|
43
|
+
* compose a unified schema rather than falling back to span-based draws.
|
|
44
|
+
*/
|
|
45
|
+
export declare class BasicGenerator<T> extends Generator<T> {
|
|
46
|
+
readonly schema: Record<string, unknown>;
|
|
47
|
+
private readonly parse;
|
|
48
|
+
constructor(schema: Record<string, unknown>, parse?: (raw: unknown) => T);
|
|
49
|
+
doDraw(tc: TestCase): T;
|
|
50
|
+
asBasic(): BasicGenerator<T>;
|
|
51
|
+
parseRaw(raw: unknown): T;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAuB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;;GAGG;AACH,8BAAsB,SAAS,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC5D,gBAAgB;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAInC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIxC;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CAGvD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAEzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;IAMxE,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAId,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC;CAG1B"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator base class, BasicGenerator descriptor, and internal combinators.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { Labels, generateRaw } from "../testCase.js";
|
|
7
|
+
/**
|
|
8
|
+
* Base class for all generators. Generators produce values of type T
|
|
9
|
+
* synchronously by communicating with the hegel server.
|
|
10
|
+
*/
|
|
11
|
+
export class Generator {
|
|
12
|
+
/**
|
|
13
|
+
* Return a BasicGenerator descriptor (schema + parse) if this generator can
|
|
14
|
+
* be expressed as one, otherwise null. Used by parent generators that want
|
|
15
|
+
* to compose a schema from their children.
|
|
16
|
+
*
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
asBasic() {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Transform generated values using a function.
|
|
24
|
+
* When the source has a schema, the schema is preserved.
|
|
25
|
+
*/
|
|
26
|
+
map(f) {
|
|
27
|
+
return new MappedGenerator(this, f);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate a value, then use it to choose another generator.
|
|
31
|
+
*/
|
|
32
|
+
flatMap(f) {
|
|
33
|
+
return new FlatMappedGenerator(this, f);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Only keep values that satisfy the predicate.
|
|
37
|
+
* Retries up to 3 times, then rejects the test case.
|
|
38
|
+
*/
|
|
39
|
+
filter(predicate) {
|
|
40
|
+
return new FilteredGenerator(this, predicate);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Schema-based generator descriptor. Holds a schema and an optional parse
|
|
45
|
+
* callback that transforms the raw server response into a value of type T.
|
|
46
|
+
*
|
|
47
|
+
* Other generators produce a BasicGenerator from `asBasic()` when they can be
|
|
48
|
+
* expressed as a single schema, letting parent generators (oneOf, arrays, ...)
|
|
49
|
+
* compose a unified schema rather than falling back to span-based draws.
|
|
50
|
+
*/
|
|
51
|
+
export class BasicGenerator extends Generator {
|
|
52
|
+
schema;
|
|
53
|
+
parse;
|
|
54
|
+
constructor(schema, parse) {
|
|
55
|
+
super();
|
|
56
|
+
this.schema = schema;
|
|
57
|
+
this.parse = parse ?? null;
|
|
58
|
+
}
|
|
59
|
+
doDraw(tc) {
|
|
60
|
+
return this.parseRaw(generateRaw(tc, this.schema));
|
|
61
|
+
}
|
|
62
|
+
asBasic() {
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
parseRaw(raw) {
|
|
66
|
+
return this.parse ? this.parse(raw) : raw;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
class MappedGenerator extends Generator {
|
|
70
|
+
source;
|
|
71
|
+
f;
|
|
72
|
+
constructor(source, f) {
|
|
73
|
+
super();
|
|
74
|
+
this.source = source;
|
|
75
|
+
this.f = f;
|
|
76
|
+
}
|
|
77
|
+
doDraw(tc) {
|
|
78
|
+
const sourceBasic = this.source.asBasic();
|
|
79
|
+
if (sourceBasic) {
|
|
80
|
+
return this.f(sourceBasic.doDraw(tc));
|
|
81
|
+
}
|
|
82
|
+
tc.startSpan(Labels.MAPPED);
|
|
83
|
+
const result = this.f(this.source.doDraw(tc));
|
|
84
|
+
tc.stopSpan();
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
asBasic() {
|
|
88
|
+
const sourceBasic = this.source.asBasic();
|
|
89
|
+
if (!sourceBasic)
|
|
90
|
+
return null;
|
|
91
|
+
const f = this.f;
|
|
92
|
+
return new BasicGenerator(sourceBasic.schema, (raw) => f(sourceBasic.parseRaw(raw)));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
class FilteredGenerator extends Generator {
|
|
96
|
+
source;
|
|
97
|
+
predicate;
|
|
98
|
+
constructor(source, predicate) {
|
|
99
|
+
super();
|
|
100
|
+
this.source = source;
|
|
101
|
+
this.predicate = predicate;
|
|
102
|
+
}
|
|
103
|
+
doDraw(tc) {
|
|
104
|
+
for (let i = 0; i < 3; i++) {
|
|
105
|
+
tc.startSpan(Labels.FILTER);
|
|
106
|
+
const value = this.source.doDraw(tc);
|
|
107
|
+
if (this.predicate(value)) {
|
|
108
|
+
tc.stopSpan();
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
tc.stopSpan(true);
|
|
112
|
+
}
|
|
113
|
+
tc.assume(false);
|
|
114
|
+
throw new Error("unreachable");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
class FlatMappedGenerator extends Generator {
|
|
118
|
+
source;
|
|
119
|
+
f;
|
|
120
|
+
constructor(source, f) {
|
|
121
|
+
super();
|
|
122
|
+
this.source = source;
|
|
123
|
+
this.f = f;
|
|
124
|
+
}
|
|
125
|
+
doDraw(tc) {
|
|
126
|
+
tc.startSpan(Labels.FLAT_MAP);
|
|
127
|
+
const intermediate = this.source.doDraw(tc);
|
|
128
|
+
const nextGen = this.f(intermediate);
|
|
129
|
+
const result = nextGen.doDraw(tc);
|
|
130
|
+
tc.stopSpan();
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator system: re-exports all generators, combinators, and types.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export { Generator, BasicGenerator } from "./core.js";
|
|
7
|
+
export { integers, bigIntegers, floats, booleans } from "./numeric.js";
|
|
8
|
+
export type { IntegerOptions, BigIntegerOptions, FloatOptions } from "./numeric.js";
|
|
9
|
+
export { text, characters, binary, fromRegex } from "./strings.js";
|
|
10
|
+
export { emails, urls, domains, ipAddresses } from "./strings.js";
|
|
11
|
+
export { dates, times, datetimes } from "./strings.js";
|
|
12
|
+
export type { CharacterFilterOptions, TextOptions, CharacterOptions, BinaryOptions, RegexOptions, DomainOptions, IpAddressOptions, } from "./strings.js";
|
|
13
|
+
export { arrays, sets, maps } from "./collections.js";
|
|
14
|
+
export type { CollectionOptions, ArrayOptions } from "./collections.js";
|
|
15
|
+
export { just, sampledFrom, oneOf, optional } from "./combinators.js";
|
|
16
|
+
export { tuples } from "./tuples.js";
|
|
17
|
+
export { composite, record } from "./compose.js";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generator system: re-exports all generators, combinators, and types.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export { Generator, BasicGenerator } from "./core.js";
|
|
7
|
+
export { integers, bigIntegers, floats, booleans } from "./numeric.js";
|
|
8
|
+
export { text, characters, binary, fromRegex } from "./strings.js";
|
|
9
|
+
export { emails, urls, domains, ipAddresses } from "./strings.js";
|
|
10
|
+
export { dates, times, datetimes } from "./strings.js";
|
|
11
|
+
export { arrays, sets, maps } from "./collections.js";
|
|
12
|
+
export { just, sampledFrom, oneOf, optional } from "./combinators.js";
|
|
13
|
+
export { tuples } from "./tuples.js";
|
|
14
|
+
export { composite, record } from "./compose.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAWvD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numeric and boolean generators.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { Generator } from "./core.js";
|
|
7
|
+
export interface IntegerOptions {
|
|
8
|
+
minValue?: number;
|
|
9
|
+
maxValue?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generate integers as JS numbers. Defaults to the safe integer range.
|
|
13
|
+
* Throws if bounds are outside Number.MAX_SAFE_INTEGER.
|
|
14
|
+
* Use bigIntegers() for arbitrary-precision integers.
|
|
15
|
+
*/
|
|
16
|
+
export declare function integers(options?: IntegerOptions): Generator<number>;
|
|
17
|
+
export interface BigIntegerOptions {
|
|
18
|
+
minValue?: bigint;
|
|
19
|
+
maxValue?: bigint;
|
|
20
|
+
}
|
|
21
|
+
/** Generate arbitrary-precision integers as BigInt. */
|
|
22
|
+
export declare function bigIntegers(options?: BigIntegerOptions): Generator<bigint>;
|
|
23
|
+
export interface FloatOptions {
|
|
24
|
+
minValue?: number;
|
|
25
|
+
maxValue?: number;
|
|
26
|
+
excludeMin?: boolean;
|
|
27
|
+
excludeMax?: boolean;
|
|
28
|
+
allowNan?: boolean;
|
|
29
|
+
allowInfinity?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Generate floating-point numbers.
|
|
33
|
+
*
|
|
34
|
+
* By default, NaN is allowed only when no bounds are set, and infinity
|
|
35
|
+
* is allowed when at least one bound is missing.
|
|
36
|
+
*/
|
|
37
|
+
export declare function floats(options?: FloatOptions): Generator<number>;
|
|
38
|
+
/** Generate boolean values. */
|
|
39
|
+
export declare function booleans(): Generator<boolean>;
|
|
40
|
+
//# sourceMappingURL=numeric.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAiCD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,CAEpE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgCD,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC,CAE1E;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwCD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAEhE;AAcD,+BAA+B;AAC/B,wBAAgB,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,CAE7C"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numeric and boolean generators.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { generateRaw } from "../testCase.js";
|
|
7
|
+
import { Generator, BasicGenerator } from "./core.js";
|
|
8
|
+
function parseInteger(raw) {
|
|
9
|
+
// cbor-x may decode values near the safe integer boundary as BigInt
|
|
10
|
+
if (typeof raw === "bigint")
|
|
11
|
+
return Number(raw);
|
|
12
|
+
return raw;
|
|
13
|
+
}
|
|
14
|
+
class IntegersGenerator extends Generator {
|
|
15
|
+
schema;
|
|
16
|
+
constructor(options) {
|
|
17
|
+
super();
|
|
18
|
+
const min = options?.minValue ?? Number.MIN_SAFE_INTEGER;
|
|
19
|
+
const max = options?.maxValue ?? Number.MAX_SAFE_INTEGER;
|
|
20
|
+
if (min > max)
|
|
21
|
+
throw new Error("Cannot have maxValue < minValue");
|
|
22
|
+
if (min < Number.MIN_SAFE_INTEGER || max > Number.MAX_SAFE_INTEGER) {
|
|
23
|
+
throw new Error("integers() bounds must be within Number.MIN_SAFE_INTEGER..Number.MAX_SAFE_INTEGER. Use bigIntegers() for larger ranges.");
|
|
24
|
+
}
|
|
25
|
+
this.schema = { type: "integer", min_value: min, max_value: max };
|
|
26
|
+
}
|
|
27
|
+
doDraw(tc) {
|
|
28
|
+
return parseInteger(generateRaw(tc, this.schema));
|
|
29
|
+
}
|
|
30
|
+
asBasic() {
|
|
31
|
+
return new BasicGenerator(this.schema, parseInteger);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generate integers as JS numbers. Defaults to the safe integer range.
|
|
36
|
+
* Throws if bounds are outside Number.MAX_SAFE_INTEGER.
|
|
37
|
+
* Use bigIntegers() for arbitrary-precision integers.
|
|
38
|
+
*/
|
|
39
|
+
export function integers(options) {
|
|
40
|
+
return new IntegersGenerator(options);
|
|
41
|
+
}
|
|
42
|
+
function parseBigInt(raw) {
|
|
43
|
+
if (typeof raw === "bigint")
|
|
44
|
+
return raw;
|
|
45
|
+
return BigInt(raw);
|
|
46
|
+
}
|
|
47
|
+
class BigIntegersGenerator extends Generator {
|
|
48
|
+
schema;
|
|
49
|
+
constructor(options) {
|
|
50
|
+
super();
|
|
51
|
+
const min = options?.minValue;
|
|
52
|
+
const max = options?.maxValue;
|
|
53
|
+
if (min !== undefined && max !== undefined && min > max) {
|
|
54
|
+
throw new Error("Cannot have maxValue < minValue");
|
|
55
|
+
}
|
|
56
|
+
const schema = { type: "integer" };
|
|
57
|
+
if (min !== undefined)
|
|
58
|
+
schema["min_value"] = min;
|
|
59
|
+
if (max !== undefined)
|
|
60
|
+
schema["max_value"] = max;
|
|
61
|
+
this.schema = schema;
|
|
62
|
+
}
|
|
63
|
+
doDraw(tc) {
|
|
64
|
+
return parseBigInt(generateRaw(tc, this.schema));
|
|
65
|
+
}
|
|
66
|
+
asBasic() {
|
|
67
|
+
return new BasicGenerator(this.schema, parseBigInt);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Generate arbitrary-precision integers as BigInt. */
|
|
71
|
+
export function bigIntegers(options) {
|
|
72
|
+
return new BigIntegersGenerator(options);
|
|
73
|
+
}
|
|
74
|
+
class FloatsGenerator extends Generator {
|
|
75
|
+
schema;
|
|
76
|
+
constructor(options) {
|
|
77
|
+
super();
|
|
78
|
+
const hasMin = options?.minValue !== undefined;
|
|
79
|
+
const hasMax = options?.maxValue !== undefined;
|
|
80
|
+
// NaN only when completely unbounded; infinity when at least one side is open
|
|
81
|
+
const allowNan = options?.allowNan ?? (!hasMin && !hasMax);
|
|
82
|
+
const allowInfinity = options?.allowInfinity ?? (!hasMin || !hasMax);
|
|
83
|
+
const schema = {
|
|
84
|
+
type: "float",
|
|
85
|
+
width: 64,
|
|
86
|
+
allow_nan: allowNan,
|
|
87
|
+
allow_infinity: allowInfinity,
|
|
88
|
+
};
|
|
89
|
+
if (hasMin) {
|
|
90
|
+
schema["min_value"] = options.minValue;
|
|
91
|
+
schema["exclude_min"] = options?.excludeMin ?? false;
|
|
92
|
+
}
|
|
93
|
+
if (hasMax) {
|
|
94
|
+
schema["max_value"] = options.maxValue;
|
|
95
|
+
schema["exclude_max"] = options?.excludeMax ?? false;
|
|
96
|
+
}
|
|
97
|
+
this.schema = schema;
|
|
98
|
+
}
|
|
99
|
+
doDraw(tc) {
|
|
100
|
+
return generateRaw(tc, this.schema);
|
|
101
|
+
}
|
|
102
|
+
asBasic() {
|
|
103
|
+
return new BasicGenerator(this.schema);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Generate floating-point numbers.
|
|
108
|
+
*
|
|
109
|
+
* By default, NaN is allowed only when no bounds are set, and infinity
|
|
110
|
+
* is allowed when at least one bound is missing.
|
|
111
|
+
*/
|
|
112
|
+
export function floats(options) {
|
|
113
|
+
return new FloatsGenerator(options);
|
|
114
|
+
}
|
|
115
|
+
class BooleansGenerator extends Generator {
|
|
116
|
+
schema = { type: "boolean" };
|
|
117
|
+
doDraw(tc) {
|
|
118
|
+
return generateRaw(tc, this.schema);
|
|
119
|
+
}
|
|
120
|
+
asBasic() {
|
|
121
|
+
return new BasicGenerator(this.schema);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Generate boolean values. */
|
|
125
|
+
export function booleans() {
|
|
126
|
+
return new BooleansGenerator();
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=numeric.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numeric.js","sourceRoot":"","sources":["../../src/generators/numeric.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
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
|
+
* Generate integers.
|
|
10
|
+
*
|
|
11
|
+
* @param minValue - Minimum value (inclusive), or null for unbounded.
|
|
12
|
+
* @param maxValue - Maximum value (inclusive), or null for unbounded.
|
|
13
|
+
*/
|
|
14
|
+
export declare function integers(minValue?: number | null, maxValue?: number | null): BasicGenerator<number>;
|
|
15
|
+
/**
|
|
16
|
+
* Generate floating-point numbers.
|
|
17
|
+
*
|
|
18
|
+
* By default, allows NaN and infinity unless a range is given. When a min or
|
|
19
|
+
* max is provided the defaults tighten: NaN becomes disallowed, and infinity
|
|
20
|
+
* is disallowed on the bounded side.
|
|
21
|
+
*
|
|
22
|
+
* @param minValue - Minimum value (inclusive), or null for unbounded.
|
|
23
|
+
* @param maxValue - Maximum value (inclusive), or null for unbounded.
|
|
24
|
+
* @param allowNan - Whether to allow NaN. Defaults to true only when both bounds are absent.
|
|
25
|
+
* @param allowInfinity - Whether to allow ±Infinity. Defaults to true when at least one bound is absent.
|
|
26
|
+
* @param excludeMin - Whether to exclude the minimum value (open interval on the left).
|
|
27
|
+
* @param excludeMax - Whether to exclude the maximum value (open interval on the right).
|
|
28
|
+
*/
|
|
29
|
+
export declare function floats(minValue?: number | null, maxValue?: number | null, allowNan?: boolean | null, allowInfinity?: boolean | null, excludeMin?: boolean, excludeMax?: boolean): BasicGenerator<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Generate booleans.
|
|
32
|
+
*/
|
|
33
|
+
export declare function booleans(): BasicGenerator<boolean>;
|
|
34
|
+
/** Character filtering options for {@link text} and {@link fromRegex}. */
|
|
35
|
+
export interface CharacterOptions {
|
|
36
|
+
/** Restrict to characters encodable in this codec (e.g. `"ascii"`, `"utf-8"`). */
|
|
37
|
+
codec?: string;
|
|
38
|
+
/** Minimum Unicode codepoint. */
|
|
39
|
+
minCodepoint?: number;
|
|
40
|
+
/** Maximum Unicode codepoint. */
|
|
41
|
+
maxCodepoint?: number;
|
|
42
|
+
/** Include only characters from these Unicode general categories (e.g. `["L", "Nd"]`). Mutually exclusive with `excludeCategories`. */
|
|
43
|
+
categories?: string[];
|
|
44
|
+
/** Exclude characters from these Unicode general categories. Mutually exclusive with `categories`. */
|
|
45
|
+
excludeCategories?: string[];
|
|
46
|
+
/** Always include these characters regardless of other constraints. */
|
|
47
|
+
includeCharacters?: string;
|
|
48
|
+
/** Exclude these characters. */
|
|
49
|
+
excludeCharacters?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Generate text strings.
|
|
53
|
+
*
|
|
54
|
+
* @param minSize - Minimum number of Unicode codepoints. Defaults to 0.
|
|
55
|
+
* @param maxSize - Maximum number of Unicode codepoints, or null for unbounded.
|
|
56
|
+
* @param opts - Character filtering options.
|
|
57
|
+
*/
|
|
58
|
+
export declare function text(minSize?: number, maxSize?: number | null, opts?: CharacterOptions): BasicGenerator<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Generate single Unicode characters.
|
|
61
|
+
*
|
|
62
|
+
* This is a convenience for `text(1, 1, opts)` — it generates single-character
|
|
63
|
+
* strings with the same character filtering options as {@link text}.
|
|
64
|
+
*
|
|
65
|
+
* @param opts - Character filtering options.
|
|
66
|
+
*/
|
|
67
|
+
export declare function characters(opts?: CharacterOptions): BasicGenerator<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Generate binary data (byte strings).
|
|
70
|
+
*
|
|
71
|
+
* The server returns CBOR byte strings which are decoded directly as
|
|
72
|
+
* `Uint8Array`. No transform is needed.
|
|
73
|
+
*
|
|
74
|
+
* @param minSize - Minimum byte length. Defaults to 0.
|
|
75
|
+
* @param maxSize - Maximum byte length, or null for unbounded.
|
|
76
|
+
*/
|
|
77
|
+
export declare function binary(minSize?: number, maxSize?: number | null): BasicGenerator<Uint8Array>;
|
|
78
|
+
/**
|
|
79
|
+
* Always return the same constant value, ignoring the server's suggestion.
|
|
80
|
+
*
|
|
81
|
+
* @param value - The constant to always return.
|
|
82
|
+
*/
|
|
83
|
+
export declare function just<T>(value: T): BasicGenerator<T>;
|
|
84
|
+
/**
|
|
85
|
+
* Pick uniformly at random from a list of values.
|
|
86
|
+
*
|
|
87
|
+
* The server generates an integer index; the transform maps it to the
|
|
88
|
+
* corresponding element of `values`.
|
|
89
|
+
*
|
|
90
|
+
* @param values - The list to sample from. Must be non-empty.
|
|
91
|
+
* @throws {Error} If `values` is empty.
|
|
92
|
+
*/
|
|
93
|
+
export declare function sampledFrom<T>(values: readonly T[]): BasicGenerator<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Generate strings matching a regular expression pattern.
|
|
96
|
+
*
|
|
97
|
+
* @param pattern - The regex pattern to match.
|
|
98
|
+
* @param fullmatch - If true (default), the entire string must match the pattern.
|
|
99
|
+
* If false, a substring match is sufficient.
|
|
100
|
+
*/
|
|
101
|
+
export declare function fromRegex(pattern: string, fullmatch?: boolean): BasicGenerator<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Generate email addresses.
|
|
104
|
+
*
|
|
105
|
+
* Each generated value is a valid email address string containing '@'.
|
|
106
|
+
*/
|
|
107
|
+
export declare function emails(): BasicGenerator<string>;
|
|
108
|
+
/**
|
|
109
|
+
* Generate URLs.
|
|
110
|
+
*
|
|
111
|
+
* Each generated value is a valid URL string starting with "http://" or "https://".
|
|
112
|
+
*/
|
|
113
|
+
export declare function urls(): BasicGenerator<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Generate domain names.
|
|
116
|
+
*
|
|
117
|
+
* @param maxLength - Optional maximum length for generated domain names.
|
|
118
|
+
*/
|
|
119
|
+
export declare function domains(maxLength?: number | null): BasicGenerator<string>;
|
|
120
|
+
/**
|
|
121
|
+
* Generate dates.
|
|
122
|
+
*
|
|
123
|
+
* Each generated value is an ISO 8601 date string in YYYY-MM-DD format.
|
|
124
|
+
*/
|
|
125
|
+
export declare function dates(): BasicGenerator<string>;
|
|
126
|
+
/**
|
|
127
|
+
* Generate times.
|
|
128
|
+
*
|
|
129
|
+
* Each generated value is a time string containing ':'.
|
|
130
|
+
*/
|
|
131
|
+
export declare function times(): BasicGenerator<string>;
|
|
132
|
+
/**
|
|
133
|
+
* Generate datetimes.
|
|
134
|
+
*
|
|
135
|
+
* Each generated value is a datetime string containing 'T'.
|
|
136
|
+
*/
|
|
137
|
+
export declare function datetimes(): BasicGenerator<string>;
|
|
138
|
+
//# sourceMappingURL=primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/generators/primitives.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAM3C;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,MAAM,GAAG,IAAW,GAC7B,cAAc,CAAC,MAAM,CAAC,CAQxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CACpB,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,QAAQ,GAAE,OAAO,GAAG,IAAW,EAC/B,aAAa,GAAE,OAAO,GAAG,IAAW,EACpC,UAAU,UAAQ,EAClB,UAAU,UAAQ,GACjB,cAAc,CAAC,MAAM,CAAC,CAyBxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,CAElD;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uIAAuI;IACvI,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,sGAAsG;IACtG,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAClB,OAAO,SAAI,EACX,OAAO,GAAE,MAAM,GAAG,IAAW,EAC7B,IAAI,GAAE,gBAAqB,GAC1B,cAAc,CAAC,MAAM,CAAC,CAoBxB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,gBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAI,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAa7F;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAWtE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAEnF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,CAElD"}
|