@ghostry/fabricator-extension-faker-v10 0.0.1

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.
@@ -0,0 +1,42 @@
1
+ import { Faker } from "@faker-js/faker";
2
+ import { construct } from "./Construct.js";
3
+ import { FakerExtensionError } from "./Error.js";
4
+ let scope;
5
+ const current = ()=>{
6
+ if (void 0 === scope) throw new FakerExtensionError.NoActiveScopeError();
7
+ return scope;
8
+ };
9
+ const randomizer = {
10
+ next: ()=>current().random.next(),
11
+ seed: ()=>{}
12
+ };
13
+ function toFaker(options) {
14
+ if (options.create) return options.create(randomizer);
15
+ const faker = new Faker({
16
+ locale: options.locale,
17
+ randomizer: randomizer,
18
+ ...options.config ? {
19
+ config: options.config
20
+ } : {}
21
+ });
22
+ faker.setDefaultRefDate(()=>new Date(current().clock));
23
+ return faker;
24
+ }
25
+ function draw(produce) {
26
+ return (context)=>{
27
+ const previous = scope;
28
+ scope = context;
29
+ try {
30
+ return produce();
31
+ } finally{
32
+ scope = previous;
33
+ }
34
+ };
35
+ }
36
+ function fakerExtension(options) {
37
+ const faker = toFaker(options);
38
+ return ({ T })=>({
39
+ faker: construct(T, faker, draw)
40
+ });
41
+ }
42
+ export { FakerExtensionError, fakerExtension };
@@ -0,0 +1,25 @@
1
+ import type { Faker } from "@faker-js/faker";
2
+ import type { ProduceContext } from "@ghostry/fabricator";
3
+ import type { FakerExtension, Registry } from "./Types";
4
+ /**
5
+ * Builds the whole `faker` namespace — every module and method
6
+ * `FakerModules/Build.ts` covers, including `color`'s text/channels split —
7
+ * against one shared `Faker` instance, plus the `use` hatch below.
8
+ *
9
+ * Built eagerly as a plain nested object, never a `Proxy`: `registry.extend`'s
10
+ * `deepMerge` only recurses where `isPlainObject` holds, and a `Proxy` over
11
+ * `{}` passes that check while defeating `Object.keys`, the same trap
12
+ * `T.record`'s `"__proto__"` guard exists to avoid on the fabrication side.
13
+ *
14
+ * Nothing here is cast. `build`'s `FakerModules` annotation checks the module
15
+ * half against `FakerModules/Types.ts`, and this function's return type checks
16
+ * that the module half and `use` together are exactly `FakerExtension` — a
17
+ * mismatch between what the mirror builds and what the surface declares is a
18
+ * compile error, not something a cast absorbs.
19
+ *
20
+ * The one place the plain-object/bare-function invariant is upheld at assembly
21
+ * rather than within a single file, which is why `Deviation.test.ts` keeps a
22
+ * runtime floor on the builder count: the type-level guards read the surface
23
+ * alone and cannot see a spread that drops a module.
24
+ */
25
+ export declare function construct(T: Registry, faker: Faker, draw: <$T>(produce: () => $T) => (context: ProduceContext) => $T): FakerExtension;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Named `FakerExtensionError`, not `FakerError` — `@faker-js/faker` already
3
+ * exports that name, and importing both into one scope would collide. Follows
4
+ * core's `FabricatorError` shape (abstract base plus a merged namespace of
5
+ * subclasses) so `e instanceof FabricatorError` still catches everything either
6
+ * package throws.
7
+ */
8
+ import { FabricatorError } from "@ghostry/fabricator";
9
+ export declare abstract class FakerExtensionError extends FabricatorError {
10
+ constructor();
11
+ }
12
+ export declare namespace FakerExtensionError {
13
+ /**
14
+ * A faker builder called outside `fabricate()` — the bridge's shared `scope`
15
+ * is only populated while a producer runs inside a leaf's `fabricate()`
16
+ * (`src/index.ts`'s `draw`). A builder captured out of that closure and
17
+ * invoked directly (or whose result is cached and replayed) has no
18
+ * `ProduceContext` to draw from.
19
+ */
20
+ class NoActiveScopeError extends FakerExtensionError {
21
+ constructor();
22
+ }
23
+ }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Every builder in the mirror's module half, written out one per faker method,
3
+ * hand-maintained alongside `./Types.ts`.
4
+ *
5
+ * **The `FakerModules` return annotation is the point of the file.** It checks
6
+ * each expression against the property `./Types.ts` declares for the same
7
+ * method, so contract and implementation cannot drift silently — no cast
8
+ * anywhere in this package's construction path. See `./Types.ts`'s header for
9
+ * the faker-bump workflow; an entry added or changed here needs the matching
10
+ * edit there, and vice versa.
11
+ *
12
+ * Three shapes before editing:
13
+ *
14
+ * - Every builder spreads faker's `Parameters<...>` rather than taking a single
15
+ * `options?`. Faker's zero-parameter methods (`animal.bear()`) and its
16
+ * optional-parameter ones (`date.past(options?)`) are indistinguishable at
17
+ * runtime — both report `.length === 0`, and `toString()` is `[native code]`
18
+ * because faker binds them — and the spread is exact for both, for the three
19
+ * methods whose first argument is required, and for `string.fromCharacters`'s
20
+ * second parameter.
21
+ * - An object-kind builder's string fields are the shared `string` placeholder:
22
+ * the enclosing `.as(produce)` supplies the whole value and no field is ever
23
+ * drawn on its own. See its own doc for why it exists and why it is a
24
+ * producer rather than a length bound.
25
+ * - `color`'s 7 split methods are a `{ text, channels }` pair each rather than
26
+ * one ambiguous builder, since their return type depends on their arguments;
27
+ * see the deviation policy in `CLAUDE.md`'s "The faker extension". All 7 name
28
+ * `format: "decimal"` on `.channels()`, not only `rgb`: bare is right at
29
+ * runtime for the other 6, but not provable through faker's declarations,
30
+ * whose _first_ overload takes `format?: StringColorFormat` and returns
31
+ * `string`. `'decimal'` is `NumberColorFormat`'s sole member, so naming it is
32
+ * exact.
33
+ *
34
+ * Every node is a plain object or a bare builder function, never a function
35
+ * carrying properties — the invariant `deepMerge` needs to recurse through an
36
+ * extended registry, guarded by `test/Mergeable.test.ts`.
37
+ */
38
+ import type { Faker } from "@faker-js/faker";
39
+ import type { ProduceContext } from "@ghostry/fabricator";
40
+ import type { Registry } from "../Types";
41
+ import type { FakerModules } from "./Types";
42
+ /**
43
+ * `src/index.ts`'s `draw`, by type — the save/restore wrapper that binds a
44
+ * producer to the leaf's own `random`/`clock`. Named here rather than imported
45
+ * so this file stays type-only in its dependencies.
46
+ */
47
+ type Draw = <$T>(produce: () => $T) => (context: ProduceContext) => $T;
48
+ export declare function build(T: Registry, faker: Faker, draw: Draw): FakerModules;
49
+ export {};
@@ -0,0 +1,428 @@
1
+ /**
2
+ * The `faker` namespace's public type surface: one concrete property
3
+ * declaration per builder, hand-maintained alongside `./Build.ts`.
4
+ *
5
+ * **This file and `./Build.ts` are two halves of one thing.** This one declares
6
+ * the contract; that one implements it, under a `FakerModules` return
7
+ * annotation that makes any disagreement a compile error. Neither is derived
8
+ * from the other, and neither may be edited alone.
9
+ *
10
+ * Written out property by property, not mapped over a table. A mapped type must
11
+ * instantiate every member to resolve any one of them, so having the derived
12
+ * form in the program exhausted TypeScript 5's 5,000,000-instantiation budget
13
+ * and made every `toTypeBox(...)` call fail with TS2589. Each property here is
14
+ * a plain declaration TypeScript reads rather than computes. This repo's
15
+ * `check` runs TypeScript 7, whose budget is larger — `bun run check` passing
16
+ * is _not_ evidence a derived form would be affordable for consumers;
17
+ * `check:ts5` is.
18
+ *
19
+ * A `type` alias, never an `interface`: only an object-literal type gets an
20
+ * implicit index signature, and without one `DeepMerge`'s `$AV extends
21
+ * PlainObject` test fails, silently degrading `registry.extend` from merging
22
+ * into a node to replacing it wholesale. `test/Mergeable.test.ts` is the
23
+ * guard.
24
+ *
25
+ * Each method keeps faker's argument surface by spreading its whole
26
+ * `Parameters<...>` tuple, so arity and requiredness are faker's own —
27
+ * `date.between`'s required options stay required, and
28
+ * `string.fromCharacters`'s second parameter stays reachable. A single
29
+ * `options?` is wrong in both directions: it invites omitting an argument faker
30
+ * throws without, and it hides every parameter past the first.
31
+ *
32
+ * ## Bumping `@faker-js/faker`
33
+ *
34
+ * No generator; `bun run check` is the worklist. Each drift surface has its own
35
+ * assertion in `test/index.types.test.ts`:
36
+ *
37
+ * 1. A module added or removed fails `_ModulesExhaustive`.
38
+ * 2. A method added or removed fails `MethodsExhaustive<$M>` for that module.
39
+ * 3. A changed return type fails `ModuleHonest<$M>` at the exact entry — narrow
40
+ * with `T.enum.uniform([...])` where faker's declared return is a literal
41
+ * union rather than a bare `string`.
42
+ * 4. A reordered overload set changes `Parameters<...>` here, which the matching
43
+ * builder's `...args` forwarding then fails to accept.
44
+ *
45
+ * Fix the entry in **both** files; the annotation on `build` fails until they
46
+ * agree.
47
+ *
48
+ * These assertions resolve through built `dist/`, not `src/` (`CLAUDE.md`'s
49
+ * test-import convention), so a `src`-only edit proves nothing about faker
50
+ * drift until you rebuild. A disagreement between this file and `./Build.ts` is
51
+ * caught without one, being internal to `src`.
52
+ */
53
+ import type { Faker } from "@faker-js/faker";
54
+ import type { Primitive } from "@ghostry/fabricator/internal";
55
+ export type FakerModules = {
56
+ readonly airline: {
57
+ readonly aircraftType: (...args: Parameters<Faker["airline"]["aircraftType"]>) => Primitive.enum.Schema<readonly [
58
+ readonly [number, "narrowbody"],
59
+ readonly [number, "regional"],
60
+ readonly [number, "widebody"]
61
+ ]>;
62
+ readonly airline: (...args: Parameters<Faker["airline"]["airline"]>) => Primitive.object.Schema<{
63
+ readonly name: Primitive.string.Schema;
64
+ readonly iataCode: Primitive.string.Schema;
65
+ }>;
66
+ readonly airplane: (...args: Parameters<Faker["airline"]["airplane"]>) => Primitive.object.Schema<{
67
+ readonly name: Primitive.string.Schema;
68
+ readonly iataTypeCode: Primitive.string.Schema;
69
+ }>;
70
+ readonly airport: (...args: Parameters<Faker["airline"]["airport"]>) => Primitive.object.Schema<{
71
+ readonly name: Primitive.string.Schema;
72
+ readonly iataCode: Primitive.string.Schema;
73
+ }>;
74
+ readonly flightNumber: (...args: Parameters<Faker["airline"]["flightNumber"]>) => Primitive.string.Schema;
75
+ readonly recordLocator: (...args: Parameters<Faker["airline"]["recordLocator"]>) => Primitive.string.Schema;
76
+ readonly seat: (...args: Parameters<Faker["airline"]["seat"]>) => Primitive.string.Schema;
77
+ };
78
+ readonly animal: {
79
+ readonly bear: (...args: Parameters<Faker["animal"]["bear"]>) => Primitive.string.Schema;
80
+ readonly bird: (...args: Parameters<Faker["animal"]["bird"]>) => Primitive.string.Schema;
81
+ readonly cat: (...args: Parameters<Faker["animal"]["cat"]>) => Primitive.string.Schema;
82
+ readonly cetacean: (...args: Parameters<Faker["animal"]["cetacean"]>) => Primitive.string.Schema;
83
+ readonly cow: (...args: Parameters<Faker["animal"]["cow"]>) => Primitive.string.Schema;
84
+ readonly crocodilia: (...args: Parameters<Faker["animal"]["crocodilia"]>) => Primitive.string.Schema;
85
+ readonly dog: (...args: Parameters<Faker["animal"]["dog"]>) => Primitive.string.Schema;
86
+ readonly fish: (...args: Parameters<Faker["animal"]["fish"]>) => Primitive.string.Schema;
87
+ readonly horse: (...args: Parameters<Faker["animal"]["horse"]>) => Primitive.string.Schema;
88
+ readonly insect: (...args: Parameters<Faker["animal"]["insect"]>) => Primitive.string.Schema;
89
+ readonly lion: (...args: Parameters<Faker["animal"]["lion"]>) => Primitive.string.Schema;
90
+ readonly petName: (...args: Parameters<Faker["animal"]["petName"]>) => Primitive.string.Schema;
91
+ readonly rabbit: (...args: Parameters<Faker["animal"]["rabbit"]>) => Primitive.string.Schema;
92
+ readonly rodent: (...args: Parameters<Faker["animal"]["rodent"]>) => Primitive.string.Schema;
93
+ readonly snake: (...args: Parameters<Faker["animal"]["snake"]>) => Primitive.string.Schema;
94
+ readonly type: (...args: Parameters<Faker["animal"]["type"]>) => Primitive.string.Schema;
95
+ };
96
+ readonly book: {
97
+ readonly author: (...args: Parameters<Faker["book"]["author"]>) => Primitive.string.Schema;
98
+ readonly format: (...args: Parameters<Faker["book"]["format"]>) => Primitive.string.Schema;
99
+ readonly genre: (...args: Parameters<Faker["book"]["genre"]>) => Primitive.string.Schema;
100
+ readonly publisher: (...args: Parameters<Faker["book"]["publisher"]>) => Primitive.string.Schema;
101
+ readonly series: (...args: Parameters<Faker["book"]["series"]>) => Primitive.string.Schema;
102
+ readonly title: (...args: Parameters<Faker["book"]["title"]>) => Primitive.string.Schema;
103
+ };
104
+ readonly color: {
105
+ readonly cssSupportedFunction: (...args: Parameters<Faker["color"]["cssSupportedFunction"]>) => Primitive.enum.Schema<readonly [
106
+ readonly [number, "rgb"],
107
+ readonly [number, "rgba"],
108
+ readonly [number, "hsl"],
109
+ readonly [number, "hsla"],
110
+ readonly [number, "hwb"],
111
+ readonly [number, "cmyk"],
112
+ readonly [number, "lab"],
113
+ readonly [number, "lch"],
114
+ readonly [number, "color"]
115
+ ]>;
116
+ readonly cssSupportedSpace: (...args: Parameters<Faker["color"]["cssSupportedSpace"]>) => Primitive.enum.Schema<readonly [
117
+ readonly [number, "sRGB"],
118
+ readonly [number, "display-p3"],
119
+ readonly [number, "rec2020"],
120
+ readonly [number, "a98-rgb"],
121
+ readonly [number, "prophoto-rgb"]
122
+ ]>;
123
+ readonly human: (...args: Parameters<Faker["color"]["human"]>) => Primitive.string.Schema;
124
+ readonly space: (...args: Parameters<Faker["color"]["space"]>) => Primitive.string.Schema;
125
+ readonly rgb: {
126
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["rgb"]>[0]>, "format">) => Primitive.string.Schema;
127
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["rgb"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
128
+ };
129
+ readonly cmyk: {
130
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["cmyk"]>[0]>, "format">) => Primitive.string.Schema;
131
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["cmyk"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
132
+ };
133
+ readonly hsl: {
134
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["hsl"]>[0]>, "format">) => Primitive.string.Schema;
135
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["hsl"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
136
+ };
137
+ readonly hwb: {
138
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["hwb"]>[0]>, "format">) => Primitive.string.Schema;
139
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["hwb"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
140
+ };
141
+ readonly lab: {
142
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["lab"]>[0]>, "format">) => Primitive.string.Schema;
143
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["lab"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
144
+ };
145
+ readonly lch: {
146
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["lch"]>[0]>, "format">) => Primitive.string.Schema;
147
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["lch"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
148
+ };
149
+ readonly colorByCSSColorSpace: {
150
+ readonly text: (options?: Omit<NonNullable<Parameters<Faker["color"]["colorByCSSColorSpace"]>[0]>, "format">) => Primitive.string.Schema;
151
+ readonly channels: (options?: Omit<NonNullable<Parameters<Faker["color"]["colorByCSSColorSpace"]>[0]>, "format">) => Primitive.array.Schema<Primitive.number.Schema>;
152
+ };
153
+ };
154
+ readonly commerce: {
155
+ readonly department: (...args: Parameters<Faker["commerce"]["department"]>) => Primitive.string.Schema;
156
+ readonly isbn: (...args: Parameters<Faker["commerce"]["isbn"]>) => Primitive.string.Schema;
157
+ readonly price: (...args: Parameters<Faker["commerce"]["price"]>) => Primitive.string.Schema;
158
+ readonly product: (...args: Parameters<Faker["commerce"]["product"]>) => Primitive.string.Schema;
159
+ readonly productAdjective: (...args: Parameters<Faker["commerce"]["productAdjective"]>) => Primitive.string.Schema;
160
+ readonly productDescription: (...args: Parameters<Faker["commerce"]["productDescription"]>) => Primitive.string.Schema;
161
+ readonly productMaterial: (...args: Parameters<Faker["commerce"]["productMaterial"]>) => Primitive.string.Schema;
162
+ readonly productName: (...args: Parameters<Faker["commerce"]["productName"]>) => Primitive.string.Schema;
163
+ readonly upc: (...args: Parameters<Faker["commerce"]["upc"]>) => Primitive.string.Schema;
164
+ };
165
+ readonly company: {
166
+ readonly buzzAdjective: (...args: Parameters<Faker["company"]["buzzAdjective"]>) => Primitive.string.Schema;
167
+ readonly buzzNoun: (...args: Parameters<Faker["company"]["buzzNoun"]>) => Primitive.string.Schema;
168
+ readonly buzzPhrase: (...args: Parameters<Faker["company"]["buzzPhrase"]>) => Primitive.string.Schema;
169
+ readonly buzzVerb: (...args: Parameters<Faker["company"]["buzzVerb"]>) => Primitive.string.Schema;
170
+ readonly catchPhrase: (...args: Parameters<Faker["company"]["catchPhrase"]>) => Primitive.string.Schema;
171
+ readonly catchPhraseAdjective: (...args: Parameters<Faker["company"]["catchPhraseAdjective"]>) => Primitive.string.Schema;
172
+ readonly catchPhraseDescriptor: (...args: Parameters<Faker["company"]["catchPhraseDescriptor"]>) => Primitive.string.Schema;
173
+ readonly catchPhraseNoun: (...args: Parameters<Faker["company"]["catchPhraseNoun"]>) => Primitive.string.Schema;
174
+ readonly name: (...args: Parameters<Faker["company"]["name"]>) => Primitive.string.Schema;
175
+ };
176
+ readonly database: {
177
+ readonly collation: (...args: Parameters<Faker["database"]["collation"]>) => Primitive.string.Schema;
178
+ readonly column: (...args: Parameters<Faker["database"]["column"]>) => Primitive.string.Schema;
179
+ readonly engine: (...args: Parameters<Faker["database"]["engine"]>) => Primitive.string.Schema;
180
+ readonly mongodbObjectId: (...args: Parameters<Faker["database"]["mongodbObjectId"]>) => Primitive.string.Schema;
181
+ readonly type: (...args: Parameters<Faker["database"]["type"]>) => Primitive.string.Schema;
182
+ };
183
+ readonly datatype: {
184
+ readonly boolean: (...args: Parameters<Faker["datatype"]["boolean"]>) => Primitive.boolean.Schema;
185
+ };
186
+ readonly date: {
187
+ readonly anytime: (...args: Parameters<Faker["date"]["anytime"]>) => Primitive.date.Schema;
188
+ readonly between: (...args: Parameters<Faker["date"]["between"]>) => Primitive.date.Schema;
189
+ readonly betweens: (...args: Parameters<Faker["date"]["betweens"]>) => Primitive.array.Schema<Primitive.date.Schema>;
190
+ readonly birthdate: (...args: Parameters<Faker["date"]["birthdate"]>) => Primitive.date.Schema;
191
+ readonly future: (...args: Parameters<Faker["date"]["future"]>) => Primitive.date.Schema;
192
+ readonly month: (...args: Parameters<Faker["date"]["month"]>) => Primitive.string.Schema;
193
+ readonly past: (...args: Parameters<Faker["date"]["past"]>) => Primitive.date.Schema;
194
+ readonly recent: (...args: Parameters<Faker["date"]["recent"]>) => Primitive.date.Schema;
195
+ readonly soon: (...args: Parameters<Faker["date"]["soon"]>) => Primitive.date.Schema;
196
+ readonly timeZone: (...args: Parameters<Faker["date"]["timeZone"]>) => Primitive.string.Schema;
197
+ readonly weekday: (...args: Parameters<Faker["date"]["weekday"]>) => Primitive.string.Schema;
198
+ };
199
+ readonly finance: {
200
+ readonly accountName: (...args: Parameters<Faker["finance"]["accountName"]>) => Primitive.string.Schema;
201
+ readonly accountNumber: (...args: Parameters<Faker["finance"]["accountNumber"]>) => Primitive.string.Schema;
202
+ readonly amount: (...args: Parameters<Faker["finance"]["amount"]>) => Primitive.string.Schema;
203
+ readonly bic: (...args: Parameters<Faker["finance"]["bic"]>) => Primitive.string.Schema;
204
+ readonly bitcoinAddress: (...args: Parameters<Faker["finance"]["bitcoinAddress"]>) => Primitive.string.Schema;
205
+ readonly creditCardCVV: (...args: Parameters<Faker["finance"]["creditCardCVV"]>) => Primitive.string.Schema;
206
+ readonly creditCardIssuer: (...args: Parameters<Faker["finance"]["creditCardIssuer"]>) => Primitive.string.Schema;
207
+ readonly creditCardNumber: (...args: Parameters<Faker["finance"]["creditCardNumber"]>) => Primitive.string.Schema;
208
+ readonly currency: (...args: Parameters<Faker["finance"]["currency"]>) => Primitive.object.Schema<{
209
+ readonly name: Primitive.string.Schema;
210
+ readonly code: Primitive.string.Schema;
211
+ readonly symbol: Primitive.string.Schema;
212
+ readonly numericCode: Primitive.string.Schema;
213
+ }>;
214
+ readonly currencyCode: (...args: Parameters<Faker["finance"]["currencyCode"]>) => Primitive.string.Schema;
215
+ readonly currencyName: (...args: Parameters<Faker["finance"]["currencyName"]>) => Primitive.string.Schema;
216
+ readonly currencyNumericCode: (...args: Parameters<Faker["finance"]["currencyNumericCode"]>) => Primitive.string.Schema;
217
+ readonly currencySymbol: (...args: Parameters<Faker["finance"]["currencySymbol"]>) => Primitive.string.Schema;
218
+ readonly ethereumAddress: (...args: Parameters<Faker["finance"]["ethereumAddress"]>) => Primitive.string.Schema;
219
+ readonly iban: (...args: Parameters<Faker["finance"]["iban"]>) => Primitive.string.Schema;
220
+ readonly litecoinAddress: (...args: Parameters<Faker["finance"]["litecoinAddress"]>) => Primitive.string.Schema;
221
+ readonly pin: (...args: Parameters<Faker["finance"]["pin"]>) => Primitive.string.Schema;
222
+ readonly routingNumber: (...args: Parameters<Faker["finance"]["routingNumber"]>) => Primitive.string.Schema;
223
+ readonly transactionDescription: (...args: Parameters<Faker["finance"]["transactionDescription"]>) => Primitive.string.Schema;
224
+ readonly transactionType: (...args: Parameters<Faker["finance"]["transactionType"]>) => Primitive.string.Schema;
225
+ };
226
+ readonly food: {
227
+ readonly adjective: (...args: Parameters<Faker["food"]["adjective"]>) => Primitive.string.Schema;
228
+ readonly description: (...args: Parameters<Faker["food"]["description"]>) => Primitive.string.Schema;
229
+ readonly dish: (...args: Parameters<Faker["food"]["dish"]>) => Primitive.string.Schema;
230
+ readonly ethnicCategory: (...args: Parameters<Faker["food"]["ethnicCategory"]>) => Primitive.string.Schema;
231
+ readonly fruit: (...args: Parameters<Faker["food"]["fruit"]>) => Primitive.string.Schema;
232
+ readonly ingredient: (...args: Parameters<Faker["food"]["ingredient"]>) => Primitive.string.Schema;
233
+ readonly meat: (...args: Parameters<Faker["food"]["meat"]>) => Primitive.string.Schema;
234
+ readonly spice: (...args: Parameters<Faker["food"]["spice"]>) => Primitive.string.Schema;
235
+ readonly vegetable: (...args: Parameters<Faker["food"]["vegetable"]>) => Primitive.string.Schema;
236
+ };
237
+ readonly git: {
238
+ readonly branch: (...args: Parameters<Faker["git"]["branch"]>) => Primitive.string.Schema;
239
+ readonly commitDate: (...args: Parameters<Faker["git"]["commitDate"]>) => Primitive.string.Schema;
240
+ readonly commitEntry: (...args: Parameters<Faker["git"]["commitEntry"]>) => Primitive.string.Schema;
241
+ readonly commitMessage: (...args: Parameters<Faker["git"]["commitMessage"]>) => Primitive.string.Schema;
242
+ readonly commitSha: (...args: Parameters<Faker["git"]["commitSha"]>) => Primitive.string.Schema;
243
+ };
244
+ readonly hacker: {
245
+ readonly abbreviation: (...args: Parameters<Faker["hacker"]["abbreviation"]>) => Primitive.string.Schema;
246
+ readonly adjective: (...args: Parameters<Faker["hacker"]["adjective"]>) => Primitive.string.Schema;
247
+ readonly ingverb: (...args: Parameters<Faker["hacker"]["ingverb"]>) => Primitive.string.Schema;
248
+ readonly noun: (...args: Parameters<Faker["hacker"]["noun"]>) => Primitive.string.Schema;
249
+ readonly phrase: (...args: Parameters<Faker["hacker"]["phrase"]>) => Primitive.string.Schema;
250
+ readonly verb: (...args: Parameters<Faker["hacker"]["verb"]>) => Primitive.string.Schema;
251
+ };
252
+ readonly image: {
253
+ readonly avatar: (...args: Parameters<Faker["image"]["avatar"]>) => Primitive.string.Schema;
254
+ readonly avatarGitHub: (...args: Parameters<Faker["image"]["avatarGitHub"]>) => Primitive.string.Schema;
255
+ readonly dataUri: (...args: Parameters<Faker["image"]["dataUri"]>) => Primitive.string.Schema;
256
+ readonly personPortrait: (...args: Parameters<Faker["image"]["personPortrait"]>) => Primitive.string.Schema;
257
+ readonly url: (...args: Parameters<Faker["image"]["url"]>) => Primitive.string.Schema;
258
+ readonly urlLoremFlickr: (...args: Parameters<Faker["image"]["urlLoremFlickr"]>) => Primitive.string.Schema;
259
+ readonly urlPicsumPhotos: (...args: Parameters<Faker["image"]["urlPicsumPhotos"]>) => Primitive.string.Schema;
260
+ };
261
+ readonly internet: {
262
+ readonly displayName: (...args: Parameters<Faker["internet"]["displayName"]>) => Primitive.string.Schema;
263
+ readonly domainName: (...args: Parameters<Faker["internet"]["domainName"]>) => Primitive.string.Schema;
264
+ readonly domainSuffix: (...args: Parameters<Faker["internet"]["domainSuffix"]>) => Primitive.string.Schema;
265
+ readonly domainWord: (...args: Parameters<Faker["internet"]["domainWord"]>) => Primitive.string.Schema;
266
+ readonly email: (...args: Parameters<Faker["internet"]["email"]>) => Primitive.string.Schema;
267
+ readonly emoji: (...args: Parameters<Faker["internet"]["emoji"]>) => Primitive.string.Schema;
268
+ readonly exampleEmail: (...args: Parameters<Faker["internet"]["exampleEmail"]>) => Primitive.string.Schema;
269
+ readonly httpMethod: (...args: Parameters<Faker["internet"]["httpMethod"]>) => Primitive.enum.Schema<readonly [
270
+ readonly [number, "GET"],
271
+ readonly [number, "POST"],
272
+ readonly [number, "PUT"],
273
+ readonly [number, "DELETE"],
274
+ readonly [number, "PATCH"]
275
+ ]>;
276
+ readonly httpStatusCode: (...args: Parameters<Faker["internet"]["httpStatusCode"]>) => Primitive.number.Schema;
277
+ readonly ip: (...args: Parameters<Faker["internet"]["ip"]>) => Primitive.string.Schema;
278
+ readonly ipv4: (...args: Parameters<Faker["internet"]["ipv4"]>) => Primitive.string.Schema;
279
+ readonly ipv6: (...args: Parameters<Faker["internet"]["ipv6"]>) => Primitive.string.Schema;
280
+ readonly jwt: (...args: Parameters<Faker["internet"]["jwt"]>) => Primitive.string.Schema;
281
+ readonly jwtAlgorithm: (...args: Parameters<Faker["internet"]["jwtAlgorithm"]>) => Primitive.string.Schema;
282
+ readonly mac: (...args: Parameters<Faker["internet"]["mac"]>) => Primitive.string.Schema;
283
+ readonly password: (...args: Parameters<Faker["internet"]["password"]>) => Primitive.string.Schema;
284
+ readonly port: (...args: Parameters<Faker["internet"]["port"]>) => Primitive.number.Schema;
285
+ readonly protocol: (...args: Parameters<Faker["internet"]["protocol"]>) => Primitive.enum.Schema<readonly [readonly [number, "http"], readonly [number, "https"]]>;
286
+ readonly url: (...args: Parameters<Faker["internet"]["url"]>) => Primitive.string.Schema;
287
+ readonly userAgent: (...args: Parameters<Faker["internet"]["userAgent"]>) => Primitive.string.Schema;
288
+ readonly username: (...args: Parameters<Faker["internet"]["username"]>) => Primitive.string.Schema;
289
+ };
290
+ readonly location: {
291
+ readonly buildingNumber: (...args: Parameters<Faker["location"]["buildingNumber"]>) => Primitive.string.Schema;
292
+ readonly cardinalDirection: (...args: Parameters<Faker["location"]["cardinalDirection"]>) => Primitive.string.Schema;
293
+ readonly city: (...args: Parameters<Faker["location"]["city"]>) => Primitive.string.Schema;
294
+ readonly continent: (...args: Parameters<Faker["location"]["continent"]>) => Primitive.string.Schema;
295
+ readonly country: (...args: Parameters<Faker["location"]["country"]>) => Primitive.string.Schema;
296
+ readonly countryCode: (...args: Parameters<Faker["location"]["countryCode"]>) => Primitive.string.Schema;
297
+ readonly county: (...args: Parameters<Faker["location"]["county"]>) => Primitive.string.Schema;
298
+ readonly direction: (...args: Parameters<Faker["location"]["direction"]>) => Primitive.string.Schema;
299
+ readonly language: (...args: Parameters<Faker["location"]["language"]>) => Primitive.object.Schema<{
300
+ readonly name: Primitive.string.Schema;
301
+ readonly alpha2: Primitive.string.Schema;
302
+ readonly alpha3: Primitive.string.Schema;
303
+ }>;
304
+ readonly latitude: (...args: Parameters<Faker["location"]["latitude"]>) => Primitive.number.Schema;
305
+ readonly longitude: (...args: Parameters<Faker["location"]["longitude"]>) => Primitive.number.Schema;
306
+ readonly nearbyGPSCoordinate: (...args: Parameters<Faker["location"]["nearbyGPSCoordinate"]>) => Primitive.tuple.Schema<readonly [Primitive.number.Schema, Primitive.number.Schema]>;
307
+ readonly ordinalDirection: (...args: Parameters<Faker["location"]["ordinalDirection"]>) => Primitive.string.Schema;
308
+ readonly postalAddress: (...args: Parameters<Faker["location"]["postalAddress"]>) => Primitive.string.Schema;
309
+ readonly secondaryAddress: (...args: Parameters<Faker["location"]["secondaryAddress"]>) => Primitive.string.Schema;
310
+ readonly state: (...args: Parameters<Faker["location"]["state"]>) => Primitive.string.Schema;
311
+ readonly street: (...args: Parameters<Faker["location"]["street"]>) => Primitive.string.Schema;
312
+ readonly streetAddress: (...args: Parameters<Faker["location"]["streetAddress"]>) => Primitive.string.Schema;
313
+ readonly timeZone: (...args: Parameters<Faker["location"]["timeZone"]>) => Primitive.string.Schema;
314
+ readonly zipCode: (...args: Parameters<Faker["location"]["zipCode"]>) => Primitive.string.Schema;
315
+ };
316
+ readonly lorem: {
317
+ readonly lines: (...args: Parameters<Faker["lorem"]["lines"]>) => Primitive.string.Schema;
318
+ readonly paragraph: (...args: Parameters<Faker["lorem"]["paragraph"]>) => Primitive.string.Schema;
319
+ readonly paragraphs: (...args: Parameters<Faker["lorem"]["paragraphs"]>) => Primitive.string.Schema;
320
+ readonly sentence: (...args: Parameters<Faker["lorem"]["sentence"]>) => Primitive.string.Schema;
321
+ readonly sentences: (...args: Parameters<Faker["lorem"]["sentences"]>) => Primitive.string.Schema;
322
+ readonly slug: (...args: Parameters<Faker["lorem"]["slug"]>) => Primitive.string.Schema;
323
+ readonly text: (...args: Parameters<Faker["lorem"]["text"]>) => Primitive.string.Schema;
324
+ readonly word: (...args: Parameters<Faker["lorem"]["word"]>) => Primitive.string.Schema;
325
+ readonly words: (...args: Parameters<Faker["lorem"]["words"]>) => Primitive.string.Schema;
326
+ };
327
+ readonly music: {
328
+ readonly album: (...args: Parameters<Faker["music"]["album"]>) => Primitive.string.Schema;
329
+ readonly artist: (...args: Parameters<Faker["music"]["artist"]>) => Primitive.string.Schema;
330
+ readonly genre: (...args: Parameters<Faker["music"]["genre"]>) => Primitive.string.Schema;
331
+ readonly songName: (...args: Parameters<Faker["music"]["songName"]>) => Primitive.string.Schema;
332
+ };
333
+ readonly number: {
334
+ readonly bigInt: (...args: Parameters<Faker["number"]["bigInt"]>) => Primitive.bigint.Schema;
335
+ readonly binary: (...args: Parameters<Faker["number"]["binary"]>) => Primitive.string.Schema;
336
+ readonly float: (...args: Parameters<Faker["number"]["float"]>) => Primitive.number.Schema;
337
+ readonly hex: (...args: Parameters<Faker["number"]["hex"]>) => Primitive.string.Schema;
338
+ readonly int: (...args: Parameters<Faker["number"]["int"]>) => Primitive.number.Schema;
339
+ readonly octal: (...args: Parameters<Faker["number"]["octal"]>) => Primitive.string.Schema;
340
+ readonly romanNumeral: (...args: Parameters<Faker["number"]["romanNumeral"]>) => Primitive.string.Schema;
341
+ };
342
+ readonly person: {
343
+ readonly bio: (...args: Parameters<Faker["person"]["bio"]>) => Primitive.string.Schema;
344
+ readonly firstName: (...args: Parameters<Faker["person"]["firstName"]>) => Primitive.string.Schema;
345
+ readonly fullName: (...args: Parameters<Faker["person"]["fullName"]>) => Primitive.string.Schema;
346
+ readonly gender: (...args: Parameters<Faker["person"]["gender"]>) => Primitive.string.Schema;
347
+ readonly jobArea: (...args: Parameters<Faker["person"]["jobArea"]>) => Primitive.string.Schema;
348
+ readonly jobDescriptor: (...args: Parameters<Faker["person"]["jobDescriptor"]>) => Primitive.string.Schema;
349
+ readonly jobTitle: (...args: Parameters<Faker["person"]["jobTitle"]>) => Primitive.string.Schema;
350
+ readonly jobType: (...args: Parameters<Faker["person"]["jobType"]>) => Primitive.string.Schema;
351
+ readonly lastName: (...args: Parameters<Faker["person"]["lastName"]>) => Primitive.string.Schema;
352
+ readonly middleName: (...args: Parameters<Faker["person"]["middleName"]>) => Primitive.string.Schema;
353
+ readonly prefix: (...args: Parameters<Faker["person"]["prefix"]>) => Primitive.string.Schema;
354
+ readonly sex: (...args: Parameters<Faker["person"]["sex"]>) => Primitive.string.Schema;
355
+ readonly sexType: (...args: Parameters<Faker["person"]["sexType"]>) => Primitive.enum.Schema<readonly [
356
+ readonly [number, "female"],
357
+ readonly [number, "generic"],
358
+ readonly [number, "male"]
359
+ ]>;
360
+ readonly suffix: (...args: Parameters<Faker["person"]["suffix"]>) => Primitive.string.Schema;
361
+ readonly zodiacSign: (...args: Parameters<Faker["person"]["zodiacSign"]>) => Primitive.string.Schema;
362
+ };
363
+ readonly phone: {
364
+ readonly imei: (...args: Parameters<Faker["phone"]["imei"]>) => Primitive.string.Schema;
365
+ readonly number: (...args: Parameters<Faker["phone"]["number"]>) => Primitive.string.Schema;
366
+ };
367
+ readonly science: {
368
+ readonly chemicalElement: (...args: Parameters<Faker["science"]["chemicalElement"]>) => Primitive.object.Schema<{
369
+ readonly symbol: Primitive.string.Schema;
370
+ readonly name: Primitive.string.Schema;
371
+ readonly atomicNumber: Primitive.number.Schema;
372
+ }>;
373
+ readonly unit: (...args: Parameters<Faker["science"]["unit"]>) => Primitive.object.Schema<{
374
+ readonly name: Primitive.string.Schema;
375
+ readonly symbol: Primitive.string.Schema;
376
+ }>;
377
+ };
378
+ readonly string: {
379
+ readonly alpha: (...args: Parameters<Faker["string"]["alpha"]>) => Primitive.string.Schema;
380
+ readonly alphanumeric: (...args: Parameters<Faker["string"]["alphanumeric"]>) => Primitive.string.Schema;
381
+ readonly binary: (...args: Parameters<Faker["string"]["binary"]>) => Primitive.string.Schema;
382
+ readonly fromCharacters: (...args: Parameters<Faker["string"]["fromCharacters"]>) => Primitive.string.Schema;
383
+ readonly hexadecimal: (...args: Parameters<Faker["string"]["hexadecimal"]>) => Primitive.string.Schema;
384
+ readonly nanoid: (...args: Parameters<Faker["string"]["nanoid"]>) => Primitive.string.Schema;
385
+ readonly numeric: (...args: Parameters<Faker["string"]["numeric"]>) => Primitive.string.Schema;
386
+ readonly octal: (...args: Parameters<Faker["string"]["octal"]>) => Primitive.string.Schema;
387
+ readonly sample: (...args: Parameters<Faker["string"]["sample"]>) => Primitive.string.Schema;
388
+ readonly symbol: (...args: Parameters<Faker["string"]["symbol"]>) => Primitive.string.Schema;
389
+ readonly ulid: (...args: Parameters<Faker["string"]["ulid"]>) => Primitive.string.Schema;
390
+ readonly uuid: (...args: Parameters<Faker["string"]["uuid"]>) => Primitive.string.Schema;
391
+ };
392
+ readonly system: {
393
+ readonly commonFileExt: (...args: Parameters<Faker["system"]["commonFileExt"]>) => Primitive.string.Schema;
394
+ readonly commonFileName: (...args: Parameters<Faker["system"]["commonFileName"]>) => Primitive.string.Schema;
395
+ readonly commonFileType: (...args: Parameters<Faker["system"]["commonFileType"]>) => Primitive.string.Schema;
396
+ readonly cron: (...args: Parameters<Faker["system"]["cron"]>) => Primitive.string.Schema;
397
+ readonly directoryPath: (...args: Parameters<Faker["system"]["directoryPath"]>) => Primitive.string.Schema;
398
+ readonly fileExt: (...args: Parameters<Faker["system"]["fileExt"]>) => Primitive.string.Schema;
399
+ readonly fileName: (...args: Parameters<Faker["system"]["fileName"]>) => Primitive.string.Schema;
400
+ readonly filePath: (...args: Parameters<Faker["system"]["filePath"]>) => Primitive.string.Schema;
401
+ readonly fileType: (...args: Parameters<Faker["system"]["fileType"]>) => Primitive.string.Schema;
402
+ readonly mimeType: (...args: Parameters<Faker["system"]["mimeType"]>) => Primitive.string.Schema;
403
+ readonly networkInterface: (...args: Parameters<Faker["system"]["networkInterface"]>) => Primitive.string.Schema;
404
+ readonly semver: (...args: Parameters<Faker["system"]["semver"]>) => Primitive.string.Schema;
405
+ };
406
+ readonly vehicle: {
407
+ readonly bicycle: (...args: Parameters<Faker["vehicle"]["bicycle"]>) => Primitive.string.Schema;
408
+ readonly color: (...args: Parameters<Faker["vehicle"]["color"]>) => Primitive.string.Schema;
409
+ readonly fuel: (...args: Parameters<Faker["vehicle"]["fuel"]>) => Primitive.string.Schema;
410
+ readonly manufacturer: (...args: Parameters<Faker["vehicle"]["manufacturer"]>) => Primitive.string.Schema;
411
+ readonly model: (...args: Parameters<Faker["vehicle"]["model"]>) => Primitive.string.Schema;
412
+ readonly type: (...args: Parameters<Faker["vehicle"]["type"]>) => Primitive.string.Schema;
413
+ readonly vehicle: (...args: Parameters<Faker["vehicle"]["vehicle"]>) => Primitive.string.Schema;
414
+ readonly vin: (...args: Parameters<Faker["vehicle"]["vin"]>) => Primitive.string.Schema;
415
+ readonly vrm: (...args: Parameters<Faker["vehicle"]["vrm"]>) => Primitive.string.Schema;
416
+ };
417
+ readonly word: {
418
+ readonly adjective: (...args: Parameters<Faker["word"]["adjective"]>) => Primitive.string.Schema;
419
+ readonly adverb: (...args: Parameters<Faker["word"]["adverb"]>) => Primitive.string.Schema;
420
+ readonly conjunction: (...args: Parameters<Faker["word"]["conjunction"]>) => Primitive.string.Schema;
421
+ readonly interjection: (...args: Parameters<Faker["word"]["interjection"]>) => Primitive.string.Schema;
422
+ readonly noun: (...args: Parameters<Faker["word"]["noun"]>) => Primitive.string.Schema;
423
+ readonly preposition: (...args: Parameters<Faker["word"]["preposition"]>) => Primitive.string.Schema;
424
+ readonly sample: (...args: Parameters<Faker["word"]["sample"]>) => Primitive.string.Schema;
425
+ readonly verb: (...args: Parameters<Faker["word"]["verb"]>) => Primitive.string.Schema;
426
+ readonly words: (...args: Parameters<Faker["word"]["words"]>) => Primitive.string.Schema;
427
+ };
428
+ };