Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including @sanity/asset-utils with all npm packages installed. Try it out:

var assetUtils = require("@sanity/asset-utils")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

@sanity/asset-utils v1.0.0

@sanity/asset-utils

Reusable utility functions for dealing with image and file assets in Sanity

Installing

$ npm install @sanity/asset-utils

Usage

// ESM / TypeScript
import {someUtilityFunction} from '@sanity/asset-utils'

// CommonJS
const {someUtilityFunction} = require('@sanity/asset-utils')

Documentation

An HTML version is also available, which also includes interface definitions, constants and more.### Functions

buildFilePath

buildFilePath(asset: FileUrlBuilderOptions, project: SanityProjectDetails): string

Builds the base file path from the minimal set of parts required to assemble it

NameTypeDescription
assetFileUrlBuilderOptionsAn asset-like shape defining ID, dimensions and extension
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: string

Defined in src/paths.ts:57

buildFileUrl

buildFileUrl(asset: FileUrlBuilderOptions, project: SanityProjectDetails): string

Builds the base file URL from the minimal set of parts required to assemble it

NameTypeDescription
assetFileUrlBuilderOptionsAn asset-like shape defining ID and extension
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: string

Defined in src/paths.ts:78

buildImagePath

buildImagePath(asset: ImageUrlBuilderOptions, project: SanityProjectDetails): string

Builds the base image path from the minimal set of parts required to assemble it

NameTypeDescription
assetImageUrlBuilderOptionsAn asset-like shape defining ID, dimensions and extension
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: string

Defined in src/paths.ts:21

buildImageUrl

buildImageUrl(asset: ImageUrlBuilderOptions, project: SanityProjectDetails): string

Builds the base image URL from the minimal set of parts required to assemble it

NameTypeDescription
assetImageUrlBuilderOptionsAn asset-like shape defining ID, dimensions and extension
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: string

Defined in src/paths.ts:43

getAssetDocumentId

getAssetDocumentId(src: SanityAssetSource): string

Tries to resolve the asset document ID from any inferrable structure

NameTypeDescription
srcSanityAssetSourceInput source (image/file object, asset, reference, id, url, path)

Returns: string

Defined in src/resolve.ts:291

getDefaultCrop

getDefaultCrop(): SanityImageCrop

Returns cloned version of the default crop (prevents accidental mutations)

NameType

Returns: SanityImageCrop

Defined in src/resolve.ts:65

getDefaultHotspot

getDefaultHotspot(): SanityImageHotspot

Returns cloned version of the default hotspot (prevents accidental mutations)

NameType

Returns: SanityImageHotspot

Defined in src/resolve.ts:72

getExtension

getExtension(src: SanityAssetSource): string

Returns the file extension for a given asset

NameTypeDescription
srcSanityAssetSourceInput source (file/image object, asset, reference, id, url, path)

Returns: string

Defined in src/resolve.ts:108

getFile

getFile(src: SanityFileSource, project: SanityProjectDetails): ResolvedSanityFile

Tries to resolve an file object with as much information as possible, from any inferrable structure (id, url, path, file object etc)

