@gen3/frontend 0.12.58 → 0.12.59

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.
Files changed (41) hide show
  1. package/dist/dts/api/auth/sessionToken.d.ts.map +1 -1
  2. package/dist/dts/api/auth/sessionToken.js +8 -1
  3. package/dist/dts/api/auth/sessionToken.js.map +1 -1
  4. package/dist/dts/api/auth/tests/sessionToken.unit.test.js +8 -0
  5. package/dist/dts/api/auth/tests/sessionToken.unit.test.js.map +1 -1
  6. package/dist/dts/lib/session/session.d.ts.map +1 -1
  7. package/dist/dts/lib/session/session.js +143 -16
  8. package/dist/dts/lib/session/session.js.map +1 -1
  9. package/dist/dts/lib/session/tests/session.unit.test.js +23 -19
  10. package/dist/dts/lib/session/tests/session.unit.test.js.map +1 -1
  11. package/dist/dts/lib/session/types.d.ts +7 -0
  12. package/dist/dts/lib/session/types.d.ts.map +1 -1
  13. package/dist/index/cjs/QueryPanel-DQ8KpL3R.js +43 -0
  14. package/dist/index/cjs/QueryPanel-DQ8KpL3R.js.map +1 -0
  15. package/dist/index/cjs/index-DGj9a1Zu.js +41970 -0
  16. package/dist/index/cjs/index-DGj9a1Zu.js.map +1 -0
  17. package/dist/index/cjs/index.js +1 -1
  18. package/dist/index/esm/QueryPanel-KVo-8hDP.js +37 -0
  19. package/dist/index/esm/QueryPanel-KVo-8hDP.js.map +1 -0
  20. package/dist/index/esm/index-C1DxNyiu.js +41683 -0
  21. package/dist/index/esm/index-C1DxNyiu.js.map +1 -0
  22. package/dist/index/esm/index.js +1 -1
  23. package/dist/pages/cjs/CohortBuilder-rnF1-3cH.js +576 -0
  24. package/dist/pages/cjs/CohortBuilder-rnF1-3cH.js.map +1 -0
  25. package/dist/pages/cjs/QueryPanel-X7Tup_5n.js +43 -0
  26. package/dist/pages/cjs/QueryPanel-X7Tup_5n.js.map +1 -0
  27. package/dist/pages/cjs/index-C1PAwqq-.js +32363 -0
  28. package/dist/pages/cjs/index-C1PAwqq-.js.map +1 -0
  29. package/dist/pages/cjs/index.js +1 -1
  30. package/dist/pages/esm/CohortBuilder-CJzS3nJj.js +573 -0
  31. package/dist/pages/esm/CohortBuilder-CJzS3nJj.js.map +1 -0
  32. package/dist/pages/esm/QueryPanel-DLih5nrl.js +37 -0
  33. package/dist/pages/esm/QueryPanel-DLih5nrl.js.map +1 -0
  34. package/dist/pages/esm/index-CN67ZTi4.js +32253 -0
  35. package/dist/pages/esm/index-CN67ZTi4.js.map +1 -0
  36. package/dist/pages/esm/index.js +1 -1
  37. package/dist/server/cjs/server.js +8 -1
  38. package/dist/server/cjs/server.js.map +1 -1
  39. package/dist/server/esm/server.js +8 -1
  40. package/dist/server/esm/server.js.map +1 -1
  41. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"sessionToken.d.ts","sourceRoot":"","sources":["../../../../src/api/auth/sessionToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAKvC,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAcD;;;;;;;;;;GAUG;AACH,wBAA8B,OAAO,CACnC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
1
+ {"version":3,"file":"sessionToken.d.ts","sourceRoot":"","sources":["../../../../src/api/auth/sessionToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAKvC,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAsBD;;;;;;;;;;GAUG;AACH,wBAA8B,OAAO,CACnC,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -4,12 +4,19 @@ import { fetchJWTKey } from '../../lib/auth/utils';
4
4
  import { getWebTokenErrorResponse } from './errorHandler';
5
5
  /**
6
6
  * Claims the client needs from a token whose signature has already been verified.
7
+ *
8
+ * `expiresInMs` is computed here, against this server's own clock, rather than
9
+ * left for the client to compute from `expires` against its own — the browser's
10
+ * clock may be skewed from this server's, but this server's clock and `exp`
11
+ * (also stamped by a server) agree.
7
12
  */
8
13
  const tokenClaims = (accessToken) => {
9
14
  const decoded = decodeJwt(accessToken);
15
+ const expires = decoded.exp;
10
16
  return {
11
17
  issued: decoded.iat,
12
- expires: decoded.exp,
18
+ expires,
19
+ expiresInMs: expires !== undefined ? expires * 1000 - Date.now() : undefined,
13
20
  userContext: decoded.context?.user,
14
21
  };
15
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sessionToken.js","sourceRoot":"","sources":["../../../../src/api/auth/sessionToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionToken.js","sourceRoot":"","sources":["../../../../src/api/auth/sessionToken.ts"],"names":[],"mappings":"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"}
@@ -67,10 +67,16 @@ const claimsFor = (overrides = {}) => ({
67
67
  });
68
68
  beforeEach(() => {
69
69
  jest.clearAllMocks();
70
+ // `expiresInMs` is computed from this server's own clock; pin it so the
71
+ // expected value in each test is exact rather than a moving target.
72
+ jest.spyOn(Date, 'now').mockReturnValue(NOW_SECONDS * 1000);
70
73
  mockFetchJWTKey.mockResolvedValue('-----BEGIN PUBLIC KEY-----');
71
74
  mockJwtVerify.mockResolvedValue({ payload: {} });
72
75
  mockDecodeJwt.mockReturnValue(claimsFor());
73
76
  });
77
+ afterEach(() => {
78
+ jest.restoreAllMocks();
79
+ });
74
80
  // ---------------------------------------------------------------------------
75
81
  describe('sessionToken handler', () => {
76
82
  it('reports a valid token as issued, with its claims', async () => {
@@ -80,6 +86,7 @@ describe('sessionToken handler', () => {
80
86
  expect(res.body).toEqual({
81
87
  issued: NOW_SECONDS,
82
88
  expires: NOW_SECONDS + 1200,
89
+ expiresInMs: 1200 * 1000,
83
90
  userContext: { name: 'alice' },
84
91
  status: 'issued',
85
92
  });
@@ -97,6 +104,7 @@ describe('sessionToken handler', () => {
97
104
  expect(res.body).toEqual({
98
105
  issued: NOW_SECONDS,
99
106
  expires: NOW_SECONDS - 60,
107
+ expiresInMs: -60 * 1000,
100
108
  userContext: { name: 'alice' },
101
109
  status: 'expired',
102
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sessionToken.unit.test.js","sourceRoot":"","sources":["../../../../../src/api/auth/tests/sessionToken.unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,OAAO,MAAM,iBAAiB,CAAC;AAEtC,MAAM,cAAe,SAAQ,KAAK;CAAG;AACrC,MAAM,cAAe,SAAQ,KAAK;CAAG;AACrC,MAAM,cAAe,SAAQ,KAAK;CAAG;AACrC,MAAM,qBAAsB,SAAQ,KAAK;CAAG;AAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEhC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACvB,MAAM,EAAE;QACN,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,cAAc;QAC1B,UAAU,EAAE,cAAc;QAC1B,iBAAiB,EAAE,qBAAqB;KACzC;IACD,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3D,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;IACzD,SAAS,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;CAC1D,CAAC,CAAC,CAAC;AAEJ,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAClC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,WAAW,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE;CACrC,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;CAC1B,CAAC,CAAC,CAAC;AAEJ,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,MAAM,GAAG,GAAG;QACV,UAAU,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,SAAoB;QAC1B,MAAM,CAAC,IAAY;YACjB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,IAAI,CAAC,OAAgB;YACnB,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC;YACnB,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;IACF,OAAO,GAGN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,EAAE,CAClC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAmB,CAAC;AAE5D,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,SAAS,GAAG,CAAC,YAAqC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW,GAAG,IAAI;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IACpC,GAAG,SAAS;CACb,CAAC,CAAC;AAEH,UAAU,CAAC,GAAG,EAAE;IACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,eAAe,CAAC,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;IAChE,aAAa,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAE9E,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,WAAW,GAAG,IAAI;YAC3B,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC9B,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,4EAA4E;QAC5E,8EAA8E;QAC9E,6EAA6E;QAC7E,mCAAmC;QACnC,aAAa,CAAC,iBAAiB,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,WAAW,GAAG,EAAE;YACzB,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC9B,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,yEAAyE;QACzE,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAE7D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QAE9B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,2EAA2E;QAC3E,0DAA0D;QAC1D,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,aAAa,CAAC,iBAAiB,CAAC,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAErE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;QAElD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,aAAa,CAAC,iBAAiB,CAAC,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAErE,MAAM,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAExD,0DAA0D;QAC1D,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sessionToken.unit.test.js","sourceRoot":"","sources":["../../../../../src/api/auth/tests/sessionToken.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/lib/session/session.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAgD5E,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,kBAQnD,CAAC;AAEF,eAAO,MAAM,cAAc,oCAE1B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,WAAU,MAAW,KACpB,OAAO,CAAC,aAAa,CAgBvB,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,kBAAgB,EAChB,oBAAoB,MAAM,IAAI,YAmD/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;CAM9B,CAAC;AAoGF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAAI,gJAQ7B,oBAAoB,sBA6pBtB,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/lib/session/session.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAsD5E,eAAO,MAAM,aAAa,GAAU,UAAU,MAAM,kBAQnD,CAAC;AAEF,eAAO,MAAM,cAAc,oCAE1B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,WAAU,MAAW,KACpB,OAAO,CAAC,aAAa,CAgBvB,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,kBAAgB,EAChB,oBAAoB,MAAM,IAAI,YAmD/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;CAM9B,CAAC;AAiHF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAAI,gJAQ7B,oBAAoB,sBAuyBtB,CAAC"}
@@ -13,6 +13,11 @@ import { minutesToMilliseconds } from '../../utils';
13
13
  import { useWorkspaceResourceMonitor } from '../../components/Providers/ResourceMonitor';
14
14
  import { modals } from '@mantine/modals';
15
15
  const ACTIVITY_THROTTLE_TIMEOUT = 7000;
16
+ // Verbose session/refresh/inactivity console logging, off by default. Every
17
+ // call site below is guarded by this flag with an `if` rather than a wrapper
18
+ // function, so when it is disabled the log payload — object literals, date
19
+ // formatting — is never constructed, not just never printed.
20
+ const SESSION_DEBUG_LOGGING = process.env.NEXT_PUBLIC_SESSION_DEBUG === 'true';
16
21
  // Coming back to the page re-derives the refresh schedule from the real token.
17
22
  // Several signals mean "we are back" and can arrive together, so they share one
18
23
  // throttle: this keeps tab- and window-flipping from turning into one request per
@@ -141,7 +146,14 @@ const useInterval = (callback, delay) => {
141
146
  // Refreshing against the token's own `exp` means we hit Fence's /user endpoint at most
142
147
  // once per token lifetime instead of on a fixed clock that can drift into
143
148
  // (or past) the actual expiry.
144
- const REFRESH_MARGIN_MILLISECONDS = minutesToMilliseconds(2);
149
+ //
150
+ // This targets `exp` itself, not a margin before it: Fence (with
151
+ // RENEW_ACCESS_TOKEN_BEFORE_EXPIRATION unset/false, which we do not control)
152
+ // only reissues the access_token cookie reactively, once it has actually
153
+ // expired — a proactive call ahead of that reissues nothing and just gets read
154
+ // again unchanged. This buffer only absorbs latency/clock difference between
155
+ // the Next.js server and Fence, not the browser's clock — see `expiresInMs`.
156
+ const REFRESH_BUFFER_MILLISECONDS = 2000;
145
157
  // How soon we retry once, and only once, after a cycle that didn't produce a
146
158
  // healthy token: hitting /user reissues the cookie, so one prompt attempt often
147
159
  // fixes things. Repeating it at this rate would not, hence the backoff below.
@@ -178,21 +190,26 @@ const MILLISECONDS_PER_MINUTE = minutesToMilliseconds(1);
178
190
  * Delay before the next refresh of a healthy token, or a negative/small number
179
191
  * when the token does not look healthy (see `unhealthyRefreshDelay`).
180
192
  *
181
- * `exp * 1000 - Date.now()` mixes the server's clock with the browser's, so a
182
- * skewed browser clock makes the result wrong in both directions. A clock that
183
- * is behind the server inflates it, which would schedule the refresh past the
184
- * real expiry and silently log the user out — and re-reading the token later
185
- * yields the same wrong answer, so nothing recovers from it. The remaining
186
- * lifetime can never exceed the token's full lifetime, so `iat` gives us a
187
- * skew-free upper bound. A clock that is ahead deflates the result instead,
188
- * which is handled by backing off rather than refreshing on a tight loop.
193
+ * `session.expiresInMs` is computed by the Next.js server (`exp * 1000 -
194
+ * Date.now()` against *its own* clock) and shipped as a ready-to-use relative
195
+ * delay, so the browser never has to diff a server-issued epoch against its
196
+ * own clock — a skewed browser clock cannot make this wrong. Older responses
197
+ * without the field (or a stale cached one) fall back to computing it here,
198
+ * which is exposed to that skew again.
199
+ *
200
+ * The remaining delay can never exceed the token's full lifetime, so `iat`
201
+ * gives us a skew-free upper bound in case `expiresInMs` is ever missing or
202
+ * wrong.
189
203
  */
190
204
  const refreshDelayFromToken = (session) => {
191
- const wallClockDelay = (session.expires ?? 0) * 1000 - Date.now() - REFRESH_MARGIN_MILLISECONDS;
205
+ const serverRelativeDelay = session.expiresInMs !== undefined
206
+ ? session.expiresInMs
207
+ : (session.expires ?? 0) * 1000 - Date.now();
208
+ const delay = serverRelativeDelay + REFRESH_BUFFER_MILLISECONDS;
192
209
  if (!session.issued || !session.expires)
193
- return wallClockDelay;
210
+ return delay;
194
211
  const lifetime = (session.expires - session.issued) * 1000;
195
- return Math.min(wallClockDelay, lifetime - REFRESH_MARGIN_MILLISECONDS);
212
+ return Math.min(delay, lifetime + REFRESH_BUFFER_MILLISECONDS);
196
213
  };
197
214
  /**
198
215
  * Delay after `failures` consecutive cycles that did not yield a healthy,
@@ -349,8 +366,15 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
349
366
  // but a duration cannot be re-checked: it is only ever right if the callback
350
367
  // runs when it was promised. This is what the heartbeat compares against.
351
368
  const refreshDueAtRef = useRef(null);
369
+ // Debug-only: when the last refresh cycle actually completed. Not used by
370
+ // any scheduling logic — purely for the console logging below.
371
+ const lastRefreshedAtRef = useRef(null);
352
372
  const clearScheduledRefresh = useCallback(() => {
353
373
  if (refreshTimeoutRef.current) {
374
+ if (SESSION_DEBUG_LOGGING) {
375
+ // eslint-disable-next-line no-console
376
+ console.log('[session-refresh] clearing scheduled refresh timer');
377
+ }
354
378
  clearTimeout(refreshTimeoutRef.current);
355
379
  refreshTimeoutRef.current = null;
356
380
  }
@@ -364,7 +388,12 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
364
388
  clearScheduledRefresh();
365
389
  if (!isMountedRef.current)
366
390
  return;
367
- refreshDueAtRef.current = Date.now() + delay;
391
+ const dueAt = Date.now() + delay;
392
+ refreshDueAtRef.current = dueAt;
393
+ if (SESSION_DEBUG_LOGGING) {
394
+ // eslint-disable-next-line no-console
395
+ console.log(`[session-refresh] armed: next refresh in ${(delay / 1000).toFixed(1)}s, due at ${new Date(dueAt).toISOString()}`);
396
+ }
368
397
  refreshTimeoutRef.current = setTimeout(() => {
369
398
  void performScheduledRefreshRef.current?.();
370
399
  }, delay);
@@ -375,6 +404,23 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
375
404
  // dead-token branches below can skip re-settling a login state that is already
376
405
  // current instead of spending a second request on it.
377
406
  const scheduleFromTokenData = useCallback((session, loginStateIsFresh = false) => {
407
+ if (SESSION_DEBUG_LOGGING) {
408
+ // eslint-disable-next-line no-console
409
+ console.log('[session-refresh] scheduleFromTokenData', {
410
+ status: session.status,
411
+ issued: session.issued
412
+ ? new Date(session.issued * 1000).toISOString()
413
+ : undefined,
414
+ expires: session.expires
415
+ ? new Date(session.expires * 1000).toISOString()
416
+ : undefined,
417
+ remainingSeconds: session.expires
418
+ ? Math.round(session.expires - Date.now() / 1000)
419
+ : undefined,
420
+ loginStateIsFresh,
421
+ failures: refreshFailuresRef.current,
422
+ });
423
+ }
378
424
  if (!isMountedRef.current)
379
425
  return;
380
426
  if (sessionStatusRef.current !== 'issued')
@@ -425,8 +471,25 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
425
471
  refreshFailuresRef.current += 1;
426
472
  }, [armRefreshTimer, resettleLoginState]);
427
473
  const performScheduledRefresh = useCallback(async () => {
428
- if (sessionStatusRef.current !== 'issued')
474
+ if (SESSION_DEBUG_LOGGING) {
475
+ // eslint-disable-next-line no-console
476
+ console.log('[session-refresh] performScheduledRefresh: firing', {
477
+ sessionStatus: sessionStatusRef.current,
478
+ lastRefreshedAt: lastRefreshedAtRef.current
479
+ ? new Date(lastRefreshedAtRef.current).toISOString()
480
+ : null,
481
+ msSinceLastRefresh: lastRefreshedAtRef.current
482
+ ? Date.now() - lastRefreshedAtRef.current
483
+ : null,
484
+ });
485
+ }
486
+ if (sessionStatusRef.current !== 'issued') {
487
+ if (SESSION_DEBUG_LOGGING) {
488
+ // eslint-disable-next-line no-console
489
+ console.log('[session-refresh] performScheduledRefresh: skipped, session not issued');
490
+ }
429
491
  return;
492
+ }
430
493
  // This cycle consumes the deadline. `scheduleFromTokenData` sets the next one,
431
494
  // or deliberately leaves it unset for a token that is not coming back — which
432
495
  // is also what stops the heartbeat below from retrying such a token forever.
@@ -439,10 +502,19 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
439
502
  try {
440
503
  await getUserDetails();
441
504
  session = await syncAuthTokenData();
505
+ lastRefreshedAtRef.current = Date.now();
506
+ if (SESSION_DEBUG_LOGGING) {
507
+ // eslint-disable-next-line no-console
508
+ console.log('[session-refresh] performScheduledRefresh: /user call completed', { status: session.status });
509
+ }
442
510
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
443
511
  }
444
- catch (_error) {
512
+ catch (error) {
445
513
  // Leave `session` as 'error' so we retry rather than abandon the chain.
514
+ if (SESSION_DEBUG_LOGGING) {
515
+ // eslint-disable-next-line no-console
516
+ console.log('[session-refresh] performScheduledRefresh: /user call failed', error);
517
+ }
446
518
  }
447
519
  // This cycle opened with a /user call, so the login state is already as
448
520
  // current as a request can make it.
@@ -479,12 +551,28 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
479
551
  // that does not depend on how long the tab was away.
480
552
  const heartbeatTick = useCallback(() => {
481
553
  const dueAt = refreshDueAtRef.current;
554
+ const now = Date.now();
555
+ if (SESSION_DEBUG_LOGGING) {
556
+ // eslint-disable-next-line no-console
557
+ console.log('[session-refresh] heartbeat', {
558
+ dueAt: dueAt ? new Date(dueAt).toISOString() : null,
559
+ remainingSeconds: dueAt ? Math.round((dueAt - now) / 1000) : null,
560
+ refreshInFlight: refreshInFlightRef.current,
561
+ lastRefreshedAt: lastRefreshedAtRef.current
562
+ ? new Date(lastRefreshedAtRef.current).toISOString()
563
+ : null,
564
+ });
565
+ }
482
566
  if (dueAt === null)
483
567
  return; // nothing owed, or deliberately not rescheduled
484
568
  if (refreshInFlightRef.current)
485
569
  return; // that cycle owns the next deadline
486
- if (Date.now() < dueAt + REFRESH_HEARTBEAT_GRACE_MILLISECONDS)
570
+ if (now < dueAt + REFRESH_HEARTBEAT_GRACE_MILLISECONDS)
487
571
  return;
572
+ if (SESSION_DEBUG_LOGGING) {
573
+ // eslint-disable-next-line no-console
574
+ console.log('[session-refresh] heartbeat: deadline overdue, forcing refresh');
575
+ }
488
576
  void performScheduledRefreshRef.current?.();
489
577
  }, []);
490
578
  useInterval(heartbeatTick, sessionInfo.status === 'issued'
@@ -613,6 +701,10 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
613
701
  // must always reset the inactivity clock, even inside a throttle window.
614
702
  const recordActivity = useCallback(() => {
615
703
  const timestamp = Date.now();
704
+ if (SESSION_DEBUG_LOGGING) {
705
+ // eslint-disable-next-line no-console
706
+ console.log(`[session-inactivity] activity recorded at ${new Date(timestamp).toISOString()}`);
707
+ }
616
708
  setMostRecentActivityTimestamp(timestamp);
617
709
  if (broadcastChannelRef.current) {
618
710
  broadcastChannelRef.current.postMessage({
@@ -638,11 +730,19 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
638
730
  // Don't leave the warning modal orphaned if the provider unmounts.
639
731
  useEffect(() => closeExpiryWarning, [closeExpiryWarning]);
640
732
  const renewSession = useCallback(() => {
733
+ if (SESSION_DEBUG_LOGGING) {
734
+ // eslint-disable-next-line no-console
735
+ console.log('[session-inactivity] renew requested from expiry warning');
736
+ }
641
737
  closeExpiryWarning();
642
738
  recordActivity(); // the point of "Renew": restart the inactivity clock
643
739
  updateSession();
644
740
  }, [closeExpiryWarning, recordActivity, updateSession]);
645
741
  const logoutFromWarning = useCallback(() => {
742
+ if (SESSION_DEBUG_LOGGING) {
743
+ // eslint-disable-next-line no-console
744
+ console.log('[session-inactivity] logout requested from expiry warning');
745
+ }
646
746
  closeExpiryWarning();
647
747
  void endSession();
648
748
  }, [closeExpiryWarning, endSession]);
@@ -693,10 +793,27 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
693
793
  const activeLimit = isUserOnPage('Workspace', pathname)
694
794
  ? workspaceInactivityTimeLimitMilliseconds
695
795
  : inactiveTimeLimitMilliseconds;
796
+ if (SESSION_DEBUG_LOGGING) {
797
+ // eslint-disable-next-line no-console
798
+ console.log('[session-inactivity] tick', {
799
+ pathname,
800
+ lastActivityAt: new Date(mostRecentActivityTimestamp).toISOString(),
801
+ idleSeconds: Math.round(timeSinceLastActivity / 1000),
802
+ activeLimitSeconds: Math.round(activeLimit / 1000),
803
+ warningShown: expiryWarningIdRef.current !== null,
804
+ });
805
+ }
696
806
  // A limit of 0 means no inactivity logout for this kind of page
697
807
  if (activeLimit <= 0)
698
808
  return;
699
809
  if (timeSinceLastActivity >= activeLimit) {
810
+ if (SESSION_DEBUG_LOGGING) {
811
+ // eslint-disable-next-line no-console
812
+ console.log('[session-inactivity] idle limit exceeded, ending session', {
813
+ idleSeconds: Math.round(timeSinceLastActivity / 1000),
814
+ activeLimitSeconds: Math.round(activeLimit / 1000),
815
+ });
816
+ }
700
817
  closeExpiryWarning();
701
818
  coreDispatch(showModal({ modal: Modals.SessionExpireModal }));
702
819
  void endSession();
@@ -706,6 +823,12 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
706
823
  if (warningLead > 0 &&
707
824
  timeSinceLastActivity >= activeLimit - warningLead) {
708
825
  if (!expiryWarningIdRef.current) {
826
+ if (SESSION_DEBUG_LOGGING) {
827
+ // eslint-disable-next-line no-console
828
+ console.log('[session-inactivity] showing expiry warning', {
829
+ minutesRemaining: Math.max(1, Math.round(warningLead / MILLISECONDS_PER_MINUTE)),
830
+ });
831
+ }
709
832
  // Show warning before session expires, giving user a chance to act
710
833
  expiryWarningIdRef.current = modals.openContextModal({
711
834
  modal: 'sessionExpiringModal',
@@ -730,6 +853,10 @@ export const SessionProvider = ({ children, updateSessionTime = 5, inactiveTimeL
730
853
  return;
731
854
  }
732
855
  // Take the warning down once the user is active again
856
+ if (expiryWarningIdRef.current && SESSION_DEBUG_LOGGING) {
857
+ // eslint-disable-next-line no-console
858
+ console.log('[session-inactivity] user active again, closing expiry warning');
859
+ }
733
860
  closeExpiryWarning();
734
861
  // Token refresh is handled by the exp-driven scheduler above — this
735
862
  // interval only tracks inactivity/logout timing.
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/lib/session/session.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/lib/session/session.tsx"],"names":[],"mappings":"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"}
@@ -444,8 +444,9 @@ describe('SessionProvider – expiry-driven refresh scheduling', () => {
444
444
  get: () => true,
445
445
  configurable: true,
446
446
  });
447
- // Token expires 20 minutes from now — the scheduler should fire ~2
448
- // minutes early (REFRESH_MARGIN_MILLISECONDS), not on updateSessionTime's clock.
447
+ // Token expires 20 minutes from now. Fence only reissues the access_token
448
+ // cookie reactively, once it has actually expired, so the scheduler targets
449
+ // `expires` itself (plus REFRESH_BUFFER_MILLISECONDS), not a margin before it.
449
450
  const expiresSeconds = Math.floor(Date.now() / 1000) + 20 * 60;
450
451
  global.fetch = jest.fn().mockResolvedValue({
451
452
  status: 200,
@@ -458,14 +459,14 @@ describe('SessionProvider – expiry-driven refresh scheduling', () => {
458
459
  // /api/auth/sessionToken) then clear the initial mount call.
459
460
  await act(async () => { });
460
461
  getUserDetails.mockClear();
461
- // Not yet due — well short of the 18-minute scheduled delay.
462
+ // Not yet due — short of the ~20-minute scheduled delay.
462
463
  await act(async () => {
463
- jest.advanceTimersByTime(5 * 60 * 1000);
464
+ jest.advanceTimersByTime(19 * 60 * 1000);
464
465
  });
465
466
  expect(getUserDetails).not.toHaveBeenCalled();
466
- // Advance past the scheduled refresh (expires - REFRESH_MARGIN_MILLISECONDS).
467
+ // Advance past the scheduled refresh (expires + REFRESH_BUFFER_MILLISECONDS).
467
468
  await act(async () => {
468
- jest.advanceTimersByTime(15 * 60 * 1000);
469
+ jest.advanceTimersByTime(2 * 60 * 1000);
469
470
  });
470
471
  expect(getUserDetails).toHaveBeenCalled();
471
472
  });
@@ -575,21 +576,22 @@ describe('SessionProvider – refresh scheduling resilience', () => {
575
576
  });
576
577
  expect(getUserDetails).toHaveBeenCalled();
577
578
  });
578
- it('backs off instead of tight-looping on an already-expiring token', async () => {
579
+ it('backs off instead of tight-looping on a token whose expiry never clears the retry floor', async () => {
579
580
  const getUserDetails = setupDefaultCoreMocks();
580
581
  hooksMock.useManageSession.mockReturnValue({
581
582
  status: 'issued',
582
583
  pending: false,
583
584
  });
584
- // Inside the 2 minute refresh margin, and Fence is not moving the expiry
585
- // forward: the wall-clock delay stays negative on every read.
585
+ // A hair from expiry — once REFRESH_BUFFER_MILLISECONDS is added this still
586
+ // comes in under the retry floor — and Fence is not moving the expiry
587
+ // forward: the computed delay stays under the floor on every read.
586
588
  const nowSeconds = Math.floor(Date.now() / 1000);
587
589
  global.fetch = jest.fn().mockResolvedValue({
588
590
  status: 200,
589
591
  json: jest.fn().mockResolvedValue({
590
592
  status: 'issued',
591
593
  issued: nowSeconds - 20 * 60,
592
- expires: nowSeconds + 30,
594
+ expires: nowSeconds + 1,
593
595
  }),
594
596
  });
595
597
  render(_jsx(SessionProvider, { updateSessionTime: 1, logoutInactiveUsers: false, children: _jsx("div", {}) }));
@@ -618,8 +620,10 @@ describe('SessionProvider – refresh scheduling resilience', () => {
618
620
  pending: false,
619
621
  });
620
622
  // Browser clock is an hour behind the server, so the raw `exp - now`
621
- // arithmetic claims ~78 minutes remain on a 20 minute token. The refresh has
622
- // to happen within one lifetime, not when the skewed clock says.
623
+ // arithmetic claims ~78 minutes remain on a 20 minute token — this response
624
+ // has no `expiresInMs`, so the client falls back to computing it against its
625
+ // own (skewed) clock. The refresh has to happen within one lifetime, not
626
+ // when the skewed clock says.
623
627
  const serverNowSeconds = Math.floor(Date.now() / 1000) + 60 * 60;
624
628
  global.fetch = jest.fn().mockResolvedValue({
625
629
  status: 200,
@@ -632,13 +636,13 @@ describe('SessionProvider – refresh scheduling resilience', () => {
632
636
  render(_jsx(SessionProvider, { updateSessionTime: 1, logoutInactiveUsers: false, children: _jsx("div", {}) }));
633
637
  await act(async () => { });
634
638
  getUserDetails.mockClear();
635
- // Bounded to lifetime - margin == 18 minutes
639
+ // Bounded to lifetime + REFRESH_BUFFER_MILLISECONDS == ~20 minutes
636
640
  await act(async () => {
637
- jest.advanceTimersByTime(17 * 60 * 1000);
641
+ jest.advanceTimersByTime(20 * 60 * 1000);
638
642
  });
639
643
  expect(getUserDetails).not.toHaveBeenCalled();
640
644
  await act(async () => {
641
- jest.advanceTimersByTime(2 * 60 * 1000);
645
+ jest.advanceTimersByTime(10 * 1000);
642
646
  });
643
647
  expect(getUserDetails).toHaveBeenCalled();
644
648
  });
@@ -866,7 +870,7 @@ describe('SessionProvider – refresh scheduling resilience', () => {
866
870
  pending: false,
867
871
  });
868
872
  // Reissued on every read, as Fence does when /user is hit, so a refresh that
869
- // lands leaves a healthy token behind rather than one still inside the margin.
873
+ // lands leaves a fresh ~20-minute deadline behind rather than a stale one.
870
874
  global.fetch = jest.fn().mockImplementation(() => {
871
875
  const seconds = Math.floor(Date.now() / 1000);
872
876
  return Promise.resolve({
@@ -891,14 +895,14 @@ describe('SessionProvider – refresh scheduling resilience', () => {
891
895
  render(_jsx(SessionProvider, { updateSessionTime: 1, logoutInactiveUsers: false, children: _jsx("div", {}) }));
892
896
  await act(async () => { });
893
897
  getUserDetails.mockClear();
894
- // The 18 minute deadline passes with no timer to announce it
898
+ // The ~20 minute deadline passes with no timer to announce it
895
899
  await act(async () => {
896
- jest.advanceTimersByTime(17 * 60 * 1000);
900
+ jest.advanceTimersByTime(20 * 60 * 1000);
897
901
  });
898
902
  expect(getUserDetails).not.toHaveBeenCalled();
899
903
  // The heartbeat notices once it is past the deadline plus its grace window
900
904
  await act(async () => {
901
- jest.advanceTimersByTime(2 * 60 * 1000);
905
+ jest.advanceTimersByTime(60 * 1000);
902
906
  });
903
907
  expect(getUserDetails).toHaveBeenCalled();
904
908
  // ...and having rescheduled, it does not then refresh on every tick