async function createInstance()

in packages/sqrl-cli/src/cli/CliMain.ts [132:172]


async function createInstance(
  args: CliArgs
): Promise<{
  instance: Instance;
}> {
  const config: Config = {
    ...getDefaultConfig(),
    "state.allow-in-memory": true,
    ...(args.config ? await readJsonFile(args.config) : {}),
  };

  // Allow the --redis argument to override the config
  if (args.redis) {
    config["redis.address"] = args.redis;
  }

  const services: FunctionServices = {
    assert: new CliAssertService(),
    log: new CliLogService(),
  };
  const instance = SQRL.createInstance({ config, services });

  const requires = [
    ...(args.skipDefaultRequires
      ? []
      : [
          "sqrl-redis-functions",
          "sqrl-text-functions",
          "sqrl-load-functions",
          "sqrl-jsonpath",
          "sqrl-cli-functions",
        ]),
    ...args.requires,
  ];

  for (const name of requires) {
    await instance.importFromPackage(name, await import(name));
  }

  return { instance };
}