initializeSqlJs

Future<Result<SqlJsRuntime, String>> initializeSqlJs()

Initialize sql.js. Call once at startup.

Returns a SqlJsRuntime that must be passed to openDatabase.

Implementation

Future<Result<SqlJsRuntime, String>> initializeSqlJs() async {
  try {
    final initFn = requireModule('sql.js') as JSFunction;
    final promise = initFn.callAsFunction();
    if (promise == null) {
      return const Error('sql.js init returned no promise');
    }
    final namespace = await (promise as JSPromise<JSAny?>).toDart;
    if (namespace == null) {
      return const Error('sql.js init resolved to null');
    }
    final sqlJs = namespace as _SqlJsNamespace;
    return Success((databaseConstructor: sqlJs.databaseConstructor));
  } catch (e) {
    return Error('Failed to initialize sql.js: $e');
  }
}