diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f78a73..53b1c7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.6.0-alpha.1](https://github.com/prismicio/prismic-mock/compare/v0.5.0...v0.6.0-alpha.1) (2024-12-16) + + +### Features + +* add `"type": "module"` ([62ccfe5](https://github.com/prismicio/prismic-mock/commit/62ccfe50239fc3581dd0c729c42e39908c39512e)) + + +### Refactor + +* remove `change-case` dependency ([10fb86b](https://github.com/prismicio/prismic-mock/commit/10fb86b8031f617339cc03e5ab41c43d879cd584)) + + +### Chore + +* update version to latest alpha ([ba3fdc6](https://github.com/prismicio/prismic-mock/commit/ba3fdc672cd7a0716db0da1041362412be102f8e)) + ## [0.5.0](https://github.com/prismicio/prismic-mock/compare/v0.5.0-alpha.1...v0.5.0) (2024-12-05) ## [0.5.0-alpha.1](https://github.com/prismicio/prismic-mock/compare/v0.5.0-alpha.0...v0.5.0-alpha.1) (2024-11-28) diff --git a/package-lock.json b/package-lock.json index ee49230..23eb62e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,13 @@ { "name": "@prismicio/mock", - "version": "0.5.0", + "version": "0.6.0-alpha.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@prismicio/mock", - "version": "0.5.0", + "version": "0.6.0-alpha.1", "license": "Apache-2.0", - "dependencies": { - "change-case": "^5.4.4" - }, "devDependencies": { "@prismicio/client": "7.11.0", "@size-limit/preset-small-lib": "^11.1.2", @@ -2403,11 +2400,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==" - }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", diff --git a/package.json b/package.json index f06824b..a27e764 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@prismicio/mock", - "version": "0.5.0", + "version": "0.6.0-alpha.1", "description": "Generate mock Prismic documents, fields, Slices, and models for development and testing environments", "keywords": [ "typescript", @@ -16,6 +16,7 @@ "license": "Apache-2.0", "author": "Prismic (https://prismic.io)", "sideEffects": false, + "type": "module", "exports": { ".": { "require": "./dist/index.cjs", @@ -58,9 +59,6 @@ "unit": "nyc --reporter=lcovonly --reporter=text --exclude-after-remap=false ava", "unit:watch": "npm run unit -- --watch" }, - "dependencies": { - "change-case": "^5.4.4" - }, "devDependencies": { "@prismicio/client": "7.11.0", "@size-limit/preset-small-lib": "^11.1.2", diff --git a/src/api/ref.ts b/src/api/ref.ts index 347ff95..edaf2c1 100644 --- a/src/api/ref.ts +++ b/src/api/ref.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockRestApiConfig } from "../types"; import { timestamp } from "../value"; @@ -29,7 +29,7 @@ export const ref = ( isMasterRef: config.isMasterRef ?? false, label: config.isMasterRef ? "Master" - : changeCase.capitalCase(faker.words(faker.range(1, 3))), + : capitalCase(faker.words(faker.range(1, 3))), }; if (config.isScheduled) { diff --git a/src/api/repository.ts b/src/api/repository.ts index df18114..495dcb5 100644 --- a/src/api/repository.ts +++ b/src/api/repository.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { generateTags } from "../lib/generateTags"; @@ -36,7 +36,7 @@ export const repository = ( languages: [ { id: faker.word(), - name: changeCase.capitalCase(faker.word()), + name: capitalCase(faker.word()), is_master: true, }, ], diff --git a/src/lib/buildImageFieldImage.ts b/src/lib/buildImageFieldImage.ts index d472447..76f1840 100644 --- a/src/lib/buildImageFieldImage.ts +++ b/src/lib/buildImageFieldImage.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { sentenceCase } from "../lib/changeCase"; import { createFaker, Faker } from "../lib/createFaker"; import { MockValueStateConfig, MockImageData, Seed } from "../types"; @@ -55,8 +55,8 @@ export const buildImageFieldImage = < id: faker.hash(11), url: url.toString(), dimensions, - alt: changeCase.sentenceCase(faker.words(faker.range(5, 15))), - copyright: changeCase.sentenceCase(faker.words(faker.range(5, 15))), + alt: sentenceCase(faker.words(faker.range(5, 15))), + copyright: sentenceCase(faker.words(faker.range(5, 15))), edit: { x: faker.range(-dimensions.width / 2, dimensions.width / 2), y: faker.range(-dimensions.width / 2, dimensions.height / 2), diff --git a/src/lib/changeCase.ts b/src/lib/changeCase.ts new file mode 100644 index 0000000..3a3df9e --- /dev/null +++ b/src/lib/changeCase.ts @@ -0,0 +1,14 @@ +export const capitalCase = (input: string) => + stripPunctuation(input).replace(/(^\w|\s\w)/g, (char) => char.toUpperCase()); + +export const snakeCase = (input: string) => + stripPunctuation(input).toLowerCase().replace(/\s/g, "_"); + +export const sentenceCase = (input: string) => + stripPunctuation(input).replace(/^./, (char) => char.toUpperCase()); + +export const pascalCase = (input: string) => + capitalCase(stripPunctuation(input.replace(/-|_/, " "))).replace(/ /g, ""); + +const stripPunctuation = (input: string) => + input.replace(/[^\p{L}\p{N}\s]/gu, ""); diff --git a/src/lib/generateCustomTypeId.ts b/src/lib/generateCustomTypeId.ts index 047d343..d2e9ae0 100644 --- a/src/lib/generateCustomTypeId.ts +++ b/src/lib/generateCustomTypeId.ts @@ -1,5 +1,4 @@ -import * as changeCase from "change-case"; - +import { snakeCase } from "../lib/changeCase"; import { createFaker, Faker } from "../lib/createFaker"; import { Seed } from "../types"; @@ -17,5 +16,5 @@ type GenerateFieldIdConfig = export const generateCustomTypeId = (config: GenerateFieldIdConfig): string => { const faker = config.faker || createFaker(config.seed); - return changeCase.snakeCase(faker.words(faker.range(1, 3))); + return snakeCase(faker.words(faker.range(1, 3))); }; diff --git a/src/lib/generateFieldId.ts b/src/lib/generateFieldId.ts index 223aaef..b2014c5 100644 --- a/src/lib/generateFieldId.ts +++ b/src/lib/generateFieldId.ts @@ -1,5 +1,4 @@ -import * as changeCase from "change-case"; - +import { snakeCase } from "../lib/changeCase"; import { createFaker, Faker } from "../lib/createFaker"; import { Seed } from "../types"; @@ -17,5 +16,5 @@ type GenerateFieldIdConfig = export const generateFieldId = (config: GenerateFieldIdConfig): string => { const faker = config.faker || createFaker(config.seed); - return changeCase.snakeCase(faker.words(faker.range(1, 3))); + return snakeCase(faker.words(faker.range(1, 3))); }; diff --git a/src/lib/generateTags.ts b/src/lib/generateTags.ts index 338ef7e..632017a 100644 --- a/src/lib/generateTags.ts +++ b/src/lib/generateTags.ts @@ -1,5 +1,4 @@ -import * as changeCase from "change-case"; - +import { capitalCase } from "../lib/changeCase"; import { createFaker, Faker } from "../lib/createFaker"; import { Seed } from "../types"; @@ -23,6 +22,6 @@ export const generateTags = (config: GenerateTagsConfig): string[] => { return Array.from( { length: faker.range(config.min ?? 0, config.max ?? 2) }, - () => changeCase.capitalCase(faker.words(faker.range(1, 3))), + () => capitalCase(faker.words(faker.range(1, 3))), ); }; diff --git a/src/model/boolean.ts b/src/model/boolean.ts index 76c5cb4..e712560 100644 --- a/src/model/boolean.ts +++ b/src/model/boolean.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,7 +15,7 @@ export function boolean( return { type: prismic.CustomTypeModelFieldType.Boolean, config: { - label: changeCase.capitalCase(faker.word()), + label: capitalCase(faker.word()), }, }; } diff --git a/src/model/color.ts b/src/model/color.ts index 97c40e5..9f51eb9 100644 --- a/src/model/color.ts +++ b/src/model/color.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,8 +15,8 @@ export const color = ( return { type: prismic.CustomTypeModelFieldType.Color, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), }, }; }; diff --git a/src/model/contentRelationship.ts b/src/model/contentRelationship.ts index 4f5a67f..d918aac 100644 --- a/src/model/contentRelationship.ts +++ b/src/model/contentRelationship.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -24,8 +24,8 @@ export const contentRelationship = < return { type: prismic.CustomTypeModelFieldType.Link, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), select: prismic.CustomTypeModelLinkSelectType.Document, customtypes: config.customTypeIDs, tags: config.tags, diff --git a/src/model/customType.ts b/src/model/customType.ts index 86c1926..642cddc 100644 --- a/src/model/customType.ts +++ b/src/model/customType.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, snakeCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -51,13 +51,13 @@ export const customType = < const faker = config.faker || createFaker(config.seed); let label: string = - config.label || changeCase.capitalCase(faker.words(faker.range(1, 2))); - let id: string = config.id || changeCase.snakeCase(label); + config.label || capitalCase(faker.words(faker.range(1, 2))); + let id: string = config.id || snakeCase(label); if (config.id && !config.label) { - label = changeCase.capitalCase(config.id); + label = capitalCase(config.id); } else if (config.label && !config.label) { - id = changeCase.snakeCase(config.label); + id = snakeCase(config.label); } const format = config.format ?? faker.randomElement(["page", "custom"]); diff --git a/src/model/date.ts b/src/model/date.ts index 5c622b3..7cfe556 100644 --- a/src/model/date.ts +++ b/src/model/date.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,8 +15,8 @@ export const date = ( return { type: prismic.CustomTypeModelFieldType.Date, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), }, }; }; diff --git a/src/model/embed.ts b/src/model/embed.ts index df53eb2..1e5bfdd 100644 --- a/src/model/embed.ts +++ b/src/model/embed.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,8 +15,8 @@ export const embed = ( return { type: prismic.CustomTypeModelFieldType.Embed, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), }, }; }; diff --git a/src/model/geoPoint.ts b/src/model/geoPoint.ts index e6a085b..374cc5a 100644 --- a/src/model/geoPoint.ts +++ b/src/model/geoPoint.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,7 +15,7 @@ export const geoPoint = ( return { type: prismic.CustomTypeModelFieldType.GeoPoint, config: { - label: changeCase.capitalCase(faker.word()), + label: capitalCase(faker.word()), }, }; }; diff --git a/src/model/group.ts b/src/model/group.ts index 6f331c9..6a727cd 100644 --- a/src/model/group.ts +++ b/src/model/group.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { GroupFieldModelMap, MockModelConfig } from "../types"; @@ -17,7 +17,7 @@ export function group( return { type: prismic.CustomTypeModelFieldType.Group, config: { - label: changeCase.capitalCase(faker.word()), + label: capitalCase(faker.word()), fields: config.fields || ({} as Fields), }, }; diff --git a/src/model/image.ts b/src/model/image.ts index 3945cdd..8431fcc 100644 --- a/src/model/image.ts +++ b/src/model/image.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -26,7 +26,7 @@ export const image = ( return { type: prismic.CustomTypeModelFieldType.Image, config: { - label: changeCase.capitalCase(faker.word()), + label: capitalCase(faker.word()), constraint: { width: config.withConstraint ? faker.range(500, 2000) : null, height: config.withConstraint ? faker.range(500, 2000) : null, diff --git a/src/model/integration.ts b/src/model/integration.ts index 5bddd11..18a96dd 100644 --- a/src/model/integration.ts +++ b/src/model/integration.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, snakeCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -17,8 +17,8 @@ export const integration = ( return { type: prismic.CustomTypeModelFieldType.Integration, config: { - label: changeCase.capitalCase(faker.word()), - catalog: config.catalog || changeCase.snakeCase(faker.words(2)), + label: capitalCase(faker.word()), + catalog: config.catalog || snakeCase(faker.words(2)), }, }; }; diff --git a/src/model/keyText.ts b/src/model/keyText.ts index 5d6f7ad..ef25e32 100644 --- a/src/model/keyText.ts +++ b/src/model/keyText.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,8 +15,8 @@ export const keyText = ( return { type: prismic.CustomTypeModelFieldType.Text, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), }, }; }; diff --git a/src/model/link.ts b/src/model/link.ts index 3b01728..dee3fe6 100644 --- a/src/model/link.ts +++ b/src/model/link.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -43,8 +43,8 @@ export const link = < return { type: prismic.CustomTypeModelFieldType.Link, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), select: null, allowTargetBlank: ("allowTargetBlank" in config diff --git a/src/model/linkToMedia.ts b/src/model/linkToMedia.ts index 3dc3eea..b8473ae 100644 --- a/src/model/linkToMedia.ts +++ b/src/model/linkToMedia.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -23,8 +23,8 @@ export const linkToMedia = ( return { type: prismic.CustomTypeModelFieldType.Link, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), select: prismic.CustomTypeModelLinkSelectType.Media, allowText: ("allowText" in config ? config.allowText : faker.boolean()) || diff --git a/src/model/number.ts b/src/model/number.ts index 4b001e7..237ef72 100644 --- a/src/model/number.ts +++ b/src/model/number.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -15,8 +15,8 @@ export const number = ( return { type: prismic.CustomTypeModelFieldType.Number, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), }, }; }; diff --git a/src/model/richText.ts b/src/model/richText.ts index 8b75915..4a5661d 100644 --- a/src/model/richText.ts +++ b/src/model/richText.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -46,8 +46,8 @@ export const richText = ( return { type: prismic.CustomTypeModelFieldType.StructuredText, config: { - label: changeCase.capitalCase(faker.word()), - placeholder: changeCase.sentenceCase(faker.words(3)), + label: capitalCase(faker.word()), + placeholder: sentenceCase(faker.words(3)), allowTargetBlank: faker.boolean() ? true : undefined, ...blockTypeConfig, }, diff --git a/src/model/select.ts b/src/model/select.ts index 29b4f71..5f4df0b 100644 --- a/src/model/select.ts +++ b/src/model/select.ts @@ -1,6 +1,6 @@ import * as prismic from "@prismicio/client"; -import * as changeCase from "change-case"; +import { capitalCase, sentenceCase } from "../lib/changeCase"; import { createFaker } from "../lib/createFaker"; import { MockModelConfig } from "../types"; @@ -21,8 +21,8 @@ export const select =