@prismicio/mock 0.0.4 → 0.0.8
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/README.md +4 -1
- package/dist/api/index.cjs +54 -35
- package/dist/api/index.cjs.map +1 -0
- package/dist/api/index.d.ts +4 -2
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/{index.mjs → index.js} +116 -63
- package/dist/api/index.js.map +1 -0
- package/dist/index.cjs +365 -417
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +157 -243
- package/dist/{index.mjs → index.js} +359 -409
- package/dist/index.js.map +1 -0
- package/dist/model/index.cjs +164 -204
- package/dist/model/index.cjs.map +1 -0
- package/dist/model/index.d.ts +73 -97
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +462 -0
- package/dist/model/index.js.map +1 -0
- package/dist/value/index.cjs +310 -519
- package/dist/value/index.cjs.map +1 -0
- package/dist/value/index.d.ts +71 -132
- package/dist/value/index.d.ts.map +1 -0
- package/dist/value/{index.mjs → index.js} +474 -629
- package/dist/value/index.js.map +1 -0
- package/package.json +21 -21
- package/src/constants.ts +3 -1
- package/src/lib/buildAlternativeLanguage.ts +18 -0
- package/src/lib/buildContentRelationshipField.ts +12 -5
- package/src/lib/buildEmbedField.ts +1 -1
- package/src/lib/buildImageFieldImage.ts +48 -0
- package/src/lib/createFaker.ts +19 -10
- package/src/lib/valueForModelMap.ts +2 -2
- package/src/model/buildMockGroupFieldMap.ts +65 -0
- package/src/model/contentRelationship.ts +14 -21
- package/src/model/customType.ts +49 -48
- package/src/model/group.ts +8 -15
- package/src/model/image.ts +13 -13
- package/src/model/index.ts +2 -0
- package/src/model/integrationFields.ts +4 -2
- package/src/model/select.ts +11 -16
- package/src/model/sharedSlice.ts +23 -30
- package/src/model/sharedSliceVariation.ts +33 -21
- package/src/model/slice.ts +15 -19
- package/src/model/sliceZone.ts +25 -42
- package/src/types.ts +130 -83
- package/src/value/color.ts +16 -6
- package/src/value/contentRelationship.ts +52 -36
- package/src/value/customType.ts +22 -3
- package/src/value/date.ts +25 -9
- package/src/value/embed.ts +18 -6
- package/src/value/geoPoint.ts +21 -9
- package/src/value/group.ts +35 -44
- package/src/value/image.ts +22 -9
- package/src/value/integrationFields.ts +26 -14
- package/src/value/keyText.ts +18 -6
- package/src/value/link.ts +33 -34
- package/src/value/linkToMedia.ts +15 -20
- package/src/value/number.ts +16 -6
- package/src/value/richText/heading.ts +7 -7
- package/src/value/richText/image.ts +6 -2
- package/src/value/richText/index.ts +1 -1
- package/src/value/select.ts +23 -8
- package/src/value/sharedSlice.ts +2 -2
- package/src/value/sharedSliceVariation.ts +6 -34
- package/src/value/slice.ts +5 -30
- package/src/value/sliceZone.ts +60 -69
- package/src/value/timestamp.ts +19 -6
- package/src/value/title.ts +26 -13
- package/src/value/uid.ts +1 -1
- package/dist/model/index.mjs +0 -448
- package/src/lib/buildImageField.ts +0 -34
- package/src/lib/buildMockGroupFieldMap.ts +0 -84
package/README.md
CHANGED
|
@@ -36,7 +36,9 @@ Whether you're helping us fix bugs, improve the docs, or spread the word, we'd l
|
|
|
36
36
|
|
|
37
37
|
**Suggesting an improvement**: [Open an issue][repo-feature-request] explaining your improvement or feature so we can discuss and learn more.
|
|
38
38
|
|
|
39
|
-
**Submitting code changes**: For small fixes, feel free to [open a
|
|
39
|
+
**Submitting code changes**: For small fixes, feel free to [open a pull request][repo-pull-requests] with a description of your changes. For large changes, please first [open an issue][repo-feature-request] so we can discuss if and how the changes should be implemented.
|
|
40
|
+
|
|
41
|
+
For more clarity on this project and its structure you can also check out the detailed [CONTRIBUTING.md][contributing] document.
|
|
40
42
|
|
|
41
43
|
## License
|
|
42
44
|
|
|
@@ -64,6 +66,7 @@ Whether you're helping us fix bugs, improve the docs, or spread the word, we'd l
|
|
|
64
66
|
|
|
65
67
|
[prismic-docs]: https://prismic.io/docs
|
|
66
68
|
[changelog]: /CHANGELOG.md
|
|
69
|
+
[contributing]: ./CONTRIBUTING.md
|
|
67
70
|
|
|
68
71
|
<!-- TODO: Replace link with a more useful one if available -->
|
|
69
72
|
|
package/dist/api/index.cjs
CHANGED
|
@@ -3,29 +3,27 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const changeCase = require('change-case');
|
|
6
|
-
const fakerLocaleEN = require('faker/lib/locales/en');
|
|
7
|
-
const Faker = require('faker/lib');
|
|
6
|
+
const fakerLocaleEN = require('faker/lib/locales/en/index.js');
|
|
7
|
+
const Faker = require('faker/lib/index.js');
|
|
8
8
|
const prismicT = require('@prismicio/types');
|
|
9
9
|
|
|
10
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
11
|
|
|
12
12
|
function _interopNamespace(e) {
|
|
13
13
|
if (e && e.__esModule) return e;
|
|
14
|
-
|
|
14
|
+
const n = Object.create(null);
|
|
15
15
|
if (e) {
|
|
16
|
-
|
|
16
|
+
for (const k in e) {
|
|
17
17
|
if (k !== 'default') {
|
|
18
|
-
|
|
18
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
19
|
Object.defineProperty(n, k, d.get ? d : {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () {
|
|
22
|
-
return e[k];
|
|
23
|
-
}
|
|
21
|
+
get: function () { return e[k]; }
|
|
24
22
|
});
|
|
25
23
|
}
|
|
26
|
-
}
|
|
24
|
+
}
|
|
27
25
|
}
|
|
28
|
-
n[
|
|
26
|
+
n["default"] = e;
|
|
29
27
|
return Object.freeze(n);
|
|
30
28
|
}
|
|
31
29
|
|
|
@@ -37,14 +35,21 @@ const prismicT__namespace = /*#__PURE__*/_interopNamespace(prismicT);
|
|
|
37
35
|
const FAKER_SEED = 1984;
|
|
38
36
|
|
|
39
37
|
const createFaker = (seed = FAKER_SEED) => {
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
let normalizedSeed;
|
|
39
|
+
if (typeof seed === "string") {
|
|
40
|
+
normalizedSeed = seed.split("").map((char) => char.charCodeAt(0));
|
|
41
|
+
} else {
|
|
42
|
+
normalizedSeed = seed;
|
|
43
|
+
}
|
|
44
|
+
const cacheKey = JSON.stringify(normalizedSeed);
|
|
45
|
+
if (createFaker.cache[cacheKey]) {
|
|
46
|
+
return createFaker.cache[cacheKey];
|
|
42
47
|
}
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
createFaker.cache[
|
|
47
|
-
return
|
|
48
|
+
const fakerInstance = new Faker__default["default"]();
|
|
49
|
+
fakerInstance.locales["en"] = fakerLocaleEN__namespace;
|
|
50
|
+
fakerInstance.seed(normalizedSeed);
|
|
51
|
+
createFaker.cache[cacheKey] = fakerInstance;
|
|
52
|
+
return fakerInstance;
|
|
48
53
|
};
|
|
49
54
|
createFaker.cache = {};
|
|
50
55
|
|
|
@@ -82,7 +87,7 @@ const timestamp = (config = {}) => {
|
|
|
82
87
|
const faker = createFaker(config.seed);
|
|
83
88
|
const after = config.after || faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
|
|
84
89
|
const before = config.before || faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
|
|
85
|
-
return faker.date.between(after, before).toISOString();
|
|
90
|
+
return config.state === "empty" ? null : faker.date.between(after, before).toISOString();
|
|
86
91
|
};
|
|
87
92
|
|
|
88
93
|
const buildEmbedField = (config) => {
|
|
@@ -169,23 +174,32 @@ const getMockEmbedData = (config) => {
|
|
|
169
174
|
return faker.random.arrayElement(dataSet$1);
|
|
170
175
|
};
|
|
171
176
|
|
|
172
|
-
const
|
|
177
|
+
const buildImageFieldImage = (config) => {
|
|
173
178
|
var _a, _b, _c, _d;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
179
|
+
if (config.state === "empty") {
|
|
180
|
+
return {
|
|
181
|
+
url: null,
|
|
182
|
+
dimensions: null,
|
|
183
|
+
alt: null,
|
|
184
|
+
copyright: null
|
|
185
|
+
};
|
|
186
|
+
} else {
|
|
187
|
+
const faker = createFaker(config.seed);
|
|
188
|
+
const url = new URL(config.imageData.url);
|
|
189
|
+
const dimensions = {
|
|
190
|
+
width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
|
|
191
|
+
height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
|
|
192
|
+
};
|
|
193
|
+
url.searchParams.set("w", dimensions.width.toString());
|
|
194
|
+
url.searchParams.set("h", dimensions.height.toString());
|
|
195
|
+
url.searchParams.set("fit", "crop");
|
|
196
|
+
return {
|
|
197
|
+
url: url.toString(),
|
|
198
|
+
dimensions,
|
|
199
|
+
alt: faker.lorem.sentence(),
|
|
200
|
+
copyright: faker.lorem.sentence()
|
|
201
|
+
};
|
|
202
|
+
}
|
|
189
203
|
};
|
|
190
204
|
|
|
191
205
|
const dataSet = [
|
|
@@ -425,7 +439,11 @@ const oList = (config = {}) => {
|
|
|
425
439
|
|
|
426
440
|
const image = (config = {}) => {
|
|
427
441
|
const imageData = getMockImageData({ seed: config.seed });
|
|
428
|
-
const imageField =
|
|
442
|
+
const imageField = buildImageFieldImage({
|
|
443
|
+
seed: config.seed,
|
|
444
|
+
imageData,
|
|
445
|
+
state: false
|
|
446
|
+
});
|
|
429
447
|
return {
|
|
430
448
|
type: prismicT__namespace.RichTextNodeType.image,
|
|
431
449
|
alt: imageField.alt,
|
|
@@ -540,3 +558,4 @@ exports.query = query;
|
|
|
540
558
|
exports.ref = ref;
|
|
541
559
|
exports.repository = repository;
|
|
542
560
|
exports.tags = tags;
|
|
561
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/constants.ts","../../src/lib/createFaker.ts","../../src/lib/generateTags.ts","../../src/model/title.ts","../../src/value/timestamp.ts","../../src/lib/buildEmbedField.ts","../../src/lib/getMockEmbedData.ts","../../src/lib/buildImageFieldImage.ts","../../src/lib/getMockImageData.ts","../../src/value/richText/heading.ts","../../src/value/richText/paragraph.ts","../../src/value/richText/preformatted.ts","../../src/value/richText/list.ts","../../src/value/richText/oList.ts","../../src/value/richText/image.ts","../../src/value/richText/embed.ts","../../src/value/richText/index.ts","../../src/api/ref.ts","../../src/api/repository.ts","../../src/api/query.ts","../../src/api/tags.ts"],"sourcesContent":["import { Seed } from \"./types\";\n\nexport const FAKER_SEED: Seed = 1984;\n","import * as fakerStatic from \"faker\";\n// @ts-expect-error - Missing .d.ts\nimport * as fakerLocaleEN from \"faker/lib/locales/en/index.js\";\n// @ts-expect-error - Missing .d.ts\nimport Faker from \"faker/lib/index.js\";\n\nimport { FAKER_SEED } from \"../constants\";\n\nexport const createFaker = (seed = FAKER_SEED): typeof fakerStatic => {\n\tlet normalizedSeed: number | number[];\n\tif (typeof seed === \"string\") {\n\t\tnormalizedSeed = seed.split(\"\").map((char) => char.charCodeAt(0));\n\t} else {\n\t\tnormalizedSeed = seed;\n\t}\n\n\tconst cacheKey = JSON.stringify(normalizedSeed);\n\n\tif (createFaker.cache[cacheKey]) {\n\t\treturn createFaker.cache[cacheKey];\n\t}\n\n\tconst fakerInstance = new Faker();\n\tfakerInstance.locales[\"en\"] = fakerLocaleEN;\n\tfakerInstance.seed(normalizedSeed);\n\n\tcreateFaker.cache[cacheKey] = fakerInstance;\n\n\treturn fakerInstance;\n};\ncreateFaker.cache = {} as Record<string, typeof fakerStatic>;\n","import * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueConfig } from \"../types\";\n\ntype GenerateTagsConfig = {\n\tmin?: number;\n\tmax?: number;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const generateTags = (config: GenerateTagsConfig): string[] => {\n\tconst faker = createFaker(config.seed);\n\n\treturn Array(\n\t\tfaker.datatype.number({\n\t\t\tmin: config.min ?? 0,\n\t\t\tmax: config.max ?? 2,\n\t\t}),\n\t)\n\t\t.fill(undefined)\n\t\t.map(() =>\n\t\t\tchangeCase.capitalCase(\n\t\t\t\tfaker.lorem.words(faker.datatype.number({ min: 1, max: 3 })),\n\t\t\t),\n\t\t);\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockModelConfig } from \"../types\";\n\nexport type MockTitleModelConfig = MockModelConfig;\n\nexport const title = (\n\tconfig: MockTitleModelConfig = {},\n): prismicT.CustomTypeModelTitleField => {\n\tconst faker = createFaker(config.seed);\n\n\tconst single = faker.random\n\t\t.arrayElements([\n\t\t\t\"heading1\",\n\t\t\t\"heading2\",\n\t\t\t\"heading3\",\n\t\t\t\"heading4\",\n\t\t\t\"heading5\",\n\t\t\t\"heading6\",\n\t\t])\n\t\t.join(\",\");\n\n\treturn {\n\t\ttype: prismicT.CustomTypeModelFieldType.StructuredText,\n\t\tconfig: {\n\t\t\tlabel: changeCase.capitalCase(faker.company.bsNoun()),\n\t\t\tplaceholder: changeCase.sentenceCase(faker.lorem.words(3)),\n\t\t\tsingle,\n\t\t\tallowTargetBlank: faker.datatype.boolean() ? true : undefined,\n\t\t},\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockTimestampValueConfig<\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\tafter?: Date;\n\tbefore?: Date;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTimestampValue<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = prismicT.TimestampField<State>;\n\nexport const timestamp = <\n\tModel extends prismicT.CustomTypeModelTimestampField = prismicT.CustomTypeModelTimestampField,\n\tState extends prismicT.FieldState = \"filled\",\n>(\n\tconfig: MockTimestampValueConfig<Model, State> = {},\n): MockTimestampValue<State> => {\n\tconst faker = createFaker(config.seed);\n\n\t// Faker seems to have problems accepting parameters for `faker.date.between`\n\t// if the parameters are too precise. We can get around this by only using\n\t// generated dates, not timestamps.\n\tconst after =\n\t\tconfig.after ||\n\t\tfaker.date.past(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\tconst before =\n\t\tconfig.before ||\n\t\tfaker.date.future(20, new Date(\"2021-03-07\")).toISOString().split(\"T\")[0];\n\n\treturn (\n\t\tconfig.state === \"empty\"\n\t\t\t? null\n\t\t\t: faker.date.between(after, before).toISOString()\n\t) as MockTimestampValue<State>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\ntype BuildEmbedFieldConfig = {\n\tembedData: MockEmbedData;\n} & Pick<MockValueConfig, \"seed\">;\n\nexport const buildEmbedField = (\n\tconfig: BuildEmbedFieldConfig,\n): prismicT.EmbedField<false> => {\n\tconst faker = createFaker(config.seed);\n\n\treturn {\n\t\ttype: faker.datatype.boolean()\n\t\t\t? prismicT.EmbedType.Link\n\t\t\t: prismicT.EmbedType.Rich,\n\t\turl: config.embedData.url,\n\t\thtml: config.embedData.html,\n\t\ttitle: changeCase.capitalCase(faker.lorem.words(3)),\n\t\tversion: faker.datatype\n\t\t\t.number({ min: 1, max: 3, precision: 10 })\n\t\t\t.toString(),\n\t\tcache_age: faker.datatype.number(),\n\t\tembed_url: config.embedData.embed_url,\n\t\tauthor_url: faker.internet.url(),\n\t\tauthor_name: faker.company.companyName(),\n\t\tprovider_name: faker.company.companyName(),\n\t\tthumbnail_width: config.embedData.thumbnail_width,\n\t\tthumbnail_height: config.embedData.thumbnail_height,\n\t\tthumbnail_url: config.embedData.thumbnail_url,\n\t\twidth: faker.datatype.number({ min: 200, max: 500 }),\n\t\theight: faker.datatype.number({ min: 200, max: 500 }),\n\t};\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockEmbedData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockEmbedData[] = [\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\n\t\tembed_url: \"https://www.youtube.com/embed/fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/fiOwHYFkUz0/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/fiOwHYFkUz0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=c-ATzcy6VkI\",\n\t\tembed_url: \"https://www.youtube.com/embed/c-ATzcy6VkI\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/c-ATzcy6VkI/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/c-ATzcy6VkI?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t},\n\t{\n\t\turl: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=fiOwHYFkUz0\",\n\t\tthumbnail_url: \"https://i.ytimg.com/vi/iewZXv94XGY/hqdefault.jpg\",\n\t\tthumbnail_height: 360,\n\t\tthumbnail_width: 480,\n\t\thtml: '<iframe width=\"200\" height=\"113\" src=\"https://www.youtube.com/embed/iewZXv94XGY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>',\n\t},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1356293316158095361\",\n\t\tembed_url: \"https://www.youtube.com/watch?v=iewZXv94XGY\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_height: null,\n\t\tthumbnail_width: null,\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Gatsby is a popular choice for Prismic users and we work hard on delivering a CMS that plays to its strengths.<br><br>But, what makes <a href=\"https://twitter.com/GatsbyJS?ref_src=twsrc%5Etfw\">@GatsbyJS</a> so popular?<br><br>Here are some of <a href=\"https://twitter.com/mxstbr?ref_src=twsrc%5Etfw\">@mxstbr</a>'s thoughts on Gatsby's success and how they're improving developer experience.<a href=\"https://t.co/ZjCPvsWWUD\">https://t.co/ZjCPvsWWUD</a> <a href=\"https://t.co/EQqzJpeNKl\">pic.twitter.com/EQqzJpeNKl</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1356293316158095361?ref_src=twsrc%5Etfw\">February 1, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t},\n\t{\n\t\turl: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/timbenniks/status/1304146886832594944\",\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">I’ve been diving deep on <a href=\"https://twitter.com/prismicio?ref_src=twsrc%5Etfw\">@prismicio</a> <a href=\"https://twitter.com/hashtag/slicemachine?src=hash&ref_src=twsrc%5Etfw\">#slicemachine</a> today. I made all my own components and I used custom slices. It works like a charm with <a href=\"https://twitter.com/nuxt_js?ref_src=twsrc%5Etfw\">@nuxt_js</a>. Also: I’m coding with this view. <a href=\"https://t.co/F0I8X9gz39\">pic.twitter.com/F0I8X9gz39</a></p>— Tim Benniks (@timbenniks) <a href=\"https://twitter.com/timbenniks/status/1304146886832594944?ref_src=twsrc%5Etfw\">September 10, 2020</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354112310252630016\",\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">We're launching a new <a href=\"https://twitter.com/hashtag/SliceContest?src=hash&ref_src=twsrc%5Etfw\">#SliceContest</a> tomorrow along with Slice Machine upgrades.<br><br>Want to know more? Join us at tomorrow's Product Meet-up👇<a href=\"https://t.co/prYSypiAvB\">https://t.co/prYSypiAvB</a><br><br>We can't tell you any further details for now, but here's a sneak peek at the prizes👀 <a href=\"https://t.co/fV1eoGlEBh\">pic.twitter.com/fV1eoGlEBh</a></p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354112310252630016?ref_src=twsrc%5Etfw\">January 26, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t},\n\t{\n\t\turl: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\tthumbnail_url: null,\n\t\tthumbnail_width: null,\n\t\tthumbnail_height: null,\n\t\tembed_url: \"https://twitter.com/prismicio/status/1354835716430319617\",\n\t\thtml: '<blockquote class=\"twitter-tweet\"><p lang=\"en\" dir=\"ltr\">Does anyone want to create a wildly popular website for discussing 'Wall Street Bets' using Prismic?<br><br>It may or may not have to look a lot like <a href=\"https://twitter.com/hashtag/reddit?src=hash&ref_src=twsrc%5Etfw\">#reddit</a> and we won't make it private.<br><br>Just asking for some friends...</p>— Prismic (@prismicio) <a href=\"https://twitter.com/prismicio/status/1354835716430319617?ref_src=twsrc%5Etfw\">January 28, 2021</a></blockquote>\\n<script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\\n',\n\t},\n];\ntype GetMockEmbedDataConfig = Pick<MockValueConfig, \"seed\">;\n\nexport const getMockEmbedData = (\n\tconfig: GetMockEmbedDataConfig,\n): MockEmbedData => {\n\tconst faker = createFaker(config.seed);\n\n\treturn faker.random.arrayElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockImageData, MockValueConfig } from \"../types\";\n\ntype BuildImageFieldConfig<\n\tState extends prismicT.FieldState = prismicT.FieldState,\n> = {\n\timageData: MockImageData;\n\tconstraint?: prismicT.CustomTypeModelImageField[\"config\"][\"constraint\"];\n} & Pick<MockValueConfig, \"seed\"> &\n\tPick<MockValueStateConfig<State>, \"state\">;\n\nexport const buildImageFieldImage = <\n\tState extends prismicT.FieldState = prismicT.FieldState,\n>(\n\tconfig: BuildImageFieldConfig<State>,\n): prismicT.ImageFieldImage<State> => {\n\tif (config.state === \"empty\") {\n\t\treturn {\n\t\t\turl: null,\n\t\t\tdimensions: null,\n\t\t\talt: null,\n\t\t\tcopyright: null,\n\t\t} as prismicT.ImageFieldImage<State>;\n\t} else {\n\t\tconst faker = createFaker(config.seed);\n\n\t\tconst url = new URL(config.imageData.url);\n\n\t\tconst dimensions = {\n\t\t\twidth: config.constraint?.width ?? config.imageData.width,\n\t\t\theight: config.constraint?.height ?? config.imageData.height,\n\t\t};\n\n\t\turl.searchParams.set(\"w\", dimensions.width.toString());\n\t\turl.searchParams.set(\"h\", dimensions.height.toString());\n\t\turl.searchParams.set(\"fit\", \"crop\");\n\n\t\treturn {\n\t\t\turl: url.toString(),\n\t\t\tdimensions,\n\t\t\talt: faker.lorem.sentence(),\n\t\t\tcopyright: faker.lorem.sentence(),\n\t\t} as prismicT.ImageFieldImage<State>;\n\t}\n};\n","import { createFaker } from \"../lib/createFaker\";\n\nimport { MockImageData, MockValueConfig } from \"../types\";\n\nconst dataSet: MockImageData[] = [\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537529428-15bcbeecfe4d\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470071459604-3b5ec3a7fe05\",\n\t\twidth: 7372,\n\t\theight: 4392,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1441974231531-c6227db76b6e\",\n\t\twidth: 2560,\n\t\theight: 1705,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1418065460487-3e41a6c84dc5\",\n\t\twidth: 2200,\n\t\theight: 1467,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1426604966848-d7adac402bff\",\n\t\twidth: 5616,\n\t\theight: 3744,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1604537466608-109fa2f16c3b\",\n\t\twidth: 4240,\n\t\theight: 2832,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1497436072909-60f360e1d4b1\",\n\t\twidth: 2560,\n\t\theight: 1440,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/reserve/HgZuGu3gSD6db21T3lxm_San%20Zenone.jpg\",\n\t\twidth: 6373,\n\t\theight: 4253,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504198266287-1659872e6590\",\n\t\twidth: 4272,\n\t\theight: 2848,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1470770903676-69b98201ea1c\",\n\t\twidth: 4554,\n\t\theight: 3036,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1587502537745-84b86da1204f\",\n\t\twidth: 6550,\n\t\theight: 4367,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1431794062232-2a99a5431c6c\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1446329813274-7c9036bd9a1f\",\n\t\twidth: 6000,\n\t\theight: 4000,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1504567961542-e24d9439a724\",\n\t\twidth: 4608,\n\t\theight: 3456,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1444464666168-49d633b86797\",\n\t\twidth: 4844,\n\t\theight: 3234,\n\t},\n\t{\n\t\turl: \"https://images.unsplash.com/photo-1553531384-397c80973a0b\",\n\t\twidth: 4335,\n\t\theight: 6502,\n\t},\n];\n\ntype GetMockImageDataConfig = Pick<MockValueConfig, \"seed\">;\n\nexport const getMockImageData = (\n\tconfig: GetMockImageDataConfig,\n): MockImageData => {\n\tconst faker = createFaker(config.seed);\n\n\treturn faker.random.arrayElement(dataSet);\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\n\ntype RichTextNodeTitleType =\n\t| typeof prismicT.RichTextNodeType.heading1\n\t| typeof prismicT.RichTextNodeType.heading2\n\t| typeof prismicT.RichTextNodeType.heading3\n\t| typeof prismicT.RichTextNodeType.heading4\n\t| typeof prismicT.RichTextNodeType.heading5\n\t| typeof prismicT.RichTextNodeType.heading6;\n\ntype RTHeadingNode =\n\t| prismicT.RTHeading1Node\n\t| prismicT.RTHeading2Node\n\t| prismicT.RTHeading3Node\n\t| prismicT.RTHeading4Node\n\t| prismicT.RTHeading5Node\n\t| prismicT.RTHeading6Node;\n\nconst patterns = {\n\tshort: {\n\t\tminWords: 1,\n\t\tmaxWords: 3,\n\t},\n\tmedium: {\n\t\tminWords: 3,\n\t\tmaxWords: 6,\n\t},\n\tlong: {\n\t\tminWords: 6,\n\t\tmaxWords: 12,\n\t},\n} as const;\n\nexport type MockRichTextHeadingValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const heading = (\n\tconfig: MockRichTextHeadingValueConfig = {},\n): RTHeadingNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model = config.model || modelGen.title({ seed: config.seed });\n\n\tconst types = (\n\t\t\"single\" in model.config ? model.config.single : model.config.multi\n\t)\n\t\t.split(\",\")\n\t\t.filter((type) =>\n\t\t\t[\n\t\t\t\tprismicT.RichTextNodeType.heading1,\n\t\t\t\tprismicT.RichTextNodeType.heading2,\n\t\t\t\tprismicT.RichTextNodeType.heading3,\n\t\t\t\tprismicT.RichTextNodeType.heading4,\n\t\t\t\tprismicT.RichTextNodeType.heading5,\n\t\t\t\tprismicT.RichTextNodeType.heading6,\n\t\t\t].includes(type as RichTextNodeTitleType),\n\t\t) as RichTextNodeTitleType[];\n\tconst type = faker.random.arrayElement(types);\n\n\tif (type) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\n\t\tconst pattern = patterns[patternKey];\n\n\t\treturn {\n\t\t\ttype,\n\t\t\ttext: changeCase.capitalCase(\n\t\t\t\tfaker.lorem.words(\n\t\t\t\t\tfaker.datatype.number({\n\t\t\t\t\t\tmin: pattern.minWords,\n\t\t\t\t\t\tmax: pattern.maxWords,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t),\n\t\t\tspans: [],\n\t\t};\n\t} else {\n\t\treturn undefined;\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextParagraphValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const paragraph = (\n\tconfig: MockRichTextParagraphValueConfig = {},\n): prismicT.RTParagraphNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.paragraph,\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tsentenceCount: 2,\n\t},\n\tmedium: {\n\t\tsentenceCount: 6,\n\t},\n\tlong: {\n\t\tsentenceCount: 12,\n\t},\n} as const;\n\ntype MockRichTextPreformattedValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const preformatted = (\n\tconfig: MockRichTextPreformattedValueConfig = {},\n): prismicT.RTPreformattedNode | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.preformatted,\n\t\t// TODO: Use code, not lorem ipsum.\n\t\ttext: faker.lorem.paragraph(pattern.sentenceCount),\n\t\tspans: [],\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const list = (\n\tconfig: MockRichTextListValueConfig = {},\n): prismicT.RTListItemNode[] | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.listItem,\n\t\t\t\ttext: faker.lorem.sentence(),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\nconst patterns = {\n\tshort: {\n\t\tminItems: 1,\n\t\tmaxItems: 3,\n\t},\n\tmedium: {\n\t\tminItems: 3,\n\t\tmaxItems: 6,\n\t},\n\tlong: {\n\t\tminItems: 6,\n\t\tmaxItems: 12,\n\t},\n} as const;\n\ntype MockRichTextOListValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & MockRichTextValueConfig;\n\nexport const oList = (\n\tconfig: MockRichTextOListValueConfig = {},\n): prismicT.RTOListItemNode[] | undefined => {\n\tconst faker = createFaker(config.seed);\n\n\tconst patternKey =\n\t\tconfig.pattern ||\n\t\tfaker.random.arrayElement(\n\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t);\n\tconst pattern = patterns[patternKey];\n\n\tconst itemsCount = faker.datatype.number({\n\t\tmin: pattern.minItems,\n\t\tmax: pattern.maxItems,\n\t});\n\n\treturn Array(itemsCount)\n\t\t.fill(undefined)\n\t\t.map(() => {\n\t\t\treturn {\n\t\t\t\ttype: prismicT.RichTextNodeType.oListItem,\n\t\t\t\ttext: faker.lorem.sentence(),\n\t\t\t\tspans: [],\n\t\t\t};\n\t\t});\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildImageFieldImage } from \"../../lib/buildImageFieldImage\";\nimport { getMockImageData } from \"../../lib/getMockImageData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextImageValueConfig = MockRichTextValueConfig;\n\nexport const image = (\n\tconfig: MockRichTextImageValueConfig = {},\n): prismicT.RTImageNode | undefined => {\n\tconst imageData = getMockImageData({ seed: config.seed });\n\tconst imageField = buildImageFieldImage({\n\t\tseed: config.seed,\n\t\timageData,\n\t\tstate: false,\n\t});\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.image,\n\t\talt: imageField.alt,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\turl: imageField.url!,\n\t\tcopyright: imageField.copyright,\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tdimensions: imageField.dimensions!,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { buildEmbedField } from \"../../lib/buildEmbedField\";\nimport { getMockEmbedData } from \"../../lib/getMockEmbedData\";\n\nimport { MockRichTextValueConfig } from \"../../types\";\n\ntype MockRichTextEmbedValueConfig = MockRichTextValueConfig;\n\nexport const embed = (\n\tconfig: MockRichTextEmbedValueConfig = {},\n): prismicT.RTEmbedNode | undefined => {\n\tconst embedData = getMockEmbedData({ seed: config.seed });\n\tconst embedField = buildEmbedField({ seed: config.seed, embedData });\n\n\treturn {\n\t\ttype: prismicT.RichTextNodeType.embed,\n\t\toembed: embedField,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../../lib/createFaker\";\n\nimport { MockRichTextValueConfig as BaseMockRichTextValueConfig } from \"../../types\";\n\nimport * as modelGen from \"../../model\";\nimport { heading } from \"./heading\";\nimport { paragraph } from \"./paragraph\";\nimport { preformatted } from \"./preformatted\";\nimport { list } from \"./list\";\nimport { oList } from \"./oList\";\nimport { image } from \"./image\";\nimport { embed } from \"./embed\";\n\nconst patterns = {\n\tshort: {\n\t\tblockCountMin: 1,\n\t\tblockCountMax: 2,\n\t},\n\tmedium: {\n\t\tblockCountMin: 2,\n\t\tblockCountMax: 4,\n\t},\n\tlong: {\n\t\tblockCountMin: 4,\n\t\tblockCountMax: 8,\n\t},\n} as const;\n\nexport type MockRichTextValueConfig = {\n\tpattern?: keyof typeof patterns;\n} & BaseMockRichTextValueConfig<prismicT.CustomTypeModelRichTextField>;\n\nconst generators = {\n\t[prismicT.RichTextNodeType.heading1]: heading,\n\t[prismicT.RichTextNodeType.heading2]: heading,\n\t[prismicT.RichTextNodeType.heading3]: heading,\n\t[prismicT.RichTextNodeType.heading4]: heading,\n\t[prismicT.RichTextNodeType.heading5]: heading,\n\t[prismicT.RichTextNodeType.heading6]: heading,\n\t[prismicT.RichTextNodeType.paragraph]: paragraph,\n\t[prismicT.RichTextNodeType.preformatted]: preformatted,\n\t[prismicT.RichTextNodeType.listItem]: list,\n\t[prismicT.RichTextNodeType.oListItem]: oList,\n\t[prismicT.RichTextNodeType.image]: image,\n\t[prismicT.RichTextNodeType.embed]: embed,\n};\n\nexport const richText = (\n\tconfig: MockRichTextValueConfig = {},\n): prismicT.RichTextField => {\n\tconst faker = createFaker(config.seed);\n\n\tconst model =\n\t\tconfig.model ||\n\t\tmodelGen.richText({\n\t\t\tseed: config.seed,\n\t\t\twithMultipleBlocks: true,\n\t\t});\n\tconst supportsMultipleBlocks = \"multi\" in model.config;\n\tconst types = (\n\t\t\"multi\" in model.config ? model.config.multi : model.config.single\n\t)\n\t\t.split(\",\")\n\t\t.filter((type) =>\n\t\t\tObject.keys(generators).includes(type),\n\t\t) as prismicT.RTNode[\"type\"][];\n\n\tif (types.length > 0) {\n\t\tconst patternKey =\n\t\t\tconfig.pattern ||\n\t\t\tfaker.random.arrayElement(\n\t\t\t\tObject.keys(patterns) as (keyof typeof patterns)[],\n\t\t\t);\n\t\tconst pattern = patterns[patternKey];\n\n\t\tconst blockCount = supportsMultipleBlocks\n\t\t\t? faker.datatype.number({\n\t\t\t\t\tmin: pattern.blockCountMin,\n\t\t\t\t\tmax: pattern.blockCountMax,\n\t\t\t })\n\t\t\t: 1;\n\n\t\treturn Array(blockCount)\n\t\t\t.fill(undefined)\n\t\t\t.map(() => {\n\t\t\t\tconst type = faker.random.arrayElement(types);\n\t\t\t\tconst generator = generators[type];\n\n\t\t\t\treturn generator({ seed: config.seed, model });\n\t\t\t})\n\t\t\t.flat()\n\t\t\t.filter((block): block is prismicT.RTNode => block !== undefined)\n\t\t\t.slice(0, blockCount) as prismicT.RichTextField;\n\t} else {\n\t\treturn [];\n\t}\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { MockRestApiConfig } from \"../types\";\nimport { timestamp } from \"../value\";\n\nexport type MockRestApiRefConfig<IsScheduled extends boolean = false> = {\n\tisMasterRef?: boolean;\n\tisScheduled?: IsScheduled;\n} & MockRestApiConfig;\n\nexport type MockRestApiRefValue<IsScheduled extends boolean = false> = Omit<\n\tprismicT.Ref,\n\t\"scheduledAt\"\n> &\n\t(IsScheduled extends true\n\t\t? { scheduledAt: string }\n\t\t: { scheduledAt?: never });\n\nexport const ref = <IsScheduled extends boolean = false>(\n\tconfig: MockRestApiRefConfig<IsScheduled> = {},\n): MockRestApiRefValue<IsScheduled> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst value: prismicT.Ref = {\n\t\tid: faker.git.shortSha(),\n\t\tref: faker.git.shortSha(),\n\t\tisMasterRef: config.isMasterRef ?? false,\n\t\tlabel: config.isMasterRef\n\t\t\t? \"Master\"\n\t\t\t: changeCase.capitalCase(faker.company.bsNoun()),\n\t};\n\n\tif (config.isScheduled) {\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tvalue.scheduledAt = timestamp({ seed: config.seed })!;\n\t}\n\n\treturn value as MockRestApiRefValue<IsScheduled>;\n};\n","import * as prismicT from \"@prismicio/types\";\nimport * as changeCase from \"change-case\";\n\nimport { createFaker } from \"../lib/createFaker\";\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\nimport { ref } from \"./ref\";\n\nexport type MockRestApiRepositoryConfig = {\n\tcustomTypeModels?: prismicT.CustomTypeModel[];\n\twithReleases?: boolean;\n} & MockRestApiConfig;\n\nexport const repository = (\n\tconfig: MockRestApiRepositoryConfig = {},\n): prismicT.Repository => {\n\tconst faker = createFaker(config.seed);\n\n\tconst types = (config.customTypeModels || []).reduce((acc, model) => {\n\t\tacc[model.id] = model.label;\n\n\t\treturn acc;\n\t}, {} as prismicT.Repository[\"types\"]);\n\n\treturn {\n\t\trefs: [\n\t\t\tref({ seed: config.seed, isMasterRef: true }),\n\t\t\t...(config.withReleases\n\t\t\t\t? [ref({ seed: config.seed }), ref({ seed: config.seed })]\n\t\t\t\t: []),\n\t\t],\n\t\tintegrationFieldsRef: ref({ seed: config.seed }).ref,\n\t\ttypes,\n\t\tlanguages: [\n\t\t\t{\n\t\t\t\tid: faker.lorem.word(),\n\t\t\t\tname: changeCase.capitalCase(faker.lorem.word()),\n\t\t\t},\n\t\t],\n\t\ttags: generateTags({\n\t\t\tseed: config.seed,\n\t\t\tmin: 1,\n\t\t\tmax: 10,\n\t\t}),\n\t\tforms: {},\n\t\tlicense: \"All Rights Reserved\",\n\t\tversion: faker.git.shortSha(),\n\t\tbookmarks: {},\n\t\texperiments: {},\n\t\toauth_token: faker.internet.url(),\n\t\toauth_initiate: faker.internet.url(),\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiQueryConfig<\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n> = {\n\tdocuments?: Document[];\n\tpage?: number;\n\tpageSize?: number;\n} & MockRestApiConfig;\n\nexport const query = <\n\tDocument extends prismicT.PrismicDocument = prismicT.PrismicDocument,\n>(\n\tconfig: MockRestApiQueryConfig<Document> = {},\n): prismicT.Query<Document> => {\n\tconst faker = createFaker(config.seed);\n\n\tconst documents = config.documents || [];\n\tconst page = Math.max(1, config.page ?? 1);\n\tconst pageSize = Math.min(100, Math.max(1, config.pageSize ?? 100));\n\tconst totalPages = Math.ceil(documents.length / pageSize);\n\tconst results = documents.slice((page - 1) * pageSize, page * pageSize);\n\n\treturn {\n\t\tpage,\n\t\tnext_page: page < totalPages ? faker.internet.url() : null,\n\t\tprev_page: page > 1 ? faker.internet.url() : null,\n\t\ttotal_pages: totalPages,\n\t\tresults_size: results.length,\n\t\tresults_per_page: pageSize,\n\t\ttotal_results_size: documents.length,\n\t\tresults,\n\t};\n};\n","import * as prismicT from \"@prismicio/types\";\n\nimport { generateTags } from \"../lib/generateTags\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiTagsConfig = MockRestApiConfig;\n\nexport const tags = (config: MockRestApiTagsConfig = {}): prismicT.Tags => {\n\treturn generateTags({\n\t\tseed: config.seed,\n\t\tmin: 1,\n\t\tmax: 10,\n\t});\n};\n"],"names":["Faker","fakerLocaleEN","changeCase","prismicT","dataSet","patterns","modelGen.title"],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as prismicT from '@prismicio/types';
|
|
2
2
|
|
|
3
|
+
declare type Seed = string | number | number[];
|
|
3
4
|
declare type MockRestApiConfig = {
|
|
4
|
-
seed?:
|
|
5
|
+
seed?: Seed;
|
|
5
6
|
};
|
|
6
7
|
|
|
7
8
|
declare type MockRestApiRepositoryConfig = {
|
|
@@ -26,9 +27,10 @@ declare type MockRestApiQueryConfig<Document extends prismicT.PrismicDocument =
|
|
|
26
27
|
page?: number;
|
|
27
28
|
pageSize?: number;
|
|
28
29
|
} & MockRestApiConfig;
|
|
29
|
-
declare const query: <Document_1 extends prismicT.PrismicDocument<Record<string,
|
|
30
|
+
declare const query: <Document_1 extends prismicT.PrismicDocument<Record<string, any>, string, string> = prismicT.PrismicDocument<Record<string, any>, string, string>>(config?: MockRestApiQueryConfig<Document_1>) => prismicT.Query<Document_1>;
|
|
30
31
|
|
|
31
32
|
declare type MockRestApiTagsConfig = MockRestApiConfig;
|
|
32
33
|
declare const tags: (config?: MockRestApiTagsConfig) => prismicT.Tags<string>;
|
|
33
34
|
|
|
34
35
|
export { MockRestApiQueryConfig, MockRestApiRefConfig, MockRestApiRefValue, MockRestApiRepositoryConfig, MockRestApiTagsConfig, query, ref, repository, tags };
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1,19 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const changeCase = require('change-case');
|
|
6
|
+
const fakerLocaleEN = require('faker/lib/locales/en/index.js');
|
|
7
|
+
const Faker = require('faker/lib/index.js');
|
|
8
|
+
const prismicT = require('@prismicio/types');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
function _interopNamespace(e) {
|
|
13
|
+
if (e && e.__esModule) return e;
|
|
14
|
+
const n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
for (const k in e) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
n["default"] = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const changeCase__namespace = /*#__PURE__*/_interopNamespace(changeCase);
|
|
31
|
+
const fakerLocaleEN__namespace = /*#__PURE__*/_interopNamespace(fakerLocaleEN);
|
|
32
|
+
const Faker__default = /*#__PURE__*/_interopDefaultLegacy(Faker);
|
|
33
|
+
const prismicT__namespace = /*#__PURE__*/_interopNamespace(prismicT);
|
|
5
34
|
|
|
6
35
|
const FAKER_SEED = 1984;
|
|
7
36
|
|
|
8
37
|
const createFaker = (seed = FAKER_SEED) => {
|
|
9
|
-
|
|
10
|
-
|
|
38
|
+
let normalizedSeed;
|
|
39
|
+
if (typeof seed === "string") {
|
|
40
|
+
normalizedSeed = seed.split("").map((char) => char.charCodeAt(0));
|
|
41
|
+
} else {
|
|
42
|
+
normalizedSeed = seed;
|
|
43
|
+
}
|
|
44
|
+
const cacheKey = JSON.stringify(normalizedSeed);
|
|
45
|
+
if (createFaker.cache[cacheKey]) {
|
|
46
|
+
return createFaker.cache[cacheKey];
|
|
11
47
|
}
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
createFaker.cache[
|
|
16
|
-
return
|
|
48
|
+
const fakerInstance = new Faker__default["default"]();
|
|
49
|
+
fakerInstance.locales["en"] = fakerLocaleEN__namespace;
|
|
50
|
+
fakerInstance.seed(normalizedSeed);
|
|
51
|
+
createFaker.cache[cacheKey] = fakerInstance;
|
|
52
|
+
return fakerInstance;
|
|
17
53
|
};
|
|
18
54
|
createFaker.cache = {};
|
|
19
55
|
|
|
@@ -23,7 +59,7 @@ const generateTags = (config) => {
|
|
|
23
59
|
return Array(faker.datatype.number({
|
|
24
60
|
min: (_a = config.min) != null ? _a : 0,
|
|
25
61
|
max: (_b = config.max) != null ? _b : 2
|
|
26
|
-
})).fill(void 0).map(() =>
|
|
62
|
+
})).fill(void 0).map(() => changeCase__namespace.capitalCase(faker.lorem.words(faker.datatype.number({ min: 1, max: 3 }))));
|
|
27
63
|
};
|
|
28
64
|
|
|
29
65
|
const title = (config = {}) => {
|
|
@@ -37,10 +73,10 @@ const title = (config = {}) => {
|
|
|
37
73
|
"heading6"
|
|
38
74
|
]).join(",");
|
|
39
75
|
return {
|
|
40
|
-
type:
|
|
76
|
+
type: prismicT__namespace.CustomTypeModelFieldType.StructuredText,
|
|
41
77
|
config: {
|
|
42
|
-
label:
|
|
43
|
-
placeholder:
|
|
78
|
+
label: changeCase__namespace.capitalCase(faker.company.bsNoun()),
|
|
79
|
+
placeholder: changeCase__namespace.sentenceCase(faker.lorem.words(3)),
|
|
44
80
|
single,
|
|
45
81
|
allowTargetBlank: faker.datatype.boolean() ? true : void 0
|
|
46
82
|
}
|
|
@@ -51,16 +87,16 @@ const timestamp = (config = {}) => {
|
|
|
51
87
|
const faker = createFaker(config.seed);
|
|
52
88
|
const after = config.after || faker.date.past(20, new Date("2021-03-07")).toISOString().split("T")[0];
|
|
53
89
|
const before = config.before || faker.date.future(20, new Date("2021-03-07")).toISOString().split("T")[0];
|
|
54
|
-
return faker.date.between(after, before).toISOString();
|
|
90
|
+
return config.state === "empty" ? null : faker.date.between(after, before).toISOString();
|
|
55
91
|
};
|
|
56
92
|
|
|
57
93
|
const buildEmbedField = (config) => {
|
|
58
94
|
const faker = createFaker(config.seed);
|
|
59
95
|
return {
|
|
60
|
-
type: faker.datatype.boolean() ?
|
|
96
|
+
type: faker.datatype.boolean() ? prismicT__namespace.EmbedType.Link : prismicT__namespace.EmbedType.Rich,
|
|
61
97
|
url: config.embedData.url,
|
|
62
98
|
html: config.embedData.html,
|
|
63
|
-
title:
|
|
99
|
+
title: changeCase__namespace.capitalCase(faker.lorem.words(3)),
|
|
64
100
|
version: faker.datatype.number({ min: 1, max: 3, precision: 10 }).toString(),
|
|
65
101
|
cache_age: faker.datatype.number(),
|
|
66
102
|
embed_url: config.embedData.embed_url,
|
|
@@ -138,23 +174,32 @@ const getMockEmbedData = (config) => {
|
|
|
138
174
|
return faker.random.arrayElement(dataSet$1);
|
|
139
175
|
};
|
|
140
176
|
|
|
141
|
-
const
|
|
177
|
+
const buildImageFieldImage = (config) => {
|
|
142
178
|
var _a, _b, _c, _d;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
179
|
+
if (config.state === "empty") {
|
|
180
|
+
return {
|
|
181
|
+
url: null,
|
|
182
|
+
dimensions: null,
|
|
183
|
+
alt: null,
|
|
184
|
+
copyright: null
|
|
185
|
+
};
|
|
186
|
+
} else {
|
|
187
|
+
const faker = createFaker(config.seed);
|
|
188
|
+
const url = new URL(config.imageData.url);
|
|
189
|
+
const dimensions = {
|
|
190
|
+
width: (_b = (_a = config.constraint) == null ? void 0 : _a.width) != null ? _b : config.imageData.width,
|
|
191
|
+
height: (_d = (_c = config.constraint) == null ? void 0 : _c.height) != null ? _d : config.imageData.height
|
|
192
|
+
};
|
|
193
|
+
url.searchParams.set("w", dimensions.width.toString());
|
|
194
|
+
url.searchParams.set("h", dimensions.height.toString());
|
|
195
|
+
url.searchParams.set("fit", "crop");
|
|
196
|
+
return {
|
|
197
|
+
url: url.toString(),
|
|
198
|
+
dimensions,
|
|
199
|
+
alt: faker.lorem.sentence(),
|
|
200
|
+
copyright: faker.lorem.sentence()
|
|
201
|
+
};
|
|
202
|
+
}
|
|
158
203
|
};
|
|
159
204
|
|
|
160
205
|
const dataSet = [
|
|
@@ -262,12 +307,12 @@ const heading = (config = {}) => {
|
|
|
262
307
|
const faker = createFaker(config.seed);
|
|
263
308
|
const model = config.model || title({ seed: config.seed });
|
|
264
309
|
const types = ("single" in model.config ? model.config.single : model.config.multi).split(",").filter((type2) => [
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
310
|
+
prismicT__namespace.RichTextNodeType.heading1,
|
|
311
|
+
prismicT__namespace.RichTextNodeType.heading2,
|
|
312
|
+
prismicT__namespace.RichTextNodeType.heading3,
|
|
313
|
+
prismicT__namespace.RichTextNodeType.heading4,
|
|
314
|
+
prismicT__namespace.RichTextNodeType.heading5,
|
|
315
|
+
prismicT__namespace.RichTextNodeType.heading6
|
|
271
316
|
].includes(type2));
|
|
272
317
|
const type = faker.random.arrayElement(types);
|
|
273
318
|
if (type) {
|
|
@@ -275,7 +320,7 @@ const heading = (config = {}) => {
|
|
|
275
320
|
const pattern = patterns$4[patternKey];
|
|
276
321
|
return {
|
|
277
322
|
type,
|
|
278
|
-
text:
|
|
323
|
+
text: changeCase__namespace.capitalCase(faker.lorem.words(faker.datatype.number({
|
|
279
324
|
min: pattern.minWords,
|
|
280
325
|
max: pattern.maxWords
|
|
281
326
|
}))),
|
|
@@ -302,7 +347,7 @@ const paragraph = (config = {}) => {
|
|
|
302
347
|
const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$3));
|
|
303
348
|
const pattern = patterns$3[patternKey];
|
|
304
349
|
return {
|
|
305
|
-
type:
|
|
350
|
+
type: prismicT__namespace.RichTextNodeType.paragraph,
|
|
306
351
|
text: faker.lorem.paragraph(pattern.sentenceCount),
|
|
307
352
|
spans: []
|
|
308
353
|
};
|
|
@@ -324,7 +369,7 @@ const preformatted = (config = {}) => {
|
|
|
324
369
|
const patternKey = config.pattern || faker.random.arrayElement(Object.keys(patterns$2));
|
|
325
370
|
const pattern = patterns$2[patternKey];
|
|
326
371
|
return {
|
|
327
|
-
type:
|
|
372
|
+
type: prismicT__namespace.RichTextNodeType.preformatted,
|
|
328
373
|
text: faker.lorem.paragraph(pattern.sentenceCount),
|
|
329
374
|
spans: []
|
|
330
375
|
};
|
|
@@ -354,7 +399,7 @@ const list = (config = {}) => {
|
|
|
354
399
|
});
|
|
355
400
|
return Array(itemsCount).fill(void 0).map(() => {
|
|
356
401
|
return {
|
|
357
|
-
type:
|
|
402
|
+
type: prismicT__namespace.RichTextNodeType.listItem,
|
|
358
403
|
text: faker.lorem.sentence(),
|
|
359
404
|
spans: []
|
|
360
405
|
};
|
|
@@ -385,7 +430,7 @@ const oList = (config = {}) => {
|
|
|
385
430
|
});
|
|
386
431
|
return Array(itemsCount).fill(void 0).map(() => {
|
|
387
432
|
return {
|
|
388
|
-
type:
|
|
433
|
+
type: prismicT__namespace.RichTextNodeType.oListItem,
|
|
389
434
|
text: faker.lorem.sentence(),
|
|
390
435
|
spans: []
|
|
391
436
|
};
|
|
@@ -394,9 +439,13 @@ const oList = (config = {}) => {
|
|
|
394
439
|
|
|
395
440
|
const image = (config = {}) => {
|
|
396
441
|
const imageData = getMockImageData({ seed: config.seed });
|
|
397
|
-
const imageField =
|
|
442
|
+
const imageField = buildImageFieldImage({
|
|
443
|
+
seed: config.seed,
|
|
444
|
+
imageData,
|
|
445
|
+
state: false
|
|
446
|
+
});
|
|
398
447
|
return {
|
|
399
|
-
type:
|
|
448
|
+
type: prismicT__namespace.RichTextNodeType.image,
|
|
400
449
|
alt: imageField.alt,
|
|
401
450
|
url: imageField.url,
|
|
402
451
|
copyright: imageField.copyright,
|
|
@@ -408,24 +457,24 @@ const embed = (config = {}) => {
|
|
|
408
457
|
const embedData = getMockEmbedData({ seed: config.seed });
|
|
409
458
|
const embedField = buildEmbedField({ seed: config.seed, embedData });
|
|
410
459
|
return {
|
|
411
|
-
type:
|
|
460
|
+
type: prismicT__namespace.RichTextNodeType.embed,
|
|
412
461
|
oembed: embedField
|
|
413
462
|
};
|
|
414
463
|
};
|
|
415
464
|
|
|
416
465
|
({
|
|
417
|
-
[
|
|
418
|
-
[
|
|
419
|
-
[
|
|
420
|
-
[
|
|
421
|
-
[
|
|
422
|
-
[
|
|
423
|
-
[
|
|
424
|
-
[
|
|
425
|
-
[
|
|
426
|
-
[
|
|
427
|
-
[
|
|
428
|
-
[
|
|
466
|
+
[prismicT__namespace.RichTextNodeType.heading1]: heading,
|
|
467
|
+
[prismicT__namespace.RichTextNodeType.heading2]: heading,
|
|
468
|
+
[prismicT__namespace.RichTextNodeType.heading3]: heading,
|
|
469
|
+
[prismicT__namespace.RichTextNodeType.heading4]: heading,
|
|
470
|
+
[prismicT__namespace.RichTextNodeType.heading5]: heading,
|
|
471
|
+
[prismicT__namespace.RichTextNodeType.heading6]: heading,
|
|
472
|
+
[prismicT__namespace.RichTextNodeType.paragraph]: paragraph,
|
|
473
|
+
[prismicT__namespace.RichTextNodeType.preformatted]: preformatted,
|
|
474
|
+
[prismicT__namespace.RichTextNodeType.listItem]: list,
|
|
475
|
+
[prismicT__namespace.RichTextNodeType.oListItem]: oList,
|
|
476
|
+
[prismicT__namespace.RichTextNodeType.image]: image,
|
|
477
|
+
[prismicT__namespace.RichTextNodeType.embed]: embed
|
|
429
478
|
});
|
|
430
479
|
|
|
431
480
|
const ref = (config = {}) => {
|
|
@@ -435,7 +484,7 @@ const ref = (config = {}) => {
|
|
|
435
484
|
id: faker.git.shortSha(),
|
|
436
485
|
ref: faker.git.shortSha(),
|
|
437
486
|
isMasterRef: (_a = config.isMasterRef) != null ? _a : false,
|
|
438
|
-
label: config.isMasterRef ? "Master" :
|
|
487
|
+
label: config.isMasterRef ? "Master" : changeCase__namespace.capitalCase(faker.company.bsNoun())
|
|
439
488
|
};
|
|
440
489
|
if (config.isScheduled) {
|
|
441
490
|
value.scheduledAt = timestamp({ seed: config.seed });
|
|
@@ -459,7 +508,7 @@ const repository = (config = {}) => {
|
|
|
459
508
|
languages: [
|
|
460
509
|
{
|
|
461
510
|
id: faker.lorem.word(),
|
|
462
|
-
name:
|
|
511
|
+
name: changeCase__namespace.capitalCase(faker.lorem.word())
|
|
463
512
|
}
|
|
464
513
|
],
|
|
465
514
|
tags: generateTags({
|
|
@@ -505,4 +554,8 @@ const tags = (config = {}) => {
|
|
|
505
554
|
});
|
|
506
555
|
};
|
|
507
556
|
|
|
508
|
-
|
|
557
|
+
exports.query = query;
|
|
558
|
+
exports.ref = ref;
|
|
559
|
+
exports.repository = repository;
|
|
560
|
+
exports.tags = tags;
|
|
561
|
+
//# sourceMappingURL=index.js.map
|