@osdk/oauth 1.1.0-beta.7 → 1.1.0-beta.9

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 (119) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/build/browser/AuthorizationServer.test.js +1 -0
  3. package/build/browser/AuthorizationServer.test.js.map +1 -1
  4. package/build/browser/BaseOauthClient.js +0 -15
  5. package/build/browser/BaseOauthClient.js.map +1 -1
  6. package/build/browser/ConfidentialOauthClient.js +0 -15
  7. package/build/browser/ConfidentialOauthClient.js.map +1 -1
  8. package/build/browser/PublicOauthClient.js +0 -15
  9. package/build/browser/PublicOauthClient.js.map +1 -1
  10. package/build/browser/Token.js +0 -15
  11. package/build/browser/Token.js.map +1 -1
  12. package/build/browser/__tests__/createPublicOauthClient.test.js +3 -0
  13. package/build/browser/__tests__/createPublicOauthClient.test.js.map +1 -1
  14. package/build/browser/common.js +15 -9
  15. package/build/browser/common.js.map +1 -1
  16. package/build/browser/common.test.js +65 -0
  17. package/build/browser/common.test.js.map +1 -0
  18. package/build/browser/createConfidentialOauthClient.js +3 -1
  19. package/build/browser/createConfidentialOauthClient.js.map +1 -1
  20. package/build/browser/createPublicOauthClient.js +37 -4
  21. package/build/browser/createPublicOauthClient.js.map +1 -1
  22. package/build/browser/index.js +1 -0
  23. package/build/browser/index.js.map +1 -1
  24. package/build/browser/publicOauth.test.js +80 -21
  25. package/build/browser/publicOauth.test.js.map +1 -1
  26. package/build/browser/throwIfError.js +1 -0
  27. package/build/browser/throwIfError.js.map +1 -1
  28. package/build/browser/utils.js +4 -1
  29. package/build/browser/utils.js.map +1 -1
  30. package/build/cjs/index.cjs +320 -0
  31. package/build/cjs/index.cjs.map +1 -0
  32. package/build/{browser/createPublicOauthClient.d.ts → cjs/index.d.cts} +48 -5
  33. package/build/esm/AuthorizationServer.test.js +1 -0
  34. package/build/esm/AuthorizationServer.test.js.map +1 -1
  35. package/build/esm/BaseOauthClient.js +0 -15
  36. package/build/esm/BaseOauthClient.js.map +1 -1
  37. package/build/esm/ConfidentialOauthClient.js +0 -15
  38. package/build/esm/ConfidentialOauthClient.js.map +1 -1
  39. package/build/esm/PublicOauthClient.js +0 -15
  40. package/build/esm/PublicOauthClient.js.map +1 -1
  41. package/build/esm/Token.js +0 -15
  42. package/build/esm/Token.js.map +1 -1
  43. package/build/esm/__tests__/createPublicOauthClient.test.js +3 -0
  44. package/build/esm/__tests__/createPublicOauthClient.test.js.map +1 -1
  45. package/build/esm/common.js +15 -9
  46. package/build/esm/common.js.map +1 -1
  47. package/build/esm/common.test.js +65 -0
  48. package/build/esm/common.test.js.map +1 -0
  49. package/build/esm/createConfidentialOauthClient.js +3 -1
  50. package/build/esm/createConfidentialOauthClient.js.map +1 -1
  51. package/build/esm/createPublicOauthClient.js +37 -4
  52. package/build/esm/createPublicOauthClient.js.map +1 -1
  53. package/build/esm/index.js +1 -0
  54. package/build/esm/index.js.map +1 -1
  55. package/build/esm/publicOauth.test.js +80 -21
  56. package/build/esm/publicOauth.test.js.map +1 -1
  57. package/build/esm/throwIfError.js +1 -0
  58. package/build/esm/throwIfError.js.map +1 -1
  59. package/build/esm/utils.js +4 -1
  60. package/build/esm/utils.js.map +1 -1
  61. package/build/types/AuthorizationServer.test.d.ts +1 -0
  62. package/build/types/BaseOauthClient.d.ts +14 -0
  63. package/build/{browser → types}/ConfidentialOauthClient.d.ts +1 -3
  64. package/build/{browser → types}/PublicOauthClient.d.ts +1 -2
  65. package/build/types/Token.d.ts +6 -0
  66. package/build/types/__tests__/createPublicOauthClient.test.d.ts +1 -0
  67. package/build/{browser → types}/common.d.ts +16 -18
  68. package/build/types/common.test.d.ts +1 -0
  69. package/build/{browser → types}/createConfidentialOauthClient.d.ts +8 -9
  70. package/build/types/createPublicOauthClient.d.ts +56 -0
  71. package/build/{browser → types}/index.d.ts +1 -2
  72. package/build/types/publicOauth.test.d.ts +1 -0
  73. package/build/{browser → types}/throwIfError.d.ts +0 -1
  74. package/build/{esm → types}/utils.d.ts +5 -4
  75. package/package.json +22 -8
  76. package/build/browser/AuthorizationServer.test.d.ts +0 -2
  77. package/build/browser/AuthorizationServer.test.d.ts.map +0 -1
  78. package/build/browser/BaseOauthClient.d.ts +0 -15
  79. package/build/browser/BaseOauthClient.d.ts.map +0 -1
  80. package/build/browser/ConfidentialOauthClient.d.ts.map +0 -1
  81. package/build/browser/PublicOauthClient.d.ts.map +0 -1
  82. package/build/browser/Token.d.ts +0 -7
  83. package/build/browser/Token.d.ts.map +0 -1
  84. package/build/browser/__tests__/createPublicOauthClient.test.d.ts +0 -2
  85. package/build/browser/__tests__/createPublicOauthClient.test.d.ts.map +0 -1
  86. package/build/browser/common.d.ts.map +0 -1
  87. package/build/browser/createConfidentialOauthClient.d.ts.map +0 -1
  88. package/build/browser/createPublicOauthClient.d.ts.map +0 -1
  89. package/build/browser/index.d.ts.map +0 -1
  90. package/build/browser/publicOauth.test.d.ts +0 -2
  91. package/build/browser/publicOauth.test.d.ts.map +0 -1
  92. package/build/browser/throwIfError.d.ts.map +0 -1
  93. package/build/browser/utils.d.ts +0 -6
  94. package/build/browser/utils.d.ts.map +0 -1
  95. package/build/esm/AuthorizationServer.test.d.ts +0 -2
  96. package/build/esm/AuthorizationServer.test.d.ts.map +0 -1
  97. package/build/esm/BaseOauthClient.d.ts +0 -15
  98. package/build/esm/BaseOauthClient.d.ts.map +0 -1
  99. package/build/esm/ConfidentialOauthClient.d.ts +0 -4
  100. package/build/esm/ConfidentialOauthClient.d.ts.map +0 -1
  101. package/build/esm/PublicOauthClient.d.ts +0 -6
  102. package/build/esm/PublicOauthClient.d.ts.map +0 -1
  103. package/build/esm/Token.d.ts +0 -7
  104. package/build/esm/Token.d.ts.map +0 -1
  105. package/build/esm/__tests__/createPublicOauthClient.test.d.ts +0 -2
  106. package/build/esm/__tests__/createPublicOauthClient.test.d.ts.map +0 -1
  107. package/build/esm/common.d.ts +0 -33
  108. package/build/esm/common.d.ts.map +0 -1
  109. package/build/esm/createConfidentialOauthClient.d.ts +0 -12
  110. package/build/esm/createConfidentialOauthClient.d.ts.map +0 -1
  111. package/build/esm/createPublicOauthClient.d.ts +0 -53
  112. package/build/esm/createPublicOauthClient.d.ts.map +0 -1
  113. package/build/esm/index.d.ts +0 -4
  114. package/build/esm/index.d.ts.map +0 -1
  115. package/build/esm/publicOauth.test.d.ts +0 -2
  116. package/build/esm/publicOauth.test.d.ts.map +0 -1
  117. package/build/esm/throwIfError.d.ts +0 -6
  118. package/build/esm/throwIfError.d.ts.map +0 -1
  119. package/build/esm/utils.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"publicOauth.test.js","names":["afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","commonJs","createPublicOauthClient","hoistedMocks","hoisted","makeTokenAndSaveRefresh","fn","mock","importOriginal","original","default","ms","opts","common","args","result","readLocal","spyOn","readSession","DEFAULT_CUR_URL","URL","fetchFn","mockWindow","location","toString","assign","href","pathname","history","replaceState","mockLocalStorage","setItem","getItem","removeItem","mockSessionStorage","restoreAllMocks","mockRestore","clearAllMocks","mockReset","stubGlobal","unstubAllGlobals","BASE_CLIENT_ARGS","clientId","foundryUrl","redirectUrl","fullLoginUrl","each","name","currentUrl","clientArgs","should","redirectToLoginPage","loginPage","client","useHistory","postLoginPage","scopes","ctxPath","mocked","toHaveBeenCalledWith","objectContaining","client_id","token_endpoint_auth_method","createAuthorizationServer","any","Function","anything","localStorage","refresh_token","sessionStorage","codeVerifier","state","oldUrl","initialState","ACCESS_TOKEN","Math","random","substring","mockImplementation","access_token","expires_at","Date","now","expires_in","Object","keys","length","tokenPromise","toBeCalledTimes","resolves","toBeUndefined","toBeCalledWith","JSON","stringify","window","rejects","toThrowError","Error","toHaveBeenCalledOnce","url","calls","origin","toEqual","fromEntries","searchParams","entries","code_challenge","String","redirect_uri","response_type","code_challenge_method","scope","toHaveBeenCalledTimes","undefined"],"sources":["publicOauth.test.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable @typescript-eslint/consistent-type-imports */\nimport { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from \"vitest\";\nimport * as commonJs from \"./common.js\";\nimport { createPublicOauthClient } from \"./createPublicOauthClient.js\";\nconst hoistedMocks = vi.hoisted(() => {\n return {\n makeTokenAndSaveRefresh: vi.fn(),\n };\n});\nvi.mock(\"delay\", async (importOriginal) => {\n const original = await importOriginal();\n return {\n default: vi.fn((ms, opts) => {\n // speed up the tests\n return original.default(ms / 100, opts);\n }),\n };\n});\nvi.mock(\"./common.js\", async (importOriginal) => {\n const original = await importOriginal();\n return {\n ...original,\n common: vi.fn((...args) => {\n const result = original.common(...args);\n return {\n ...result,\n makeTokenAndSaveRefresh: hoistedMocks.makeTokenAndSaveRefresh,\n };\n }),\n readLocal: vi.spyOn(original, \"readLocal\"),\n readSession: vi.spyOn(original, \"readSession\"),\n // vi.fn(original.readLocal),\n };\n});\nvi.mock(\"oauth4webapi\");\ndescribe(createPublicOauthClient, () => {\n const DEFAULT_CUR_URL = new URL(\"https://fauxurl\");\n const fetchFn = vi.fn();\n const mockWindow = {\n location: {\n toString: vi.fn(() => DEFAULT_CUR_URL),\n assign: vi.fn(),\n href: DEFAULT_CUR_URL.href,\n pathname: DEFAULT_CUR_URL.pathname,\n },\n history: {\n replaceState: vi.fn(),\n },\n };\n const mockLocalStorage = {\n setItem: vi.fn(),\n getItem: vi.fn(),\n removeItem: vi.fn(),\n };\n const mockSessionStorage = {\n setItem: vi.fn(),\n getItem: vi.fn(),\n removeItem: vi.fn(),\n };\n beforeEach((context) => {\n vi.restoreAllMocks();\n fetchFn.mockRestore();\n });\n afterEach((context) => {\n vi.clearAllMocks();\n fetchFn.mockReset();\n });\n beforeAll(() => {\n vi.stubGlobal(\"window\", mockWindow);\n vi.stubGlobal(\"localStorage\", mockLocalStorage);\n vi.stubGlobal(\"sessionStorage\", mockSessionStorage);\n });\n afterAll(() => {\n vi.unstubAllGlobals();\n });\n const BASE_CLIENT_ARGS = {\n clientId: \"this-would-be-client-id\",\n foundryUrl: \"https://a.foundry.url.local\",\n redirectUrl: \"https://my.redirect.url.local\",\n fetchFn,\n };\n const fullLoginUrl = new URL(\"/loginPage\", DEFAULT_CUR_URL);\n describe.each([\n {\n name: \"Basic Usage\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n {\n name: \"Base w/ full loginPage and curUrl is root\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: fullLoginUrl.toString(),\n },\n should: {\n redirectToLoginPage: true,\n },\n },\n {\n name: \"Base w/ full loginPage and curUrl is login page\",\n currentUrl: fullLoginUrl,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: fullLoginUrl.toString(),\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n {\n name: \"Base w/ short loginPage and curUrl is root\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: \"/loginPage\",\n },\n should: {\n redirectToLoginPage: true,\n },\n },\n {\n name: \"Base w/ short loginPage and curUrl is loginPage\",\n currentUrl: new URL(\"/loginPage\", DEFAULT_CUR_URL),\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: \"/loginPage\",\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n ])(\"$name\", ({ clientArgs, currentUrl, should }) => {\n let client;\n beforeEach(() => {\n client = createPublicOauthClient(clientArgs.clientId, clientArgs.foundryUrl, clientArgs.redirectUrl, clientArgs.useHistory, clientArgs.loginPage, clientArgs.postLoginPage, clientArgs.scopes, clientArgs.fetchFn, clientArgs.ctxPath);\n mockWindow.location.href = new URL(currentUrl).href;\n mockWindow.location.pathname = new URL(currentUrl).pathname;\n });\n it(\"calls common with expected values\", () => {\n expect(vi.mocked(commonJs.common)).toHaveBeenCalledWith(expect.objectContaining({\n client_id: clientArgs.clientId,\n token_endpoint_auth_method: \"none\",\n }), commonJs.createAuthorizationServer(clientArgs.ctxPath ?? \"/multipass\", clientArgs.foundryUrl), expect.any(Function), expect.anything(), expect.any(Function));\n });\n describe.each([\n {\n localStorage: {\n refresh_token: \"a-refresh-token\",\n },\n sessionStorage: {},\n },\n {\n localStorage: {},\n sessionStorage: {\n codeVerifier: \"hi\",\n state: \"mom\",\n oldUrl: \"https://someoldurl.local\",\n },\n },\n { localStorage: {}, sessionStorage: {} },\n ])(\"Initial Local State: %s\", (initialState) => {\n const ACCESS_TOKEN = (Math.random() + 1).toString(36).substring(7);\n beforeEach(() => {\n vi.mocked(commonJs.readLocal).mockImplementation(() => initialState.localStorage);\n vi.mocked(commonJs.readSession).mockImplementation(() => initialState.sessionStorage);\n hoistedMocks.makeTokenAndSaveRefresh.mockImplementation(() => ({\n access_token: ACCESS_TOKEN,\n expires_at: Date.now(),\n expires_in: 10000,\n }));\n });\n if (Object.keys(initialState.localStorage).length === 0\n && Object.keys(initialState.sessionStorage).length === 0) {\n if (should.redirectToLoginPage) {\n it(\"redirects to login page\", async () => {\n const tokenPromise = client();\n expect(vi.mocked(commonJs.common)).toBeCalledTimes(1);\n if (should.redirectToLoginPage) {\n // expect save local\n await expect(tokenPromise).resolves.toBeUndefined();\n expect(mockSessionStorage.setItem).toBeCalledWith(`@osdk/oauth : refresh : ${clientArgs.clientId}`, JSON.stringify({ oldUrl: window.location.toString() }));\n expect(mockWindow.history.replaceState).toHaveBeenCalledWith({}, \"\", clientArgs.loginPage);\n return;\n }\n });\n }\n else {\n it(\"redirects to multipass\", async () => {\n const tokenPromise = client();\n expect(vi.mocked(commonJs.common)).toBeCalledTimes(1);\n if (should.redirectToLoginPage) {\n // expect save local\n await expect(tokenPromise).resolves.toBeUndefined();\n expect(mockSessionStorage.setItem).toBeCalledWith(`@osdk/oauth : refresh : ${clientArgs.clientId}`, JSON.stringify({ oldUrl: window.location.toString() }));\n expect(mockWindow.history.replaceState).toHaveBeenCalledWith({}, \"\", clientArgs.loginPage);\n return;\n }\n // we assume window.location.assign will take you away therefore we\n // also have to expect in this scenario that the thrown error happens\n await expect(tokenPromise)\n .rejects.toThrowError(new Error(\"Unable to redirect\"));\n expect(mockWindow.location.assign).toHaveBeenCalledOnce();\n const url = new URL(mockWindow.location.assign.mock.calls[0][0]);\n expect(url.origin).toEqual(clientArgs.foundryUrl);\n expect(url.pathname).toEqual(\"/multipass/api/oauth2/authorize\");\n expect(Object.fromEntries(url.searchParams.entries())).toEqual(expect.objectContaining({\n client_id: clientArgs.clientId,\n code_challenge: expect.any(String),\n redirect_uri: clientArgs.redirectUrl,\n response_type: \"code\",\n code_challenge_method: \"S256\",\n scope: \"offline_access api:read-data api:write-data\",\n state: expect.any(String),\n }));\n });\n }\n }\n if (initialState.sessionStorage.codeVerifier) {\n it(\"tries to auth with return results\", async () => {\n await expect(client()).resolves.toEqual(ACCESS_TOKEN);\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledTimes(1);\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledWith(undefined, // this is only because we didn't mock out the internals\n \"signIn\");\n expect(mockWindow.history.replaceState).toHaveBeenCalledTimes(1);\n expect(mockWindow.history.replaceState).toBeCalledWith(expect.anything(), expect.anything(), initialState.sessionStorage.oldUrl);\n });\n }\n if (initialState.localStorage.refresh_token) {\n it(\"refreshes\", async () => {\n await expect(client()).resolves.toEqual(ACCESS_TOKEN);\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledTimes(1);\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledWith(undefined, // this is only because we didn't mock out the internals\n \"refresh\");\n });\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"publicOauth.test.js","names":["afterAll","afterEach","beforeAll","beforeEach","describe","expect","it","vi","commonJs","createPublicOauthClient","hoistedMocks","hoisted","makeTokenAndSaveRefresh","fn","mock","importOriginal","original","default","ms","opts","common","args","result","readLocal","spyOn","readSession","DEFAULT_CUR_URL","URL","fetchFn","mockWindow","location","toString","assign","href","pathname","history","replaceState","mockLocalStorage","setItem","getItem","removeItem","mockSessionStorage","restoreAllMocks","mockRestore","clearAllMocks","mockReset","stubGlobal","unstubAllGlobals","BASE_CLIENT_ARGS","clientId","foundryUrl","redirectUrl","fullLoginUrl","setupWindowLocation","currentUrl","setupLocalState","initialLocalState","mocked","mockImplementation","client","clientArgs","setupClient","clientArgs_","refreshTokenMarker","useHistory","loginPage","postLoginPage","scopes","ctxPath","undefined","expectRedirectToMultipass","tokenPromise","rejects","toThrowError","Error","toHaveBeenCalledOnce","url","calls","origin","toEqual","Object","fromEntries","searchParams","entries","objectContaining","client_id","code_challenge","any","String","redirect_uri","response_type","code_challenge_method","scope","state","refresh_token","mockImplementationOnce","access_token","expires_at","Date","now","expires_in","resolves","toBeCalledTimes","each","name","should","redirectToLoginPage","toHaveBeenCalledWith","token_endpoint_auth_method","createAuthorizationServer","Function","anything","localStorage","sessionStorage","codeVerifier","oldUrl","initialState","ACCESS_TOKEN","Math","random","substring","keys","length","toBeUndefined","toBeCalledWith","JSON","stringify","window","toHaveBeenCalledTimes"],"sources":["publicOauth.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/consistent-type-imports */\nimport {\n afterAll,\n afterEach,\n beforeAll,\n beforeEach,\n describe,\n expect,\n it,\n vi,\n} from \"vitest\";\n\nimport * as commonJs from \"./common.js\";\nimport { LocalStorageState, SessionStorageState } from \"./common.js\";\nimport { createPublicOauthClient } from \"./createPublicOauthClient.js\";\nimport { PublicOauthClient } from \"./PublicOauthClient.js\";\n\nconst hoistedMocks = vi.hoisted(() => {\n return {\n makeTokenAndSaveRefresh: vi.fn(),\n };\n});\n\nvi.mock(\"delay\", async (importOriginal) => {\n const original = await importOriginal<typeof import(\"delay\")>();\n return {\n default: vi.fn<typeof original.default>((ms, opts) => {\n // speed up the tests\n return original.default(ms / 100, opts);\n }),\n };\n});\n\nvi.mock(\"./common.js\", async (importOriginal) => {\n const original = await importOriginal<typeof import(\"./common.js\")>();\n return {\n ...original,\n common: vi.fn<typeof commonJs.common>((...args) => {\n const result = original.common(...args);\n return {\n ...result,\n makeTokenAndSaveRefresh: hoistedMocks.makeTokenAndSaveRefresh,\n };\n }),\n readLocal: vi.spyOn(original, \"readLocal\"),\n readSession: vi.spyOn(original, \"readSession\"),\n // vi.fn(original.readLocal),\n };\n});\n\nvi.mock(\"oauth4webapi\");\n\ninterface BaseClientArgs {\n clientId: string;\n foundryUrl: string;\n redirectUrl: string;\n fetchFn?: typeof globalThis.fetch;\n}\n\ninterface ClientArgs extends BaseClientArgs {\n useHistory?: boolean;\n loginPage?: string;\n postLoginPage?: string;\n scopes?: string[];\n ctxPath?: string;\n refreshTokenMarker?: string;\n}\n\ndescribe(createPublicOauthClient, () => {\n const DEFAULT_CUR_URL = new URL(\"https://fauxurl\");\n const fetchFn = vi.fn<typeof fetch>();\n\n const mockWindow = {\n location: {\n toString: vi.fn(() => DEFAULT_CUR_URL),\n assign: vi.fn(),\n href: DEFAULT_CUR_URL.href,\n pathname: DEFAULT_CUR_URL.pathname,\n },\n history: {\n replaceState: vi.fn<typeof window.history.replaceState>(),\n },\n };\n\n const mockLocalStorage = {\n setItem: vi.fn(),\n getItem: vi.fn(),\n removeItem: vi.fn(),\n };\n\n const mockSessionStorage = {\n setItem: vi.fn(),\n getItem: vi.fn(),\n removeItem: vi.fn(),\n };\n\n beforeEach((context) => {\n vi.restoreAllMocks();\n fetchFn.mockRestore();\n });\n\n afterEach((context) => {\n vi.clearAllMocks();\n fetchFn.mockReset();\n });\n\n beforeAll(() => {\n vi.stubGlobal(\"window\", mockWindow);\n vi.stubGlobal(\"localStorage\", mockLocalStorage);\n vi.stubGlobal(\"sessionStorage\", mockSessionStorage);\n });\n\n afterAll(() => {\n vi.unstubAllGlobals();\n });\n\n const BASE_CLIENT_ARGS: BaseClientArgs = {\n clientId: \"this-would-be-client-id\",\n foundryUrl: \"https://a.foundry.url.local\",\n redirectUrl: \"https://my.redirect.url.local\",\n fetchFn,\n };\n\n const fullLoginUrl = new URL(\"/loginPage\", DEFAULT_CUR_URL);\n\n function setupWindowLocation(currentUrl: string) {\n mockWindow.location.href = new URL(currentUrl).href;\n mockWindow.location.pathname = new URL(currentUrl).pathname;\n }\n\n function setupLocalState(initialLocalState: LocalStorageState) {\n vi.mocked(commonJs.readLocal).mockImplementation(() => initialLocalState);\n }\n\n let client: PublicOauthClient;\n let clientArgs: ClientArgs;\n function setupClient(clientArgs_: ClientArgs) {\n clientArgs = clientArgs_;\n if (clientArgs.refreshTokenMarker) {\n client = createPublicOauthClient(\n clientArgs.clientId,\n clientArgs.foundryUrl,\n clientArgs.redirectUrl,\n clientArgs,\n );\n } else {\n client = createPublicOauthClient(\n clientArgs.clientId,\n clientArgs.foundryUrl,\n clientArgs.redirectUrl,\n clientArgs.useHistory,\n clientArgs.loginPage,\n clientArgs.postLoginPage,\n clientArgs.scopes,\n clientArgs.fetchFn,\n clientArgs.ctxPath,\n );\n }\n }\n beforeEach((context) => {\n // prevents mistakes like forgetting to initialize the client with an\n // old value around\n client = undefined!;\n clientArgs = undefined!;\n });\n\n async function expectRedirectToMultipass(\n tokenPromise: Promise<string>,\n ) {\n // we assume window.location.assign will take you away therefore we\n // also have to expect in this scenario that the thrown error happens\n await expect(tokenPromise)\n .rejects.toThrowError(new Error(\"Unable to redirect\"));\n\n expect(mockWindow.location.assign).toHaveBeenCalledOnce();\n\n const url = new URL(\n mockWindow.location.assign.mock.calls[0][0],\n );\n expect(url.origin).toEqual(clientArgs.foundryUrl);\n expect(url.pathname).toEqual(\"/multipass/api/oauth2/authorize\");\n expect(Object.fromEntries(url.searchParams.entries())).toEqual(\n expect.objectContaining({\n client_id: clientArgs.clientId,\n code_challenge: expect.any(String),\n redirect_uri: clientArgs.redirectUrl,\n response_type: \"code\",\n code_challenge_method: \"S256\",\n scope: \"offline_access api:read-data api:write-data\",\n state: expect.any(String),\n }),\n );\n }\n\n describe(\"refresh token marker\", () => {\n beforeEach(() => {\n setupWindowLocation(\"https://foundry.local\");\n });\n\n it(\"should not allow refresh if the refresh markers do not match\", async () => {\n setupLocalState({\n refresh_token: \"refreshToken\",\n refreshTokenMarker: \"not-the-right-marker\",\n });\n\n setupClient({\n ...BASE_CLIENT_ARGS,\n refreshTokenMarker: \"marker\",\n });\n\n await expectRedirectToMultipass(\n client(),\n );\n });\n\n it(\"should try to refresh if refresh tokens do match\", async () => {\n setupLocalState({\n refresh_token: \"refreshToken\",\n refreshTokenMarker: \"marker\",\n });\n\n setupClient({\n ...BASE_CLIENT_ARGS,\n refreshTokenMarker: \"marker\",\n });\n\n hoistedMocks.makeTokenAndSaveRefresh.mockImplementationOnce(\n () => ({\n access_token: \"some token\",\n expires_at: Date.now(),\n expires_in: 10000,\n }),\n );\n\n const tokenPromise = client();\n\n await expect(tokenPromise).resolves.toEqual(\"some token\");\n\n expect(hoistedMocks.makeTokenAndSaveRefresh).toBeCalledTimes(1);\n });\n });\n\n describe.each<{\n name: string;\n currentUrl: URL;\n clientArgs: BaseClientArgs & {\n useHistory?: boolean;\n loginPage?: string;\n postLoginPage?: string;\n scopes?: string[];\n ctxPath?: string;\n };\n should: {\n redirectToLoginPage: boolean;\n };\n }>([\n {\n name: \"Basic Usage\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n {\n name: \"Base w/ full loginPage and curUrl is root\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: fullLoginUrl.toString(),\n },\n should: {\n redirectToLoginPage: true,\n },\n },\n {\n name: \"Base w/ full loginPage and curUrl is login page\",\n currentUrl: fullLoginUrl,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: fullLoginUrl.toString(),\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n {\n name: \"Base w/ short loginPage and curUrl is root\",\n currentUrl: DEFAULT_CUR_URL,\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: \"/loginPage\",\n },\n should: {\n redirectToLoginPage: true,\n },\n },\n {\n name: \"Base w/ short loginPage and curUrl is loginPage\",\n currentUrl: new URL(\"/loginPage\", DEFAULT_CUR_URL),\n clientArgs: {\n ...BASE_CLIENT_ARGS,\n loginPage: \"/loginPage\",\n },\n should: {\n redirectToLoginPage: false,\n },\n },\n ])(\"$name\", ({ clientArgs, currentUrl, should }) => {\n beforeEach(() => {\n setupClient(clientArgs);\n setupWindowLocation(currentUrl.toString());\n });\n\n it(\"calls common with expected values\", () => {\n expect(vi.mocked(commonJs.common)).toHaveBeenCalledWith(\n expect.objectContaining({\n client_id: clientArgs.clientId,\n token_endpoint_auth_method: \"none\",\n }),\n commonJs.createAuthorizationServer(\n clientArgs.ctxPath ?? \"/multipass\",\n clientArgs.foundryUrl,\n ),\n expect.any(Function),\n expect.anything(),\n expect.any(Function),\n undefined,\n );\n });\n\n describe.each<\n { localStorage: LocalStorageState; sessionStorage: SessionStorageState }\n >([\n {\n localStorage: {\n refresh_token: \"a-refresh-token\",\n },\n sessionStorage: {},\n },\n {\n localStorage: {},\n sessionStorage: {\n codeVerifier: \"hi\",\n state: \"mom\",\n oldUrl: \"https://someoldurl.local\",\n },\n },\n { localStorage: {}, sessionStorage: {} },\n ])(\"Initial Local State: %s\", (initialState) => {\n const ACCESS_TOKEN = (Math.random() + 1).toString(36).substring(7);\n\n beforeEach(() => {\n vi.mocked(commonJs.readLocal).mockImplementation(() =>\n initialState.localStorage\n );\n\n vi.mocked(commonJs.readSession).mockImplementation(() =>\n initialState.sessionStorage\n );\n\n hoistedMocks.makeTokenAndSaveRefresh.mockImplementation(\n () => ({\n access_token: ACCESS_TOKEN,\n expires_at: Date.now(),\n expires_in: 10000,\n }),\n );\n });\n\n if (\n Object.keys(initialState.localStorage).length === 0\n && Object.keys(initialState.sessionStorage).length === 0\n ) {\n if (should.redirectToLoginPage) {\n it(\"redirects to login page\", async () => {\n const tokenPromise = client!();\n expect(vi.mocked(commonJs.common)).toBeCalledTimes(1);\n\n if (should.redirectToLoginPage) {\n // expect save local\n await expect(tokenPromise).resolves.toBeUndefined();\n expect(mockSessionStorage.setItem).toBeCalledWith(\n `@osdk/oauth : refresh : ${clientArgs.clientId}`,\n JSON.stringify({ oldUrl: window.location.toString() }),\n );\n expect(mockWindow.history.replaceState).toHaveBeenCalledWith(\n {},\n \"\",\n clientArgs.loginPage,\n );\n return;\n }\n });\n } else {\n it(\"redirects to multipass\", async () => {\n const tokenPromise = client!();\n expect(vi.mocked(commonJs.common)).toBeCalledTimes(1);\n\n if (should.redirectToLoginPage) {\n // expect save local\n await expect(tokenPromise).resolves.toBeUndefined();\n expect(mockSessionStorage.setItem).toBeCalledWith(\n `@osdk/oauth : refresh : ${clientArgs.clientId}`,\n JSON.stringify({ oldUrl: window.location.toString() }),\n );\n\n expect(mockWindow.history.replaceState).toHaveBeenCalledWith(\n {},\n \"\",\n clientArgs.loginPage,\n );\n return;\n }\n\n await expectRedirectToMultipass(\n tokenPromise,\n );\n });\n }\n }\n\n if (initialState.sessionStorage.codeVerifier) {\n it(\"tries to auth with return results\", async () => {\n await expect(client()).resolves.toEqual(ACCESS_TOKEN);\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledTimes(\n 1,\n );\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledWith(\n undefined, // this is only because we didn't mock out the internals\n \"signIn\",\n );\n\n expect(mockWindow.history.replaceState).toHaveBeenCalledTimes(1);\n expect(mockWindow.history.replaceState).toBeCalledWith(\n expect.anything(),\n expect.anything(),\n initialState.sessionStorage.oldUrl,\n );\n });\n }\n\n if (initialState.localStorage.refresh_token) {\n it(\"refreshes\", async () => {\n await expect(client()).resolves.toEqual(ACCESS_TOKEN);\n\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledTimes(\n 1,\n );\n expect(hoistedMocks.makeTokenAndSaveRefresh).toHaveBeenCalledWith(\n undefined, // this is only because we didn't mock out the internals\n \"refresh\",\n );\n });\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
16
17
  import { isOAuth2Error } from "oauth4webapi";
17
18
  export function throwIfError(result) {
18
19
  if (isOAuth2Error(result)) {
@@ -1 +1 @@
1
- {"version":3,"file":"throwIfError.js","names":["isOAuth2Error","throwIfError","result","Error","error"],"sources":["throwIfError.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isOAuth2Error } from \"oauth4webapi\";\nexport function throwIfError(result) {\n if (isOAuth2Error(result)) {\n throw new Error(`Failed to get token: ${result.error}`);\n }\n return result;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAa,QAAQ,cAAc;AAC5C,OAAO,SAASC,YAAYA,CAACC,MAAM,EAAE;EACjC,IAAIF,aAAa,CAACE,MAAM,CAAC,EAAE;IACvB,MAAM,IAAIC,KAAK,CAAC,wBAAwBD,MAAM,CAACE,KAAK,EAAE,CAAC;EAC3D;EACA,OAAOF,MAAM;AACjB","ignoreList":[]}
1
+ {"version":3,"file":"throwIfError.js","names":["isOAuth2Error","throwIfError","result","Error","error"],"sources":["throwIfError.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { OAuth2Error } from \"oauth4webapi\";\nimport { isOAuth2Error } from \"oauth4webapi\";\n\ntype IsErrorInputs = Parameters<typeof isOAuth2Error>[0];\nexport function throwIfError<T extends IsErrorInputs>(\n result: T | OAuth2Error,\n): Exclude<T, OAuth2Error> {\n if (isOAuth2Error(result)) {\n throw new Error(`Failed to get token: ${result.error}`);\n }\n return result as any;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,aAAa,QAAQ,cAAc;AAG5C,OAAO,SAASC,YAAYA,CAC1BC,MAAuB,EACE;EACzB,IAAIF,aAAa,CAACE,MAAM,CAAC,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,wBAAwBD,MAAM,CAACE,KAAK,EAAE,CAAC;EACzD;EACA,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -13,6 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
16
17
  import invariant from "tiny-invariant";
17
18
  export function processOptionsAndAssignDefaults(url, redirect_uri, useHistory, loginPage, postLoginPage, scopes, fetchFn, ctxPath) {
18
19
  let options = {};
@@ -31,6 +32,7 @@ export function processOptionsAndAssignDefaults(url, redirect_uri, useHistory, l
31
32
  }
32
33
  !url ? process.env.NODE_ENV !== "production" ? invariant(false, "url is required") : invariant(false) : void 0;
33
34
  !redirect_uri ? process.env.NODE_ENV !== "production" ? invariant(false, "redirectUrl is required") : invariant(false) : void 0;
35
+
34
36
  // Assign defaults
35
37
  return {
36
38
  useHistory: options.useHistory ?? true,
@@ -38,7 +40,8 @@ export function processOptionsAndAssignDefaults(url, redirect_uri, useHistory, l
38
40
  postLoginPage: options.postLoginPage || window.location.toString(),
39
41
  scopes: options.scopes ?? ["api:read-data", "api:write-data"],
40
42
  fetchFn: options.fetchFn ?? globalThis.fetch,
41
- ctxPath: options.ctxPath ?? "multipass"
43
+ ctxPath: options.ctxPath ?? "multipass",
44
+ refreshTokenMarker: options.refreshTokenMarker
42
45
  };
43
46
  }
44
47
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["invariant","processOptionsAndAssignDefaults","url","redirect_uri","useHistory","loginPage","postLoginPage","scopes","fetchFn","ctxPath","options","process","env","NODE_ENV","window","location","toString","globalThis","fetch"],"sources":["utils.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport invariant from \"tiny-invariant\";\nexport function processOptionsAndAssignDefaults(url, redirect_uri, useHistory, loginPage, postLoginPage, scopes, fetchFn, ctxPath) {\n let options = {};\n if (typeof useHistory === \"object\") {\n invariant(!loginPage && !postLoginPage && !scopes && !fetchFn && !ctxPath, \"If useHistory is an object, other options should not be provided\");\n options = useHistory;\n }\n else {\n options = {\n useHistory,\n loginPage,\n postLoginPage,\n scopes,\n fetchFn,\n ctxPath,\n };\n }\n invariant(url, \"url is required\");\n invariant(redirect_uri, \"redirectUrl is required\");\n // Assign defaults\n return {\n useHistory: options.useHistory ?? true,\n loginPage: options.loginPage,\n postLoginPage: options.postLoginPage || window.location.toString(),\n scopes: options.scopes ?? [\"api:read-data\", \"api:write-data\"],\n fetchFn: options.fetchFn ?? globalThis.fetch,\n ctxPath: options.ctxPath ?? \"multipass\",\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,SAAS,MAAM,gBAAgB;AACtC,OAAO,SAASC,+BAA+BA,CAACC,GAAG,EAAEC,YAAY,EAAEC,UAAU,EAAEC,SAAS,EAAEC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE;EAC/H,IAAIC,OAAO,GAAG,CAAC,CAAC;EAChB,IAAI,OAAON,UAAU,KAAK,QAAQ,EAAE;IAChC,EAAU,CAACC,SAAS,IAAI,CAACC,aAAa,IAAI,CAACC,MAAM,IAAI,CAACC,OAAO,IAAI,CAACC,OAAO,IAAAE,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAzEb,SAAS,QAAkE,kEAAkE,IAA7IA,SAAS;IACTU,OAAO,GAAGN,UAAU;EACxB,CAAC,MACI;IACDM,OAAO,GAAG;MACNN,UAAU;MACVC,SAAS;MACTC,aAAa;MACbC,MAAM;MACNC,OAAO;MACPC;IACJ,CAAC;EACL;EACA,CAAUP,GAAG,GAAAS,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAbb,SAAS,QAAM,iBAAiB,IAAhCA,SAAS;EACT,CAAUG,YAAY,GAAAQ,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAtBb,SAAS,QAAe,yBAAyB,IAAjDA,SAAS;EACT;EACA,OAAO;IACHI,UAAU,EAAEM,OAAO,CAACN,UAAU,IAAI,IAAI;IACtCC,SAAS,EAAEK,OAAO,CAACL,SAAS;IAC5BC,aAAa,EAAEI,OAAO,CAACJ,aAAa,IAAIQ,MAAM,CAACC,QAAQ,CAACC,QAAQ,CAAC,CAAC;IAClET,MAAM,EAAEG,OAAO,CAACH,MAAM,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7DC,OAAO,EAAEE,OAAO,CAACF,OAAO,IAAIS,UAAU,CAACC,KAAK;IAC5CT,OAAO,EAAEC,OAAO,CAACD,OAAO,IAAI;EAChC,CAAC;AACL","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["invariant","processOptionsAndAssignDefaults","url","redirect_uri","useHistory","loginPage","postLoginPage","scopes","fetchFn","ctxPath","options","process","env","NODE_ENV","window","location","toString","globalThis","fetch","refreshTokenMarker"],"sources":["utils.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport invariant from \"tiny-invariant\";\nimport type { PublicOauthClientOptions } from \"./createPublicOauthClient.js\";\n\ninterface ProcessedPublicOauthClientOptions\n extends\n Omit<Required<PublicOauthClientOptions>, \"loginPage\" | \"refreshTokenMarker\">\n{\n loginPage?: string;\n refreshTokenMarker?: string;\n}\n\nexport function processOptionsAndAssignDefaults(\n url: string,\n redirect_uri: string,\n useHistory?: boolean | PublicOauthClientOptions,\n loginPage?: string,\n postLoginPage?: string,\n scopes?: string[],\n fetchFn?: typeof globalThis.fetch,\n ctxPath?: string,\n): ProcessedPublicOauthClientOptions {\n let options: PublicOauthClientOptions = {};\n\n if (typeof useHistory === \"object\") {\n invariant(\n !loginPage && !postLoginPage && !scopes && !fetchFn && !ctxPath,\n \"If useHistory is an object, other options should not be provided\",\n );\n options = useHistory;\n } else {\n options = {\n useHistory,\n loginPage,\n postLoginPage,\n scopes,\n fetchFn,\n ctxPath,\n };\n }\n\n invariant(url, \"url is required\");\n invariant(redirect_uri, \"redirectUrl is required\");\n\n // Assign defaults\n return {\n useHistory: options.useHistory ?? true,\n loginPage: options.loginPage,\n postLoginPage: options.postLoginPage || window.location.toString(),\n scopes: options.scopes ?? [\"api:read-data\", \"api:write-data\"],\n fetchFn: options.fetchFn ?? globalThis.fetch,\n ctxPath: options.ctxPath ?? \"multipass\",\n refreshTokenMarker: options.refreshTokenMarker,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,SAAS,MAAM,gBAAgB;AAWtC,OAAO,SAASC,+BAA+BA,CAC7CC,GAAW,EACXC,YAAoB,EACpBC,UAA+C,EAC/CC,SAAkB,EAClBC,aAAsB,EACtBC,MAAiB,EACjBC,OAAiC,EACjCC,OAAgB,EACmB;EACnC,IAAIC,OAAiC,GAAG,CAAC,CAAC;EAE1C,IAAI,OAAON,UAAU,KAAK,QAAQ,EAAE;IAClC,EACE,CAACC,SAAS,IAAI,CAACC,aAAa,IAAI,CAACC,MAAM,IAAI,CAACC,OAAO,IAAI,CAACC,OAAO,IAAAE,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADjEb,SAAS,QAEP,kEAAkE,IAFpEA,SAAS;IAITU,OAAO,GAAGN,UAAU;EACtB,CAAC,MAAM;IACLM,OAAO,GAAG;MACRN,UAAU;MACVC,SAAS;MACTC,aAAa;MACbC,MAAM;MACNC,OAAO;MACPC;IACF,CAAC;EACH;EAEA,CAAUP,GAAG,GAAAS,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAbb,SAAS,QAAM,iBAAiB,IAAhCA,SAAS;EACT,CAAUG,YAAY,GAAAQ,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAtBb,SAAS,QAAe,yBAAyB,IAAjDA,SAAS;;EAET;EACA,OAAO;IACLI,UAAU,EAAEM,OAAO,CAACN,UAAU,IAAI,IAAI;IACtCC,SAAS,EAAEK,OAAO,CAACL,SAAS;IAC5BC,aAAa,EAAEI,OAAO,CAACJ,aAAa,IAAIQ,MAAM,CAACC,QAAQ,CAACC,QAAQ,CAAC,CAAC;IAClET,MAAM,EAAEG,OAAO,CAACH,MAAM,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC7DC,OAAO,EAAEE,OAAO,CAACF,OAAO,IAAIS,UAAU,CAACC,KAAK;IAC5CT,OAAO,EAAEC,OAAO,CAACD,OAAO,IAAI,WAAW;IACvCU,kBAAkB,EAAET,OAAO,CAACS;EAC9B,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { Token } from "./Token.js";
2
+ export type Events = {
3
+ signIn: CustomEvent<Token>;
4
+ signOut: Event;
5
+ refresh: CustomEvent<Token>;
6
+ };
7
+ export interface BaseOauthClient<K extends keyof Events & string> {
8
+ (): Promise<string>;
9
+ getTokenOrUndefined: () => string | undefined;
10
+ signIn: () => Promise<Token>;
11
+ signOut: () => Promise<void>;
12
+ addEventListener: <T extends K>(type: T, listener: ((evt: Events[T]) => void) | null, options?: boolean | AddEventListenerOptions) => void;
13
+ removeEventListener: <T extends K>(type: T, callback: ((evt: Events[T]) => void) | null, options?: EventListenerOptions | boolean) => void;
14
+ }
@@ -1,4 +1,2 @@
1
1
  import type { BaseOauthClient } from "./BaseOauthClient.js";
2
- export interface ConfidentialOauthClient extends BaseOauthClient<"signIn" | "signOut"> {
3
- }
4
- //# sourceMappingURL=ConfidentialOauthClient.d.ts.map
2
+ export interface ConfidentialOauthClient extends BaseOauthClient<"signIn" | "signOut"> {}
@@ -1,6 +1,5 @@
1
1
  import type { BaseOauthClient } from "./BaseOauthClient.js";
2
2
  import type { Token } from "./Token.js";
3
3
  export interface PublicOauthClient extends BaseOauthClient<"signIn" | "signOut" | "refresh"> {
4
- refresh: () => Promise<Token | undefined>;
4
+ refresh: () => Promise<Token | undefined>;
5
5
  }
6
- //# sourceMappingURL=PublicOauthClient.d.ts.map
@@ -0,0 +1,6 @@
1
+ export interface Token {
2
+ readonly access_token: string;
3
+ readonly expires_in: number;
4
+ readonly refresh_token?: string;
5
+ readonly expires_at: number;
6
+ }
@@ -1,21 +1,22 @@
1
1
  import type { AuthorizationServer, Client, HttpRequestOptions, OAuth2TokenEndpointResponse } from "oauth4webapi";
2
2
  import type { BaseOauthClient, Events } from "./BaseOauthClient.js";
3
3
  import type { Token } from "./Token.js";
4
- export type LocalStorageState = {
5
- refresh_token?: string;
6
- };
4
+ export interface LocalStorageState {
5
+ refresh_token?: string;
6
+ refreshTokenMarker?: string;
7
+ }
7
8
  export type SessionStorageState = {
8
- codeVerifier?: never;
9
- state?: never;
10
- oldUrl: string;
9
+ codeVerifier?: never;
10
+ state?: never;
11
+ oldUrl: string;
11
12
  } | {
12
- codeVerifier: string;
13
- state: string;
14
- oldUrl: string;
13
+ codeVerifier: string;
14
+ state: string;
15
+ oldUrl: string;
15
16
  } | {
16
- codeVerifier?: never;
17
- state?: never;
18
- oldUrl?: never;
17
+ codeVerifier?: never;
18
+ state?: never;
19
+ oldUrl?: never;
19
20
  };
20
21
  export declare function saveLocal(client: Client, x: LocalStorageState): void;
21
22
  export declare function removeLocal(client: Client): void;
@@ -23,11 +24,8 @@ export declare function readLocal(client: Client): LocalStorageState;
23
24
  export declare function saveSession(client: Client, x: SessionStorageState): void;
24
25
  export declare function removeSession(client: Client): void;
25
26
  export declare function readSession(client: Client): SessionStorageState;
26
- export declare function common<R extends undefined | (() => Promise<Token | undefined>)>(client: Client, as: AuthorizationServer, _signIn: () => Promise<Token>, oauthHttpOptions: HttpRequestOptions, refresh: R): {
27
- getToken: BaseOauthClient<keyof Events & string> & {
28
- refresh: R;
29
- };
30
- makeTokenAndSaveRefresh: (resp: OAuth2TokenEndpointResponse, type: "signIn" | "refresh") => Token;
27
+ export declare function common<R extends undefined | (() => Promise<Token | undefined>)>(client: Client, as: AuthorizationServer, _signIn: () => Promise<Token>, oauthHttpOptions: HttpRequestOptions, refresh: R, refreshTokenMarker: string | undefined): {
28
+ getToken: BaseOauthClient<keyof Events & string> & { refresh: R };
29
+ makeTokenAndSaveRefresh: (resp: OAuth2TokenEndpointResponse, type: "signIn" | "refresh") => Token;
31
30
  };
32
31
  export declare function createAuthorizationServer(ctxPath: string, url: string): Required<Pick<AuthorizationServer, "issuer" | "token_endpoint" | "authorization_endpoint" | "revocation_endpoint">>;
33
- //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ export {};
@@ -1,12 +1,11 @@
1
1
  import type { ConfidentialOauthClient } from "./ConfidentialOauthClient.js";
2
2
  /**
3
- * @param client_id
4
- * @param client_secret
5
- * @param url the base url of your foundry server
6
- * @param scopes
7
- * @param fetchFn
8
- * @param ctxPath
9
- * @returns which can be used as a token provider
10
- */
3
+ * @param client_id
4
+ * @param client_secret
5
+ * @param url the base url of your foundry server
6
+ * @param scopes
7
+ * @param fetchFn
8
+ * @param ctxPath
9
+ * @returns which can be used as a token provider
10
+ */
11
11
  export declare function createConfidentialOauthClient(client_id: string, client_secret: string, url: string, scopes?: string[], fetchFn?: typeof globalThis.fetch, ctxPath?: string): ConfidentialOauthClient;
12
- //# sourceMappingURL=createConfidentialOauthClient.d.ts.map
@@ -0,0 +1,56 @@
1
+ import type { PublicOauthClient } from "./PublicOauthClient.js";
2
+ export interface PublicOauthClientOptions {
3
+ /**
4
+ * If true, uses `history.replaceState()`, otherwise uses `window.location.assign()` (defaults to true)
5
+ */
6
+ useHistory?: boolean;
7
+ /**
8
+ * Custom landing page URL prior to logging in
9
+ */
10
+ loginPage?: string;
11
+ /**
12
+ * URL to return to after completed authentication cycle (defaults to `window.location.toString()`)
13
+ */
14
+ postLoginPage?: string;
15
+ /**
16
+ * * @param {string[]} [scopes=[]] - OAuth scopes to request. If not provided, defaults to `["api:read-data", "api:write-data"]`
17
+ */
18
+ scopes?: string[];
19
+ /**
20
+ * Custom fetch function to use for requests (defaults to `globalThis.fetch`)
21
+ */
22
+ fetchFn?: typeof globalThis.fetch;
23
+ /**
24
+ * Context path for the authorization server (defaults to "multipass")
25
+ */
26
+ ctxPath?: string;
27
+ /**
28
+ * Allows for an additional value to be appended to the local storage key for the refresh token.
29
+ */
30
+ refreshTokenMarker?: string;
31
+ }
32
+ /**
33
+ * Creates a PublicOauthClient for authentication.
34
+ *
35
+ * @param {string} clientId - The client_id from the OAuth configuration on the server
36
+ * @param {string} url - The base URL of your Foundry server
37
+ * @param {string} redirectUrl - The URL configured for redirect in the OAuth configuration on the server
38
+ * @param {PublicOauthClientOptions} options - Additional options for the client
39
+ * @returns {PublicOauthClient} A client that can be used as a token provider
40
+ */
41
+ export declare function createPublicOauthClient(clientId: string, url: string, redirectUrl: string, options?: PublicOauthClientOptions): PublicOauthClient;
42
+ /**
43
+ * Creates a PublicOauthClient for authentication.
44
+ *
45
+ * @param {string} clientId - The client_id from the OAuth configuration on the server
46
+ * @param {string} url - The base URL of your Foundry server
47
+ * @param {string} redirectUrl - The URL configured for redirect in the OAuth configuration on the server
48
+ * @param {boolean} useHistory - If true, uses `history.replaceState()`, otherwise uses `window.location.assign()` (defaults to true)
49
+ * @param {string} loginPage - Custom landing page URL prior to logging in
50
+ * @param {string} postLoginPage - URL to return to after completed authentication cycle (defaults to `window.location.toString()`)
51
+ * @param {string[]} scopes - OAuth scopes to request. If not provided, defaults to `["api:read-data", "api:write-data"]`
52
+ * @param {typeof globalThis.fetch} fetchFn - Custom fetch function to use for requests (defaults to `globalThis.fetch`)
53
+ * @param {string} ctxPath - Context path for the authorization server (defaults to "multipass")
54
+ * @returns {PublicOauthClient} A client that can be used as a token provider
55
+ */
56
+ export declare function createPublicOauthClient(client_id: string, url: string, redirectUrl: string, useHistory?: boolean, loginPage?: string, postLoginPage?: string, scopes?: string[], fetchFn?: typeof globalThis.fetch, ctxPath?: string): PublicOauthClient;
@@ -1,4 +1,3 @@
1
1
  export { createConfidentialOauthClient } from "./createConfidentialOauthClient.js";
2
2
  export { createPublicOauthClient } from "./createPublicOauthClient.js";
3
- export type { PublicOauthClient } from "./PublicOauthClient.js";
4
- //# sourceMappingURL=index.d.ts.map
3
+ export type { PublicOauthClient } from "./PublicOauthClient.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -3,4 +3,3 @@ import { isOAuth2Error } from "oauth4webapi";
3
3
  type IsErrorInputs = Parameters<typeof isOAuth2Error>[0];
4
4
  export declare function throwIfError<T extends IsErrorInputs>(result: T | OAuth2Error): Exclude<T, OAuth2Error>;
5
5
  export {};
6
- //# sourceMappingURL=throwIfError.d.ts.map
@@ -1,6 +1,7 @@
1
1
  import type { PublicOauthClientOptions } from "./createPublicOauthClient.js";
2
- export type ProcessedPublicOauthClientOptions = Omit<Required<PublicOauthClientOptions>, "loginPage"> & {
3
- loginPage?: string;
4
- };
2
+ interface ProcessedPublicOauthClientOptions extends Omit<Required<PublicOauthClientOptions>, "loginPage" | "refreshTokenMarker"> {
3
+ loginPage?: string;
4
+ refreshTokenMarker?: string;
5
+ }
5
6
  export declare function processOptionsAndAssignDefaults(url: string, redirect_uri: string, useHistory?: boolean | PublicOauthClientOptions, loginPage?: string, postLoginPage?: string, scopes?: string[], fetchFn?: typeof globalThis.fetch, ctxPath?: string): ProcessedPublicOauthClientOptions;
6
- //# sourceMappingURL=utils.d.ts.map
7
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/oauth",
3
- "version": "1.1.0-beta.7",
3
+ "version": "1.1.0-beta.9",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,12 +9,20 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "browser": "./build/browser/index.js",
12
- "import": "./build/esm/index.js",
12
+ "import": {
13
+ "types": "./build/types/index.d.ts",
14
+ "default": "./build/esm/index.js"
15
+ },
16
+ "require": "./build/cjs/index.cjs",
13
17
  "default": "./build/browser/index.js"
14
18
  },
15
19
  "./*": {
16
20
  "browser": "./build/browser/public/*.js",
17
- "import": "./build/esm/public/*.js",
21
+ "import": {
22
+ "types": "./build/types/public/*.d.ts",
23
+ "default": "./build/esm/public/*.js"
24
+ },
25
+ "require": "./build/cjs/public/*.cjs",
18
26
  "default": "./build/browser/public/*.js"
19
27
  }
20
28
  },
@@ -28,8 +36,7 @@
28
36
  "jest-extended": "^4.0.2",
29
37
  "typescript": "~5.5.4",
30
38
  "@osdk/monorepo.api-extractor": "~0.0.0",
31
- "@osdk/monorepo.tsconfig": "~0.0.0",
32
- "@osdk/monorepo.tsup": "~0.0.0"
39
+ "@osdk/monorepo.tsconfig": "~0.0.0"
33
40
  },
34
41
  "publishConfig": {
35
42
  "access": "public"
@@ -38,20 +45,27 @@
38
45
  "build/cjs",
39
46
  "build/esm",
40
47
  "build/browser",
48
+ "build/types",
41
49
  "CHANGELOG.md",
42
50
  "package.json",
43
51
  "templates",
44
52
  "*.d.ts"
45
53
  ],
54
+ "main": "./build/cjs/index.cjs",
46
55
  "module": "./build/esm/index.js",
47
- "types": "./build/esm/index.d.ts",
56
+ "types": "./build/cjs/index.d.cts",
48
57
  "type": "module",
49
58
  "scripts": {
50
- "check-attw": "monorepo.tool.attw esm",
59
+ "check-attw": "attw --pack .",
51
60
  "check-spelling": "cspell --quiet .",
52
61
  "clean": "rm -rf lib dist types build tsconfig.tsbuildinfo",
53
62
  "fix-lint": "eslint . --fix && dprint fmt --config $(find-up dprint.json)",
54
63
  "lint": "eslint . && dprint check --config $(find-up dprint.json)",
55
- "transpile": "monorepo.tool.transpile"
64
+ "test": "vitest run --pool=forks",
65
+ "transpileBrowser": "monorepo.tool.transpile -f esm -m normal -t browser",
66
+ "transpileCjs": "monorepo.tool.transpile -f cjs -m bundle -t node",
67
+ "transpileEsm": "monorepo.tool.transpile -f esm -m normal -t node",
68
+ "transpileTypes": "monorepo.tool.transpile -f esm -m types -t node",
69
+ "typecheck": "tsc --noEmit --emitDeclarationOnly false"
56
70
  }
57
71
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AuthorizationServer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthorizationServer.test.d.ts","sourceRoot":"","sources":["../../src/AuthorizationServer.test.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import type { Token } from "./Token.js";
2
- export type Events = {
3
- signIn: CustomEvent<Token>;
4
- signOut: Event;
5
- refresh: CustomEvent<Token>;
6
- };
7
- export interface BaseOauthClient<K extends keyof Events & string> {
8
- (): Promise<string>;
9
- getTokenOrUndefined: () => string | undefined;
10
- signIn: () => Promise<Token>;
11
- signOut: () => Promise<void>;
12
- addEventListener: <T extends K>(type: T, listener: ((evt: Events[T]) => void) | null, options?: boolean | AddEventListenerOptions) => void;
13
- removeEventListener: <T extends K>(type: T, callback: ((evt: Events[T]) => void) | null, options?: EventListenerOptions | boolean) => void;
14
- }
15
- //# sourceMappingURL=BaseOauthClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseOauthClient.d.ts","sourceRoot":"","sources":["../../src/BaseOauthClient.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,MAAM,GAAG,MAAM;IAC9D,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpB,mBAAmB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,gBAAgB,EAAE,CAAC,CAAC,SAAS,CAAC,EAC5B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,KACxC,IAAI,CAAC;IAEV,mBAAmB,EAAE,CAAC,CAAC,SAAS,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,KACrC,IAAI,CAAC;CACX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfidentialOauthClient.d.ts","sourceRoot":"","sources":["../../src/ConfidentialOauthClient.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,uBACf,SAAQ,eAAe,CAAC,QAAQ,GAAG,SAAS,CAAC;CAE9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PublicOauthClient.d.ts","sourceRoot":"","sources":["../../src/PublicOauthClient.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,iBACf,SAAQ,eAAe,CAAC,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAEzD,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;CAC3C"}
@@ -1,7 +0,0 @@
1
- export interface Token {
2
- readonly access_token: string;
3
- readonly expires_in: number;
4
- readonly refresh_token?: string;
5
- readonly expires_at: number;
6
- }
7
- //# sourceMappingURL=Token.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/Token.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=createPublicOauthClient.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPublicOauthClient.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/createPublicOauthClient.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,mBAAmB,EACnB,MAAM,EACN,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAwBxC,MAAM,MAAM,iBAAiB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAE3B;IACA,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAEC;IACA,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAEC;IACA,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC;AAEJ,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAMpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAQ3D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,mBAAmB,QAMjE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,QAK3C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAQ/D;AAED,wBAAgB,MAAM,CACpB,CAAC,SAAS,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,EAExD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,mBAAmB,EACvB,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAC7B,gBAAgB,EAAE,kBAAkB,EACpC,OAAO,EAAE,CAAC,GACT;IACD,QAAQ,EAAE,eAAe,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;IAClE,uBAAuB,EAAE,CACvB,IAAI,EAAE,2BAA2B,EACjC,IAAI,EAAE,QAAQ,GAAG,SAAS,KACvB,KAAK,CAAC;CACZ,CA0GA;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACV,QAAQ,CACT,IAAI,CACF,mBAAmB,EACjB,QAAQ,GACR,gBAAgB,GAChB,wBAAwB,GACxB,qBAAqB,CACxB,CACF,CAQA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createConfidentialOauthClient.d.ts","sourceRoot":"","sources":["../../src/createConfidentialOauthClient.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG5E;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAM,EAAwC,EACtD,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,EACnD,OAAO,GAAE,MAAoB,GAC5B,uBAAuB,CAgCzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPublicOauthClient.d.ts","sourceRoot":"","sources":["../../src/createPublicOauthClient.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAYhE,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAElC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,wBAAwB,GACjC,iBAAiB,CAAC;AAErB;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,OAAO,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=publicOauth.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"publicOauth.test.d.ts","sourceRoot":"","sources":["../../src/publicOauth.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"throwIfError.d.ts","sourceRoot":"","sources":["../../src/throwIfError.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,MAAM,EAAE,CAAC,GAAG,WAAW,GACtB,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAKzB"}
@@ -1,6 +0,0 @@
1
- import type { PublicOauthClientOptions } from "./createPublicOauthClient.js";
2
- export type ProcessedPublicOauthClientOptions = Omit<Required<PublicOauthClientOptions>, "loginPage"> & {
3
- loginPage?: string;
4
- };
5
- export declare function processOptionsAndAssignDefaults(url: string, redirect_uri: string, useHistory?: boolean | PublicOauthClientOptions, loginPage?: string, postLoginPage?: string, scopes?: string[], fetchFn?: typeof globalThis.fetch, ctxPath?: string): ProcessedPublicOauthClientOptions;
6
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE7E,MAAM,MAAM,iCAAiC,GACzC,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,WAAW,CAAC,GACrD;IACA,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEJ,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,OAAO,GAAG,wBAAwB,EAC/C,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,iCAAiC,CAgCnC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AuthorizationServer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthorizationServer.test.d.ts","sourceRoot":"","sources":["../../src/AuthorizationServer.test.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import type { Token } from "./Token.js";
2
- export type Events = {
3
- signIn: CustomEvent<Token>;
4
- signOut: Event;
5
- refresh: CustomEvent<Token>;
6
- };
7
- export interface BaseOauthClient<K extends keyof Events & string> {
8
- (): Promise<string>;
9
- getTokenOrUndefined: () => string | undefined;
10
- signIn: () => Promise<Token>;
11
- signOut: () => Promise<void>;
12
- addEventListener: <T extends K>(type: T, listener: ((evt: Events[T]) => void) | null, options?: boolean | AddEventListenerOptions) => void;
13
- removeEventListener: <T extends K>(type: T, callback: ((evt: Events[T]) => void) | null, options?: EventListenerOptions | boolean) => void;
14
- }
15
- //# sourceMappingURL=BaseOauthClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseOauthClient.d.ts","sourceRoot":"","sources":["../../src/BaseOauthClient.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,MAAM,GAAG,MAAM;IAC9D,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpB,mBAAmB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,gBAAgB,EAAE,CAAC,CAAC,SAAS,CAAC,EAC5B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,KACxC,IAAI,CAAC;IAEV,mBAAmB,EAAE,CAAC,CAAC,SAAS,CAAC,EAC/B,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,EAC3C,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,KACrC,IAAI,CAAC;CACX"}