Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions example/assets/rive/GradientBorder.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
isFocused: 'boolean';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/arbtboards-models-instances.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ declare const asset: RiveAsset<{
_id: 'string';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/artboard_db_test.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ declare const asset: RiveAsset<{
artboard_2: 'artboard';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/blinko.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,6 @@ declare const asset: RiveAsset<{
'property of gameLogicVM': 'viewModel:gameLogicVM';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/bouncing_ball.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
ypos: 'number';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/click-count.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
clickCount: 'number';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/counter.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
cnt: 'number';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/databinding.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ declare const asset: RiveAsset<{
name: 'string';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/databinding_images.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
bound_image: 'image';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/databinding_lists.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ declare const asset: RiveAsset<{
team: 'list';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/fallback_fonts.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
Artboard: 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/font_fallback.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
text: 'string';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/hello_world_text.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
'New Artboard': 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/inputglow.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
isFocused: 'boolean';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/ios_android_layouts_demo_v01.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
iOS_Android_Layouts_demo_v01: 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/layout_test.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{

};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/layouts_demo.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
iOS_Android_Layouts_demo_v01: 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/many_viewmodels.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,6 @@ declare const asset: RiveAsset<{
textValue: 'string';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/movecircle.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
posY: 'number';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/nodefaultbouncing.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{

};
};
assets: {};
}>;
export default asset;
3 changes: 3 additions & 0 deletions example/assets/rive/on_entry_test.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,8 @@ declare const asset: RiveAsset<{
inputOnEntry: 'number';
};
};
assets: {
'Inter-4228759': 'font';
};
}>;
export default asset;
8 changes: 8 additions & 0 deletions example/assets/rive/out_of_band.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,13 @@ declare const asset: RiveAsset<{
Artboard: 'State Machine 1';
};
viewModels: {};
assets: {
'Inter-594377': 'font';
'referenced-image-2929282': 'image';
'referenced_audio-2929340': 'audio';
'hosted_audio-2989208': 'audio';
'Damion-593587': 'font';
'cdn-image-2989123': 'image';
};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/quick_start.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ declare const asset: RiveAsset<{
health: 'number';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/rating.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
'New Artboard': 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/rewards.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ declare const asset: RiveAsset<{
Item_Selection: 'enum:Coin|Gem';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/style_fallback_fonts.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
Artboard: 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/tabtest.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ declare const asset: RiveAsset<{
enumProperty: 'enum:All|Parent|Child';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/viewmodelproperty.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ declare const asset: RiveAsset<{
name: 'string';
};
};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions example/assets/rive/vm_value_change_test.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ declare const asset: RiveAsset<{
textValue: 'string';
};
};
assets: {};
}>;
export default asset;
38 changes: 19 additions & 19 deletions example/src/exercisers/OutOfBandAssets.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,30 @@ import {
} from '@rive-app/react-native';
import { Picker } from '@react-native-picker/picker';
import { type Metadata } from '../shared/metadata';
// Typed via the generated out_of_band.riv.d.ts — the referencedAssets keys
// and each entry's `type` below are checked against the file's actual assets.
import outOfBandRiv from '../../assets/rive/out_of_band.riv';

export default function OutOfBandAssetsExample() {
const [uri, setUri] = React.useState('https://picsum.photos/id/372/500/500');
const { riveFile, isLoading, error } = useRiveFile(
require('../../assets/rive/out_of_band.riv'),
{
referencedAssets: {
'Inter-594377': {
source: require('../../assets/fonts/Inter-594377.ttf'),
type: 'font',
},
'referenced-image-2929282': {
source: {
uri: uri,
},
type: 'image',
},
'referenced_audio-2929340': {
source: require('../../assets/audio/referenced_audio-2929340.wav'),
type: 'audio',
const { riveFile, isLoading, error } = useRiveFile(outOfBandRiv, {
referencedAssets: {
'Inter-594377': {
source: require('../../assets/fonts/Inter-594377.ttf'),
type: 'font',
},
'referenced-image-2929282': {
source: {
uri: uri,
},
type: 'image',
},
}
);
'referenced_audio-2929340': {
source: require('../../assets/audio/referenced_audio-2929340.wav'),
type: 'audio',
},
},
});

if (isLoading) {
return <ActivityIndicator />;
Expand Down
1 change: 1 addition & 0 deletions expo-example/assets/rive/rating.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ declare const asset: RiveAsset<{
'New Artboard': 'State Machine 1';
};
viewModels: {};
assets: {};
}>;
export default asset;
1 change: 1 addition & 0 deletions expo-example/assets/rive/rewards_source.riv.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ declare const asset: RiveAsset<{
Item_Selection: 'enum:Coin|Gem';
};
};
assets: {};
}>;
export default asset;
65 changes: 64 additions & 1 deletion scripts/__tests__/rive-gen-emit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {
smRecord,
vmRecord,
schemaBody,
assetsRecord,
classifyAsset,
enumTypeString,
viewModelRefTypeString,
type Schema,
Expand Down Expand Up @@ -47,6 +49,7 @@ describe('emit escaping', () => {
viewModels: {
"It's VM": { "quote'": "enum:a'b" },
},
assets: { "Font's-123": 'font' },
};
const body = schemaBody(schema);
expect(parseErrors(`declare const asset: {\n${body}\n};`)).toEqual([]);
Expand Down Expand Up @@ -78,10 +81,21 @@ describe('schemaBody', () => {
defaultArtboard: 'Main',
stateMachines: { Main: ['SM'] },
viewModels: {},
assets: {},
};

test('always emits viewModels, empty object when none', () => {
test('always emits viewModels and assets, empty objects when none', () => {
expect(schemaBody(base)).toContain('viewModels: {};');
expect(schemaBody(base)).toContain('assets: {};');
});

test('emits assets record when present', () => {
const body = schemaBody({
...base,
assets: { 'Inter-594377': 'font', 'img-1': 'image' },
});
expect(body).toContain("'Inter-594377': 'font';");
expect(body).toContain("'img-1': 'image';");
});

test('emits viewModels record when present', () => {
Expand Down Expand Up @@ -137,3 +151,52 @@ describe('viewModelRefTypeString', () => {
expect(viewModelRefTypeString(inst, 'Coin')).toBe('viewModel');
});
});

describe('classifyAsset', () => {
const font = {
name: 'Inter',
uniqueFilename: 'Inter-594377.ttf',
fileExtension: 'ttf',
isFont: true,
};

test('referenced asset → unique id (extension stripped) + kind', () => {
expect(classifyAsset(font, 0)).toEqual({
id: 'Inter-594377',
kind: 'font',
});
expect(
classifyAsset(
{ uniqueFilename: 'pic-1.png', fileExtension: 'png', isImage: true },
0
)
).toEqual({ id: 'pic-1', kind: 'image' });
expect(
classifyAsset(
{ uniqueFilename: 'a-2.wav', fileExtension: 'wav', isAudio: true },
0
)
).toEqual({ id: 'a-2', kind: 'audio' });
});

test('embedded assets are excluded', () => {
expect(classifyAsset(font, 8680)).toBeNull();
});

test('unknown asset kinds are excluded', () => {
expect(classifyAsset({ uniqueFilename: 'x-1.bin' }, 0)).toBeNull();
});

test('falls back to name when uniqueFilename is missing', () => {
expect(classifyAsset({ name: 'Inter', isFont: true }, 0)).toEqual({
id: 'Inter',
kind: 'font',
});
});
});

describe('assetsRecord', () => {
test('escapes hostile identifiers', () => {
expect(assetsRecord({ "It's-1": 'font' })).toBe(" 'It\\'s-1': 'font';");
});
});
Binary file modified scripts/__tests__/rive-gen-fuzz.test.ts
Binary file not shown.
Loading
Loading