@prismicio/mock
Version:
Generate mock Prismic documents, fields, Slices, and models for development and testing environments
1 lines • 1.84 kB
Source Map (JSON)
{"version":3,"file":"query.cjs","sources":["../../../src/api/query.ts"],"sourcesContent":["import * as prismic from \"@prismicio/client\";\n\nimport { createFaker } from \"../lib/createFaker\";\n\nimport { MockRestApiConfig } from \"../types\";\n\nexport type MockRestApiQueryConfig<\n\tDocument extends prismic.PrismicDocument = prismic.PrismicDocument,\n> = {\n\tdocuments?: Document[];\n\tpage?: number;\n\tpageSize?: number;\n} & MockRestApiConfig;\n\nexport const query = <\n\tDocument extends prismic.PrismicDocument = prismic.PrismicDocument,\n>(\n\tconfig: MockRestApiQueryConfig<Document>,\n): prismic.Query<Document> => {\n\tconst faker = config.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.url() : null,\n\t\tprev_page: page > 1 ? faker.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"],"names":["createFaker"],"mappings":";;;AAca,MAAA,QAAQ,CAGpB,WAC4B;AAC5B,QAAM,QAAQ,OAAO,SAASA,YAAAA,YAAY,OAAO,IAAI;AAE/C,QAAA,YAAY,OAAO,aAAa;AACtC,QAAM,OAAO,KAAK,IAAI,GAAG,OAAO,QAAQ,CAAC;AACnC,QAAA,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,OAAO,YAAY,GAAG,CAAC;AAClE,QAAM,aAAa,KAAK,KAAK,UAAU,SAAS,QAAQ;AACxD,QAAM,UAAU,UAAU,OAAO,OAAO,KAAK,UAAU,OAAO,QAAQ;AAE/D,SAAA;AAAA,IACN;AAAA,IACA,WAAW,OAAO,aAAa,MAAM,IAAQ,IAAA;AAAA,IAC7C,WAAW,OAAO,IAAI,MAAM,IAAQ,IAAA;AAAA,IACpC,aAAa;AAAA,IACb,cAAc,QAAQ;AAAA,IACtB,kBAAkB;AAAA,IAClB,oBAAoB,UAAU;AAAA,IAC9B;AAAA,EAAA;AAEF;;"}