@prismicio/mock 0.7.0-alpha.5 → 0.7.0-alpha.6
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/dist/lib/createFaker.cjs
CHANGED
|
@@ -90,7 +90,7 @@ class Faker {
|
|
|
90
90
|
return this.random() * (max - min) + min;
|
|
91
91
|
}
|
|
92
92
|
words(length, wordOffset = this.range(0, lorem.loremWords.length)) {
|
|
93
|
-
return lorem.lorem(`${length}w`, wordOffset);
|
|
93
|
+
return length === 1 ? this.word() : lorem.lorem(`${length}w`, wordOffset);
|
|
94
94
|
}
|
|
95
95
|
word({ allowReserved = false } = {}) {
|
|
96
96
|
const words = allowReserved ? lorem.loremWords : NO_RESERVED_LOREM_WORDS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFaker.cjs","sources":["../../../src/lib/createFaker.ts"],"sourcesContent":["import { Seed } from \"../types\";\n\nimport { lorem, loremWords } from \"./lorem\";\nimport { PRNG } from \"./PRNG\";\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed);\n};\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\n// JavaScript reserved words\n// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#reserved_words\n// Date: 2025-01-31\nconst RESERVED_WORDS = new Set([\n\t\"break\",\n\t\"case\",\n\t\"catch\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"else\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"finally\",\n\t\"for\",\n\t\"function\",\n\t\"if\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"new\",\n\t\"null\",\n\t\"return\",\n\t\"super\",\n\t\"switch\",\n\t\"this\",\n\t\"throw\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"while\",\n\t\"with\",\n\t\"let\",\n\t\"static\",\n\t\"yield\",\n\t\"await\",\n\t\"enum\",\n\t\"implements\",\n\t\"interface\",\n\t\"package\",\n\t\"private\",\n\t\"protected\",\n\t\"public\",\n]);\n\nconst NO_RESERVED_LOREM_WORDS = loremWords.filter(\n\t(word) => !RESERVED_WORDS.has(word),\n);\n\nexport class Faker {\n\tseed: Seed;\n\n\tprivate prng: PRNG;\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed;\n\n\t\tthis.prng = new PRNG(seed.toString());\n\t}\n\n\trandom(): number {\n\t\treturn this.prng.next();\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements);\n\n\t\treturn elements.filter(\n\t\t\t(element) => element === alwaysInclude || this.boolean(),\n\t\t);\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn lorem(`${length}w`, wordOffset);\n\t}\n\n\tword({ allowReserved = false }: { allowReserved?: boolean } = {}): string {\n\t\tconst words = allowReserved ? loremWords : NO_RESERVED_LOREM_WORDS;\n\n\t\treturn this.randomElement(words);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word({ allowReserved: true })}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n"],"names":["loremWords","PRNG","lorem"],"mappings":";;;;;;;;;;AAKa,MAAA,cAAc,CAAC,SAAqB;AACzC,SAAA,IAAI,MAAM,IAAI;AACtB;AAEA,MAAM,SAAS,MAAO,KAAK,KAAK;AAChC,MAAM,UAAU,SAAS;AACzB,MAAM,eAAe,MAAM,UAAU,SAAS;AAK9C,MAAM,qCAAqB,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,CAAA;AAED,MAAM,0BAA0BA,MAAAA,WAAW,OAC1C,CAAC,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC;MAGvB,MAAK;AAAA,EAKjB,YAAY,MAAU;AAJtB;AAEQ;AAGP,SAAK,OAAO;AAEZ,SAAK,OAAO,IAAIC,KAAAA,KAAK,KAAK,SAAU,CAAA;AAAA,EACrC;AAAA,EAEA,SAAM;AACE,WAAA,KAAK,KAAK;EAClB;AAAA,EAEA,UAAO;AACC,WAAA,KAAK,OAAY,KAAA;AAAA,EACzB;AAAA,EAEA,cAAiB,UAAsB;AACtC,WAAO,SAAS,KAAK,MAAM,GAAG,SAAS,MAAM,CAAC;AAAA,EAC/C;AAAA,EAEA,eAAkB,UAAsB;AACjC,UAAA,gBAAgB,KAAK,cAAc,QAAQ;AAE1C,WAAA,SAAS,OACf,CAAC,YAAY,YAAY,iBAAiB,KAAK,SAAS;AAAA,EAE1D;AAAA,EAEA,MAAM,KAAa,KAAW;AAC7B,WAAO,KAAK,MAAM,KAAK,WAAW,KAAK,KAAK,GAAG,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,EACnE;AAAA,EAEA,WAAW,KAAa,KAAW;AAClC,WAAO,KAAK,OAAY,KAAA,MAAM,OAAO;AAAA,EACtC;AAAA,EAEA,MAAM,QAAgB,aAAa,KAAK,MAAM,GAAGD,MAAAA,WAAW,MAAM,GAAC;
|
|
1
|
+
{"version":3,"file":"createFaker.cjs","sources":["../../../src/lib/createFaker.ts"],"sourcesContent":["import { Seed } from \"../types\";\n\nimport { lorem, loremWords } from \"./lorem\";\nimport { PRNG } from \"./PRNG\";\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed);\n};\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\n// JavaScript reserved words\n// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#reserved_words\n// Date: 2025-01-31\nconst RESERVED_WORDS = new Set([\n\t\"break\",\n\t\"case\",\n\t\"catch\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"else\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"finally\",\n\t\"for\",\n\t\"function\",\n\t\"if\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"new\",\n\t\"null\",\n\t\"return\",\n\t\"super\",\n\t\"switch\",\n\t\"this\",\n\t\"throw\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"while\",\n\t\"with\",\n\t\"let\",\n\t\"static\",\n\t\"yield\",\n\t\"await\",\n\t\"enum\",\n\t\"implements\",\n\t\"interface\",\n\t\"package\",\n\t\"private\",\n\t\"protected\",\n\t\"public\",\n]);\n\nconst NO_RESERVED_LOREM_WORDS = loremWords.filter(\n\t(word) => !RESERVED_WORDS.has(word),\n);\n\nexport class Faker {\n\tseed: Seed;\n\n\tprivate prng: PRNG;\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed;\n\n\t\tthis.prng = new PRNG(seed.toString());\n\t}\n\n\trandom(): number {\n\t\treturn this.prng.next();\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements);\n\n\t\treturn elements.filter(\n\t\t\t(element) => element === alwaysInclude || this.boolean(),\n\t\t);\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn length === 1 ? this.word() : lorem(`${length}w`, wordOffset);\n\t}\n\n\tword({ allowReserved = false }: { allowReserved?: boolean } = {}): string {\n\t\tconst words = allowReserved ? loremWords : NO_RESERVED_LOREM_WORDS;\n\n\t\treturn this.randomElement(words);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word({ allowReserved: true })}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n"],"names":["loremWords","PRNG","lorem"],"mappings":"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"}
|
package/dist/lib/createFaker.js
CHANGED
|
@@ -88,7 +88,7 @@ class Faker {
|
|
|
88
88
|
return this.random() * (max - min) + min;
|
|
89
89
|
}
|
|
90
90
|
words(length, wordOffset = this.range(0, loremWords.length)) {
|
|
91
|
-
return lorem(`${length}w`, wordOffset);
|
|
91
|
+
return length === 1 ? this.word() : lorem(`${length}w`, wordOffset);
|
|
92
92
|
}
|
|
93
93
|
word({ allowReserved = false } = {}) {
|
|
94
94
|
const words = allowReserved ? loremWords : NO_RESERVED_LOREM_WORDS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createFaker.js","sources":["../../../src/lib/createFaker.ts"],"sourcesContent":["import { Seed } from \"../types\";\n\nimport { lorem, loremWords } from \"./lorem\";\nimport { PRNG } from \"./PRNG\";\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed);\n};\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\n// JavaScript reserved words\n// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#reserved_words\n// Date: 2025-01-31\nconst RESERVED_WORDS = new Set([\n\t\"break\",\n\t\"case\",\n\t\"catch\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"else\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"finally\",\n\t\"for\",\n\t\"function\",\n\t\"if\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"new\",\n\t\"null\",\n\t\"return\",\n\t\"super\",\n\t\"switch\",\n\t\"this\",\n\t\"throw\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"while\",\n\t\"with\",\n\t\"let\",\n\t\"static\",\n\t\"yield\",\n\t\"await\",\n\t\"enum\",\n\t\"implements\",\n\t\"interface\",\n\t\"package\",\n\t\"private\",\n\t\"protected\",\n\t\"public\",\n]);\n\nconst NO_RESERVED_LOREM_WORDS = loremWords.filter(\n\t(word) => !RESERVED_WORDS.has(word),\n);\n\nexport class Faker {\n\tseed: Seed;\n\n\tprivate prng: PRNG;\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed;\n\n\t\tthis.prng = new PRNG(seed.toString());\n\t}\n\n\trandom(): number {\n\t\treturn this.prng.next();\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements);\n\n\t\treturn elements.filter(\n\t\t\t(element) => element === alwaysInclude || this.boolean(),\n\t\t);\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn lorem(`${length}w`, wordOffset);\n\t}\n\n\tword({ allowReserved = false }: { allowReserved?: boolean } = {}): string {\n\t\tconst words = allowReserved ? loremWords : NO_RESERVED_LOREM_WORDS;\n\n\t\treturn this.randomElement(words);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word({ allowReserved: true })}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAKa,MAAA,cAAc,CAAC,SAAqB;AACzC,SAAA,IAAI,MAAM,IAAI;AACtB;AAEA,MAAM,SAAS,MAAO,KAAK,KAAK;AAChC,MAAM,UAAU,SAAS;AACzB,MAAM,eAAe,MAAM,UAAU,SAAS;AAK9C,MAAM,qCAAqB,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,CAAA;AAED,MAAM,0BAA0B,WAAW,OAC1C,CAAC,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC;MAGvB,MAAK;AAAA,EAKjB,YAAY,MAAU;AAJtB;AAEQ;AAGP,SAAK,OAAO;AAEZ,SAAK,OAAO,IAAI,KAAK,KAAK,SAAU,CAAA;AAAA,EACrC;AAAA,EAEA,SAAM;AACE,WAAA,KAAK,KAAK;EAClB;AAAA,EAEA,UAAO;AACC,WAAA,KAAK,OAAY,KAAA;AAAA,EACzB;AAAA,EAEA,cAAiB,UAAsB;AACtC,WAAO,SAAS,KAAK,MAAM,GAAG,SAAS,MAAM,CAAC;AAAA,EAC/C;AAAA,EAEA,eAAkB,UAAsB;AACjC,UAAA,gBAAgB,KAAK,cAAc,QAAQ;AAE1C,WAAA,SAAS,OACf,CAAC,YAAY,YAAY,iBAAiB,KAAK,SAAS;AAAA,EAE1D;AAAA,EAEA,MAAM,KAAa,KAAW;AAC7B,WAAO,KAAK,MAAM,KAAK,WAAW,KAAK,KAAK,GAAG,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,EACnE;AAAA,EAEA,WAAW,KAAa,KAAW;AAClC,WAAO,KAAK,OAAY,KAAA,MAAM,OAAO;AAAA,EACtC;AAAA,EAEA,MAAM,QAAgB,aAAa,KAAK,MAAM,GAAG,WAAW,MAAM,GAAC;
|
|
1
|
+
{"version":3,"file":"createFaker.js","sources":["../../../src/lib/createFaker.ts"],"sourcesContent":["import { Seed } from \"../types\";\n\nimport { lorem, loremWords } from \"./lorem\";\nimport { PRNG } from \"./PRNG\";\n\nexport const createFaker = (seed: Seed): Faker => {\n\treturn new Faker(seed);\n};\n\nconst DAY_MS = 1000 * 60 * 60 * 24;\nconst YEAR_MS = DAY_MS * 365;\nconst YEAR_2022_MS = 52 * (YEAR_MS + DAY_MS / 4);\n\n// JavaScript reserved words\n// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#reserved_words\n// Date: 2025-01-31\nconst RESERVED_WORDS = new Set([\n\t\"break\",\n\t\"case\",\n\t\"catch\",\n\t\"class\",\n\t\"const\",\n\t\"continue\",\n\t\"debugger\",\n\t\"default\",\n\t\"delete\",\n\t\"do\",\n\t\"else\",\n\t\"export\",\n\t\"extends\",\n\t\"false\",\n\t\"finally\",\n\t\"for\",\n\t\"function\",\n\t\"if\",\n\t\"import\",\n\t\"in\",\n\t\"instanceof\",\n\t\"new\",\n\t\"null\",\n\t\"return\",\n\t\"super\",\n\t\"switch\",\n\t\"this\",\n\t\"throw\",\n\t\"true\",\n\t\"try\",\n\t\"typeof\",\n\t\"var\",\n\t\"void\",\n\t\"while\",\n\t\"with\",\n\t\"let\",\n\t\"static\",\n\t\"yield\",\n\t\"await\",\n\t\"enum\",\n\t\"implements\",\n\t\"interface\",\n\t\"package\",\n\t\"private\",\n\t\"protected\",\n\t\"public\",\n]);\n\nconst NO_RESERVED_LOREM_WORDS = loremWords.filter(\n\t(word) => !RESERVED_WORDS.has(word),\n);\n\nexport class Faker {\n\tseed: Seed;\n\n\tprivate prng: PRNG;\n\n\tconstructor(seed: Seed) {\n\t\tthis.seed = seed;\n\n\t\tthis.prng = new PRNG(seed.toString());\n\t}\n\n\trandom(): number {\n\t\treturn this.prng.next();\n\t}\n\n\tboolean(): boolean {\n\t\treturn this.random() >= 0.5;\n\t}\n\n\trandomElement<T>(elements: readonly T[]): T {\n\t\treturn elements[this.range(0, elements.length)];\n\t}\n\n\trandomElements<T>(elements: readonly T[]): T[] {\n\t\tconst alwaysInclude = this.randomElement(elements);\n\n\t\treturn elements.filter(\n\t\t\t(element) => element === alwaysInclude || this.boolean(),\n\t\t);\n\t}\n\n\trange(min: number, max: number): number {\n\t\treturn Math.floor(this.rangeFloat(Math.ceil(min), Math.floor(max)));\n\t}\n\n\trangeFloat(min: number, max: number): number {\n\t\treturn this.random() * (max - min) + min;\n\t}\n\n\twords(length: number, wordOffset = this.range(0, loremWords.length)): string {\n\t\treturn length === 1 ? this.word() : lorem(`${length}w`, wordOffset);\n\t}\n\n\tword({ allowReserved = false }: { allowReserved?: boolean } = {}): string {\n\t\tconst words = allowReserved ? loremWords : NO_RESERVED_LOREM_WORDS;\n\n\t\treturn this.randomElement(words);\n\t}\n\n\tlorem(\n\t\tlength: Parameters<typeof lorem>[0],\n\t\twordOffset = this.range(0, loremWords.length),\n\t): string {\n\t\treturn lorem(length, wordOffset);\n\t}\n\n\turl(): string {\n\t\treturn `https://${this.word({ allowReserved: true })}.example`;\n\t}\n\n\thexColor(): string {\n\t\treturn `#${this.hash(6)}`;\n\t}\n\n\thash(length: number): string {\n\t\tlet hash = \"\";\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst chars = this.boolean() ? \"abcdef\" : \"0123456789\";\n\n\t\t\thash += chars[this.range(0, chars.length)];\n\t\t}\n\n\t\treturn hash;\n\t}\n\n\tdate(): Date {\n\t\treturn new Date(YEAR_2022_MS + this.range(-YEAR_MS * 3, YEAR_MS * 3));\n\t}\n\n\tdateAfter(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp, timestamp + YEAR_MS * 3));\n\t}\n\n\tdateBefore(date: Date): Date {\n\t\tconst timestamp = date.getTime();\n\n\t\treturn new Date(this.range(timestamp - YEAR_MS * 3, timestamp));\n\t}\n\n\tdateBetween(min: Date, max: Date): Date {\n\t\treturn new Date(this.range(min.getTime(), max.getTime()));\n\t}\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/lib/createFaker.ts
CHANGED
|
@@ -107,7 +107,7 @@ export class Faker {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
words(length: number, wordOffset = this.range(0, loremWords.length)): string {
|
|
110
|
-
return lorem(`${length}w`, wordOffset);
|
|
110
|
+
return length === 1 ? this.word() : lorem(`${length}w`, wordOffset);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
word({ allowReserved = false }: { allowReserved?: boolean } = {}): string {
|