createJsSessionOptions method
Creates JavaScript session options object
Implementation
JSObject createJsSessionOptions(Map<String, dynamic>? options) {
// Get the SessionOptions constructor from onnxruntime-web
final jsOptions = createJSObject();
if (options != null) {
// Set execution providers if specified
if (options.containsKey('providers')) {
final providers = options['providers'] as List<String>;
final jsProviders =
providers.map((provider) {
// Map Flutter provider names to onnxruntime-web provider names
switch (provider) {
case 'CPU':
case 'WEB_ASSEMBLY':
return 'wasm';
case 'WEB_GL':
return 'webgl';
case 'WEB_GPU':
return 'webgpu';
case 'WEB_NN':
return 'webnn';
default:
throw PlatformException(
code: 'INVALID_PROVIDER',
message: 'Provider $provider is not supported',
details: null,
);
}
}).toList();
// Set executionProviders property
jsOptions.setProperty('executionProviders'.toJS, jsArrayFrom(jsProviders));
}
// Set other options like intraOpNumThreads, interOpNumThreads if needed
if (options.containsKey('intraOpNumThreads')) {
jsOptions.setProperty('intraOpNumThreads'.toJS, options['intraOpNumThreads']);
}
if (options.containsKey('interOpNumThreads')) {
jsOptions.setProperty('interOpNumThreads'.toJS, options['interOpNumThreads']);
}
// Handle graph optimization level
if (options.containsKey('graphOptimizationLevel')) {
jsOptions.setProperty('graphOptimizationLevel'.toJS, options['graphOptimizationLevel']);
}
// Add more options as needed
}
return jsOptions;
}