UNPKG

repoweaver

Version:

A GitHub App that skillfully weaves multiple templates together to create and update repositories with intelligent merge strategies

1 lines 21.7 kB
{"ast":null,"code":"import { getAssetByID } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\nimport { selectAssetSource } from \"./AssetSources\";\nimport * as AssetUris from \"./AssetUris\";\nimport { downloadAsync } from \"./ExpoAsset\";\nimport * as ImageAssets from \"./ImageAssets\";\nimport { getLocalAssetUri } from \"./LocalAssets\";\nimport { IS_ENV_WITH_LOCAL_ASSETS } from \"./PlatformUtils\";\nimport resolveAssetSource from \"./resolveAssetSource\";\nexport const ANDROID_EMBEDDED_URL_BASE_RESOURCE = 'file:///android_res/';\nexport class Asset {\n static byHash = {};\n static byUri = {};\n hash = null;\n localUri = null;\n width = null;\n height = null;\n downloading = false;\n downloaded = false;\n _downloadCallbacks = [];\n constructor({\n name,\n type,\n hash = null,\n uri,\n width,\n height\n }) {\n this.name = name;\n this.type = type;\n this.hash = hash;\n this.uri = uri;\n if (typeof width === 'number') {\n this.width = width;\n }\n if (typeof height === 'number') {\n this.height = height;\n }\n if (hash) {\n this.localUri = getLocalAssetUri(hash, type);\n if (this.localUri?.startsWith(ANDROID_EMBEDDED_URL_BASE_RESOURCE)) {\n this.uri = this.localUri;\n this.localUri = null;\n } else if (this.localUri) {\n this.downloaded = true;\n }\n }\n if (Platform.OS === 'web') {\n if (!name) {\n this.name = AssetUris.getFilename(uri);\n }\n if (!type) {\n this.type = AssetUris.getFileExtension(uri);\n }\n }\n }\n static loadAsync(moduleId) {\n const moduleIds = Array.isArray(moduleId) ? moduleId : [moduleId];\n return Promise.all(moduleIds.map(moduleId => Asset.fromModule(moduleId).downloadAsync()));\n }\n static fromModule(virtualAssetModule) {\n if (typeof virtualAssetModule === 'string') {\n return Asset.fromURI(virtualAssetModule);\n }\n if (typeof virtualAssetModule === 'object' && 'uri' in virtualAssetModule && typeof virtualAssetModule.uri === 'string') {\n const extension = AssetUris.getFileExtension(virtualAssetModule.uri);\n return new Asset({\n name: '',\n type: extension.startsWith('.') ? extension.substring(1) : extension,\n hash: null,\n uri: virtualAssetModule.uri,\n width: virtualAssetModule.width,\n height: virtualAssetModule.height\n });\n }\n const meta = getAssetByID(virtualAssetModule);\n if (!meta) {\n throw new Error(`Module \"${virtualAssetModule}\" is missing from the asset registry`);\n }\n if (!IS_ENV_WITH_LOCAL_ASSETS) {\n const {\n uri\n } = resolveAssetSource(virtualAssetModule);\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash: meta.hash,\n uri,\n width: meta.width,\n height: meta.height\n });\n if (Platform.OS === 'android' && !uri.includes(':') && (meta.width || meta.height)) {\n asset.localUri = asset.uri;\n asset.downloaded = true;\n }\n Asset.byHash[meta.hash] = asset;\n return asset;\n }\n return Asset.fromMetadata(meta);\n }\n static fromMetadata(meta) {\n const metaHash = meta.hash;\n if (Asset.byHash[metaHash]) {\n return Asset.byHash[metaHash];\n }\n const {\n uri,\n hash\n } = selectAssetSource(meta);\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash,\n uri,\n width: meta.width,\n height: meta.height\n });\n Asset.byHash[metaHash] = asset;\n return asset;\n }\n static fromURI(uri) {\n if (Asset.byUri[uri]) {\n return Asset.byUri[uri];\n }\n let type = '';\n if (uri.indexOf(';base64') > -1) {\n type = uri.split(';')[0].split('/')[1];\n } else {\n const extension = AssetUris.getFileExtension(uri);\n type = extension.startsWith('.') ? extension.substring(1) : extension;\n }\n const asset = new Asset({\n name: '',\n type,\n hash: null,\n uri\n });\n Asset.byUri[uri] = asset;\n return asset;\n }\n async downloadAsync() {\n if (this.downloaded) {\n return this;\n }\n if (this.downloading) {\n await new Promise((resolve, reject) => {\n this._downloadCallbacks.push({\n resolve,\n reject\n });\n });\n return this;\n }\n this.downloading = true;\n try {\n if (Platform.OS === 'web') {\n if (ImageAssets.isImageType(this.type)) {\n const {\n width,\n height,\n name\n } = await ImageAssets.getImageInfoAsync(this.uri);\n this.width = width;\n this.height = height;\n this.name = name;\n } else {\n this.name = AssetUris.getFilename(this.uri);\n }\n }\n this.localUri = await downloadAsync(this.uri, this.hash, this.type);\n this.downloaded = true;\n this._downloadCallbacks.forEach(({\n resolve\n }) => resolve());\n } catch (e) {\n this._downloadCallbacks.forEach(({\n reject\n }) => reject(e));\n throw e;\n } finally {\n this.downloading = false;\n this._downloadCallbacks = [];\n }\n return this;\n }\n}","map":{"version":3,"names":["getAssetByID","Platform","selectAssetSource","AssetUris","downloadAsync","ImageAssets","getLocalAssetUri","IS_ENV_WITH_LOCAL_ASSETS","resolveAssetSource","ANDROID_EMBEDDED_URL_BASE_RESOURCE","Asset","byHash","byUri","hash","localUri","width","height","downloading","downloaded","_downloadCallbacks","constructor","name","type","uri","startsWith","OS","getFilename","getFileExtension","loadAsync","moduleId","moduleIds","Array","isArray","Promise","all","map","fromModule","virtualAssetModule","fromURI","extension","substring","meta","Error","asset","includes","fromMetadata","metaHash","indexOf","split","resolve","reject","push","isImageType","getImageInfoAsync","forEach","e"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/expo-asset/src/Asset.ts"],"sourcesContent":["import { getAssetByID } from '@react-native/assets-registry/registry';\nimport { Platform } from 'expo-modules-core';\n\nimport { AssetMetadata, selectAssetSource } from './AssetSources';\nimport * as AssetUris from './AssetUris';\nimport { downloadAsync } from './ExpoAsset';\nimport * as ImageAssets from './ImageAssets';\nimport { getLocalAssetUri } from './LocalAssets';\nimport { IS_ENV_WITH_LOCAL_ASSETS } from './PlatformUtils';\nimport resolveAssetSource from './resolveAssetSource';\n\n// @docsMissing\nexport type AssetDescriptor = {\n name: string;\n type: string;\n hash?: string | null;\n uri: string;\n width?: number | null;\n height?: number | null;\n};\n\ntype DownloadPromiseCallbacks = {\n resolve: () => void;\n reject: (error: Error) => void;\n};\n\nexport { AssetMetadata };\n\n/**\n * Android resource URL prefix.\n * @hidden\n */\nexport const ANDROID_EMBEDDED_URL_BASE_RESOURCE = 'file:///android_res/';\n\n/**\n * The `Asset` class represents an asset in your app. It gives metadata about the asset (such as its\n * name and type) and provides facilities to load the asset data.\n */\nexport class Asset {\n private static byHash: Record<string, Asset | undefined> = {};\n private static byUri: Record<string, Asset | undefined> = {};\n\n /**\n * The name of the asset file without the extension. Also without the part from `@` onward in the\n * filename (used to specify scale factor for images).\n */\n public name: string;\n /**\n * The extension of the asset filename.\n */\n public readonly type: string;\n /**\n * The MD5 hash of the asset's data.\n */\n public readonly hash: string | null = null;\n /**\n * A URI that points to the asset's data on the remote server. When running the published version\n * of your app, this refers to the location on Expo's asset server where Expo has stored your\n * asset. When running the app from Expo CLI during development, this URI points to Expo CLI's\n * server running on your computer and the asset is served directly from your computer. If you\n * are not using Classic Updates (legacy), this field should be ignored as we ensure your assets\n * are on device before running your application logic.\n */\n public readonly uri: string;\n /**\n * If the asset has been downloaded (by calling [`downloadAsync()`](#downloadasync)), the\n * `file://` URI pointing to the local file on the device that contains the asset data.\n */\n public localUri: string | null = null;\n /**\n * If the asset is an image, the width of the image data divided by the scale factor. The scale\n * factor is the number after `@` in the filename, or `1` if not present.\n */\n public width: number | null = null;\n /**\n * If the asset is an image, the height of the image data divided by the scale factor. The scale factor is the number after `@` in the filename, or `1` if not present.\n */\n public height: number | null = null;\n\n private downloading: boolean = false;\n\n /**\n * Whether the asset has finished downloading from a call to [`downloadAsync()`](#downloadasync).\n */\n public downloaded: boolean = false;\n\n private _downloadCallbacks: DownloadPromiseCallbacks[] = [];\n\n constructor({ name, type, hash = null, uri, width, height }: AssetDescriptor) {\n this.name = name;\n this.type = type;\n this.hash = hash;\n this.uri = uri;\n\n if (typeof width === 'number') {\n this.width = width;\n }\n if (typeof height === 'number') {\n this.height = height;\n }\n\n if (hash) {\n this.localUri = getLocalAssetUri(hash, type);\n if (this.localUri?.startsWith(ANDROID_EMBEDDED_URL_BASE_RESOURCE)) {\n // Treat Android embedded resources as not downloaded state, because the uri is not direct accessible.\n this.uri = this.localUri;\n this.localUri = null;\n } else if (this.localUri) {\n this.downloaded = true;\n }\n }\n\n if (Platform.OS === 'web') {\n if (!name) {\n this.name = AssetUris.getFilename(uri);\n }\n if (!type) {\n this.type = AssetUris.getFileExtension(uri);\n }\n }\n }\n\n // @needsAudit\n /**\n * A helper that wraps `Asset.fromModule(module).downloadAsync` for convenience.\n * @param moduleId An array of `require('path/to/file')` or external network URLs. Can also be\n * just one module or URL without an Array.\n * @return Returns a Promise that fulfills with an array of `Asset`s when the asset(s) has been\n * saved to disk.\n * @example\n * ```ts\n * const [{ localUri }] = await Asset.loadAsync(require('./assets/snack-icon.png'));\n * ```\n */\n static loadAsync(moduleId: number | number[] | string | string[]): Promise<Asset[]> {\n const moduleIds = Array.isArray(moduleId) ? moduleId : [moduleId];\n return Promise.all(moduleIds.map((moduleId) => Asset.fromModule(moduleId).downloadAsync()));\n }\n\n // @needsAudit\n /**\n * Returns the [`Asset`](#asset) instance representing an asset given its module or URL.\n * @param virtualAssetModule The value of `require('path/to/file')` for the asset or external\n * network URL\n * @return The [`Asset`](#asset) instance for the asset.\n */\n static fromModule(\n virtualAssetModule: number | string | { uri: string; width: number; height: number }\n ): Asset {\n if (typeof virtualAssetModule === 'string') {\n return Asset.fromURI(virtualAssetModule);\n }\n if (\n typeof virtualAssetModule === 'object' &&\n 'uri' in virtualAssetModule &&\n typeof virtualAssetModule.uri === 'string'\n ) {\n const extension = AssetUris.getFileExtension(virtualAssetModule.uri);\n return new Asset({\n name: '',\n type: extension.startsWith('.') ? extension.substring(1) : extension,\n hash: null,\n uri: virtualAssetModule.uri,\n width: virtualAssetModule.width,\n height: virtualAssetModule.height,\n });\n }\n\n const meta = getAssetByID(virtualAssetModule);\n if (!meta) {\n throw new Error(`Module \"${virtualAssetModule}\" is missing from the asset registry`);\n }\n\n // Outside of the managed env we need the moduleId to initialize the asset\n // because resolveAssetSource depends on it\n if (!IS_ENV_WITH_LOCAL_ASSETS) {\n // null-check is performed above with `getAssetByID`.\n const { uri } = resolveAssetSource(virtualAssetModule)!;\n\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash: meta.hash,\n uri,\n width: meta.width,\n height: meta.height,\n });\n\n // For images backward compatibility,\n // keeps localUri the same as uri for React Native's Image that\n // works fine with drawable resource names.\n if (Platform.OS === 'android' && !uri.includes(':') && (meta.width || meta.height)) {\n asset.localUri = asset.uri;\n asset.downloaded = true;\n }\n\n Asset.byHash[meta.hash] = asset;\n return asset;\n }\n\n return Asset.fromMetadata(meta);\n }\n\n // @docsMissing\n static fromMetadata(meta: AssetMetadata): Asset {\n // The hash of the whole asset, not to be confused with the hash of a specific file returned\n // from `selectAssetSource`\n const metaHash = meta.hash;\n if (Asset.byHash[metaHash]) {\n return Asset.byHash[metaHash];\n }\n\n const { uri, hash } = selectAssetSource(meta);\n const asset = new Asset({\n name: meta.name,\n type: meta.type,\n hash,\n uri,\n width: meta.width,\n height: meta.height,\n });\n Asset.byHash[metaHash] = asset;\n return asset;\n }\n\n // @docsMissing\n static fromURI(uri: string): Asset {\n if (Asset.byUri[uri]) {\n return Asset.byUri[uri];\n }\n\n // Possibly a Base64-encoded URI\n let type = '';\n if (uri.indexOf(';base64') > -1) {\n type = uri.split(';')[0].split('/')[1];\n } else {\n const extension = AssetUris.getFileExtension(uri);\n type = extension.startsWith('.') ? extension.substring(1) : extension;\n }\n\n const asset = new Asset({\n name: '',\n type,\n hash: null,\n uri,\n });\n\n Asset.byUri[uri] = asset;\n\n return asset;\n }\n\n // @needsAudit\n /**\n * Downloads the asset data to a local file in the device's cache directory. Once the returned\n * promise is fulfilled without error, the [`localUri`](#localuri) field of this asset points\n * to a local file containing the asset data. The asset is only downloaded if an up-to-date local\n * file for the asset isn't already present due to an earlier download. The downloaded `Asset`\n * will be returned when the promise is resolved.\n * @return Returns a Promise which fulfills with an `Asset` instance.\n */\n async downloadAsync(): Promise<this> {\n if (this.downloaded) {\n return this;\n }\n if (this.downloading) {\n await new Promise<void>((resolve, reject) => {\n this._downloadCallbacks.push({ resolve, reject });\n });\n return this;\n }\n this.downloading = true;\n\n try {\n if (Platform.OS === 'web') {\n if (ImageAssets.isImageType(this.type)) {\n const { width, height, name } = await ImageAssets.getImageInfoAsync(this.uri);\n this.width = width;\n this.height = height;\n this.name = name;\n } else {\n this.name = AssetUris.getFilename(this.uri);\n }\n }\n this.localUri = await downloadAsync(this.uri, this.hash, this.type);\n\n this.downloaded = true;\n this._downloadCallbacks.forEach(({ resolve }) => resolve());\n } catch (e: any) {\n this._downloadCallbacks.forEach(({ reject }) => reject(e));\n throw e;\n } finally {\n this.downloading = false;\n this._downloadCallbacks = [];\n }\n return this;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}