@rudderjs/session 1.0.3 → 1.0.4

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/README.md CHANGED
@@ -143,7 +143,7 @@ Session data is JSON-serialised, base64url-encoded, and signed with HMAC-SHA256.
143
143
 
144
144
  ### `redis`
145
145
 
146
- Session ID is stored in the cookie; data lives in Redis under `{prefix}{id}`. Requires `ioredis`.
146
+ The cookie holds the HMAC-signed session ID; the data lives in Redis under `{prefix}{id}`. Requires `ioredis`.
147
147
 
148
148
  ```ts
149
149
  {
@@ -155,6 +155,18 @@ Session ID is stored in the cookie; data lives in Redis under `{prefix}{id}`. Re
155
155
  }
156
156
  ```
157
157
 
158
+ ### Driver tradeoffs
159
+
160
+ | | cookie | redis |
161
+ | --- | --- | --- |
162
+ | Server-side store | none — payload lives in the cookie | required |
163
+ | Max size | ~4 KB | bounded by Redis |
164
+ | `regenerate()` invalidates the old cookie | **no** — old signed cookie remains valid until its `Max-Age` | yes — old key is deleted from Redis |
165
+ | `destroy()` after logout | no-op (statelessness is the tradeoff) | actual delete |
166
+ | Survives a redis outage | n/a | sessions become unreadable |
167
+
168
+ If you need true post-logout invalidation, a stolen-cookie kill switch, or full session-fixation defense beyond rotating the ID on login, **use the redis driver**. The cookie driver is the right choice when statelessness is the goal and the data fits — flash messages, CSRF tokens, simple "is logged in" markers — and you can accept that revocation only happens at TTL.
169
+
158
170
  ---
159
171
 
160
172
  ## Notes
