@shopify/shopify-app-session-storage-redis
Version:
Shopify App Session Storage for Redis
1 lines • 4.19 kB
Source Map (JSON)
{"version":3,"file":"redis-connection.mjs","sources":["../../../src/redis-connection.ts"],"sourcesContent":["import {createClient, RedisClientOptions} from 'redis';\nimport {DBConnection} from '@shopify/shopify-app-session-storage';\n\ntype RedisClient = ReturnType<typeof createClient>;\n\nexport class RedisConnection implements DBConnection {\n sessionStorageIdentifier: string;\n private client: RedisClient;\n\n constructor(\n urlOrClient: string | URL | RedisClient,\n options: RedisClientOptions,\n keyPrefix: string,\n ) {\n this.init(urlOrClient, options);\n this.sessionStorageIdentifier = keyPrefix;\n }\n\n query(_query: string, _params: any[]): Promise<any[]> {\n throw new Error('Method not implemented. Use get(string, boolean) instead');\n }\n\n async connect(): Promise<void> {\n if (!this.client.isReady) {\n await this.client.connect();\n }\n }\n\n async disconnect(): Promise<void> {\n await this.client.quit();\n }\n\n async keys(name: string): Promise<any> {\n return this.client.keys(name);\n }\n\n async set(baseKey: string, value: any, addKeyPrefix = true) {\n await this.client.set(this.buildKey(baseKey, addKeyPrefix), value);\n }\n\n async del(baseKey: string, addKeyPrefix = true): Promise<any> {\n return this.client.del(this.buildKey(baseKey, addKeyPrefix));\n }\n\n async get(baseKey: string, addKeyPrefix = true): Promise<any> {\n return this.client.get(this.buildKey(baseKey, addKeyPrefix));\n }\n\n generateFullKey(name: string): string {\n return `${this.sessionStorageIdentifier}_${name}`;\n }\n\n private buildKey(baseKey: string, addKeyPrefix: boolean): string {\n return addKeyPrefix ? this.generateFullKey(baseKey) : baseKey;\n }\n\n private init(\n urlOrClient: string | URL | RedisClient,\n options: RedisClientOptions,\n ) {\n if (typeof urlOrClient === 'string' || urlOrClient instanceof URL) {\n this.client = createClient({...options, url: urlOrClient.toString()});\n this.client.on('error', this.eventHandler);\n this.client.on('connect', this.eventHandler);\n this.client.on('reconnecting', this.eventHandler);\n this.client.on('ready', this.eventHandler);\n } else {\n this.client = urlOrClient;\n }\n }\n\n private eventHandler = (..._args: any[]) => {};\n}\n"],"names":[],"mappings":";;MAKa,eAAe,CAAA;AAC1B,IAAA,wBAAwB;AAChB,IAAA,MAAM;AAEd,IAAA,WAAA,CACE,WAAuC,EACvC,OAA2B,EAC3B,SAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AAC/B,QAAA,IAAI,CAAC,wBAAwB,GAAG,SAAS;IAC3C;IAEA,KAAK,CAAC,MAAc,EAAE,OAAc,EAAA;AAClC,QAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC;IAC7E;AAEA,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QAC7B;IACF;AAEA,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC1B;IAEA,MAAM,IAAI,CAAC,IAAY,EAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B;IAEA,MAAM,GAAG,CAAC,OAAe,EAAE,KAAU,EAAE,YAAY,GAAG,IAAI,EAAA;AACxD,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IACpE;AAEA,IAAA,MAAM,GAAG,CAAC,OAAe,EAAE,YAAY,GAAG,IAAI,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D;AAEA,IAAA,MAAM,GAAG,CAAC,OAAe,EAAE,YAAY,GAAG,IAAI,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D;AAEA,IAAA,eAAe,CAAC,IAAY,EAAA;AAC1B,QAAA,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAA,CAAA,EAAI,IAAI,EAAE;IACnD;IAEQ,QAAQ,CAAC,OAAe,EAAE,YAAqB,EAAA;AACrD,QAAA,OAAO,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO;IAC/D;IAEQ,IAAI,CACV,WAAuC,EACvC,OAA2B,EAAA;QAE3B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,YAAY,GAAG,EAAE;AACjE,YAAA,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,EAAC,GAAG,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;QAC5C;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,WAAW;QAC3B;IACF;IAEQ,YAAY,GAAG,CAAC,GAAG,KAAY,KAAI,EAAE,CAAC;AAC/C;;;;"}