NameTypeDescription
srcSanityFileSourceInput source (file object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: ResolvedSanityFile

Defined in src/resolve.ts:220

getFileAsset

getFileAsset(src: SanityFileSource, project: SanityProjectDetails): SanityFileAsset

Tries to resolve a (partial) file asset document with as much information as possible, from any inferrable structure (id, url, path, file object etc)

NameTypeDescription
srcSanityFileSourceInput source (file object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: SanityFileAsset

Defined in src/resolve.ts:245

getIdFromString

getIdFromString(str: string): string

Tries to cooerce a string (ID, URL or path) to an image asset ID

NameTypeDescription
strstringInput string (ID, URL or path)

Returns: string

Defined in src/resolve.ts:333

getImage

getImage(src: SanityImageSource, project: SanityProjectDetails): ResolvedSanityImage

Tries to resolve an image object with as much information as possible, from any inferrable structure (id, url, path, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: ResolvedSanityImage

Defined in src/resolve.ts:133

getImageAsset

getImageAsset(src: SanityImageSource, project: SanityProjectDetails): SanityImageAsset

Tries to resolve a (partial) image asset document with as much information as possible, from any inferrable structure (id, url, path, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: SanityImageAsset

Defined in src/resolve.ts:167

getImageDimensions

getImageDimensions(src: SanityImageSource): SanityImageDimensions

Returns the width, height and aspect ratio of a passed image asset, from any inferrable structure (id, url, path, asset document, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)

Returns: SanityImageDimensions

Defined in src/resolve.ts:84

getProject

getProject(src: SanityImageSource): SanityProjectDetails

Resolves project ID and dataset the image belongs to, based on full URL or path

NameType
srcSanityImageSource

Returns: SanityProjectDetails

Defined in src/resolve.ts:391

getUrlFilename

getUrlFilename(url: string): string

Strips the CDN URL, path and query params from a URL, eg: https://cdn.sanity.io/images/project/dataset/filename-200x200.jpg?foo=bar => filename-200x200.jpg

NameTypeDescription
urlstringURL to get filename from

Returns: string

Defined in src/paths.ts:163

getUrlPath

getUrlPath(url: string): string

Strips the CDN URL and query params from a URL, eg: https://cdn.sanity.io/images/project/dataset/filename-200x200.jpg?foo=bar => images/project/dataset/filename-200x200.jpg

NameTypeDescription
urlstringURL to get path name from

Returns: string

Defined in src/paths.ts:131

hasPath

hasPath(urlOrPath: string): boolean

Checks whether or not the given URL contains an asset path

NameType
urlOrPathstring

Returns: boolean

Defined in src/paths.ts:88

idFromUrl

idFromUrl(url: string): string

Converts from a full asset URL to just the asset document ID

NameTypeDescription
urlstringA full asset URL to convert

Returns: string

Defined in src/resolve.ts:376

isAssetFilename

isAssetFilename(filename: string): boolean

Returns whether or not the passed filename is a valid file or image asset filename

NameTypeDescription
filenamestringFilename to validate

Returns: boolean

Defined in src/resolve.ts:439

isAssetIdStub

isAssetIdStub(stub: unknown): stub is SanityAssetIdStub

Checks whether or not the given source is an asset ID stub (an object containing an _id property)

NameTypeDescription
stubunknownPossible asset id stub

Returns: stub is SanityAssetIdStub

Defined in src/types.ts:108

isAssetObjectStub

isAssetObjectStub(stub: unknown): stub is SanityAssetObjectStub

Checks whether or not the given source is an asset object stub

NameTypeDescription
stubunknownPossible asset object stub

Returns: stub is SanityAssetObjectStub

Defined in src/types.ts:251

isAssetPathStub

isAssetPathStub(stub: unknown): stub is SanityAssetPathStub

Checks whether or not the given source is an asset path stub (an object containing a path property)

NameTypeDescription
stubunknownPossible asset path stub

Returns: stub is SanityAssetPathStub

Defined in src/types.ts:123

isAssetUrlStub

isAssetUrlStub(stub: unknown): stub is SanityAssetUrlStub

Checks whether or not the given source is an asset URL stub (an object containing a url property)

NameTypeDescription
stubunknownPossible asset url stub

Returns: stub is SanityAssetUrlStub

Defined in src/types.ts:138

isFileAssetFilename

isFileAssetFilename(filename: string): boolean

Returns whether or not the passed filename is a valid file asset filename

NameTypeDescription
filenamestringFilename to validate

Returns: boolean

Defined in src/resolve.ts:429

isFileSource

isFileSource(src: SanityAssetSource): src is SanityFileSource

NameType
srcSanityAssetSource

Returns: src is SanityFileSource

Defined in src/resolve.ts:443

isImageAssetFilename

isImageAssetFilename(filename: string): boolean

Returns whether or not the passed filename is a valid image asset filename

NameTypeDescription
filenamestringFilename to validate

Returns: boolean

Defined in src/resolve.ts:419

isImageSource

isImageSource(src: SanityAssetSource): src is SanityImageSource

NameType
srcSanityAssetSource

Returns: src is SanityImageSource

Defined in src/resolve.ts:448

isReference

isReference(ref: unknown): ref is SanityReference

Checks whether or not the given source is a Sanity reference (an object containing _ref string key)

NameTypeDescription
refunknownPossible reference

Returns: ref is SanityReference

Defined in src/types.ts:93

isSanityFileAsset

isSanityFileAsset(src: unknown): src is SanityFileAsset

Checks whether or not the given source is a (partial) sanity file asset document. Only checks the _type property, all other properties may be missing

NameTypeDescription
srcunknownSource to check

Returns: src is SanityFileAsset

Defined in src/types.ts:169

isUnresolvableError

isUnresolvableError(err: Error): err is UnresolvableError

Checks whether or not an error instance is of type UnresolvableError

NameTypeDescription
errErrorError to check for unresolvable error type

Returns: err is UnresolvableError

Defined in src/utils.ts:36

isValidFilename

isValidFilename(filename: string): boolean

Checks whether or not a given filename matches the expected Sanity asset filename pattern

NameTypeDescription
filenamestringFilename to check for validity

Returns: boolean

Defined in src/paths.ts:187

parseAssetFilename

parseAssetFilename(filename: string): SanityAssetIdParts

Parses a Sanity asset filename into individual parts (type, id, extension, width, height)

NameTypeDescription
filenamestringFilename to parse into named parts

Returns: SanityAssetIdParts

Defined in src/parse.ts:77

parseAssetId

parseAssetId(documentId: string): SanityAssetIdParts

Parses a Sanity asset document ID into individual parts (type, id, extension, width/height etc)

NameTypeDescription
documentIdstringDocument ID to parse into named parts

Returns: SanityAssetIdParts

Defined in src/parse.ts:22

parseFileAssetId

parseFileAssetId(documentId: string): SanityFileAssetIdParts

Parses a Sanity file asset document ID into individual parts (type, id, extension)

NameTypeDescription
documentIdstringFile asset document ID to parse into named parts

Returns: SanityFileAssetIdParts

Defined in src/parse.ts:41

parseImageAssetId

parseImageAssetId(documentId: string): SanityImageAssetIdParts

Parses a Sanity image asset document ID into individual parts (type, id, extension, width, height)

NameTypeDescription
documentIdstringImage asset document ID to parse into named parts

Returns: SanityImageAssetIdParts

Defined in src/parse.ts:59

tryGetAssetDocumentId

tryGetAssetDocumentId(src: SanityAssetSource): string

Tries to resolve the asset document ID from any inferrable structure

NameTypeDescription
srcSanityAssetSourceInput source (image/file object, asset, reference, id, url, path)

Returns: string

Defined in src/resolve.ts:321

tryGetAssetPath

tryGetAssetPath(src: SanityAssetSource): string | undefined

Tries to get the asset path from a given asset source

NameTypeDescription
srcSanityAssetSourceThe source image to infer an asset path from

Returns: string | undefined

Defined in src/paths.ts:98

tryGetExtension

tryGetExtension(src: SanityAssetSource): string

Returns the file extension for a given asset

NameTypeDescription
srcSanityAssetSourceInput source (file/image object, asset, reference, id, url, path)

Returns: string

Defined in src/resolve.ts:120

tryGetFile

tryGetFile(src: SanityFileSource, project: SanityProjectDetails): ResolvedSanityFile

Tries to resolve an file object with as much information as possible, from any inferrable structure (id, url, path, file object etc)

NameTypeDescription
srcSanityFileSourceInput source (file object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: ResolvedSanityFile

Defined in src/resolve.ts:232

tryGetFileAsset

tryGetFileAsset(src: SanityFileSource, project: SanityProjectDetails): SanityFileAsset

Tries to resolve a (partial) file asset document with as much information as possible, from any inferrable structure (id, url, path, file object etc)

NameTypeDescription
srcSanityFileSourceInput source (file object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the file belongs to

Returns: SanityFileAsset

Defined in src/resolve.ts:280

tryGetIdFromString

tryGetIdFromString(str: string): string

Tries to cooerce a string (ID, URL or path) to an image asset ID

NameTypeDescription
strstringInput string (ID, URL or path)

Returns: string

Defined in src/resolve.ts:368

tryGetImage

tryGetImage(src: SanityImageSource, project: SanityProjectDetails): ResolvedSanityImage

Tries to resolve an image object with as much information as possible, from any inferrable structure (id, url, path, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: ResolvedSanityImage

Defined in src/resolve.ts:154

tryGetImageAsset

tryGetImageAsset(src: SanityImageSource, project: SanityProjectDetails): SanityImageAsset

Tries to resolve a (partial) image asset document with as much information as possible, from any inferrable structure (id, url, path, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)
projectSanityProjectDetailsProject ID and dataset the image belongs to

Returns: SanityImageAsset

Defined in src/resolve.ts:207

tryGetImageDimensions

tryGetImageDimensions(src: SanityImageSource): SanityImageDimensions

Returns the width, height and aspect ratio of a passed image asset, from any inferrable structure (id, url, path, asset document, image object etc)

NameTypeDescription
srcSanityImageSourceInput source (image object, asset, reference, id, url, path)

Returns: SanityImageDimensions

Defined in src/resolve.ts:97

tryGetProject

tryGetProject(src: SanityImageSource): SanityProjectDetails

Resolves project ID and dataset the image belongs to, based on full URL or path

NameType
srcSanityImageSource

Returns: SanityProjectDetails

Defined in src/resolve.ts:411

tryGetUrlFilename

tryGetUrlFilename(url: string): string

Strips the CDN URL, path and query params from a URL, eg: https://cdn.sanity.io/images/project/dataset/filename-200x200.jpg?foo=bar => filename-200x200.jpg

NameTypeDescription
urlstringURL to get filename from

Returns: string

Defined in src/paths.ts:179

tryGetUrlPath

tryGetUrlPath(url: string): string

Strips the CDN URL and query params from a URL, eg: https://cdn.sanity.io/images/project/dataset/filename-200x200.jpg?foo=bar => images/project/dataset/filename-200x200.jpg

NameTypeDescription
urlstringURL to get path name from

Returns: string

Defined in src/paths.ts:152

License

MIT-licensed. See LICENSE.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free