package/dist/index.d.ts CHANGED
@@ -57,6 +57,17 @@ export declare class SessionInstance {
57
57
  has(key: string): boolean;
58
58
  all(): Record<string, unknown>;
59
59
  id(): string;
60
+ /**
61
+ * Mint a fresh session id and best-effort destroy the prior one server-side.
62
+ *
63
+ * **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
64
+ * cookie remains valid until its `Max-Age` expires. The cookie driver is
65
+ * stateless — there is no server-side store to delete from — so a stolen
66
+ * pre-regenerate cookie can still be replayed within its TTL. Apps that
67
+ * need true post-logout invalidation (or fixation defense beyond
68
+ * "rotate the id on login") must use the redis driver, where `destroy()`
69
+ * actually removes the key. See README "Sessions" → "Driver tradeoffs".
70
+ */
60
71
  regenerate(): Promise<void>;
61
72
  /** Whether the session data has been modified since loading. */
62
73
  isDirty(): boolean;
@@ -79,11 +90,40 @@ export declare class Session {
79
90
  static all(): Record<string, unknown>;
80
91
  static regenerate(): Promise<void>;
81
92
  }
93
+ /**
94
+ * Test-only — run `fn` inside a session ALS context populated by `session`.
95
+ * Lets unit tests in other packages exercise code paths that go through the
96
+ * `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
97
+ * up the full request middleware. NOT for production code.
98
+ *
99
+ * @internal
100
+ */
101
+ export declare function _runWithSession<T>(session: SessionInstance, fn: () => T): T;
102
+ /** @internal Exported for tests; not part of the public API. */
103
+ export declare class RedisDriver implements InternalDriver {
104
+ private readonly redisConfig;
105
+ private readonly secret;
106
+ private clientPromise;
107
+ private readonly prefix;
108
+ constructor(redisConfig: NonNullable<SessionConfig['redis']>, secret: string);
109
+ private getClient;
110
+ private key;
111
+ load(cookieValue: string | undefined): Promise<SessionPayload>;
112
+ persist(payload: SessionPayload, ttl: number): Promise<string>;
113
+ destroy(id: string): Promise<void>;
114
+ private empty;
115
+ }
82
116
  export declare function sessionMiddleware(config: SessionConfig): MiddlewareHandler;
83
117
  /**
84
118
  * Session middleware that reads its config from the DI container.
85
119
  * Requires session() provider to be registered in bootstrap/providers.ts.
86
120
  *
121
+ * Resolves the singleton middleware bound by `SessionProvider.boot()` to
122
+ * `session.middleware`, so per-route opt-ins on api routes share the same
123
+ * driver — and the same redis connection — as the auto-installed web group
124
+ * middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
125
+ * spin up a new RedisDriver (and a new ioredis connection) per route.
126
+ *
87
127
  * Usage in routes:
88
128
  * import { SessionMiddleware } from '@rudderjs/session'
89
129
  * Route.get('/path', handler, [SessionMiddleware()])
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,14 +11,19 @@ export class SessionInstance {
11
11
  _driver;
12
12
  _config;
13
13
  constructor(payload, driver, config) {
14
+ // Default missing fields rather than trusting the shape — legacy and
15
+ // corrupt redis entries (or third-party writes) may omit flash_next or
16
+ // data entirely, and crashing the constructor takes the whole request
17
+ // down on every load.
18
+ const flashPrev = payload.flash_next ?? {};
14
19
  this._id = payload.id;
15
- this._data = { ...payload.data };
16
- this._flash = { ...payload.flash_next }; // prev flash_next → current flash
20
+ this._data = { ...(payload.data ?? {}) };
21
+ this._flash = { ...flashPrev }; // prev flash_next → current flash
17
22
  this._flashNext = {};
18
23
  this._driver = driver;
19
24
  this._config = config;
20
25
  // Flash data was consumed — mark dirty so save() clears it from the cookie
21
- if (Object.keys(payload.flash_next).length > 0)
26
+ if (Object.keys(flashPrev).length > 0)
22
27
  this._dirty = true;
23
28
  }
24
29
  get(key, fallback) {
@@ -54,6 +59,17 @@ export class SessionInstance {
54
59
  id() {
55
60
  return this._id;
56
61
  }
62
+ /**
63
+ * Mint a fresh session id and best-effort destroy the prior one server-side.
64
+ *
65
+ * **Cookie driver caveat (`session.driver = 'cookie'`):** the previous
66
+ * cookie remains valid until its `Max-Age` expires. The cookie driver is
67
+ * stateless — there is no server-side store to delete from — so a stolen
68
+ * pre-regenerate cookie can still be replayed within its TTL. Apps that
69
+ * need true post-logout invalidation (or fixation defense beyond
70
+ * "rotate the id on login") must use the redis driver, where `destroy()`
71
+ * actually removes the key. See README "Sessions" → "Driver tradeoffs".
72
+ */
57
73
  async regenerate() {
58
74
  await this._driver.destroy(this._id);
59
75
  this._id = randomUUID();
@@ -129,19 +145,33 @@ export class Session {
129
145
  return this.current().regenerate();
130
146
  }
131
147
  }
132
- // ─── Cookie Driver ─────────────────────────────────────────
133
- function signPayload(payload, secret) {
134
- const b64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
135
- const hmac = createHmac('sha256', secret).update(b64).digest('base64url');
136
- return `${b64}.${hmac}`;
148
+ /**
149
+ * Test-only — run `fn` inside a session ALS context populated by `session`.
150
+ * Lets unit tests in other packages exercise code paths that go through the
151
+ * `Session` static facade (e.g. CSRF helpers, OAuth state) without standing
152
+ * up the full request middleware. NOT for production code.
153
+ *
154
+ * @internal
155
+ */
156
+ export function _runWithSession(session, fn) {
157
+ return _als.run(session, fn);
137
158
  }
138
- function verifyPayload(cookieValue, secret) {
139
- const dotIdx = cookieValue.lastIndexOf('.');
159
+ // ─── Sign / Verify primitives ──────────────────────────────
160
+ // Generic HMAC-SHA256 sign+verify shared by both drivers. Cookie driver signs
161
+ // the base64url-encoded JSON payload; redis driver signs the session ID alone
162
+ // so a stolen UUID can't be replayed and an attacker-supplied ID can't fixate
163
+ // onto a victim's session.
164
+ function sign(value, secret) {
165
+ const hmac = createHmac('sha256', secret).update(value).digest('base64url');
166
+ return `${value}.${hmac}`;
167
+ }
168
+ function verify(signed, secret) {
169
+ const dotIdx = signed.lastIndexOf('.');
140
170
  if (dotIdx === -1)
141
171
  return null;
142
- const b64 = cookieValue.slice(0, dotIdx);
143
- const hmac = cookieValue.slice(dotIdx + 1);
144
- const expected = createHmac('sha256', secret).update(b64).digest('base64url');
172
+ const value = signed.slice(0, dotIdx);
173
+ const hmac = signed.slice(dotIdx + 1);
174
+ const expected = createHmac('sha256', secret).update(value).digest('base64url');
145
175
  // Constant-time comparison
146
176
  if (expected.length !== hmac.length)
147
177
  return null;
@@ -149,7 +179,15 @@ function verifyPayload(cookieValue, secret) {
149
179
  for (let i = 0; i < expected.length; i++) {
150
180
  mismatch |= (expected.codePointAt(i) ?? 0) ^ (hmac.codePointAt(i) ?? 0);
151
181
  }
152
- if (mismatch !== 0)
182
+ return mismatch === 0 ? value : null;
183
+ }
184
+ // ─── Cookie Driver ─────────────────────────────────────────
185
+ function signPayload(payload, secret) {
186
+ return sign(Buffer.from(JSON.stringify(payload)).toString('base64url'), secret);
187
+ }
188
+ function verifyPayload(cookieValue, secret) {
189
+ const b64 = verify(cookieValue, secret);
190
+ if (b64 === null)
153
191
  return null;
154
192
  try {
155
193
  return JSON.parse(Buffer.from(b64, 'base64url').toString('utf8'));
@@ -172,44 +210,67 @@ class CookieDriver {
172
210
  return signPayload(payload, this.secret);
173
211
  }
174
212
  async destroy(_id) {
175
- // Cookie driver: nothing to destroy server-side
213
+ // Cookie driver is stateless there is no server-side store to delete
214
+ // from. The pre-regenerate cookie therefore remains valid until its
215
+ // Max-Age expires; this is documented on `SessionInstance.regenerate()`.
216
+ // Apps that need true post-logout invalidation must use the redis driver.
176
217
  }
177
218
  empty() {
178
219
  return { id: randomUUID(), data: {}, flash_next: {} };
179
220
  }
180
221
  }
181
- // ─── Redis Driver ──────────────────────────────────────────
182
- class RedisDriver {
183
- config;
184
- client;
222
+ /** @internal Exported for tests; not part of the public API. */
223
+ export class RedisDriver {
224
+ redisConfig;
225
+ secret;
226
+ // Cache the *promise* of a client, not the client itself. With a raw
227
+ // `if (!this.client)` guard, two concurrent first-request callers would
228
+ // both fall through and each construct a new ioredis instance — the
229
+ // second overwrites the first, leaking the first connection's FD and
230
+ // its retry timer. Caching the promise means concurrent callers all
231
+ // await the same in-flight connect.
232
+ clientPromise = null;
185
233
  prefix;
186
- constructor(config) {
187
- this.config = config;
188
- this.prefix = config.prefix ?? 'session:';
189
- }
190
- async getClient() {
191
- if (!this.client) {
192
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
193
- const { Redis } = await import('ioredis');
194
- this.client = this.config.url
195
- ? new Redis(this.config.url)
196
- : new Redis({
197
- host: this.config.host ?? '127.0.0.1',
198
- port: this.config.port ?? 6379,
199
- password: this.config.password,
200
- });
234
+ constructor(redisConfig, secret) {
235
+ this.redisConfig = redisConfig;
236
+ this.secret = secret;
237
+ this.prefix = redisConfig.prefix ?? 'session:';
238
+ }
239
+ getClient() {
240
+ if (!this.clientPromise) {
241
+ this.clientPromise = (async () => {
242
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
243
+ const { Redis } = await import('ioredis');
244
+ return this.redisConfig.url
245
+ ? new Redis(this.redisConfig.url)
246
+ : new Redis({
247
+ host: this.redisConfig.host ?? '127.0.0.1',
248
+ port: this.redisConfig.port ?? 6379,
249
+ password: this.redisConfig.password,
250
+ });
251
+ })();
252
+ // If the import or constructor throws, drop the rejected promise so
253
+ // the next call retries instead of permanently caching the failure.
254
+ this.clientPromise.catch(() => { this.clientPromise = null; });
201
255
  }
202
- return this.client;
256
+ return this.clientPromise;
203
257
  }
204
258
  key(id) { return `${this.prefix}${id}`; }
205
259
  async load(cookieValue) {
206
260
  if (!cookieValue)
207
261
  return this.empty();
262
+ // Verify HMAC before touching redis. An attacker who plants an unsigned
263
+ // ID — or guesses one — never reaches the redis lookup, and a cache miss
264
+ // on a valid signature still creates a fresh ID rather than fixating on
265
+ // the cookie-supplied value.
266
+ const id = verify(cookieValue, this.secret);
267
+ if (id === null)
268
+ return this.empty();
208
269
  try {
209
270
  const client = await this.getClient();
210
- const raw = await client.get(this.key(cookieValue));
271
+ const raw = await client.get(this.key(id));
211
272
  if (!raw)
212
- return this.emptyWithId(cookieValue);
273
+ return this.empty();
213
274
  return JSON.parse(raw);
214
275
  }
215
276
  catch {
@@ -219,7 +280,7 @@ class RedisDriver {
219
280
  async persist(payload, ttl) {
220
281
  const client = await this.getClient();
221
282
  await client.set(this.key(payload.id), JSON.stringify(payload), 'EX', ttl);
222
- return payload.id;
283
+ return sign(payload.id, this.secret);
223
284
  }
224
285
  async destroy(id) {
225
286
  try {
@@ -233,9 +294,6 @@ class RedisDriver {
233
294
  empty() {
234
295
  return { id: randomUUID(), data: {}, flash_next: {} };
235
296
  }
236
- emptyWithId(id) {
237
- return { id, data: {}, flash_next: {} };
238
- }
239
297
  }
240
298
  // ─── Helpers ───────────────────────────────────────────────
241
299
  function parseCookie(header, name) {
@@ -264,7 +322,7 @@ function buildCookieHeader(name, value, config) {
264
322
  }
265
323
  function makeDriver(config) {
266
324
  if (config.driver === 'redis')
267
- return new RedisDriver(config.redis ?? {});
325
+ return new RedisDriver(config.redis ?? {}, config.secret);
268
326
  return new CookieDriver(config.secret);
269
327
  }
270
328
  // ─── Session Middleware ────────────────────────────────────
@@ -279,8 +337,30 @@ export function sessionMiddleware(config) {
279
337
  if (!cookieValue)
280
338
  session.markDirty();
281
339
  req.raw['__rjs_session'] = session;
282
- await _als.run(session, next);
283
- await session.save(res);
340
+ // Persist regardless of whether next() throws — flash messages on error
341
+ // redirects, new sessions on error responses, and regenerate() must
342
+ // survive a thrown handler. Save errors only surface when next() did not
343
+ // already throw, so the original exception isn't masked by a redis blip.
344
+ let nextErrored = false;
345
+ let nextErr;
346
+ try {
347
+ await _als.run(session, next);
348
+ }
349
+ catch (err) {
350
+ nextErrored = true;
351
+ nextErr = err;
352
+ }
353
+ try {
354
+ await session.save(res);
355
+ }
356
+ catch (saveErr) {
357
+ if (!nextErrored) {
358
+ nextErrored = true;
359
+ nextErr = saveErr;
360
+ }
361
+ }
362
+ if (nextErrored)
363
+ throw nextErr;
284
364
  };
285
365
  }
286
366
  // ─── Zero-config middleware (reads config from DI) ─────────
@@ -288,13 +368,18 @@ export function sessionMiddleware(config) {
288
368
  * Session middleware that reads its config from the DI container.
289
369
  * Requires session() provider to be registered in bootstrap/providers.ts.
290
370
  *
371
+ * Resolves the singleton middleware bound by `SessionProvider.boot()` to
372
+ * `session.middleware`, so per-route opt-ins on api routes share the same
373
+ * driver — and the same redis connection — as the auto-installed web group
374
+ * middleware. Constructing a fresh `sessionMiddleware(cfg)` per call would
375
+ * spin up a new RedisDriver (and a new ioredis connection) per route.
376
+ *
291
377
  * Usage in routes:
292
378
  * import { SessionMiddleware } from '@rudderjs/session'
293
379
  * Route.get('/path', handler, [SessionMiddleware()])
294
380
  */
295
381
  export function SessionMiddleware() {
296
- const config = app().make('session.config');
297
- return sessionMiddleware(config);
382
+ return app().make('session.middleware');
298
383
  }
299
384
  // ─── Service Provider Factory ──────────────────────────────
300
385
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAoD5E,8DAA8D;AAE9D,MAAM,OAAO,eAAe;IAClB,KAAK,CAA8B;IACnC,MAAM,CAA6B;IACnC,UAAU,CAAyB;IACnC,GAAG,CAAe;IAClB,MAAM,GAAG,KAAK,CAAA;IACL,OAAO,CAAgB;IACvB,OAAO,CAAe;IAEvC,YAAY,OAAuB,EAAE,MAAsB,EAAE,MAAqB;QAChF,IAAI,CAAC,GAAG,GAAU,OAAO,CAAC,EAAE,CAAA;QAC5B,IAAI,CAAC,KAAK,GAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,MAAM,GAAO,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA,CAAE,kCAAkC;QAC/E,IAAI,CAAC,UAAU,GAAG,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAM,MAAM,CAAA;QACxB,IAAI,CAAC,OAAO,GAAM,MAAM,CAAA;QACxB,2EAA2E;QAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpE,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,QAAY;QAC9B,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAkB,CAAA;IAC1E,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAc;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,GAAW,EAAE,KAAc;QAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,wDAAwD;IACxD,QAAQ,CAAI,GAAW,EAAE,QAAY;QACnC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAkB,CAAA;IAC5E,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAA;IAC1B,CAAC;IAED,GAAG;QACD,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,EAAE;QACA,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;IACpB,CAAC;IAED,gEAAgE;IAChE,OAAO,KAAc,OAAO,IAAI,CAAC,MAAM,CAAA,CAAC,CAAC;IAEzC,wFAAwF;IACxF,SAAS,KAAW,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA,CAAC,CAAC;IAExC,KAAK,CAAC,IAAI,CAAC,GAAgB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM,CAAE,6CAA6C;QAEvE,MAAM,OAAO,GAAmB;YAC9B,EAAE,EAAU,IAAI,CAAC,GAAG;YACpB,IAAI,EAAQ,IAAI,CAAC,KAAK;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAA;QACD,MAAM,GAAG,GAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAA;QAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAC5D,MAAM,SAAS,GAAK,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1F,MAAM,CAAC,GAAG,GAAG,CAAC,GAAuF,CAAA;QACrG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACV,wEAAwE;YACxE,8DAA8D;YAC9D,wEAAwE;YACxE,gDAAgD;YAChD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;CACF;AAED,6DAA6D;AAE7D,MAAM,IAAI,GAAG,IAAI,iBAAiB,EAAmB,CAAA;AAErD,MAAM,OAAO,OAAO;IACV,MAAM,CAAC,OAAO;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QACzB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;QAC3F,OAAO,CAAC,CAAA;IACV,CAAC;IAED,0EAA0E;IAC1E,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAA;IAChC,CAAC;IAED,iDAAiD;IACjD,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAA;IACtC,CAAC;IAED,MAAM,CAAC,GAAG,CAAI,GAAW,EAAE,QAAY;QACrC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAI,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAW;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,KAAc;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAI,GAAW,EAAE,QAAY;QAC1C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAI,GAAG,EAAE,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC;CACF;AAED,8DAA8D;AAE9D,SAAS,WAAW,CAAC,OAAuB,EAAE,MAAc;IAC1D,MAAM,GAAG,GAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACvE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACzE,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,GAAG,GAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAC7E,2BAA2B;IAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAChD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAmB,CAAA;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,YAAY;IACa;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,IAAI,CAAC,WAA+B;QACxC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;QACrC,OAAO,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,IAAY;QACjD,OAAO,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,gDAAgD;IAClD,CAAC;IAEO,KAAK;QACX,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IACvD,CAAC;CACF;AAED,8DAA8D;AAE9D,MAAM,WAAW;IAIc;IAHrB,MAAM,CAAS;IACN,MAAM,CAAQ;IAE/B,YAA6B,MAA2C;QAA3C,WAAM,GAAN,MAAM,CAAqC;QACtE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAA;IAC3C,CAAC;IAEO,KAAK,CAAC,SAAS;QAKrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,8DAA8D;YAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAQ,CAAA;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;gBAC3B,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC5B,CAAC,CAAC,IAAI,KAAK,CAAC;oBACR,IAAI,EAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAQ,WAAW;oBAC7C,IAAI,EAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAQ,IAAI;oBACtC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;iBAC/B,CAAC,CAAA;QACR,CAAC;QACD,OAAO,IAAI,CAAC,MAAuD,CAAA;IACrE,CAAC;IAEO,GAAG,CAAC,EAAU,IAAY,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAA,CAAC,CAAC;IAEhE,KAAK,CAAC,IAAI,CAAC,WAA+B;QACxC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YACrC,MAAM,GAAG,GAAM,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,GAAW;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1E,OAAO,OAAO,CAAC,EAAE,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;YACrC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAEO,KAAK;QACX,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IACvD,CAAC;IAEO,WAAW,CAAC,EAAU;QAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;IACzC,CAAC;CACF;AAED,8DAA8D;AAE9D,SAAS,WAAW,CAAC,MAAc,EAAE,IAAY;IAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAQ;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACrD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAqB;IAC3E,MAAM,KAAK,GAAG;QACZ,GAAG,IAAI,IAAI,KAAK,EAAE;QAClB,QAAQ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAC5B,WAAW,MAAM,CAAC,QAAQ,GAAG,EAAE,EAAE;QACjC,YAAY,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;KACrC,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM;QAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,UAAU,CAAC,MAAqB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACzE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,8DAA8D;AAE9D,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAEjC,OAAO,KAAK,UAAU,iBAAiB,CAAC,GAAe,EAAE,GAAgB,EAAE,IAAyB;QAClG,MAAM,YAAY,GAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAwB,IAAI,EAAE,CAAA;QACxE,MAAM,WAAW,GAAI,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClE,MAAM,OAAO,GAAQ,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnD,MAAM,OAAO,GAAQ,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACjE,iFAAiF;QACjF,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,SAAS,EAAE,CAIpC;QAAC,GAAG,CAAC,GAA+B,CAAC,eAAe,CAAC,GAAG,OAAO,CAAA;QAEhE,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC7B,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAA;AACH,CAAC;AAED,8DAA8D;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAgB,gBAAgB,CAAC,CAAA;IAC1D,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC;AAED,8DAA8D;AAE9D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAClD,QAAQ,KAAU,CAAC;IAEnB,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,MAAM,CAAgB,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;QACxC,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;QAE5C,2EAA2E;QAC3E,0EAA0E;QAC1E,qDAAqD;QACrD,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1B,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rudderjs/session",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "rudderjs": {
5
5
  "provider": "SessionProvider",
6
6
  "stage": "infrastructure"