{"version":3,"sources":["../../src/masterstore.ts"],"sourcesContent":["import type {\n  CreateBusDriverResult,\n  CreateDriverResult,\n  L1CacheDriver,\n  L2CacheDriver,\n  RawCommonOptions,\n} from './types/main';\n\n\nexport class MasterStore {\n  #baseOptions: RawCommonOptions & { prefix?: string } = {};\n  #l1?: CreateDriverResult<L1CacheDriver>;\n  #l2?: CreateDriverResult<L2CacheDriver>;\n  #bus?: CreateBusDriverResult;\n\n  constructor(baseOptions: RawCommonOptions & { prefix?: string } = {}) {\n    this.#baseOptions = baseOptions;\n  }\n\n  /**\n   * Add a L1 layer to your store. This is usually a memory driver\n   * for fast access purposes.\n   */\n  useL1Layer(driver: CreateDriverResult<L1CacheDriver>) {\n    this.#l1 = driver;\n    return this;\n  }\n\n  /**\n   * Add a L2 layer to your store. This is usually something\n   * distributed like Redis, DynamoDB, Sql database, etc.\n   */\n  useL2Layer(driver: CreateDriverResult<L2CacheDriver>) {\n    this.#l2 = driver;\n    return this;\n  }\n\n  /**\n   * Add a bus to your store. It will be used to synchronize L1 layers between\n   * different instances of your application.\n   */\n  useBus(bus: CreateBusDriverResult) {\n    this.#bus = bus;\n    return this;\n  }\n\n  get entry() {\n    return {\n      options: this.#baseOptions,\n      l1: this.#l1,\n      l2: this.#l2,\n      bus: this.#bus,\n    };\n  }\n}\n\n/**\n * Create a new store\n */\nexport function masterstore(options?: RawCommonOptions & { prefix?: string }) {\n  return new MasterStore(options);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASO,IAAM,cAAN,MAAkB;AAAA,EACvB,eAAuD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,cAAsD,CAAC,GAAG;AACpE,SAAK,eAAe;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,QAA2C;AACpD,SAAK,MAAM;AACX,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAW,QAA2C;AACpD,SAAK,MAAM;AACX,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,KAA4B;AACjC,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO;AAAA,MACL,SAAS,KAAK;AAAA,MACd,IAAI,KAAK;AAAA,MACT,IAAI,KAAK;AAAA,MACT,KAAK,KAAK;AAAA,IACZ;AAAA,EACF;AACF;AAKO,SAAS,YAAY,SAAkD;AAC5E,SAAO,IAAI,YAAY,OAAO;AAChC;","names":[]}