@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 2.54 kB
Source Map (JSON)
{"version":3,"file":"timestamp.cjs","sources":["../../../src/value/timestamp.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockValueStateConfig, MockValueConfig } from \"../types\";\n\nexport type MockTimestampValueConfig<\n\tModel extends\n\t\tprismic.CustomTypeModelTimestampField = prismic.CustomTypeModelTimestampField,\n\tState extends prismic.FieldState = prismic.FieldState,\n> = {\n\tafter?: Date;\n\tbefore?: Date;\n} & MockValueConfig<Model> &\n\tMockValueStateConfig<State>;\n\nexport type MockTimestampValue<\n\tState extends prismic.FieldState = prismic.FieldState,\n> = prismic.TimestampField<State>;\n\nexport const timestamp = <\n\tModel extends\n\t\tprismic.CustomTypeModelTimestampField = prismic.CustomTypeModelTimestampField,\n\tState extends prismic.FieldState = \"filled\",\n>(\n\tconfig: MockTimestampValueConfig<Model, State>,\n): MockTimestampValue<State> => {\n\tconst faker = config.faker || createFaker(config.seed);\n\n\tif (config.state === \"empty\") {\n\t\treturn null as MockTimestampValue<State>;\n\t} else {\n\t\tlet date: Date;\n\n\t\t// Working with Date objects produces non-deterministic values;\n\t\t// machines can return different values due to differing\n\t\t// timezones and other unknown factors. To get around this, we\n\t\t// can can remove time from the given values and only use their dates.\n\t\tconst after = config.after\n\t\t\t? new Date(config.after.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\t\tconst before = config.before\n\t\t\t? new Date(config.before.toISOString().split(\"T\")[0])\n\t\t\t: undefined;\n\n\t\tif (after && before) {\n\t\t\tdate = faker.dateBetween(after, before);\n\t\t} else if (after) {\n\t\t\tdate = faker.dateAfter(after);\n\t\t} else if (before) {\n\t\t\tdate = faker.dateBefore(before);\n\t\t} else {\n\t\t\tdate = faker.date();\n\t\t}\n\n\t\treturn date.toISOString() as MockTimestampValue<State>;\n\t}\n};\n"],"names":["createFaker"],"mappings":";;;AAoBa,MAAA,YAAY,CAKxB,WAC8B;AAC9B,QAAM,QAAQ,OAAO,SAASA,YAAAA,YAAY,OAAO,IAAI;AAEjD,MAAA,OAAO,UAAU,SAAS;AACtB,WAAA;AAAA,EAAA,OACD;AACF,QAAA;AAMJ,UAAM,QAAQ,OAAO,QAClB,IAAI,KAAK,OAAO,MAAM,YAAa,EAAC,MAAM,GAAG,EAAE,CAAC,CAAC,IACjD;AACH,UAAM,SAAS,OAAO,SACnB,IAAI,KAAK,OAAO,OAAO,YAAa,EAAC,MAAM,GAAG,EAAE,CAAC,CAAC,IAClD;AAEH,QAAI,SAAS,QAAQ;AACb,aAAA,MAAM,YAAY,OAAO,MAAM;AAAA,eAC5B,OAAO;AACV,aAAA,MAAM,UAAU,KAAK;AAAA,eAClB,QAAQ;AACX,aAAA,MAAM,WAAW,MAAM;AAAA,IAAA,OACxB;AACN,aAAO,MAAM;IACd;AAEA,WAAO,KAAK;EACb;AACD;;"}