Skip to content

Commit

Permalink
fix: type PrismicDocument.*_publication_date as `TimestampField<"fi…
Browse files Browse the repository at this point in the history
…lled">` (#304)

* fix: type `PrismicDocument.*_publication_date` as `TimestampField<"filled">`

* chore: remove self-referrential `@prismicio/client` dependency

* refactor: remove `@ts-expect-error` comments
  • Loading branch information
angeloashmore authored Jun 3, 2023
1 parent db85d21 commit 7cce22a
Show file tree
Hide file tree
Showing 9 changed files with 197 additions and 193 deletions.
242 changes: 112 additions & 130 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
"imgix-url-builder": "^0.0.3"
},
"devDependencies": {
"@prismicio/mock": "^0.2.0",
"@prismicio/mock": "^0.3.0",
"@prismicio/types-internal": "2.0.0-alpha.11",
"@size-limit/preset-small-lib": "^8.2.4",
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
Expand Down
5 changes: 3 additions & 2 deletions src/types/value/document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { AnyRegularField } from "./types";

import { GroupField } from "./group";
import { SliceZone } from "./sliceZone";
import { TimestampField } from "./timestamp";

/**
* Document metadata for a translation of a Prismic document.
Expand Down Expand Up @@ -46,11 +47,11 @@ export interface PrismicDocumentHeader<TypeEnum = string, LangEnum = string> {
/**
* The timestamp at which the document was first published.
*/
first_publication_date: string;
first_publication_date: TimestampField<"filled">;
/**
* The timestamp at which the document was last published.
*/
last_publication_date: string;
last_publication_date: TimestampField<"filled">;
/**
* Slugs associated with document.
*
Expand Down
15 changes: 15 additions & 0 deletions test/helpers-asDate.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { expect, it } from "vitest";

import { documentFixture } from "./__fixtures__/document";

import { asDate } from "../src";

it("returns null for nullish inputs", () => {
Expand Down Expand Up @@ -30,3 +32,16 @@ it("returns a date object from a timestamp field", () => {

expect(asDate(field)).toBeInstanceOf(Date);
});

it("is compatible with a document's first_publication_date and last_publication_date properties", () => {
// This test is functionally no different than the tests above, but we
// can at least check that the types between `PrismicDocument` and
// `asDate()` are compatible.

expect(asDate(documentFixture.empty.first_publication_date)).toBeInstanceOf(
Date,
);
expect(asDate(documentFixture.empty.last_publication_date)).toBeInstanceOf(
Date,
);
});
14 changes: 10 additions & 4 deletions test/helpers-isFilled.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { expect, it } from "vitest";

import { documentFixture } from "./__fixtures__/document";

import { GroupField, SliceZone, isFilled } from "../src";

it("color", (ctx) => {
Expand Down Expand Up @@ -78,12 +80,10 @@ it("image thumbnail", () => {
it("integration fields", (ctx) => {
expect(isFilled.integrationField(null)).toBe(false);
expect(isFilled.integrationField(undefined)).toBe(false);
expect(isFilled.integrationField(ctx.mock.value.integrationFields())).toBe(
true,
);
expect(isFilled.integrationField(ctx.mock.value.integration())).toBe(true);
});
it("aliases integrationFields to integrationField", () => {
expect(isFilled.integrationFields).toBe(isFilled.integrationField);
expect(isFilled.integrationField).toBe(isFilled.integrationField);
});

it("key text", (ctx) => {
Expand Down Expand Up @@ -163,6 +163,12 @@ it("timestamp", (ctx) => {
expect(isFilled.timestamp(null)).toBe(false);
expect(isFilled.timestamp(undefined)).toBe(false);
expect(isFilled.timestamp(ctx.mock.value.timestamp())).toBe(true);
expect(isFilled.timestamp(documentFixture.empty.first_publication_date)).toBe(
true,
);
expect(isFilled.timestamp(documentFixture.empty.last_publication_date)).toBe(
true,
);
});

it("title", (ctx) => {
Expand Down
8 changes: 4 additions & 4 deletions test/types/api-query.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ expectType<prismic.Query>({
type: "string",
href: "string",
tags: ["string"],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: ["string"],
linked_documents: [],
lang: "string",
Expand Down Expand Up @@ -91,8 +91,8 @@ expectType<
type: "string",
href: "string",
tags: ["string"],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: ["string"],
linked_documents: [],
lang: "string",
Expand Down
32 changes: 16 additions & 16 deletions test/types/document-prismicDocument.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ expectType<prismic.PrismicDocument>({
type: "string",
href: "string",
tags: ["string"],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: ["string"],
linked_documents: [],
lang: "string",
Expand All @@ -51,8 +51,8 @@ expectType<prismic.PrismicDocument>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -70,8 +70,8 @@ expectType<prismic.PrismicDocument<{ foo: prismic.BooleanField }>>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -98,8 +98,8 @@ expectType<
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -120,8 +120,8 @@ expectType<prismic.PrismicDocument<Record<string, never>, "foo">>({
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -136,8 +136,8 @@ expectType<prismic.PrismicDocument<Record<string, never>, "foo">>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -155,8 +155,8 @@ expectType<prismic.PrismicDocument<Record<string, never>, string, "fr-fr">>({
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
lang: "fr-fr",
Expand All @@ -170,8 +170,8 @@ expectType<prismic.PrismicDocument<Record<string, string>, string, "fr-fr">>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2020-06-29T15:13:27+0000",
slugs: [],
linked_documents: [],
// @ts-expect-error - Document lang must match the given language.
Expand Down
36 changes: 18 additions & 18 deletions test/types/document-prismicDocumentWithUID.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ expectType<prismic.PrismicDocumentWithUID>({
type: "string",
href: "string",
tags: ["string"],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: ["string"],
linked_documents: [],
lang: "string",
Expand All @@ -52,8 +52,8 @@ expectType<prismic.PrismicDocumentWithUID>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -71,8 +71,8 @@ expectType<prismic.PrismicDocumentWithUID>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -90,8 +90,8 @@ expectType<prismic.PrismicDocumentWithUID<{ foo: prismic.BooleanField }>>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -118,8 +118,8 @@ expectType<
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -140,8 +140,8 @@ expectType<prismic.PrismicDocumentWithUID<Record<string, never>, "foo">>({
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -156,8 +156,8 @@ expectType<prismic.PrismicDocumentWithUID<Record<string, never>, "foo">>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -177,8 +177,8 @@ expectType<
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "fr-fr",
Expand All @@ -194,8 +194,8 @@ expectType<
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
// @ts-expect-error - Document lang must match the given language.
Expand Down
36 changes: 18 additions & 18 deletions test/types/document-prismicDocumentWithoutUID.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ expectType<prismic.PrismicDocumentWithoutUID>({
type: "string",
href: "string",
tags: ["string"],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: ["string"],
linked_documents: [],
lang: "string",
Expand All @@ -52,8 +52,8 @@ expectType<prismic.PrismicDocumentWithoutUID>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -71,8 +71,8 @@ expectType<prismic.PrismicDocumentWithoutUID>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -90,8 +90,8 @@ expectType<prismic.PrismicDocumentWithoutUID<{ foo: prismic.BooleanField }>>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -118,8 +118,8 @@ expectType<
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -140,8 +140,8 @@ expectType<prismic.PrismicDocumentWithoutUID<Record<string, never>, "foo">>({
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -156,8 +156,8 @@ expectType<prismic.PrismicDocumentWithoutUID<Record<string, never>, "foo">>({
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "string",
Expand All @@ -177,8 +177,8 @@ expectType<
type: "foo",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
lang: "fr-fr",
Expand All @@ -194,8 +194,8 @@ expectType<
type: "string",
href: "string",
tags: [],
first_publication_date: "string",
last_publication_date: "string",
first_publication_date: "2020-06-29T15:13:27+0000",
last_publication_date: "2021-05-18T15:44:01+0000",
slugs: [],
linked_documents: [],
// @ts-expect-error - Document lang must match the given language.
Expand Down

0 comments on commit 7cce22a

Please sign in to comment.