@strivacity/sdk-core 4.0.0-beta.1 → 4.0.0-beta.2

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 (98) hide show
  1. package/README.md +228 -87
  2. package/dist/assets/oidc.cjs +1 -1
  3. package/dist/assets/oidc.cjs.map +1 -1
  4. package/dist/assets/oidc.mjs +1 -1
  5. package/dist/assets/oidc.mjs.map +1 -1
  6. package/dist/assets/server.cjs +1 -1
  7. package/dist/assets/server.cjs.map +1 -1
  8. package/dist/assets/server.mjs +1 -1
  9. package/dist/assets/server.mjs.map +1 -1
  10. package/dist/flows/base.cjs +1 -1
  11. package/dist/flows/base.cjs.map +1 -1
  12. package/dist/flows/base.d.ts +4 -2
  13. package/dist/flows/base.mjs +1 -1
  14. package/dist/flows/base.mjs.map +1 -1
  15. package/dist/flows/popup.cjs +1 -1
  16. package/dist/flows/popup.cjs.map +1 -1
  17. package/dist/flows/popup.mjs +1 -1
  18. package/dist/flows/popup.mjs.map +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.ts +6 -2
  22. package/dist/index.mjs +1 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/server/base.cjs +1 -1
  25. package/dist/server/base.cjs.map +1 -1
  26. package/dist/server/base.d.ts +2 -4
  27. package/dist/server/base.mjs +1 -1
  28. package/dist/server/base.mjs.map +1 -1
  29. package/dist/server/index.cjs +1 -1
  30. package/dist/server/index.mjs +1 -1
  31. package/dist/storages/cache.cjs.map +1 -1
  32. package/dist/storages/cache.d.ts +1 -1
  33. package/dist/storages/cache.mjs.map +1 -1
  34. package/dist/storages/index.cjs +1 -1
  35. package/dist/storages/index.mjs +1 -1
  36. package/dist/storages/server.cjs +1 -1
  37. package/dist/storages/server.d.ts +29 -1
  38. package/dist/storages/server.mjs +1 -1
  39. package/dist/storages/worker.cjs.map +1 -1
  40. package/dist/storages/worker.d.ts +1 -1
  41. package/dist/storages/worker.mjs.map +1 -1
  42. package/dist/types/native.d.ts +67 -2
  43. package/dist/types/oidc.cjs.map +1 -1
  44. package/dist/types/oidc.d.ts +41 -6
  45. package/dist/types/oidc.mjs.map +1 -1
  46. package/dist/types/popup.d.ts +1 -1
  47. package/dist/types/server.d.ts +21 -9
  48. package/dist/utils/index.cjs +1 -1
  49. package/dist/utils/index.d.ts +1 -0
  50. package/dist/utils/index.mjs +1 -1
  51. package/dist/utils/native-login.cjs +2 -0
  52. package/dist/utils/native-login.cjs.map +1 -0
  53. package/dist/utils/native-login.d.ts +13 -0
  54. package/dist/utils/native-login.mjs +2 -0
  55. package/dist/utils/native-login.mjs.map +1 -0
  56. package/dist/utils/oidc.d.ts +3 -4
  57. package/dist/utils/path.cjs +2 -0
  58. package/dist/utils/path.cjs.map +1 -0
  59. package/dist/utils/path.d.ts +16 -0
  60. package/dist/utils/path.mjs +2 -0
  61. package/dist/utils/path.mjs.map +1 -0
  62. package/dist/utils/server.d.ts +5 -4
  63. package/dist/utils/session.cjs +1 -1
  64. package/dist/utils/session.cjs.map +1 -1
  65. package/dist/utils/session.d.ts +9 -1
  66. package/dist/utils/session.mjs +1 -1
  67. package/dist/utils/session.mjs.map +1 -1
  68. package/package.json +1 -1
  69. package/testing/tests/flows/base.spec.ts +0 -1030
  70. package/testing/tests/flows/embedded.spec.ts +0 -443
  71. package/testing/tests/flows/index.spec.ts +0 -8
  72. package/testing/tests/flows/native.spec.ts +0 -487
  73. package/testing/tests/flows/popup.spec.ts +0 -400
  74. package/testing/tests/flows/redirect.spec.ts +0 -369
  75. package/testing/tests/handlers/embedded.spec.ts +0 -199
  76. package/testing/tests/handlers/index.spec.ts +0 -8
  77. package/testing/tests/handlers/native.spec.ts +0 -283
  78. package/testing/tests/handlers/popup.spec.ts +0 -206
  79. package/testing/tests/handlers/redirect.spec.ts +0 -70
  80. package/testing/tests/index.spec.ts +0 -78
  81. package/testing/tests/server/base.spec.ts +0 -846
  82. package/testing/tests/server/index.spec.ts +0 -15
  83. package/testing/tests/storages/cache.spec.ts +0 -107
  84. package/testing/tests/storages/index.spec.ts +0 -22
  85. package/testing/tests/storages/indexeddb.spec.ts +0 -113
  86. package/testing/tests/storages/local.spec.ts +0 -46
  87. package/testing/tests/storages/memory.spec.ts +0 -51
  88. package/testing/tests/storages/server.spec.ts +0 -435
  89. package/testing/tests/storages/session.spec.ts +0 -46
  90. package/testing/tests/storages/worker.spec.ts +0 -106
  91. package/testing/tests/utils/common.spec.ts +0 -77
  92. package/testing/tests/utils/credentials.spec.ts +0 -195
  93. package/testing/tests/utils/dom.spec.ts +0 -37
  94. package/testing/tests/utils/index.spec.ts +0 -71
  95. package/testing/tests/utils/logging.spec.ts +0 -82
  96. package/testing/tests/utils/oidc.spec.ts +0 -745
  97. package/testing/tests/utils/server.spec.ts +0 -235
  98. package/testing/tests/utils/session.spec.ts +0 -87
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","names":[],"sources":["../../src/utils/session.ts"],"sourcesContent":["import type { SessionData } from '../types/oidc';\nimport { ProtocolError } from './errors';\nimport { timestamp } from './common';\n\n/**\n * Creates a new session object with default values and merges it with provided parameters.\n *\n * @param {Record<string, unknown>} params - Optional parameters to merge into the new session object.\n * @returns {SessionData} The newly created session object.\n */\nexport function createSession(params: Record<string, unknown> = {}): SessionData {\n\tconst session: SessionData = {\n\t\tstate: null,\n\t\tcode: null,\n\t\terror: null,\n\t\terror_description: null,\n\t\tid_token: null,\n\t\taccess_token: null,\n\t\trefresh_token: null,\n\t\ttoken_type: 'bearer',\n\t\tscope: null,\n\t\texpires_in: null,\n\t\texpires_at: null,\n\t\tclaims: null,\n\t};\n\n\tif (typeof params.expires_in === 'number' && !isNaN(params.expires_in)) {\n\t\tsession.expires_at = Math.floor(params.expires_in) + timestamp();\n\t}\n\n\tObject.assign(session, params);\n\n\tif (session.access_token && session.token_type?.toLowerCase() !== 'bearer') {\n\t\tthrow new ProtocolError(`Unsupported token_type: ${session.token_type}`);\n\t}\n\n\treturn session;\n}\n\n/**\n * Loads a serialized session from a JSON string.\n *\n * @param {string | null} serialized - The serialized session string to parse.\n * @returns {SessionData | null} The parsed session object, or null if parsing fails.\n */\nexport function loadSession(serialized: string | null): SessionData | null {\n\tif (!serialized) {\n\t\treturn null;\n\t}\n\n\tlet session: SessionData | null = createSession();\n\n\ttry {\n\t\tObject.assign(session, JSON.parse(serialized));\n\t} catch {\n\t\tsession = null;\n\t}\n\n\treturn session;\n}\n\n/**\n * Serializes a session object into a JSON string.\n *\n * @param {SessionData} session - The session object to serialize.\n * @returns {string} The serialized session string.\n */\nexport function serializeSession(session: SessionData): string {\n\treturn JSON.stringify(session);\n}\n\n/**\n * Checks if a session is expired based on its access token and expiration timestamp.\n *\n * @param {Partial<SessionData> | null} session - The session object to check for expiration.\n * @param {number} [skew=0] - The number of seconds before the actual expiration to already treat the session as expired.\n * @returns {boolean} True if the session is expired or invalid, false otherwise.\n */\nexport function isSessionExpired(session?: Partial<SessionData> | null, skew = 0): boolean {\n\treturn !session?.access_token || !session.expires_at || session.expires_at <= timestamp() + skew;\n}\n"],"mappings":"sFAUA,SAAgB,EAAc,EAAkC,CAAC,EAAgB,CAChF,IAAM,EAAuB,CAC5B,MAAO,KACP,KAAM,KACN,MAAO,KACP,kBAAmB,KACnB,SAAU,KACV,aAAc,KACd,cAAe,KACf,WAAY,SACZ,MAAO,KACP,WAAY,KACZ,WAAY,KACZ,OAAQ,IACT,EAQA,GANI,OAAO,EAAO,YAAe,UAAY,CAAC,MAAM,EAAO,UAAU,IACpE,EAAQ,WAAa,KAAK,MAAM,EAAO,UAAU,EAAI,EAAU,GAGhE,OAAO,OAAO,EAAS,CAAM,EAEzB,EAAQ,cAAgB,EAAQ,YAAY,YAAY,IAAM,SACjE,MAAM,IAAI,EAAc,2BAA2B,EAAQ,YAAY,EAGxE,OAAO,CACR,CAQA,SAAgB,EAAY,EAA+C,CAC1E,GAAI,CAAC,EACJ,OAAO,KAGR,IAAI,EAA8B,EAAc,EAEhD,GAAI,CACH,OAAO,OAAO,EAAS,KAAK,MAAM,CAAU,CAAC,CAC9C,MAAQ,CACP,EAAU,IACX,CAEA,OAAO,CACR,CAQA,SAAgB,EAAiB,EAA8B,CAC9D,OAAO,KAAK,UAAU,CAAO,CAC9B,CASA,SAAgB,EAAiB,EAAuC,EAAO,EAAY,CAC1F,MAAO,CAAC,GAAS,cAAgB,CAAC,EAAQ,YAAc,EAAQ,YAAc,EAAU,EAAI,CAC7F"}
1
+ {"version":3,"file":"session.mjs","names":[],"sources":["../../src/utils/session.ts"],"sourcesContent":["import type { SessionData } from '../types/oidc';\nimport { ProtocolError } from './errors';\nimport { timestamp } from './common';\n\n/**\n * Creates a new session object with default values and merges it with provided parameters.\n *\n * @param {Record<string, unknown>} params - Optional parameters to merge into the new session object.\n * @returns {SessionData} The newly created session object.\n */\nexport function createSession(params: Record<string, unknown> = {}): SessionData {\n\tconst session: SessionData = {\n\t\tstate: null,\n\t\tcode: null,\n\t\terror: null,\n\t\terror_description: null,\n\t\tid_token: null,\n\t\taccess_token: null,\n\t\trefresh_token: null,\n\t\ttoken_type: 'bearer',\n\t\tscope: null,\n\t\texpires_in: null,\n\t\texpires_at: null,\n\t\tclaims: null,\n\t};\n\n\tif (typeof params.expires_in === 'number' && !isNaN(params.expires_in)) {\n\t\tsession.expires_at = Math.floor(params.expires_in) + timestamp();\n\t}\n\n\tObject.assign(session, params);\n\n\tif (session.access_token && session.token_type?.toLowerCase() !== 'bearer') {\n\t\tthrow new ProtocolError(`Unsupported token_type: ${session.token_type}`);\n\t}\n\n\treturn session;\n}\n\n/**\n * Loads a serialized session from a JSON string.\n *\n * @param {string | null} serialized - The serialized session string to parse.\n * @returns {SessionData | null} The parsed session object, or null if parsing fails.\n */\nexport function loadSession(serialized: string | null): SessionData | null {\n\tif (!serialized) {\n\t\treturn null;\n\t}\n\n\tlet session: SessionData | null = createSession();\n\n\ttry {\n\t\tObject.assign(session, JSON.parse(serialized));\n\t} catch {\n\t\tsession = null;\n\t}\n\n\treturn session;\n}\n\n/**\n * Serializes a session object into a JSON string.\n *\n * @param {SessionData} session - The session object to serialize.\n * @returns {string} The serialized session string.\n */\nexport function serializeSession(session: SessionData): string {\n\treturn JSON.stringify(session);\n}\n\n/**\n * Checks if a session is expired based on its access token and expiration timestamp.\n *\n * @param {Partial<SessionData> | null} session - The session object to check for expiration.\n * @param {number} [skew=0] - The number of seconds before the actual expiration to already treat the session as expired. Capped at half of the token lifetime (`expires_in`), so a short-lived token is not treated as expired the moment it is issued.\n * @returns {boolean} True if the session is expired or invalid, false otherwise.\n */\nexport function isSessionExpired(session?: Partial<SessionData> | null, skew = 0): boolean {\n\tconst lifetime = typeof session?.expires_in === 'number' && session.expires_in > 0 ? session.expires_in : null;\n\tconst effectiveSkew = lifetime === null ? skew : Math.min(skew, Math.floor(lifetime / 2));\n\n\treturn !session?.access_token || !session.expires_at || session.expires_at <= timestamp() + effectiveSkew;\n}\n\n/**\n * Returns a copy of a server-managed session that is safe to hand to the browser (e.g. serialized into SSR page data):\n * without the refresh token and the ID token, which stay server-side in the session cookie.\n *\n * @param {SessionData | null | undefined} session - The full server-side session.\n * @returns {SessionData | null} The session without `refresh_token` and `id_token`, or `null`.\n */\nexport function toClientSession(session?: SessionData | null): SessionData | null {\n\tif (!session) {\n\t\treturn null;\n\t}\n\n\tconst clientSession = { ...session };\n\n\tdelete clientSession.refresh_token;\n\tdelete clientSession.id_token;\n\n\treturn clientSession;\n}\n"],"mappings":"sFAUA,SAAgB,EAAc,EAAkC,CAAC,EAAgB,CAChF,IAAM,EAAuB,CAC5B,MAAO,KACP,KAAM,KACN,MAAO,KACP,kBAAmB,KACnB,SAAU,KACV,aAAc,KACd,cAAe,KACf,WAAY,SACZ,MAAO,KACP,WAAY,KACZ,WAAY,KACZ,OAAQ,IACT,EAQA,GANI,OAAO,EAAO,YAAe,UAAY,CAAC,MAAM,EAAO,UAAU,IACpE,EAAQ,WAAa,KAAK,MAAM,EAAO,UAAU,EAAI,EAAU,GAGhE,OAAO,OAAO,EAAS,CAAM,EAEzB,EAAQ,cAAgB,EAAQ,YAAY,YAAY,IAAM,SACjE,MAAM,IAAI,EAAc,2BAA2B,EAAQ,YAAY,EAGxE,OAAO,CACR,CAQA,SAAgB,EAAY,EAA+C,CAC1E,GAAI,CAAC,EACJ,OAAO,KAGR,IAAI,EAA8B,EAAc,EAEhD,GAAI,CACH,OAAO,OAAO,EAAS,KAAK,MAAM,CAAU,CAAC,CAC9C,MAAQ,CACP,EAAU,IACX,CAEA,OAAO,CACR,CAQA,SAAgB,EAAiB,EAA8B,CAC9D,OAAO,KAAK,UAAU,CAAO,CAC9B,CASA,SAAgB,EAAiB,EAAuC,EAAO,EAAY,CAC1F,IAAM,EAAW,OAAO,GAAS,YAAe,UAAY,EAAQ,WAAa,EAAI,EAAQ,WAAa,KACpG,EAAgB,IAAa,KAAO,EAAO,KAAK,IAAI,EAAM,KAAK,MAAM,EAAW,CAAC,CAAC,EAExF,MAAO,CAAC,GAAS,cAAgB,CAAC,EAAQ,YAAc,EAAQ,YAAc,EAAU,EAAI,CAC7F,CASA,SAAgB,EAAgB,EAAkD,CACjF,GAAI,CAAC,EACJ,OAAO,KAGR,IAAM,EAAgB,CAAE,GAAG,CAAQ,EAKnC,OAHA,OAAO,EAAc,cACrB,OAAO,EAAc,SAEd,CACR"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strivacity/sdk-core",
3
- "version": "4.0.0-beta.1",
3
+ "version": "4.0.0-beta.2",
4
4
  "license": "MIT",
5
5
  "description": "Strivacity JavaScript SDK client",
6
6
  "author": "strivacity <opensource@strivacity.com>",