setModuleLoaderFunc method

void setModuleLoaderFunc(
  1. JSModuleNormalizeFunc moduleNormalize,
  2. JSModuleLoaderFunc moduleLoader, {
  3. Uint8List? user_data,
})

Implementation

void setModuleLoaderFunc(
  JSModuleNormalizeFunc moduleNormalize,
  JSModuleLoaderFunc moduleLoader, {
  Uint8List? user_data,
}) {
  _moduleNormalizeFuncNC = NativeCallable.isolateLocal((
    Pointer<JSContext_> ctx,
    Pointer<Utf8> module_base_name,
    Pointer<Utf8> module_name,
    Pointer<Void> opaque,
  ) {
    return moduleNormalize
        .call(
          JSContext(ctx),
          module_base_name.cast<Utf8>().toDartString(),
          module_name.cast<Utf8>().toDartString(),
          opaque == nullptr
              ? null
              : opaque.toUint8List(user_data?.length ?? 0),
        )
        .toNativeUtf8();
  });
  _moduleLoaderFuncNC = NativeCallable.isolateLocal((
    Pointer<JSContext_> ctx,
    Pointer<Utf8> module_name,
    Pointer<Void> opaque,
  ) {
    return moduleLoader.call(
      JSContext(ctx),
      module_name.cast<Utf8>().toDartString(),
      opaque == nullptr ? null : opaque.toUint8List(user_data?.length ?? 0),
    );
  });
  JS_SetModuleLoaderFunc(
    _ref,
    _moduleNormalizeFuncNC!.nativeFunction,
    _moduleLoaderFuncNC!.nativeFunction,
    user_data?.toCAny() ?? nullptr,
  );
}