{"version":3,"sources":["../../src/session/session.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,kBAAqB;AACvC,OAAO,EACL,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAC9D,kBAAqB;AAEtB,OAAO,KAAK,GAAG,mBAAsB;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM;IAC1C,OAAO,CAAC,UAAU,CAAuB;gBAE7B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IASlC,OAAO,CAAC,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAStD;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM;IACnC,OAAO,CAAC,SAAS,CAAsB;gBAE3B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAI1C,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;IAOtC,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,CAMnE;IAED,IAAI,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAM7D;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,CAMnE;IAED,IAAI,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAMtE;CACF","file":"session.d.ts","sourcesContent":["/**\n * @module \"ethpm/session\"\n */\n\nimport * as config from 'ethpm/config';\nimport {\n  Config, HasInstaller, HasManifests, HasStorage, HasRegistries,\n} from 'ethpm/config';\n\nimport * as pkg from 'ethpm/package';\n\nimport { Query } from './query';\n\nexport class Builder<T extends config.Config> {\n  private connectors: config.Connectors<T>;\n\n  constructor(config_: config.RawConfig<T>) {\n    this.connectors = Object.assign(\n      {}, ...Object.keys(config_)\n        .map((service) => ({\n          [service]: config.load(config_[service]),\n        })),\n    );\n  }\n\n  async connect(options: any = {}): Promise<Session<T>> {\n    const workspace = Object.assign({}, ...await Promise.all(\n      Object.keys(this.connectors).map(async (service) => ({\n        [service]: await this.connectors[service].connect(options),\n      })),\n    ));\n\n    return new Session(workspace);\n  }\n}\n\nexport class Session<T extends Config> {\n  private workspace: config.Workspace<T>;\n\n  constructor(workspace: config.Workspace<T>) {\n    this.workspace = workspace;\n  }\n\n  query(package_: pkg.Package): Query<T> {\n    return new Query({\n      package: package_,\n      workspace: this.workspace,\n    });\n  }\n\n  get manifests(): config.Workspace<HasManifests>['manifests'] | never {\n    if ('manifests' in this.workspace) {\n      return (<config.Workspace<HasManifests>> this.workspace).manifests;\n    }\n\n    throw new Error('No manifests');\n  }\n\n  get storage(): config.Workspace<HasStorage>['storage'] | never {\n    if ('storage' in this.workspace) {\n      return (<config.Workspace<HasStorage>> this.workspace).storage;\n    }\n\n    throw new Error('No storage');\n  }\n\n  get installer(): config.Workspace<HasInstaller>['installer'] | never {\n    if ('installer' in this.workspace) {\n      return (<config.Workspace<HasInstaller>> this.workspace).installer;\n    }\n\n    throw new Error('No installer');\n  }\n\n  get registries(): config.Workspace<HasRegistries>['registries'] | never {\n    if ('registries' in this.workspace) {\n      return (<config.Workspace<HasRegistries>> this.workspace).registries;\n    }\n\n    throw new Error('No registries');\n  }\n}\n"]}