Skip to content

Commit f1d6804

Browse files
🤖 Merge PR DefinitelyTyped#74633 [react-native__assets-registry] Add type definitions by @YevheniiKotyrlo
1 parent 46e46a3 commit f1d6804

File tree

8 files changed

+152
-0
lines changed

8 files changed

+152
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*
2+
!**/*.d.ts
3+
!**/*.d.cts
4+
!**/*.d.mts
5+
!**/*.d.*.ts
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {};
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"private": true,
3+
"name": "@types/react-native__assets-registry",
4+
"version": "0.84.9999",
5+
"projects": [
6+
"https://github.com/facebook/react-native/tree/main/packages/assets"
7+
],
8+
"exports": {
9+
".": {
10+
"types": {
11+
"default": "./index.d.ts"
12+
}
13+
},
14+
"./registry": {
15+
"types": {
16+
"default": "./registry.d.ts"
17+
}
18+
},
19+
"./path-support": {
20+
"types": {
21+
"default": "./path-support.d.ts"
22+
}
23+
}
24+
},
25+
"devDependencies": {
26+
"@types/react-native__assets-registry": "workspace:."
27+
},
28+
"owners": [
29+
{
30+
"name": "Yevhenii Kotyrlo",
31+
"githubUsername": "YevheniiKotyrlo"
32+
}
33+
]
34+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { PackagerAsset } from "./registry";
2+
3+
export function getAndroidResourceFolderName(asset: PackagerAsset, scale: number): string;
4+
export function getAndroidResourceIdentifier(asset: PackagerAsset): string;
5+
export function getBasePath(asset: PackagerAsset): string;
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import {
2+
getAndroidResourceFolderName,
3+
getAndroidResourceIdentifier,
4+
getBasePath,
5+
} from "@react-native/assets-registry/path-support";
6+
import {
7+
AssetDestPathResolver,
8+
getAssetByID,
9+
PackagerAsset,
10+
registerAsset,
11+
} from "@react-native/assets-registry/registry";
12+
13+
const asset: PackagerAsset = {
14+
__packager_asset: true,
15+
fileSystemLocation: "/assets",
16+
httpServerLocation: "/assets",
17+
width: 100,
18+
height: 100,
19+
scales: [1, 1.5, 2, 3, 4],
20+
hash: "abc123",
21+
name: "logo",
22+
type: "png",
23+
};
24+
25+
const assetWithResolver: PackagerAsset = {
26+
__packager_asset: true,
27+
fileSystemLocation: "/assets",
28+
httpServerLocation: "/assets",
29+
scales: [1],
30+
hash: "def456",
31+
name: "icon",
32+
type: "png",
33+
resolver: "android",
34+
};
35+
36+
const assetWithNullDimensions: PackagerAsset = {
37+
__packager_asset: true,
38+
fileSystemLocation: "/assets",
39+
httpServerLocation: "/assets",
40+
width: null,
41+
height: null,
42+
scales: [1],
43+
hash: "ghi789",
44+
name: "placeholder",
45+
type: "png",
46+
};
47+
48+
// exactOptionalPropertyTypes: explicit undefined is valid
49+
const assetWithUndefinedDimensions: PackagerAsset = {
50+
__packager_asset: true,
51+
fileSystemLocation: "/assets",
52+
httpServerLocation: "/assets",
53+
width: undefined,
54+
height: undefined,
55+
scales: [1],
56+
hash: "jkl012",
57+
name: "empty",
58+
type: "png",
59+
resolver: undefined,
60+
};
61+
62+
const resolver: AssetDestPathResolver = "generic";
63+
64+
const id: number = registerAsset(asset);
65+
const retrieved: PackagerAsset = getAssetByID(id);
66+
67+
const folder: string = getAndroidResourceFolderName(asset, 2);
68+
const identifier: string = getAndroidResourceIdentifier(asset);
69+
const basePath: string = getBasePath(asset);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export type AssetDestPathResolver = "android" | "generic";
2+
3+
export interface PackagerAsset {
4+
__packager_asset: boolean;
5+
fileSystemLocation: string;
6+
httpServerLocation: string;
7+
width?: number | null | undefined;
8+
height?: number | null | undefined;
9+
scales: number[];
10+
hash: string;
11+
name: string;
12+
type: string;
13+
resolver?: AssetDestPathResolver | undefined;
14+
}
15+
16+
export function registerAsset(asset: PackagerAsset): number;
17+
export function getAssetByID(assetId: number): PackagerAsset;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"compilerOptions": {
3+
"module": "node16",
4+
"lib": [
5+
"es6"
6+
],
7+
"noImplicitAny": true,
8+
"noImplicitThis": true,
9+
"strictFunctionTypes": true,
10+
"strictNullChecks": true,
11+
"exactOptionalPropertyTypes": true,
12+
"types": [],
13+
"noEmit": true,
14+
"forceConsistentCasingInFileNames": true
15+
},
16+
"files": [
17+
"index.d.ts",
18+
"react-native__assets-registry-tests.ts"
19+
]
20+
}

0 commit comments

Comments
 (0)