@shopify/shopify-app-session-storage-redis 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/ts/redis.js CHANGED
@@ -2,21 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedisSessionStorage = void 0;
4
4
  var tslib_1 = require("tslib");
5
- var redis_1 = require("redis");
6
5
  var shopify_api_1 = require("@shopify/shopify-api");
7
6
  var migrations_1 = require("./migrations");
7
+ var redis_connection_1 = require("./redis-connection");
8
+ var redis_migrator_1 = require("./redis-migrator");
8
9
  var defaultRedisSessionStorageOptions = {
9
10
  sessionKeyPrefix: 'shopify_sessions',
11
+ migratorOptions: {
12
+ migrationDBIdentifier: 'migrations',
13
+ migrations: migrations_1.migrationList,
14
+ },
10
15
  };
11
16
  var RedisSessionStorage = /** @class */ (function () {
12
17
  function RedisSessionStorage(dbUrl, opts) {
13
18
  if (opts === void 0) { opts = {}; }
14
- this.dbUrl = dbUrl;
15
- if (typeof this.dbUrl === 'string') {
16
- this.dbUrl = new URL(this.dbUrl);
17
- }
18
19
  this.options = tslib_1.__assign(tslib_1.__assign({}, defaultRedisSessionStorageOptions), opts);
19
- this.ready = this.init();
20
+ this.internalInit = this.init(dbUrl.toString());
21
+ this.ready = this.initMigrator(this.options.migratorOptions);
20
22
  }
21
23
  RedisSessionStorage.withCredentials = function (host, db, username, password, opts) {
22
24
  return new RedisSessionStorage(new URL("redis://".concat(encodeURIComponent(username), ":").concat(encodeURIComponent(password), "@").concat(host, "/").concat(db)), opts);
@@ -28,7 +30,7 @@ var RedisSessionStorage = /** @class */ (function () {
28
30
  case 0: return [4 /*yield*/, this.ready];
29
31
  case 1:
30
32
  _a.sent();
31
- return [4 /*yield*/, this.client.set(this.fullKey(session.id), JSON.stringify(session.toPropertyArray()))];
33
+ return [4 /*yield*/, this.client.set(session.id, JSON.stringify(session.toPropertyArray()))];
32
34
  case 2:
33
35
  _a.sent();
34
36
  return [4 /*yield*/, this.addKeyToShopList(session)];
@@ -47,7 +49,7 @@ var RedisSessionStorage = /** @class */ (function () {
47
49
  case 0: return [4 /*yield*/, this.ready];
48
50
  case 1:
49
51
  _a.sent();
50
- return [4 /*yield*/, this.client.get(this.fullKey(id))];
52
+ return [4 /*yield*/, this.client.get(id)];
51
53
  case 2:
52
54
  rawResult = _a.sent();
53
55
  if (!rawResult)
@@ -73,7 +75,7 @@ var RedisSessionStorage = /** @class */ (function () {
73
75
  return [4 /*yield*/, this.removeKeyFromShopList(session.shop, id)];
74
76
  case 3:
75
77
  _a.sent();
76
- return [4 /*yield*/, this.client.del(this.fullKey(id))];
78
+ return [4 /*yield*/, this.client.del(id)];
77
79
  case 4:
78
80
  _a.sent();
79
81
  _a.label = 5;
@@ -107,7 +109,7 @@ var RedisSessionStorage = /** @class */ (function () {
107
109
  case 0: return [4 /*yield*/, this.ready];
108
110
  case 1:
109
111
  _b.sent();
110
- return [4 /*yield*/, this.client.get(this.fullKey(shop))];
112
+ return [4 /*yield*/, this.client.get(shop)];
111
113
  case 2:
112
114
  idKeysArrayString = _b.sent();
113
115
  if (!idKeysArrayString)
@@ -122,7 +124,7 @@ var RedisSessionStorage = /** @class */ (function () {
122
124
  case 4:
123
125
  if (!!idKeysArray_1_1.done) return [3 /*break*/, 7];
124
126
  idKey = idKeysArray_1_1.value;
125
- return [4 /*yield*/, this.client.get(idKey)];
127
+ return [4 /*yield*/, this.client.get(idKey, false)];
126
128
  case 5:
127
129
  rawResult = _b.sent();
128
130
  if (!rawResult)
@@ -153,7 +155,7 @@ var RedisSessionStorage = /** @class */ (function () {
153
155
  return tslib_1.__awaiter(this, void 0, void 0, function () {
154
156
  return tslib_1.__generator(this, function (_a) {
155
157
  switch (_a.label) {
156
- case 0: return [4 /*yield*/, this.client.quit()];
158
+ case 0: return [4 /*yield*/, this.client.disconnect()];
157
159
  case 1:
158
160
  _a.sent();
159
161
  return [2 /*return*/];
@@ -161,17 +163,14 @@ var RedisSessionStorage = /** @class */ (function () {
161
163
  });
162
164
  });
163
165
  };
164
- RedisSessionStorage.prototype.fullKey = function (name) {
165
- return "".concat(this.options.sessionKeyPrefix, "_").concat(name);
166
- };
167
166
  RedisSessionStorage.prototype.addKeyToShopList = function (session) {
168
167
  return tslib_1.__awaiter(this, void 0, void 0, function () {
169
168
  var shopKey, idKey, idKeysArrayString, idKeysArray;
170
169
  return tslib_1.__generator(this, function (_a) {
171
170
  switch (_a.label) {
172
171
  case 0:
173
- shopKey = this.fullKey(session.shop);
174
- idKey = this.fullKey(session.id);
172
+ shopKey = session.shop;
173
+ idKey = this.client.generateFullKey(session.id);
175
174
  return [4 /*yield*/, this.client.get(shopKey)];
176
175
  case 1:
177
176
  idKeysArrayString = _a.sent();
@@ -199,8 +198,8 @@ var RedisSessionStorage = /** @class */ (function () {
199
198
  return tslib_1.__generator(this, function (_a) {
200
199
  switch (_a.label) {
201
200
  case 0:
202
- shopKey = this.fullKey(shop);
203
- idKey = this.fullKey(id);
201
+ shopKey = shop;
202
+ idKey = this.client.generateFullKey(id);
204
203
  return [4 /*yield*/, this.client.get(shopKey)];
205
204
  case 1:
206
205
  idKeysArrayString = _a.sent();
@@ -218,47 +217,35 @@ var RedisSessionStorage = /** @class */ (function () {
218
217
  });
219
218
  });
220
219
  };
221
- RedisSessionStorage.prototype.init = function () {
220
+ RedisSessionStorage.prototype.init = function (dbUrl) {
222
221
  return tslib_1.__awaiter(this, void 0, void 0, function () {
223
222
  return tslib_1.__generator(this, function (_a) {
224
223
  switch (_a.label) {
225
224
  case 0:
226
- this.client = (0, redis_1.createClient)(tslib_1.__assign(tslib_1.__assign({}, this.options), { url: this.dbUrl.toString() }));
227
- if (this.options.onError) {
228
- this.client.on('error', this.options.onError);
229
- }
225
+ this.client = new redis_connection_1.RedisConnection(dbUrl, this.options, this.options.sessionKeyPrefix);
230
226
  return [4 /*yield*/, this.client.connect()];
231
227
  case 1:
232
- _a.sent();
233
- return [4 /*yield*/, this.migrate()];
234
- case 2:
235
228
  _a.sent();
236
229
  return [2 /*return*/];
237
230
  }
238
231
  });
239
232
  });
240
233
  };
241
- RedisSessionStorage.prototype.migrate = function () {
234
+ RedisSessionStorage.prototype.initMigrator = function (migratorOptions) {
242
235
  return tslib_1.__awaiter(this, void 0, void 0, function () {
243
- var migrationsRecord, migrations;
244
236
  return tslib_1.__generator(this, function (_a) {
245
237
  switch (_a.label) {
246
- case 0: return [4 /*yield*/, this.client.get(this.fullKey('migrations'))];
238
+ case 0: return [4 /*yield*/, this.internalInit];
247
239
  case 1:
248
- migrationsRecord = _a.sent();
249
- migrations = {};
250
- if (migrationsRecord) {
251
- migrations = JSON.parse(migrationsRecord);
252
- }
253
- if (!!migrations.migrateToVersion1_0_1) return [3 /*break*/, 3];
254
- return [4 /*yield*/, (0, migrations_1.migrateToVersion1_0_1)(this.client, this.options.sessionKeyPrefix, this.fullKey.bind(this))];
255
- case 2:
256
- _a.sent();
257
- migrations.migrateToVersion1_0_1 = true;
258
- _a.label = 3;
259
- case 3: return [4 /*yield*/, this.client.set(this.fullKey('migrations'), JSON.stringify(migrations))];
260
- case 4:
261
240
  _a.sent();
241
+ if (migratorOptions === null) {
242
+ return [2 /*return*/, Promise.resolve()];
243
+ }
244
+ else {
245
+ this.migrator = new redis_migrator_1.RedisSessionStorageMigrator(this.client, migratorOptions);
246
+ this.migrator.validateMigrationList(migrations_1.migrationList);
247
+ return [2 /*return*/, this.migrator.applyMigrations()];
248
+ }
262
249
  return [2 /*return*/];
263
250
  }
264
251
  });
@@ -1 +1 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/redis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/redis.ts"],"names":[],"mappings":"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"}