@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
1 lines • 2.7 kB
Source Map (JSON)
{"version":3,"file":"validateAssetMetadata.cjs","sources":["../../../src/lib/validateAssetMetadata.ts"],"sourcesContent":["import { PrismicError } from \"../errors/PrismicError\"\n\nimport type { CreateAssetParams } from \"../WriteClient\"\n\n/**\n * Max length for asset notes accepted by the API.\n */\nconst ASSET_NOTES_MAX_LENGTH = 500\n\n/**\n * Max length for asset credits accepted by the API.\n */\nconst ASSET_CREDITS_MAX_LENGTH = 500\n\n/**\n * Max length for asset alt text accepted by the API.\n */\nconst ASSET_ALT_MAX_LENGTH = 500\n\n/**\n * Min length for asset tags accepted by the API.\n */\nconst ASSET_TAG_MIN_LENGTH = 3\n\n/**\n * Max length for asset tags accepted by the API.\n */\nconst ASSET_TAG_MAX_LENGTH = 20\n\n/**\n * Validates an asset's metadata, throwing an error if any of the metadata are\n * invalid.\n *\n * @param assetMetadata - The asset metadata to validate.\n *\n * @internal\n */\nexport const validateAssetMetadata = ({\n\tnotes,\n\tcredits,\n\talt,\n\ttags,\n}: CreateAssetParams): void => {\n\tconst errors: string[] = []\n\n\tif (notes && notes.length > ASSET_NOTES_MAX_LENGTH) {\n\t\terrors.push(\n\t\t\t`\\`notes\\` must be at most ${ASSET_NOTES_MAX_LENGTH} characters`,\n\t\t)\n\t}\n\n\tif (credits && credits.length > ASSET_CREDITS_MAX_LENGTH) {\n\t\terrors.push(\n\t\t\t`\\`credits\\` must be at most ${ASSET_CREDITS_MAX_LENGTH} characters`,\n\t\t)\n\t}\n\n\tif (alt && alt.length > ASSET_ALT_MAX_LENGTH) {\n\t\terrors.push(`\\`alt\\` must be at most ${ASSET_ALT_MAX_LENGTH} characters`)\n\t}\n\n\tif (\n\t\ttags &&\n\t\ttags.length &&\n\t\ttags.some(\n\t\t\t(tag) =>\n\t\t\t\ttag.length < ASSET_TAG_MIN_LENGTH || tag.length > ASSET_TAG_MAX_LENGTH,\n\t\t)\n\t) {\n\t\terrors.push(\n\t\t\t`tags must be at least 3 characters long and 20 characters at most`,\n\t\t)\n\t}\n\n\tif (errors.length) {\n\t\tthrow new PrismicError(\n\t\t\t`Errors validating asset metadata: ${errors.join(\", \")}`,\n\t\t\tundefined,\n\t\t\t{ notes, credits, alt, tags },\n\t\t)\n\t}\n}\n"],"names":["PrismicError"],"mappings":";;;AAOA,MAAM,yBAAyB;AAK/B,MAAM,2BAA2B;AAKjC,MAAM,uBAAuB;AAK7B,MAAM,uBAAuB;AAK7B,MAAM,uBAAuB;AAUtB,MAAM,wBAAwB,CAAC,EACrC,OACA,SACA,KACA,WAC6B;AAC7B,QAAM,SAAmB,CAAA;AAErB,MAAA,SAAS,MAAM,SAAS,wBAAwB;AAC5C,WAAA,KACN,6BAA6B,sBAAsB,aAAa;AAAA,EAAA;AAI9D,MAAA,WAAW,QAAQ,SAAS,0BAA0B;AAClD,WAAA,KACN,+BAA+B,wBAAwB,aAAa;AAAA,EAAA;AAIlE,MAAA,OAAO,IAAI,SAAS,sBAAsB;AACtC,WAAA,KAAK,2BAA2B,oBAAoB,aAAa;AAAA,EAAA;AAGzE,MACC,QACA,KAAK,UACL,KAAK,KACJ,CAAC,QACA,IAAI,SAAS,wBAAwB,IAAI,SAAS,oBAAoB,GAEvE;AACD,WAAO,KACN,mEAAmE;AAAA,EAAA;AAIrE,MAAI,OAAO,QAAQ;AAClB,UAAM,IAAIA,aAAAA,aACT,qCAAqC,OAAO,KAAK,IAAI,CAAC,IACtD,QACA,EAAE,OAAO,SAAS,KAAK,MAAM;AAAA,EAAA;AAGhC;;"}