@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 2.42 kB
Source Map (JSON)
{"version":3,"file":"timestamp.cjs","names":["createFaker"],"sources":["../../src/value/timestamp.ts"],"sourcesContent":["import type * as prismic from \"@prismicio/client\"\n\nimport { createFaker } from \"../lib/createFaker\"\nimport type { MockValueStateConfig, MockValueConfig } from \"../types\"\n\nexport type MockTimestampValueConfig<\n\tModel extends prismic.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<State extends prismic.FieldState = prismic.FieldState> =\n\tprismic.TimestampField<State>\n\nexport const timestamp = <\n\tModel extends prismic.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 ? new Date(config.after.toISOString().split(\"T\")[0]) : undefined\n\t\tconst before = config.before ? new Date(config.before.toISOString().split(\"T\")[0]) : 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"],"mappings":";;AAiBA,MAAa,aAIZ,WAC+B;CAC/B,MAAM,QAAQ,OAAO,SAASA,oBAAAA,YAAY,OAAO,KAAK;AAEtD,KAAI,OAAO,UAAU,QACpB,QAAO;MACD;EACN,IAAI;EAMJ,MAAM,QAAQ,OAAO,QAAQ,IAAI,KAAK,OAAO,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,KAAA;EAClF,MAAM,SAAS,OAAO,SAAS,IAAI,KAAK,OAAO,OAAO,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,KAAA;AAErF,MAAI,SAAS,OACZ,QAAO,MAAM,YAAY,OAAO,OAAO;WAC7B,MACV,QAAO,MAAM,UAAU,MAAM;WACnB,OACV,QAAO,MAAM,WAAW,OAAO;MAE/B,QAAO,MAAM,MAAM;AAGpB,SAAO,KAAK,aAAa"}