expo-asset 8.4.2 → 8.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/build/AssetSourceResolver.web.js +2 -2
- package/build/AssetSourceResolver.web.js.map +1 -1
- package/build/resolveAssetSource.web.js +4 -26
- package/build/resolveAssetSource.web.js.map +1 -1
- package/package.json +2 -2
- package/src/AssetSourceResolver.web.ts +2 -2
- package/src/resolveAssetSource.web.ts +5 -29
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 8.4.3 — 2021-10-21
|
|
14
|
+
|
|
15
|
+
### 🐛 Bug fixes
|
|
16
|
+
|
|
17
|
+
- Fix `fromModule` on restrictive (Snack) web environments. ([#14435](https://github.com/expo/expo/pull/14435) by [@IjzerenHein](https://github.com/IjzerenHein))
|
|
18
|
+
|
|
13
19
|
## 8.4.2 — 2021-10-15
|
|
14
20
|
|
|
15
21
|
_This version does not introduce any user-facing changes._
|
|
@@ -14,7 +14,7 @@ function getScaledAssetPath(asset) {
|
|
|
14
14
|
const scale = AssetSourceResolver.pickScale(asset.scales, getScale());
|
|
15
15
|
const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';
|
|
16
16
|
const assetDir = getBasePath(asset);
|
|
17
|
-
return assetDir + '/' + asset.name + scaleSuffix +
|
|
17
|
+
return assetDir + '/' + asset.name + scaleSuffix + (asset.type ? `.${asset.type}` : '');
|
|
18
18
|
}
|
|
19
19
|
export default class AssetSourceResolver {
|
|
20
20
|
serverUrl;
|
|
@@ -52,7 +52,7 @@ export default class AssetSourceResolver {
|
|
|
52
52
|
return this.fromSource(getScaledAssetPath(this.asset));
|
|
53
53
|
}
|
|
54
54
|
scaledAssetURLNearBundle() {
|
|
55
|
-
const path = this.jsbundleUrl || '
|
|
55
|
+
const path = this.jsbundleUrl || '';
|
|
56
56
|
return this.fromSource(path + getScaledAssetPath(this.asset));
|
|
57
57
|
}
|
|
58
58
|
resourceIdentifierWithoutScale() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetSourceResolver.web.js","sourceRoot":"","sources":["../src/AssetSourceResolver.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAc1C,SAAS,WAAW,CAAC,EAAE,kBAAkB,EAAiB;IACxD,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACjC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACrC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAUD,SAAS,QAAQ;IACf,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAK;IAC/B,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;IACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"AssetSourceResolver.web.js","sourceRoot":"","sources":["../src/AssetSourceResolver.web.ts"],"names":[],"mappings":"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","sourcesContent":["import { Platform, UnavailabilityError } from 'expo-modules-core';\nimport invariant from 'invariant';\nimport { Dimensions } from 'react-native';\n\ntype PackagerAsset = {\n __packager_asset: boolean;\n fileSystemLocation: string;\n httpServerLocation: string;\n width?: number;\n height?: number;\n scales: number[];\n hash: string;\n name: string;\n type: string;\n};\n\nfunction getBasePath({ httpServerLocation }: PackagerAsset): string {\n if (httpServerLocation[0] === '/') {\n return httpServerLocation.substr(1);\n }\n return httpServerLocation;\n}\n\nexport type ResolvedAssetSource = {\n __packager_asset: boolean;\n width?: number;\n height?: number;\n uri: string;\n scale: number;\n};\n\nfunction getScale(): number {\n return Dimensions.get('window').scale;\n}\n\nfunction getScaledAssetPath(asset): string {\n const scale = AssetSourceResolver.pickScale(asset.scales, getScale());\n const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n const assetDir = getBasePath(asset);\n return assetDir + '/' + asset.name + scaleSuffix + (asset.type ? `.${asset.type}` : '');\n}\n\nexport default class AssetSourceResolver {\n serverUrl?: string | null;\n // where the jsbundle is being run from\n jsbundleUrl?: string | null;\n // the asset to resolve\n asset: PackagerAsset;\n\n constructor(\n serverUrl: string | undefined | null,\n jsbundleUrl: string | undefined | null,\n asset: PackagerAsset\n ) {\n this.serverUrl = serverUrl;\n this.jsbundleUrl = jsbundleUrl;\n this.asset = asset;\n }\n isLoadedFromServer(): boolean {\n return !!this.serverUrl;\n }\n isLoadedFromFileSystem(): boolean {\n return !!(this.jsbundleUrl && this.jsbundleUrl.startsWith('file://'));\n }\n defaultAsset(): ResolvedAssetSource {\n if (this.isLoadedFromServer()) {\n return this.assetServerURL();\n }\n\n return this.scaledAssetURLNearBundle();\n }\n assetServerURL(): ResolvedAssetSource {\n invariant(!!this.serverUrl, 'need server to load from');\n return this.fromSource(\n this.serverUrl +\n getScaledAssetPath(this.asset) +\n '?platform=' +\n Platform.OS +\n '&hash=' +\n this.asset.hash\n );\n }\n scaledAssetPath(): ResolvedAssetSource {\n return this.fromSource(getScaledAssetPath(this.asset));\n }\n scaledAssetURLNearBundle(): ResolvedAssetSource {\n const path = this.jsbundleUrl || '';\n return this.fromSource(path + getScaledAssetPath(this.asset));\n }\n resourceIdentifierWithoutScale(): ResolvedAssetSource {\n throw new UnavailabilityError('react-native', 'resourceIdentifierWithoutScale()');\n }\n drawableFolderInBundle(): ResolvedAssetSource {\n throw new UnavailabilityError('react-native', 'drawableFolderInBundle()');\n }\n fromSource(source: string): ResolvedAssetSource {\n return {\n __packager_asset: true,\n width: this.asset.width,\n height: this.asset.height,\n uri: source,\n scale: AssetSourceResolver.pickScale(this.asset.scales, getScale()),\n };\n }\n\n static pickScale(scales: number[], deviceScale: number): number {\n for (let i = 0; i < scales.length; i++) {\n if (scales[i] >= deviceScale) {\n return scales[i];\n }\n }\n return scales[scales.length - 1] || 1;\n }\n}\n"]}
|
|
@@ -3,17 +3,16 @@ import { getAssetByID } from './AssetRegistry';
|
|
|
3
3
|
import AssetSourceResolver from './AssetSourceResolver';
|
|
4
4
|
let _customSourceTransformer;
|
|
5
5
|
let _serverURL;
|
|
6
|
-
let _scriptURL;
|
|
7
6
|
let _sourceCodeScriptURL;
|
|
8
7
|
function getSourceCodeScriptURL() {
|
|
9
8
|
if (_sourceCodeScriptURL) {
|
|
10
9
|
return _sourceCodeScriptURL;
|
|
11
10
|
}
|
|
12
|
-
let sourceCode = nativeExtensions
|
|
11
|
+
let sourceCode = typeof nativeExtensions !== 'undefined' ? nativeExtensions.SourceCode : null;
|
|
13
12
|
if (!sourceCode) {
|
|
14
|
-
sourceCode = NativeModules
|
|
13
|
+
sourceCode = NativeModules?.SourceCode;
|
|
15
14
|
}
|
|
16
|
-
_sourceCodeScriptURL = sourceCode
|
|
15
|
+
_sourceCodeScriptURL = sourceCode?.scriptURL;
|
|
17
16
|
return _sourceCodeScriptURL;
|
|
18
17
|
}
|
|
19
18
|
function getDevServerURL() {
|
|
@@ -31,27 +30,6 @@ function getDevServerURL() {
|
|
|
31
30
|
}
|
|
32
31
|
return _serverURL;
|
|
33
32
|
}
|
|
34
|
-
function _coerceLocalScriptURL(scriptURL) {
|
|
35
|
-
if (scriptURL) {
|
|
36
|
-
if (scriptURL.startsWith('assets://')) {
|
|
37
|
-
// android: running from within assets, no offline path to use
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1);
|
|
41
|
-
if (!scriptURL.includes('://')) {
|
|
42
|
-
// Add file protocol in case we have an absolute file path and not a URL.
|
|
43
|
-
// This shouldn't really be necessary. scriptURL should be a URL.
|
|
44
|
-
scriptURL = 'file://' + scriptURL;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
function getScriptURL() {
|
|
50
|
-
if (_scriptURL === undefined) {
|
|
51
|
-
_scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL());
|
|
52
|
-
}
|
|
53
|
-
return _scriptURL;
|
|
54
|
-
}
|
|
55
33
|
export function setCustomSourceTransformer(transformer) {
|
|
56
34
|
_customSourceTransformer = transformer;
|
|
57
35
|
}
|
|
@@ -67,7 +45,7 @@ export default function resolveAssetSource(source) {
|
|
|
67
45
|
if (!asset) {
|
|
68
46
|
return undefined;
|
|
69
47
|
}
|
|
70
|
-
const resolver = new AssetSourceResolver(getDevServerURL(),
|
|
48
|
+
const resolver = new AssetSourceResolver(getDevServerURL(), null, asset);
|
|
71
49
|
if (_customSourceTransformer) {
|
|
72
50
|
return _customSourceTransformer(resolver);
|
|
73
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAssetSource.web.js","sourceRoot":"","sources":["../src/resolveAssetSource.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,mBAA4C,MAAM,uBAAuB,CAAC;AAIjF,IAAI,wBAAwB,CAAC;AAC7B,IAAI,UAAqC,CAAC;AAC1C,IAAI,
|
|
1
|
+
{"version":3,"file":"resolveAssetSource.web.js","sourceRoot":"","sources":["../src/resolveAssetSource.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,mBAA4C,MAAM,uBAAuB,CAAC;AAIjF,IAAI,wBAAwB,CAAC;AAC7B,IAAI,UAAqC,CAAC;AAC1C,IAAI,oBAA+C,CAAC;AAEpD,SAAS,sBAAsB;IAC7B,IAAI,oBAAoB,EAAE;QACxB,OAAO,oBAAoB,CAAC;KAC7B;IAED,IAAI,UAAU,GAAG,OAAO,gBAAgB,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,aAAa,EAAE,UAAU,CAAC;KACxC;IACD,oBAAoB,GAAG,UAAU,EAAE,SAAS,CAAC;IAC7C,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,UAAU,KAAK,SAAS,EAAE;QAC5B,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,mBAAmB,IAAI,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACpF,IAAI,KAAK,EAAE;YACT,mCAAmC;YACnC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACvB;aAAM;YACL,gCAAgC;YAChC,UAAU,GAAG,IAAI,CAAC;SACnB;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAAmE;IAEnE,wBAAwB,GAAG,WAAW,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,MAAW;IACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,MAAM,CAAC;KACf;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzE,IAAI,wBAAwB,EAAE;QAC5B,OAAO,wBAAwB,CAAC,QAAQ,CAAC,CAAC;KAC3C;IACD,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,4BAA4B,EAAE;IACtE,GAAG;QACD,OAAO,0BAA0B,CAAC;IACpC,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC","sourcesContent":["import { NativeModules } from 'react-native';\n\nimport { getAssetByID } from './AssetRegistry';\nimport AssetSourceResolver, { ResolvedAssetSource } from './AssetSourceResolver';\n\ndeclare let nativeExtensions: { SourceCode?: { scriptURL: string } } | undefined;\n\nlet _customSourceTransformer;\nlet _serverURL: string | undefined | null;\nlet _sourceCodeScriptURL: string | undefined | null;\n\nfunction getSourceCodeScriptURL(): string | undefined | null {\n if (_sourceCodeScriptURL) {\n return _sourceCodeScriptURL;\n }\n\n let sourceCode = typeof nativeExtensions !== 'undefined' ? nativeExtensions.SourceCode : null;\n if (!sourceCode) {\n sourceCode = NativeModules?.SourceCode;\n }\n _sourceCodeScriptURL = sourceCode?.scriptURL;\n return _sourceCodeScriptURL;\n}\n\nfunction getDevServerURL(): string | null {\n if (_serverURL === undefined) {\n const sourceCodeScriptURL = getSourceCodeScriptURL();\n const match = sourceCodeScriptURL && sourceCodeScriptURL.match(/^https?:\\/\\/.*?\\//);\n if (match) {\n // jsBundle was loaded from network\n _serverURL = match[0];\n } else {\n // jsBundle was loaded from file\n _serverURL = null;\n }\n }\n return _serverURL;\n}\n\nexport function setCustomSourceTransformer(\n transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource\n): void {\n _customSourceTransformer = transformer;\n}\n\n/**\n * `source` is either a number (opaque type returned by require('./foo.png'))\n * or an `ImageSource` like { uri: '<http location || file path>' }\n */\nexport default function resolveAssetSource(source: any): ResolvedAssetSource | undefined {\n if (typeof source === 'object') {\n return source;\n }\n\n const asset = getAssetByID(source);\n if (!asset) {\n return undefined;\n }\n\n const resolver = new AssetSourceResolver(getDevServerURL(), null, asset);\n if (_customSourceTransformer) {\n return _customSourceTransformer(resolver);\n }\n return resolver.defaultAsset();\n}\n\nObject.defineProperty(resolveAssetSource, 'setCustomSourceTransformer', {\n get() {\n return setCustomSourceTransformer;\n },\n});\n\nexport const { pickScale } = AssetSourceResolver;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-asset",
|
|
3
|
-
"version": "8.4.
|
|
3
|
+
"version": "8.4.3",
|
|
4
4
|
"description": "An Expo universal module to download assets and pass them into other APIs",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"@types/url-parse": "^1.4.1",
|
|
49
49
|
"expo-module-scripts": "^2.0.0"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "4fa0497a180ae707fa860cb03858630ab7af19f4"
|
|
52
52
|
}
|
|
@@ -37,7 +37,7 @@ function getScaledAssetPath(asset): string {
|
|
|
37
37
|
const scale = AssetSourceResolver.pickScale(asset.scales, getScale());
|
|
38
38
|
const scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';
|
|
39
39
|
const assetDir = getBasePath(asset);
|
|
40
|
-
return assetDir + '/' + asset.name + scaleSuffix +
|
|
40
|
+
return assetDir + '/' + asset.name + scaleSuffix + (asset.type ? `.${asset.type}` : '');
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export default class AssetSourceResolver {
|
|
@@ -84,7 +84,7 @@ export default class AssetSourceResolver {
|
|
|
84
84
|
return this.fromSource(getScaledAssetPath(this.asset));
|
|
85
85
|
}
|
|
86
86
|
scaledAssetURLNearBundle(): ResolvedAssetSource {
|
|
87
|
-
const path = this.jsbundleUrl || '
|
|
87
|
+
const path = this.jsbundleUrl || '';
|
|
88
88
|
return this.fromSource(path + getScaledAssetPath(this.asset));
|
|
89
89
|
}
|
|
90
90
|
resourceIdentifierWithoutScale(): ResolvedAssetSource {
|
|
@@ -3,11 +3,10 @@ import { NativeModules } from 'react-native';
|
|
|
3
3
|
import { getAssetByID } from './AssetRegistry';
|
|
4
4
|
import AssetSourceResolver, { ResolvedAssetSource } from './AssetSourceResolver';
|
|
5
5
|
|
|
6
|
-
declare let nativeExtensions:
|
|
6
|
+
declare let nativeExtensions: { SourceCode?: { scriptURL: string } } | undefined;
|
|
7
7
|
|
|
8
8
|
let _customSourceTransformer;
|
|
9
9
|
let _serverURL: string | undefined | null;
|
|
10
|
-
let _scriptURL: string | undefined | null;
|
|
11
10
|
let _sourceCodeScriptURL: string | undefined | null;
|
|
12
11
|
|
|
13
12
|
function getSourceCodeScriptURL(): string | undefined | null {
|
|
@@ -15,11 +14,11 @@ function getSourceCodeScriptURL(): string | undefined | null {
|
|
|
15
14
|
return _sourceCodeScriptURL;
|
|
16
15
|
}
|
|
17
16
|
|
|
18
|
-
let sourceCode = nativeExtensions
|
|
17
|
+
let sourceCode = typeof nativeExtensions !== 'undefined' ? nativeExtensions.SourceCode : null;
|
|
19
18
|
if (!sourceCode) {
|
|
20
|
-
sourceCode = NativeModules
|
|
19
|
+
sourceCode = NativeModules?.SourceCode;
|
|
21
20
|
}
|
|
22
|
-
_sourceCodeScriptURL = sourceCode
|
|
21
|
+
_sourceCodeScriptURL = sourceCode?.scriptURL;
|
|
23
22
|
return _sourceCodeScriptURL;
|
|
24
23
|
}
|
|
25
24
|
|
|
@@ -38,29 +37,6 @@ function getDevServerURL(): string | null {
|
|
|
38
37
|
return _serverURL;
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
function _coerceLocalScriptURL(scriptURL: string | undefined | null): string | null {
|
|
42
|
-
if (scriptURL) {
|
|
43
|
-
if (scriptURL.startsWith('assets://')) {
|
|
44
|
-
// android: running from within assets, no offline path to use
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
scriptURL = scriptURL.substring(0, scriptURL.lastIndexOf('/') + 1);
|
|
48
|
-
if (!scriptURL.includes('://')) {
|
|
49
|
-
// Add file protocol in case we have an absolute file path and not a URL.
|
|
50
|
-
// This shouldn't really be necessary. scriptURL should be a URL.
|
|
51
|
-
scriptURL = 'file://' + scriptURL;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function getScriptURL(): string | null {
|
|
58
|
-
if (_scriptURL === undefined) {
|
|
59
|
-
_scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL());
|
|
60
|
-
}
|
|
61
|
-
return _scriptURL;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
40
|
export function setCustomSourceTransformer(
|
|
65
41
|
transformer: (resolver: AssetSourceResolver) => ResolvedAssetSource
|
|
66
42
|
): void {
|
|
@@ -81,7 +57,7 @@ export default function resolveAssetSource(source: any): ResolvedAssetSource | u
|
|
|
81
57
|
return undefined;
|
|
82
58
|
}
|
|
83
59
|
|
|
84
|
-
const resolver = new AssetSourceResolver(getDevServerURL(),
|
|
60
|
+
const resolver = new AssetSourceResolver(getDevServerURL(), null, asset);
|
|
85
61
|
if (_customSourceTransformer) {
|
|
86
62
|
return _customSourceTransformer(resolver);
|
|
87
63
|
}
|