@egain/egain-mcp-server 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.speakeasy/templates/src/lib/env.ts +1 -0
- package/README.md +119 -0
- package/bin/mcp-server.js +47817 -0
- package/bin/mcp-server.js.map +371 -0
- package/esm/src/cloudflare-worker/cloudflare-worker.d.ts +17 -0
- package/esm/src/cloudflare-worker/cloudflare-worker.d.ts.map +1 -0
- package/esm/src/cloudflare-worker/cloudflare-worker.js +72 -0
- package/esm/src/cloudflare-worker/cloudflare-worker.js.map +1 -0
- package/esm/src/cloudflare-worker/landing-page.d.ts +2 -0
- package/esm/src/cloudflare-worker/landing-page.d.ts.map +1 -0
- package/esm/src/cloudflare-worker/landing-page.js +330 -0
- package/esm/src/cloudflare-worker/landing-page.js.map +1 -0
- package/esm/src/core.d.ts +10 -0
- package/esm/src/core.d.ts.map +1 -0
- package/esm/src/core.js +13 -0
- package/esm/src/core.js.map +1 -0
- package/esm/src/funcs/getAnnouncements.d.ts +25 -0
- package/esm/src/funcs/getAnnouncements.d.ts.map +1 -0
- package/esm/src/funcs/getAnnouncements.js +111 -0
- package/esm/src/funcs/getAnnouncements.js.map +1 -0
- package/esm/src/funcs/getAnswers.d.ts +25 -0
- package/esm/src/funcs/getAnswers.d.ts.map +1 -0
- package/esm/src/funcs/getAnswers.js +115 -0
- package/esm/src/funcs/getAnswers.js.map +1 -0
- package/esm/src/funcs/getArticle.d.ts +28 -0
- package/esm/src/funcs/getArticle.d.ts.map +1 -0
- package/esm/src/funcs/getArticle.js +118 -0
- package/esm/src/funcs/getArticle.js.map +1 -0
- package/esm/src/funcs/getPopularArticles.d.ts +25 -0
- package/esm/src/funcs/getPopularArticles.d.ts.map +1 -0
- package/esm/src/funcs/getPopularArticles.js +111 -0
- package/esm/src/funcs/getPopularArticles.js.map +1 -0
- package/esm/src/funcs/getPortals.d.ts +23 -0
- package/esm/src/funcs/getPortals.d.ts.map +1 -0
- package/esm/src/funcs/getPortals.js +106 -0
- package/esm/src/funcs/getPortals.js.map +1 -0
- package/esm/src/funcs/makeSuggestion.d.ts +25 -0
- package/esm/src/funcs/makeSuggestion.d.ts.map +1 -0
- package/esm/src/funcs/makeSuggestion.js +104 -0
- package/esm/src/funcs/makeSuggestion.js.map +1 -0
- package/esm/src/funcs/queryAnswers.d.ts +25 -0
- package/esm/src/funcs/queryAnswers.d.ts.map +1 -0
- package/esm/src/funcs/queryAnswers.js +109 -0
- package/esm/src/funcs/queryAnswers.js.map +1 -0
- package/esm/src/funcs/queryRetrieve.d.ts +27 -0
- package/esm/src/funcs/queryRetrieve.d.ts.map +1 -0
- package/esm/src/funcs/queryRetrieve.js +115 -0
- package/esm/src/funcs/queryRetrieve.js.map +1 -0
- package/esm/src/funcs/querySearch.d.ts +16 -0
- package/esm/src/funcs/querySearch.d.ts.map +1 -0
- package/esm/src/funcs/querySearch.js +98 -0
- package/esm/src/funcs/querySearch.js.map +1 -0
- package/esm/src/funcs/retrieveChunks.d.ts +27 -0
- package/esm/src/funcs/retrieveChunks.d.ts.map +1 -0
- package/esm/src/funcs/retrieveChunks.js +117 -0
- package/esm/src/funcs/retrieveChunks.js.map +1 -0
- package/esm/src/funcs/searchAiSearch.d.ts +16 -0
- package/esm/src/funcs/searchAiSearch.d.ts.map +1 -0
- package/esm/src/funcs/searchAiSearch.js +102 -0
- package/esm/src/funcs/searchAiSearch.js.map +1 -0
- package/esm/src/hooks/auth-hook.d.ts +100 -0
- package/esm/src/hooks/auth-hook.d.ts.map +1 -0
- package/esm/src/hooks/auth-hook.js +1565 -0
- package/esm/src/hooks/auth-hook.js.map +1 -0
- package/esm/src/hooks/hooks.d.ts +25 -0
- package/esm/src/hooks/hooks.d.ts.map +1 -0
- package/esm/src/hooks/hooks.js +82 -0
- package/esm/src/hooks/hooks.js.map +1 -0
- package/esm/src/hooks/portal-cache-hook.d.ts +34 -0
- package/esm/src/hooks/portal-cache-hook.d.ts.map +1 -0
- package/esm/src/hooks/portal-cache-hook.js +441 -0
- package/esm/src/hooks/portal-cache-hook.js.map +1 -0
- package/esm/src/hooks/portal-lookup-hook.d.ts +17 -0
- package/esm/src/hooks/portal-lookup-hook.d.ts.map +1 -0
- package/esm/src/hooks/portal-lookup-hook.js +374 -0
- package/esm/src/hooks/portal-lookup-hook.js.map +1 -0
- package/esm/src/hooks/registration.d.ts +3 -0
- package/esm/src/hooks/registration.d.ts.map +1 -0
- package/esm/src/hooks/registration.js +36 -0
- package/esm/src/hooks/registration.js.map +1 -0
- package/esm/src/hooks/server-routing-hook.d.ts +19 -0
- package/esm/src/hooks/server-routing-hook.d.ts.map +1 -0
- package/esm/src/hooks/server-routing-hook.js +43 -0
- package/esm/src/hooks/server-routing-hook.js.map +1 -0
- package/esm/src/hooks/types.d.ts +76 -0
- package/esm/src/hooks/types.d.ts.map +1 -0
- package/esm/src/hooks/types.js +5 -0
- package/esm/src/hooks/types.js.map +1 -0
- package/esm/src/lib/base64.d.ts +10 -0
- package/esm/src/lib/base64.d.ts.map +1 -0
- package/esm/src/lib/base64.js +29 -0
- package/esm/src/lib/base64.js.map +1 -0
- package/esm/src/lib/config.d.ts +57 -0
- package/esm/src/lib/config.d.ts.map +1 -0
- package/esm/src/lib/config.js +46 -0
- package/esm/src/lib/config.js.map +1 -0
- package/esm/src/lib/dlv.d.ts +14 -0
- package/esm/src/lib/dlv.d.ts.map +1 -0
- package/esm/src/lib/dlv.js +46 -0
- package/esm/src/lib/dlv.js.map +1 -0
- package/esm/src/lib/encodings.d.ts +52 -0
- package/esm/src/lib/encodings.d.ts.map +1 -0
- package/esm/src/lib/encodings.js +354 -0
- package/esm/src/lib/encodings.js.map +1 -0
- package/esm/src/lib/env.d.ts +15 -0
- package/esm/src/lib/env.d.ts.map +1 -0
- package/esm/src/lib/env.js +27 -0
- package/esm/src/lib/env.js.map +1 -0
- package/esm/src/lib/files.d.ts +13 -0
- package/esm/src/lib/files.d.ts.map +1 -0
- package/esm/src/lib/files.js +73 -0
- package/esm/src/lib/files.js.map +1 -0
- package/esm/src/lib/http.d.ts +67 -0
- package/esm/src/lib/http.d.ts.map +1 -0
- package/esm/src/lib/http.js +209 -0
- package/esm/src/lib/http.js.map +1 -0
- package/esm/src/lib/is-plain-object.d.ts +2 -0
- package/esm/src/lib/is-plain-object.d.ts.map +1 -0
- package/esm/src/lib/is-plain-object.js +38 -0
- package/esm/src/lib/is-plain-object.js.map +1 -0
- package/esm/src/lib/logger.d.ts +6 -0
- package/esm/src/lib/logger.d.ts.map +1 -0
- package/esm/src/lib/logger.js +5 -0
- package/esm/src/lib/logger.js.map +1 -0
- package/esm/src/lib/matchers.d.ts +66 -0
- package/esm/src/lib/matchers.d.ts.map +1 -0
- package/esm/src/lib/matchers.js +209 -0
- package/esm/src/lib/matchers.js.map +1 -0
- package/esm/src/lib/primitives.d.ts +11 -0
- package/esm/src/lib/primitives.d.ts.map +1 -0
- package/esm/src/lib/primitives.js +81 -0
- package/esm/src/lib/primitives.js.map +1 -0
- package/esm/src/lib/result.d.ts +31 -0
- package/esm/src/lib/result.d.ts.map +1 -0
- package/esm/src/lib/result.js +31 -0
- package/esm/src/lib/result.js.map +1 -0
- package/esm/src/lib/retries.d.ts +38 -0
- package/esm/src/lib/retries.d.ts.map +1 -0
- package/esm/src/lib/retries.js +150 -0
- package/esm/src/lib/retries.js.map +1 -0
- package/esm/src/lib/schemas.d.ts +19 -0
- package/esm/src/lib/schemas.d.ts.map +1 -0
- package/esm/src/lib/schemas.js +57 -0
- package/esm/src/lib/schemas.js.map +1 -0
- package/esm/src/lib/sdks.d.ts +63 -0
- package/esm/src/lib/sdks.d.ts.map +1 -0
- package/esm/src/lib/sdks.js +258 -0
- package/esm/src/lib/sdks.js.map +1 -0
- package/esm/src/lib/security.d.ts +83 -0
- package/esm/src/lib/security.d.ts.map +1 -0
- package/esm/src/lib/security.js +138 -0
- package/esm/src/lib/security.js.map +1 -0
- package/esm/src/lib/url.d.ts +5 -0
- package/esm/src/lib/url.d.ts.map +1 -0
- package/esm/src/lib/url.js +22 -0
- package/esm/src/lib/url.js.map +1 -0
- package/esm/src/mcp-server/cli/start/command.d.ts +2 -0
- package/esm/src/mcp-server/cli/start/command.d.ts.map +1 -0
- package/esm/src/mcp-server/cli/start/command.js +96 -0
- package/esm/src/mcp-server/cli/start/command.js.map +1 -0
- package/esm/src/mcp-server/cli/start/impl.d.ts +17 -0
- package/esm/src/mcp-server/cli/start/impl.d.ts.map +1 -0
- package/esm/src/mcp-server/cli/start/impl.js +98 -0
- package/esm/src/mcp-server/cli/start/impl.js.map +1 -0
- package/esm/src/mcp-server/cli.d.ts +6 -0
- package/esm/src/mcp-server/cli.d.ts.map +1 -0
- package/esm/src/mcp-server/cli.js +7 -0
- package/esm/src/mcp-server/cli.js.map +1 -0
- package/esm/src/mcp-server/console-logger.d.ts +9 -0
- package/esm/src/mcp-server/console-logger.d.ts.map +1 -0
- package/esm/src/mcp-server/console-logger.js +56 -0
- package/esm/src/mcp-server/console-logger.js.map +1 -0
- package/esm/src/mcp-server/extensions.d.ts +11 -0
- package/esm/src/mcp-server/extensions.d.ts.map +1 -0
- package/esm/src/mcp-server/extensions.js +5 -0
- package/esm/src/mcp-server/extensions.js.map +1 -0
- package/esm/src/mcp-server/mcp-server.d.ts +2 -0
- package/esm/src/mcp-server/mcp-server.d.ts.map +1 -0
- package/esm/src/mcp-server/mcp-server.js +23 -0
- package/esm/src/mcp-server/mcp-server.js.map +1 -0
- package/esm/src/mcp-server/prompts.d.ts +26 -0
- package/esm/src/mcp-server/prompts.d.ts.map +1 -0
- package/esm/src/mcp-server/prompts.js +47 -0
- package/esm/src/mcp-server/prompts.js.map +1 -0
- package/esm/src/mcp-server/resources.d.ts +32 -0
- package/esm/src/mcp-server/resources.d.ts.map +1 -0
- package/esm/src/mcp-server/resources.js +82 -0
- package/esm/src/mcp-server/resources.js.map +1 -0
- package/esm/src/mcp-server/scopes.d.ts +3 -0
- package/esm/src/mcp-server/scopes.d.ts.map +1 -0
- package/esm/src/mcp-server/scopes.js +5 -0
- package/esm/src/mcp-server/scopes.js.map +1 -0
- package/esm/src/mcp-server/server.d.ts +16 -0
- package/esm/src/mcp-server/server.d.ts.map +1 -0
- package/esm/src/mcp-server/server.js +53 -0
- package/esm/src/mcp-server/server.js.map +1 -0
- package/esm/src/mcp-server/shared.d.ts +8 -0
- package/esm/src/mcp-server/shared.d.ts.map +1 -0
- package/esm/src/mcp-server/shared.js +61 -0
- package/esm/src/mcp-server/shared.js.map +1 -0
- package/esm/src/mcp-server/tools/getAnnouncements.d.ts +7 -0
- package/esm/src/mcp-server/tools/getAnnouncements.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/getAnnouncements.js +44 -0
- package/esm/src/mcp-server/tools/getAnnouncements.js.map +1 -0
- package/esm/src/mcp-server/tools/getAnswers.d.ts +7 -0
- package/esm/src/mcp-server/tools/getAnswers.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/getAnswers.js +44 -0
- package/esm/src/mcp-server/tools/getAnswers.js.map +1 -0
- package/esm/src/mcp-server/tools/getArticle.d.ts +7 -0
- package/esm/src/mcp-server/tools/getArticle.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/getArticle.js +47 -0
- package/esm/src/mcp-server/tools/getArticle.js.map +1 -0
- package/esm/src/mcp-server/tools/getPopularArticles.d.ts +7 -0
- package/esm/src/mcp-server/tools/getPopularArticles.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/getPopularArticles.js +44 -0
- package/esm/src/mcp-server/tools/getPopularArticles.js.map +1 -0
- package/esm/src/mcp-server/tools/getPortals.d.ts +7 -0
- package/esm/src/mcp-server/tools/getPortals.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/getPortals.js +42 -0
- package/esm/src/mcp-server/tools/getPortals.js.map +1 -0
- package/esm/src/mcp-server/tools/makeSuggestion.d.ts +7 -0
- package/esm/src/mcp-server/tools/makeSuggestion.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/makeSuggestion.js +44 -0
- package/esm/src/mcp-server/tools/makeSuggestion.js.map +1 -0
- package/esm/src/mcp-server/tools/queryAnswers.d.ts +7 -0
- package/esm/src/mcp-server/tools/queryAnswers.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/queryAnswers.js +44 -0
- package/esm/src/mcp-server/tools/queryAnswers.js.map +1 -0
- package/esm/src/mcp-server/tools/queryRetrieve.d.ts +7 -0
- package/esm/src/mcp-server/tools/queryRetrieve.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/queryRetrieve.js +46 -0
- package/esm/src/mcp-server/tools/queryRetrieve.js.map +1 -0
- package/esm/src/mcp-server/tools/querySearch.d.ts +7 -0
- package/esm/src/mcp-server/tools/querySearch.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/querySearch.js +35 -0
- package/esm/src/mcp-server/tools/querySearch.js.map +1 -0
- package/esm/src/mcp-server/tools/retrieveChunks.d.ts +7 -0
- package/esm/src/mcp-server/tools/retrieveChunks.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/retrieveChunks.js +46 -0
- package/esm/src/mcp-server/tools/retrieveChunks.js.map +1 -0
- package/esm/src/mcp-server/tools/searchAiSearch.d.ts +7 -0
- package/esm/src/mcp-server/tools/searchAiSearch.d.ts.map +1 -0
- package/esm/src/mcp-server/tools/searchAiSearch.js +35 -0
- package/esm/src/mcp-server/tools/searchAiSearch.js.map +1 -0
- package/esm/src/mcp-server/tools.d.ts +37 -0
- package/esm/src/mcp-server/tools.d.ts.map +1 -0
- package/esm/src/mcp-server/tools.js +78 -0
- package/esm/src/mcp-server/tools.js.map +1 -0
- package/esm/src/models/acceptlanguage.d.ts +7 -0
- package/esm/src/models/acceptlanguage.d.ts.map +1 -0
- package/esm/src/models/acceptlanguage.js +25 -0
- package/esm/src/models/acceptlanguage.js.map +1 -0
- package/esm/src/models/accessibleportal.d.ts +12 -0
- package/esm/src/models/accessibleportal.d.ts.map +1 -0
- package/esm/src/models/accessibleportal.js +14 -0
- package/esm/src/models/accessibleportal.js.map +1 -0
- package/esm/src/models/additionalsnippets.d.ts +17 -0
- package/esm/src/models/additionalsnippets.d.ts.map +1 -0
- package/esm/src/models/additionalsnippets.js +23 -0
- package/esm/src/models/additionalsnippets.js.map +1 -0
- package/esm/src/models/aisearchop.d.ts +23 -0
- package/esm/src/models/aisearchop.d.ts.map +1 -0
- package/esm/src/models/aisearchop.js +24 -0
- package/esm/src/models/aisearchop.js.map +1 -0
- package/esm/src/models/allaccessibleportals.d.ts +12 -0
- package/esm/src/models/allaccessibleportals.d.ts.map +1 -0
- package/esm/src/models/allaccessibleportals.js +11 -0
- package/esm/src/models/allaccessibleportals.js.map +1 -0
- package/esm/src/models/answersrequest.d.ts +28 -0
- package/esm/src/models/answersrequest.d.ts.map +1 -0
- package/esm/src/models/answersrequest.js +28 -0
- package/esm/src/models/answersrequest.js.map +1 -0
- package/esm/src/models/answersresponse.d.ts +34 -0
- package/esm/src/models/answersresponse.d.ts.map +1 -0
- package/esm/src/models/answersresponse.js +38 -0
- package/esm/src/models/answersresponse.js.map +1 -0
- package/esm/src/models/article.d.ts +59 -0
- package/esm/src/models/article.d.ts.map +1 -0
- package/esm/src/models/article.js +59 -0
- package/esm/src/models/article.js.map +1 -0
- package/esm/src/models/articleadditionalattributes.d.ts +4 -0
- package/esm/src/models/articleadditionalattributes.d.ts.map +1 -0
- package/esm/src/models/articleadditionalattributes.js +22 -0
- package/esm/src/models/articleadditionalattributes.js.map +1 -0
- package/esm/src/models/articleattachment.d.ts +16 -0
- package/esm/src/models/articleattachment.d.ts.map +1 -0
- package/esm/src/models/articleattachment.js +20 -0
- package/esm/src/models/articleattachment.js.map +1 -0
- package/esm/src/models/articleresult.d.ts +43 -0
- package/esm/src/models/articleresult.d.ts.map +1 -0
- package/esm/src/models/articleresult.js +42 -0
- package/esm/src/models/articleresult.js.map +1 -0
- package/esm/src/models/articleresultadditionalattributes.d.ts +4 -0
- package/esm/src/models/articleresultadditionalattributes.d.ts.map +1 -0
- package/esm/src/models/articleresultadditionalattributes.js +21 -0
- package/esm/src/models/articleresultadditionalattributes.js.map +1 -0
- package/esm/src/models/articleresults.d.ts +12 -0
- package/esm/src/models/articleresults.d.ts.map +1 -0
- package/esm/src/models/articleresults.js +11 -0
- package/esm/src/models/articleresults.js.map +1 -0
- package/esm/src/models/articlesearchresult.d.ts +57 -0
- package/esm/src/models/articlesearchresult.d.ts.map +1 -0
- package/esm/src/models/articlesearchresult.js +62 -0
- package/esm/src/models/articlesearchresult.js.map +1 -0
- package/esm/src/models/articletype.d.ts +17 -0
- package/esm/src/models/articletype.d.ts.map +1 -0
- package/esm/src/models/articletype.js +24 -0
- package/esm/src/models/articletype.js.map +1 -0
- package/esm/src/models/attachmentforcreatesuggestion.d.ts +9 -0
- package/esm/src/models/attachmentforcreatesuggestion.d.ts.map +1 -0
- package/esm/src/models/attachmentforcreatesuggestion.js +8 -0
- package/esm/src/models/attachmentforcreatesuggestion.js.map +1 -0
- package/esm/src/models/bookmarkstatus.d.ts +12 -0
- package/esm/src/models/bookmarkstatus.d.ts.map +1 -0
- package/esm/src/models/bookmarkstatus.js +11 -0
- package/esm/src/models/bookmarkstatus.js.map +1 -0
- package/esm/src/models/complianceforarticle.d.ts +24 -0
- package/esm/src/models/complianceforarticle.d.ts.map +1 -0
- package/esm/src/models/complianceforarticle.js +15 -0
- package/esm/src/models/complianceforarticle.js.map +1 -0
- package/esm/src/models/createdby.d.ts +10 -0
- package/esm/src/models/createdby.d.ts.map +1 -0
- package/esm/src/models/createdby.js +12 -0
- package/esm/src/models/createdby.js.map +1 -0
- package/esm/src/models/createsuggestion.d.ts +43 -0
- package/esm/src/models/createsuggestion.d.ts.map +1 -0
- package/esm/src/models/createsuggestion.js +47 -0
- package/esm/src/models/createsuggestion.js.map +1 -0
- package/esm/src/models/customattribute.d.ts +13 -0
- package/esm/src/models/customattribute.d.ts.map +1 -0
- package/esm/src/models/customattribute.js +19 -0
- package/esm/src/models/customattribute.js.map +1 -0
- package/esm/src/models/department.d.ts +7 -0
- package/esm/src/models/department.d.ts.map +1 -0
- package/esm/src/models/department.js +9 -0
- package/esm/src/models/department.js.map +1 -0
- package/esm/src/models/edition.d.ts +22 -0
- package/esm/src/models/edition.d.ts.map +1 -0
- package/esm/src/models/edition.js +18 -0
- package/esm/src/models/edition.js.map +1 -0
- package/esm/src/models/errors/apierror.d.ts +13 -0
- package/esm/src/models/errors/apierror.d.ts.map +1 -0
- package/esm/src/models/errors/apierror.js +12 -0
- package/esm/src/models/errors/apierror.js.map +1 -0
- package/esm/src/models/errors/httpclienterrors.d.ts +44 -0
- package/esm/src/models/errors/httpclienterrors.d.ts.map +1 -0
- package/esm/src/models/errors/httpclienterrors.js +56 -0
- package/esm/src/models/errors/httpclienterrors.js.map +1 -0
- package/esm/src/models/errors/sdkvalidationerror.d.ts +20 -0
- package/esm/src/models/errors/sdkvalidationerror.d.ts.map +1 -0
- package/esm/src/models/errors/sdkvalidationerror.js +85 -0
- package/esm/src/models/errors/sdkvalidationerror.js.map +1 -0
- package/esm/src/models/folderbreadcrumb.d.ts +10 -0
- package/esm/src/models/folderbreadcrumb.d.ts.map +1 -0
- package/esm/src/models/folderbreadcrumb.js +9 -0
- package/esm/src/models/folderbreadcrumb.js.map +1 -0
- package/esm/src/models/foldersummary.d.ts +12 -0
- package/esm/src/models/foldersummary.d.ts.map +1 -0
- package/esm/src/models/foldersummary.js +11 -0
- package/esm/src/models/foldersummary.js.map +1 -0
- package/esm/src/models/getannouncementarticlesop.d.ts +25 -0
- package/esm/src/models/getannouncementarticlesop.d.ts.map +1 -0
- package/esm/src/models/getannouncementarticlesop.js +26 -0
- package/esm/src/models/getannouncementarticlesop.js.map +1 -0
- package/esm/src/models/getarticlebyidop.d.ts +57 -0
- package/esm/src/models/getarticlebyidop.d.ts.map +1 -0
- package/esm/src/models/getarticlebyidop.js +130 -0
- package/esm/src/models/getarticlebyidop.js.map +1 -0
- package/esm/src/models/getmyportalsop.d.ts +28 -0
- package/esm/src/models/getmyportalsop.d.ts.map +1 -0
- package/esm/src/models/getmyportalsop.js +29 -0
- package/esm/src/models/getmyportalsop.js.map +1 -0
- package/esm/src/models/getpopulararticlesop.d.ts +24 -0
- package/esm/src/models/getpopulararticlesop.d.ts.map +1 -0
- package/esm/src/models/getpopulararticlesop.js +25 -0
- package/esm/src/models/getpopulararticlesop.js.map +1 -0
- package/esm/src/models/l10nstring.d.ts +7 -0
- package/esm/src/models/l10nstring.d.ts.map +1 -0
- package/esm/src/models/l10nstring.js +9 -0
- package/esm/src/models/l10nstring.js.map +1 -0
- package/esm/src/models/languagecode.d.ts +7 -0
- package/esm/src/models/languagecode.d.ts.map +1 -0
- package/esm/src/models/languagecode.js +40 -0
- package/esm/src/models/languagecode.js.map +1 -0
- package/esm/src/models/languagecodeparameter.d.ts +7 -0
- package/esm/src/models/languagecodeparameter.d.ts.map +1 -0
- package/esm/src/models/languagecodeparameter.js +41 -0
- package/esm/src/models/languagecodeparameter.js.map +1 -0
- package/esm/src/models/languagequeryparameter.d.ts +7 -0
- package/esm/src/models/languagequeryparameter.d.ts.map +1 -0
- package/esm/src/models/languagequeryparameter.js +41 -0
- package/esm/src/models/languagequeryparameter.js.map +1 -0
- package/esm/src/models/link.d.ts +10 -0
- package/esm/src/models/link.d.ts.map +1 -0
- package/esm/src/models/link.js +9 -0
- package/esm/src/models/link.js.map +1 -0
- package/esm/src/models/makesuggestionop.d.ts +18 -0
- package/esm/src/models/makesuggestionop.d.ts.map +1 -0
- package/esm/src/models/makesuggestionop.js +19 -0
- package/esm/src/models/makesuggestionop.js.map +1 -0
- package/esm/src/models/mandatorylanguagequeryparameter.d.ts +7 -0
- package/esm/src/models/mandatorylanguagequeryparameter.d.ts.map +1 -0
- package/esm/src/models/mandatorylanguagequeryparameter.js +40 -0
- package/esm/src/models/mandatorylanguagequeryparameter.js.map +1 -0
- package/esm/src/models/milestone.d.ts +10 -0
- package/esm/src/models/milestone.d.ts.map +1 -0
- package/esm/src/models/milestone.js +9 -0
- package/esm/src/models/milestone.js.map +1 -0
- package/esm/src/models/milestonename.d.ts +10 -0
- package/esm/src/models/milestonename.d.ts.map +1 -0
- package/esm/src/models/milestonename.js +9 -0
- package/esm/src/models/milestonename.js.map +1 -0
- package/esm/src/models/modifiedby.d.ts +10 -0
- package/esm/src/models/modifiedby.d.ts.map +1 -0
- package/esm/src/models/modifiedby.js +12 -0
- package/esm/src/models/modifiedby.js.map +1 -0
- package/esm/src/models/order.d.ts +4 -0
- package/esm/src/models/order.d.ts.map +1 -0
- package/esm/src/models/order.js +9 -0
- package/esm/src/models/order.js.map +1 -0
- package/esm/src/models/ownedby.d.ts +10 -0
- package/esm/src/models/ownedby.d.ts.map +1 -0
- package/esm/src/models/ownedby.js +13 -0
- package/esm/src/models/ownedby.js.map +1 -0
- package/esm/src/models/paginationinfo.d.ts +10 -0
- package/esm/src/models/paginationinfo.d.ts.map +1 -0
- package/esm/src/models/paginationinfo.js +12 -0
- package/esm/src/models/paginationinfo.js.map +1 -0
- package/esm/src/models/personalization.d.ts +25 -0
- package/esm/src/models/personalization.d.ts.map +1 -0
- package/esm/src/models/personalization.js +22 -0
- package/esm/src/models/personalization.js.map +1 -0
- package/esm/src/models/postportalidanswersop.d.ts +24 -0
- package/esm/src/models/postportalidanswersop.d.ts.map +1 -0
- package/esm/src/models/postportalidanswersop.js +25 -0
- package/esm/src/models/postportalidanswersop.js.map +1 -0
- package/esm/src/models/postportalidretrieveop.d.ts +26 -0
- package/esm/src/models/postportalidretrieveop.d.ts.map +1 -0
- package/esm/src/models/postportalidretrieveop.js +27 -0
- package/esm/src/models/postportalidretrieveop.js.map +1 -0
- package/esm/src/models/publishview.d.ts +13 -0
- package/esm/src/models/publishview.d.ts.map +1 -0
- package/esm/src/models/publishview.js +15 -0
- package/esm/src/models/publishview.js.map +1 -0
- package/esm/src/models/referenceresponse.d.ts +25 -0
- package/esm/src/models/referenceresponse.d.ts.map +1 -0
- package/esm/src/models/referenceresponse.js +30 -0
- package/esm/src/models/referenceresponse.js.map +1 -0
- package/esm/src/models/retrieverequest.d.ts +18 -0
- package/esm/src/models/retrieverequest.d.ts.map +1 -0
- package/esm/src/models/retrieverequest.js +21 -0
- package/esm/src/models/retrieverequest.js.map +1 -0
- package/esm/src/models/retrieveresponse.d.ts +37 -0
- package/esm/src/models/retrieveresponse.d.ts.map +1 -0
- package/esm/src/models/retrieveresponse.js +37 -0
- package/esm/src/models/retrieveresponse.js.map +1 -0
- package/esm/src/models/schemaslink.d.ts +8 -0
- package/esm/src/models/schemaslink.d.ts.map +1 -0
- package/esm/src/models/schemaslink.js +10 -0
- package/esm/src/models/schemaslink.js.map +1 -0
- package/esm/src/models/searchresponse.d.ts +14 -0
- package/esm/src/models/searchresponse.d.ts.map +1 -0
- package/esm/src/models/searchresponse.js +12 -0
- package/esm/src/models/searchresponse.js.map +1 -0
- package/esm/src/models/searchresult.d.ts +27 -0
- package/esm/src/models/searchresult.d.ts.map +1 -0
- package/esm/src/models/searchresult.js +32 -0
- package/esm/src/models/searchresult.js.map +1 -0
- package/esm/src/models/security.d.ts +6 -0
- package/esm/src/models/security.d.ts.map +1 -0
- package/esm/src/models/security.js +9 -0
- package/esm/src/models/security.js.map +1 -0
- package/esm/src/models/shorturl.d.ts +9 -0
- package/esm/src/models/shorturl.d.ts.map +1 -0
- package/esm/src/models/shorturl.js +12 -0
- package/esm/src/models/shorturl.js.map +1 -0
- package/esm/src/models/sortidnamedepartment.d.ts +4 -0
- package/esm/src/models/sortidnamedepartment.d.ts.map +1 -0
- package/esm/src/models/sortidnamedepartment.js +10 -0
- package/esm/src/models/sortidnamedepartment.js.map +1 -0
- package/esm/src/models/stage.d.ts +11 -0
- package/esm/src/models/stage.d.ts.map +1 -0
- package/esm/src/models/stage.js +11 -0
- package/esm/src/models/stage.js.map +1 -0
- package/esm/src/models/structuredauthoringfields.d.ts +10 -0
- package/esm/src/models/structuredauthoringfields.d.ts.map +1 -0
- package/esm/src/models/structuredauthoringfields.js +12 -0
- package/esm/src/models/structuredauthoringfields.js.map +1 -0
- package/esm/src/models/tag.d.ts +7 -0
- package/esm/src/models/tag.d.ts.map +1 -0
- package/esm/src/models/tag.js +9 -0
- package/esm/src/models/tag.js.map +1 -0
- package/esm/src/models/tagcategory.d.ts +14 -0
- package/esm/src/models/tagcategory.d.ts.map +1 -0
- package/esm/src/models/tagcategory.js +13 -0
- package/esm/src/models/tagcategory.js.map +1 -0
- package/esm/src/models/taggroup.d.ts +7 -0
- package/esm/src/models/taggroup.d.ts.map +1 -0
- package/esm/src/models/taggroup.js +10 -0
- package/esm/src/models/taggroup.js.map +1 -0
- package/esm/src/models/taggroups.d.ts +7 -0
- package/esm/src/models/taggroups.d.ts.map +1 -0
- package/esm/src/models/taggroups.js +9 -0
- package/esm/src/models/taggroups.js.map +1 -0
- package/esm/src/models/tags.d.ts +7 -0
- package/esm/src/models/tags.d.ts.map +1 -0
- package/esm/src/models/tags.js +9 -0
- package/esm/src/models/tags.js.map +1 -0
- package/esm/src/models/topicbreadcrumb.d.ts +10 -0
- package/esm/src/models/topicbreadcrumb.d.ts.map +1 -0
- package/esm/src/models/topicbreadcrumb.js +9 -0
- package/esm/src/models/topicbreadcrumb.js.map +1 -0
- package/esm/src/models/topicsummary.d.ts +10 -0
- package/esm/src/models/topicsummary.d.ts.map +1 -0
- package/esm/src/models/topicsummary.js +9 -0
- package/esm/src/models/topicsummary.js.map +1 -0
- package/esm/src/models/workflow.d.ts +10 -0
- package/esm/src/models/workflow.d.ts.map +1 -0
- package/esm/src/models/workflow.js +10 -0
- package/esm/src/models/workflow.js.map +1 -0
- package/esm/src/models/workflowmilestone.d.ts +4 -0
- package/esm/src/models/workflowmilestone.d.ts.map +1 -0
- package/esm/src/models/workflowmilestone.js +10 -0
- package/esm/src/models/workflowmilestone.js.map +1 -0
- package/esm/src/models/wserrorcommon.d.ts +17 -0
- package/esm/src/models/wserrorcommon.d.ts.map +1 -0
- package/esm/src/models/wserrorcommon.js +16 -0
- package/esm/src/models/wserrorcommon.js.map +1 -0
- package/esm/src/types/async.d.ts +23 -0
- package/esm/src/types/async.d.ts.map +1 -0
- package/esm/src/types/async.js +28 -0
- package/esm/src/types/async.js.map +1 -0
- package/esm/src/types/blobs.d.ts +2 -0
- package/esm/src/types/blobs.d.ts.map +1 -0
- package/esm/src/types/blobs.js +20 -0
- package/esm/src/types/blobs.js.map +1 -0
- package/esm/src/types/enums.d.ts +12 -0
- package/esm/src/types/enums.d.ts.map +1 -0
- package/esm/src/types/enums.js +7 -0
- package/esm/src/types/enums.js.map +1 -0
- package/esm/src/types/fp.d.ts +31 -0
- package/esm/src/types/fp.d.ts.map +1 -0
- package/esm/src/types/fp.js +31 -0
- package/esm/src/types/fp.js.map +1 -0
- package/esm/src/types/rfcdate.d.ts +21 -0
- package/esm/src/types/rfcdate.d.ts.map +1 -0
- package/esm/src/types/rfcdate.js +43 -0
- package/esm/src/types/rfcdate.js.map +1 -0
- package/esm/src/types/streams.d.ts +2 -0
- package/esm/src/types/streams.d.ts.map +1 -0
- package/esm/src/types/streams.js +15 -0
- package/esm/src/types/streams.js.map +1 -0
- package/esm/worker-configuration.d.ts +4 -0
- package/esm/worker-configuration.d.ts.map +1 -0
- package/esm/worker-configuration.js +5 -0
- package/esm/worker-configuration.js.map +1 -0
- package/manifest.json +96 -0
- package/package.json +41 -0
- package/scripts/login.js +93 -0
- package/scripts/logout.js +53 -0
- package/src/cloudflare-worker/cloudflare-worker.ts +98 -0
- package/src/cloudflare-worker/landing-page.ts +337 -0
- package/src/core.ts +13 -0
- package/src/funcs/getAnnouncements.ts +202 -0
- package/src/funcs/getArticle.ts +208 -0
- package/src/funcs/getPopularArticles.ts +198 -0
- package/src/funcs/getPortals.ts +190 -0
- package/src/funcs/makeSuggestion.ts +191 -0
- package/src/funcs/queryAnswers.ts +191 -0
- package/src/funcs/queryRetrieve.ts +197 -0
- package/src/funcs/querySearch.ts +181 -0
- package/src/hooks/auth-hook.ts +1752 -0
- package/src/hooks/auth-pages/config-page.js +531 -0
- package/src/hooks/hooks.ts +132 -0
- package/src/hooks/portal-cache-hook.ts +505 -0
- package/src/hooks/portal-lookup-hook.ts +429 -0
- package/src/hooks/registration.ts +43 -0
- package/src/hooks/server-routing-hook.ts +58 -0
- package/src/hooks/types.ts +107 -0
- package/src/lib/base64.ts +37 -0
- package/src/lib/config.ts +89 -0
- package/src/lib/dlv.ts +53 -0
- package/src/lib/encodings.ts +483 -0
- package/src/lib/env.ts +41 -0
- package/src/lib/files.ts +82 -0
- package/src/lib/http.ts +323 -0
- package/src/lib/is-plain-object.ts +43 -0
- package/src/lib/logger.ts +9 -0
- package/src/lib/matchers.ts +350 -0
- package/src/lib/primitives.ts +113 -0
- package/src/lib/result.ts +50 -0
- package/src/lib/retries.ts +218 -0
- package/src/lib/schemas.ts +91 -0
- package/src/lib/sdks.ts +409 -0
- package/src/lib/security.ts +260 -0
- package/src/lib/url.ts +33 -0
- package/src/mcp-server/cli/start/command.ts +100 -0
- package/src/mcp-server/cli/start/impl.ts +133 -0
- package/src/mcp-server/cli.ts +13 -0
- package/src/mcp-server/console-logger.ts +76 -0
- package/src/mcp-server/extensions.ts +17 -0
- package/src/mcp-server/mcp-server.ts +26 -0
- package/src/mcp-server/prompts.ts +121 -0
- package/src/mcp-server/resources.ts +176 -0
- package/src/mcp-server/scopes.ts +7 -0
- package/src/mcp-server/server.ts +91 -0
- package/src/mcp-server/shared.ts +78 -0
- package/src/mcp-server/tools/getAnnouncements.ts +53 -0
- package/src/mcp-server/tools/getArticle.ts +56 -0
- package/src/mcp-server/tools/getPopularArticles.ts +53 -0
- package/src/mcp-server/tools/getPortals.ts +51 -0
- package/src/mcp-server/tools/makeSuggestion.ts +53 -0
- package/src/mcp-server/tools/queryAnswers.ts +53 -0
- package/src/mcp-server/tools/queryRetrieve.ts +55 -0
- package/src/mcp-server/tools/querySearch.ts +44 -0
- package/src/mcp-server/tools.ts +156 -0
- package/src/models/acceptlanguage.ts +30 -0
- package/src/models/accessibleportal.ts +27 -0
- package/src/models/additionalsnippets.ts +43 -0
- package/src/models/aisearchop.ts +62 -0
- package/src/models/allaccessibleportals.ts +27 -0
- package/src/models/answersrequest.ts +67 -0
- package/src/models/answersresponse.ts +88 -0
- package/src/models/article.ts +120 -0
- package/src/models/articleadditionalattributes.ts +27 -0
- package/src/models/articleattachment.ts +38 -0
- package/src/models/articleresult.ts +91 -0
- package/src/models/articleresults.ts +24 -0
- package/src/models/articlesearchresult.ts +139 -0
- package/src/models/articletype.ts +42 -0
- package/src/models/attachmentforcreatesuggestion.ts +18 -0
- package/src/models/bookmarkstatus.ts +28 -0
- package/src/models/complianceforarticle.ts +48 -0
- package/src/models/createdby.ts +22 -0
- package/src/models/createsuggestion.ts +108 -0
- package/src/models/customattribute.ts +33 -0
- package/src/models/department.ts +16 -0
- package/src/models/edition.ts +40 -0
- package/src/models/errors/apierror.ts +21 -0
- package/src/models/errors/httpclienterrors.ts +62 -0
- package/src/models/errors/sdkvalidationerror.ts +97 -0
- package/src/models/folderbreadcrumb.ts +21 -0
- package/src/models/foldersummary.ts +27 -0
- package/src/models/getannouncementarticlesop.ts +68 -0
- package/src/models/getarticlebyidop.ts +182 -0
- package/src/models/getmyportalsop.ts +78 -0
- package/src/models/getpopulararticlesop.ts +66 -0
- package/src/models/l10nstring.ts +19 -0
- package/src/models/languagecode.ts +43 -0
- package/src/models/languagecodeparameter.ts +48 -0
- package/src/models/languagequeryparameter.ts +48 -0
- package/src/models/link.ts +17 -0
- package/src/models/makesuggestionop.ts +47 -0
- package/src/models/mandatorylanguagequeryparameter.ts +47 -0
- package/src/models/milestone.ts +16 -0
- package/src/models/milestonename.ts +22 -0
- package/src/models/modifiedby.ts +25 -0
- package/src/models/order.ts +12 -0
- package/src/models/ownedby.ts +22 -0
- package/src/models/paginationinfo.ts +24 -0
- package/src/models/personalization.ts +55 -0
- package/src/models/postportalidanswersop.ts +62 -0
- package/src/models/postportalidretrieveop.ts +68 -0
- package/src/models/publishview.ts +35 -0
- package/src/models/referenceresponse.ts +60 -0
- package/src/models/retrieverequest.ts +47 -0
- package/src/models/retrieveresponse.ts +92 -0
- package/src/models/schemaslink.ts +21 -0
- package/src/models/searchresponse.ts +34 -0
- package/src/models/searchresult.ts +64 -0
- package/src/models/security.ts +14 -0
- package/src/models/shorturl.ts +20 -0
- package/src/models/sortidnamedepartment.ts +15 -0
- package/src/models/stage.ts +20 -0
- package/src/models/structuredauthoringfields.ts +24 -0
- package/src/models/tagcategory.ts +28 -0
- package/src/models/taggroup.ts +13 -0
- package/src/models/taggroups.ts +13 -0
- package/src/models/tags.ts +15 -0
- package/src/models/topicbreadcrumb.ts +21 -0
- package/src/models/topicsummary.ts +24 -0
- package/src/models/workflow.ts +16 -0
- package/src/models/workflowmilestone.ts +13 -0
- package/src/models/wserrorcommon.ts +34 -0
- package/src/types/async.ts +68 -0
- package/src/types/blobs.ts +23 -0
- package/src/types/enums.ts +16 -0
- package/src/types/fp.ts +50 -0
- package/src/types/rfcdate.ts +54 -0
- package/src/types/streams.ts +21 -0
- package/tsconfig.json +36 -0
- package/worker-configuration.d.ts +8489 -0
- package/worker-configuration.ts +11 -0
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
const FIELDS = ['egainUrl', 'authUrl', 'accessTokenUrl', 'clientId', 'redirectUrl', 'clientSecret', 'scopePrefix'];
|
|
2
|
+
const FIELD_LABELS = {
|
|
3
|
+
egainUrl: 'eGain URL', authUrl: 'Auth URL', accessTokenUrl: 'Token URL',
|
|
4
|
+
clientId: 'Client ID', redirectUrl: 'Redirect URL', clientSecret: 'Client Secret',
|
|
5
|
+
scopePrefix: 'Scope Prefix'
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
let savedConfigData = null; // Store config in memory only
|
|
9
|
+
let authenticationStarted = false; // Track if user started authentication process
|
|
10
|
+
let lastSubmittedConfig = null; // Track last submitted config to prevent duplicate submissions
|
|
11
|
+
let isSubmitting = false; // Track if form submission is in progress
|
|
12
|
+
|
|
13
|
+
// Fetch saved config from backend (secure file storage)
|
|
14
|
+
async function loadSavedConfig() {
|
|
15
|
+
try {
|
|
16
|
+
const response = await fetch('/get-config');
|
|
17
|
+
if (response.ok) {
|
|
18
|
+
const data = await response.json();
|
|
19
|
+
if (data.config && data.config.egainUrl && data.config.clientId) {
|
|
20
|
+
// Only set if we have valid required fields
|
|
21
|
+
savedConfigData = data.config;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
} catch (error) {
|
|
26
|
+
console.error('Could not load saved config:', error);
|
|
27
|
+
}
|
|
28
|
+
savedConfigData = null;
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function hasSavedConfig() {
|
|
33
|
+
return savedConfigData &&
|
|
34
|
+
savedConfigData.egainUrl &&
|
|
35
|
+
savedConfigData.clientId &&
|
|
36
|
+
savedConfigData.authUrl &&
|
|
37
|
+
savedConfigData.accessTokenUrl;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function displaySavedConfig() {
|
|
41
|
+
const listEl = document.getElementById('savedConfigList');
|
|
42
|
+
listEl.innerHTML = '';
|
|
43
|
+
if (!savedConfigData) return;
|
|
44
|
+
|
|
45
|
+
FIELDS.forEach(field => {
|
|
46
|
+
const value = savedConfigData[field];
|
|
47
|
+
if (value) {
|
|
48
|
+
const item = document.createElement('div');
|
|
49
|
+
item.className = 'config-item';
|
|
50
|
+
const label = document.createElement('span');
|
|
51
|
+
label.className = 'config-label';
|
|
52
|
+
label.textContent = FIELD_LABELS[field];
|
|
53
|
+
const valueSpan = document.createElement('span');
|
|
54
|
+
valueSpan.className = 'config-value';
|
|
55
|
+
if (field === 'clientSecret') {
|
|
56
|
+
valueSpan.classList.add('masked');
|
|
57
|
+
valueSpan.textContent = '••••••••';
|
|
58
|
+
} else if (field === 'clientId') {
|
|
59
|
+
valueSpan.textContent = value.substring(0, 8) + '...';
|
|
60
|
+
} else {
|
|
61
|
+
valueSpan.textContent = value.length > 40 ? value.substring(0, 40) + '...' : value;
|
|
62
|
+
}
|
|
63
|
+
item.appendChild(label);
|
|
64
|
+
item.appendChild(valueSpan);
|
|
65
|
+
listEl.appendChild(item);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function showQuickSignin() {
|
|
71
|
+
document.getElementById('quickSigninView').style.display = 'block';
|
|
72
|
+
document.getElementById('formView').style.display = 'none';
|
|
73
|
+
displaySavedConfig();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function showForm() {
|
|
77
|
+
document.getElementById('quickSigninView').style.display = 'none';
|
|
78
|
+
document.getElementById('formView').style.display = 'block';
|
|
79
|
+
loadFormValues();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function loadFormValues() {
|
|
83
|
+
if (!savedConfigData) return;
|
|
84
|
+
|
|
85
|
+
// Load all field values
|
|
86
|
+
FIELDS.forEach(field => {
|
|
87
|
+
const value = savedConfigData[field];
|
|
88
|
+
if (value) document.getElementById(field).value = value;
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Show advanced settings if clientSecret or scopePrefix exist
|
|
92
|
+
if (savedConfigData.clientSecret || savedConfigData.scopePrefix) {
|
|
93
|
+
toggleAdvancedSettings();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function clearConfigAndShowForm() {
|
|
98
|
+
showModal(
|
|
99
|
+
'Clear All Configuration?',
|
|
100
|
+
'This will delete all saved OAuth settings from your home directory. You will need to re-enter them next time.',
|
|
101
|
+
async (confirmed) => {
|
|
102
|
+
if (confirmed) {
|
|
103
|
+
try {
|
|
104
|
+
const response = await fetch('/clear-config', { method: 'POST' });
|
|
105
|
+
if (response.ok) {
|
|
106
|
+
savedConfigData = null;
|
|
107
|
+
FIELDS.forEach(field => {
|
|
108
|
+
document.getElementById(field).value = '';
|
|
109
|
+
});
|
|
110
|
+
showStatus('Configuration cleared successfully', 'success');
|
|
111
|
+
showForm();
|
|
112
|
+
} else {
|
|
113
|
+
showStatus('Failed to clear configuration', 'error');
|
|
114
|
+
}
|
|
115
|
+
} catch (error) {
|
|
116
|
+
showStatus('Error clearing configuration: ' + error.message, 'error');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
'Clear All'
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function cancelForm() {
|
|
125
|
+
if (hasSavedConfig()) {
|
|
126
|
+
showQuickSignin();
|
|
127
|
+
} else {
|
|
128
|
+
showModal(
|
|
129
|
+
'Cancel Authentication?',
|
|
130
|
+
"You haven't saved any configuration yet. This will cancel the authentication process.",
|
|
131
|
+
async (confirmed) => {
|
|
132
|
+
if (confirmed) {
|
|
133
|
+
// Notify server that user cancelled
|
|
134
|
+
try {
|
|
135
|
+
await fetch('/cancel', { method: 'POST' });
|
|
136
|
+
} catch (error) {
|
|
137
|
+
console.error('Could not notify server of cancellation:', error);
|
|
138
|
+
}
|
|
139
|
+
window.close();
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
'Cancel'
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async function signInWithSavedConfig() {
|
|
148
|
+
authenticationStarted = true; // Mark that auth has started
|
|
149
|
+
|
|
150
|
+
// Show loading overlay
|
|
151
|
+
showLoadingOverlay('Redirecting to login...');
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
const response = await fetch('/get-oauth-url', { method: 'POST' });
|
|
155
|
+
const result = await response.json();
|
|
156
|
+
|
|
157
|
+
if (response.ok && result.oauthUrl) {
|
|
158
|
+
console.log('🔗 OAuth URL:', result.oauthUrl);
|
|
159
|
+
// Redirect after a brief delay to show loading state
|
|
160
|
+
setTimeout(() => {
|
|
161
|
+
window.location.href = result.oauthUrl;
|
|
162
|
+
}, 500);
|
|
163
|
+
} else {
|
|
164
|
+
hideLoadingOverlay();
|
|
165
|
+
showStatus('❌ ' + (result.error || 'Failed to get OAuth URL'), 'error');
|
|
166
|
+
authenticationStarted = false; // Reset on error
|
|
167
|
+
}
|
|
168
|
+
} catch (error) {
|
|
169
|
+
hideLoadingOverlay();
|
|
170
|
+
showStatus('❌ Error: ' + error.message, 'error');
|
|
171
|
+
authenticationStarted = false; // Reset on error
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function showStatus(message, type) {
|
|
176
|
+
const statusEl = document.getElementById('status');
|
|
177
|
+
statusEl.textContent = message;
|
|
178
|
+
statusEl.className = 'status ' + type;
|
|
179
|
+
statusEl.style.display = 'block';
|
|
180
|
+
// Auto-hide info and success messages after a delay
|
|
181
|
+
if (type === 'info') {
|
|
182
|
+
setTimeout(() => {
|
|
183
|
+
// Only hide if it's still an info message (not changed to success/error)
|
|
184
|
+
if (statusEl.className === 'status info') {
|
|
185
|
+
statusEl.style.display = 'none';
|
|
186
|
+
}
|
|
187
|
+
}, 3000);
|
|
188
|
+
} else if (type === 'success') {
|
|
189
|
+
setTimeout(() => {
|
|
190
|
+
// Only hide if it's still a success message (not changed to error)
|
|
191
|
+
if (statusEl.className === 'status success') {
|
|
192
|
+
statusEl.style.display = 'none';
|
|
193
|
+
}
|
|
194
|
+
}, 4000);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function configValuesEqual(config1, config2) {
|
|
199
|
+
// Compare all fields that matter
|
|
200
|
+
const fieldsToCompare = ['egainUrl', 'authUrl', 'accessTokenUrl', 'clientId', 'redirectUrl', 'clientSecret', 'scopePrefix'];
|
|
201
|
+
for (const field of fieldsToCompare) {
|
|
202
|
+
const val1 = (config1[field] || '').trim();
|
|
203
|
+
const val2 = (config2[field] || '').trim();
|
|
204
|
+
if (val1 !== val2) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function showLoadingOverlay(message) {
|
|
212
|
+
// Show overlay for form view
|
|
213
|
+
const overlay = document.getElementById('loadingOverlay');
|
|
214
|
+
const loadingMessage = document.getElementById('loadingMessage');
|
|
215
|
+
if (overlay) {
|
|
216
|
+
overlay.classList.add('active');
|
|
217
|
+
if (loadingMessage) {
|
|
218
|
+
loadingMessage.textContent = message || 'Saving configuration...';
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Show overlay for quick signin view
|
|
223
|
+
const overlayQuickSignin = document.getElementById('loadingOverlayQuickSignin');
|
|
224
|
+
const loadingMessageQuickSignin = document.getElementById('loadingMessageQuickSignin');
|
|
225
|
+
if (overlayQuickSignin) {
|
|
226
|
+
overlayQuickSignin.classList.add('active');
|
|
227
|
+
if (loadingMessageQuickSignin) {
|
|
228
|
+
loadingMessageQuickSignin.textContent = message || 'Redirecting to login...';
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function hideLoadingOverlay() {
|
|
234
|
+
// Hide overlay for form view
|
|
235
|
+
const overlay = document.getElementById('loadingOverlay');
|
|
236
|
+
if (overlay) {
|
|
237
|
+
overlay.classList.remove('active');
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Hide overlay for quick signin view
|
|
241
|
+
const overlayQuickSignin = document.getElementById('loadingOverlayQuickSignin');
|
|
242
|
+
if (overlayQuickSignin) {
|
|
243
|
+
overlayQuickSignin.classList.remove('active');
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async function authenticateWithConfig(config) {
|
|
248
|
+
// Prevent duplicate submissions
|
|
249
|
+
if (isSubmitting) {
|
|
250
|
+
return; // Already submitting, ignore
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Check if values have changed since last submission
|
|
254
|
+
if (lastSubmittedConfig && configValuesEqual(config, lastSubmittedConfig)) {
|
|
255
|
+
showStatus('⚠️ Configuration unchanged. Already saved.', 'info');
|
|
256
|
+
return; // Values haven't changed, don't submit again
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
try {
|
|
260
|
+
isSubmitting = true; // Mark as submitting
|
|
261
|
+
const submitButton = document.querySelector('button[type="submit"]');
|
|
262
|
+
if (submitButton) {
|
|
263
|
+
submitButton.disabled = true;
|
|
264
|
+
submitButton.textContent = 'Saving...';
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Show loading overlay with spinner
|
|
268
|
+
showLoadingOverlay('Saving configuration...');
|
|
269
|
+
authenticationStarted = true; // Mark that auth has started
|
|
270
|
+
|
|
271
|
+
const response = await fetch('/authenticate', {
|
|
272
|
+
method: 'POST',
|
|
273
|
+
headers: { 'Content-Type': 'application/json' },
|
|
274
|
+
body: JSON.stringify(config)
|
|
275
|
+
});
|
|
276
|
+
const result = await response.json();
|
|
277
|
+
|
|
278
|
+
if (response.ok && result.oauthUrl) {
|
|
279
|
+
// Config saved! Store this config as last submitted
|
|
280
|
+
lastSubmittedConfig = { ...config };
|
|
281
|
+
|
|
282
|
+
console.log('🔗 OAuth URL:', result.oauthUrl);
|
|
283
|
+
|
|
284
|
+
// Update loading message (overlay already shows the status, no need for status message)
|
|
285
|
+
showLoadingOverlay('Configuration saved! Redirecting to login...');
|
|
286
|
+
|
|
287
|
+
setTimeout(() => {
|
|
288
|
+
window.location.href = result.oauthUrl;
|
|
289
|
+
}, 500);
|
|
290
|
+
} else if (response.ok && result.success) {
|
|
291
|
+
lastSubmittedConfig = { ...config };
|
|
292
|
+
hideLoadingOverlay();
|
|
293
|
+
showStatus('✅ ' + result.message, 'success');
|
|
294
|
+
setTimeout(() => { window.close(); }, 2000);
|
|
295
|
+
} else {
|
|
296
|
+
hideLoadingOverlay();
|
|
297
|
+
showStatus('❌ ' + (result.error || 'Authentication failed'), 'error');
|
|
298
|
+
authenticationStarted = false; // Reset on error
|
|
299
|
+
isSubmitting = false; // Reset submitting flag
|
|
300
|
+
if (submitButton) {
|
|
301
|
+
submitButton.disabled = false;
|
|
302
|
+
submitButton.textContent = 'Save & Authenticate';
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
} catch (error) {
|
|
306
|
+
hideLoadingOverlay();
|
|
307
|
+
showStatus('❌ Error: ' + error.message, 'error');
|
|
308
|
+
authenticationStarted = false; // Reset on error
|
|
309
|
+
isSubmitting = false; // Reset submitting flag
|
|
310
|
+
const submitButton = document.querySelector('button[type="submit"]');
|
|
311
|
+
if (submitButton) {
|
|
312
|
+
submitButton.disabled = false;
|
|
313
|
+
submitButton.textContent = 'Save & Authenticate';
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
document.getElementById('configForm').addEventListener('submit', async (e) => {
|
|
319
|
+
e.preventDefault();
|
|
320
|
+
|
|
321
|
+
// Prevent duplicate submissions
|
|
322
|
+
if (isSubmitting) {
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
const formData = new FormData(e.target);
|
|
327
|
+
const config = {};
|
|
328
|
+
for (let [key, value] of formData.entries()) {
|
|
329
|
+
config[key] = value;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// Config is now sent to backend for secure file storage (not cookies)
|
|
333
|
+
await authenticateWithConfig(config);
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
// Initialize: Load saved config from backend
|
|
337
|
+
(async () => {
|
|
338
|
+
const hasConfig = await loadSavedConfig();
|
|
339
|
+
if (hasConfig) {
|
|
340
|
+
showQuickSignin();
|
|
341
|
+
} else {
|
|
342
|
+
showForm();
|
|
343
|
+
}
|
|
344
|
+
})();
|
|
345
|
+
|
|
346
|
+
// Custom modal functions
|
|
347
|
+
let modalCallback = null;
|
|
348
|
+
|
|
349
|
+
function showModal(title, message, callback, confirmText = 'Confirm') {
|
|
350
|
+
document.getElementById('modalTitle').textContent = title;
|
|
351
|
+
document.getElementById('modalMessage').textContent = message;
|
|
352
|
+
document.getElementById('modalConfirmBtn').textContent = confirmText;
|
|
353
|
+
modalCallback = callback;
|
|
354
|
+
document.getElementById('confirmModal').classList.add('active');
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
function closeModal(confirmed) {
|
|
358
|
+
document.getElementById('confirmModal').classList.remove('active');
|
|
359
|
+
if (modalCallback) {
|
|
360
|
+
modalCallback(confirmed);
|
|
361
|
+
modalCallback = null;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Advanced settings toggle
|
|
366
|
+
function toggleAdvancedSettings() {
|
|
367
|
+
const advancedSection = document.getElementById('advancedSettings');
|
|
368
|
+
const toggleIcon = document.getElementById('advancedToggleIcon');
|
|
369
|
+
|
|
370
|
+
if (advancedSection.style.display === 'none') {
|
|
371
|
+
advancedSection.style.display = 'block';
|
|
372
|
+
toggleIcon.textContent = '▼';
|
|
373
|
+
} else {
|
|
374
|
+
advancedSection.style.display = 'none';
|
|
375
|
+
toggleIcon.textContent = '▶';
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// Tooltip functions
|
|
380
|
+
function showTooltip(event, fieldName) {
|
|
381
|
+
event.preventDefault(); // Prevent label from focusing input
|
|
382
|
+
event.stopPropagation(); // Prevent event from bubbling
|
|
383
|
+
|
|
384
|
+
const tooltipId = 'tooltip-' + fieldName;
|
|
385
|
+
let tooltipElement = document.getElementById(tooltipId);
|
|
386
|
+
const button = event.currentTarget;
|
|
387
|
+
|
|
388
|
+
if (tooltipElement) {
|
|
389
|
+
// Show the tooltip first to get its dimensions
|
|
390
|
+
tooltipElement.classList.add('active');
|
|
391
|
+
|
|
392
|
+
// Get actual dimensions after showing
|
|
393
|
+
const buttonRect = button.getBoundingClientRect();
|
|
394
|
+
const tooltipRect = tooltipElement.getBoundingClientRect();
|
|
395
|
+
const tooltipWidth = tooltipRect.width || 380;
|
|
396
|
+
const tooltipHeight = tooltipRect.height || 300;
|
|
397
|
+
|
|
398
|
+
const spacing = 16; // Space between button and tooltip
|
|
399
|
+
const viewportPadding = 10; // Padding from viewport edges
|
|
400
|
+
const horizontalComfortZone = 50; // Extra space needed to avoid cramped horizontal positioning
|
|
401
|
+
|
|
402
|
+
// Calculate available space on all sides
|
|
403
|
+
const spaceOnRight = window.innerWidth - buttonRect.right;
|
|
404
|
+
const spaceOnLeft = buttonRect.left;
|
|
405
|
+
const spaceBelow = window.innerHeight - buttonRect.bottom;
|
|
406
|
+
const spaceAbove = buttonRect.top;
|
|
407
|
+
|
|
408
|
+
let left, top;
|
|
409
|
+
let arrowSide = 'left'; // Default: tooltip on right, arrow on left
|
|
410
|
+
|
|
411
|
+
// Check if horizontal positioning would be too cramped (tooltip might cover the icon)
|
|
412
|
+
const horizontalSpaceTight = (spaceOnRight < tooltipWidth + horizontalComfortZone) &&
|
|
413
|
+
(spaceOnLeft < tooltipWidth + horizontalComfortZone);
|
|
414
|
+
|
|
415
|
+
if (horizontalSpaceTight) {
|
|
416
|
+
// Use vertical positioning to avoid covering the icon
|
|
417
|
+
// Determine if we're in the top or bottom half of the viewport
|
|
418
|
+
const inTopHalf = buttonRect.top < window.innerHeight / 2;
|
|
419
|
+
|
|
420
|
+
if (inTopHalf && spaceBelow >= tooltipHeight + spacing + viewportPadding) {
|
|
421
|
+
// Position below
|
|
422
|
+
left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
|
|
423
|
+
top = buttonRect.bottom + spacing;
|
|
424
|
+
arrowSide = 'top';
|
|
425
|
+
} else if (!inTopHalf && spaceAbove >= tooltipHeight + spacing + viewportPadding) {
|
|
426
|
+
// Position above
|
|
427
|
+
left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
|
|
428
|
+
top = buttonRect.top - tooltipHeight - spacing;
|
|
429
|
+
arrowSide = 'bottom';
|
|
430
|
+
} else if (spaceBelow > spaceAbove) {
|
|
431
|
+
// Not enough vertical space either, prefer below
|
|
432
|
+
left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
|
|
433
|
+
top = buttonRect.bottom + spacing;
|
|
434
|
+
arrowSide = 'top';
|
|
435
|
+
} else {
|
|
436
|
+
// Prefer above
|
|
437
|
+
left = buttonRect.left + (buttonRect.width / 2) - (tooltipWidth / 2);
|
|
438
|
+
top = buttonRect.top - tooltipHeight - spacing;
|
|
439
|
+
arrowSide = 'bottom';
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
// Keep horizontally centered within viewport
|
|
443
|
+
if (left < viewportPadding) {
|
|
444
|
+
left = viewportPadding;
|
|
445
|
+
}
|
|
446
|
+
if (left + tooltipWidth > window.innerWidth - viewportPadding) {
|
|
447
|
+
left = window.innerWidth - tooltipWidth - viewportPadding;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
} else {
|
|
451
|
+
// Use horizontal positioning (original logic)
|
|
452
|
+
// Prefer right side if there's enough space
|
|
453
|
+
if (spaceOnRight >= tooltipWidth + spacing + viewportPadding) {
|
|
454
|
+
// Position to the right
|
|
455
|
+
left = buttonRect.right + spacing;
|
|
456
|
+
arrowSide = 'left';
|
|
457
|
+
} else if (spaceOnLeft >= tooltipWidth + spacing + viewportPadding) {
|
|
458
|
+
// Position to the left
|
|
459
|
+
left = buttonRect.left - tooltipWidth - spacing;
|
|
460
|
+
arrowSide = 'right';
|
|
461
|
+
} else {
|
|
462
|
+
// Not enough space on either side, use the side with more space
|
|
463
|
+
if (spaceOnRight > spaceOnLeft) {
|
|
464
|
+
left = buttonRect.right + spacing;
|
|
465
|
+
arrowSide = 'left';
|
|
466
|
+
// Allow tooltip to go to edge of screen
|
|
467
|
+
if (left + tooltipWidth > window.innerWidth - viewportPadding) {
|
|
468
|
+
left = window.innerWidth - tooltipWidth - viewportPadding;
|
|
469
|
+
}
|
|
470
|
+
} else {
|
|
471
|
+
left = buttonRect.left - tooltipWidth - spacing;
|
|
472
|
+
arrowSide = 'right';
|
|
473
|
+
// Allow tooltip to go to edge of screen
|
|
474
|
+
if (left < viewportPadding) {
|
|
475
|
+
left = viewportPadding;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Center vertically relative to button
|
|
481
|
+
top = buttonRect.top + (buttonRect.height / 2) - (tooltipHeight / 2);
|
|
482
|
+
|
|
483
|
+
// Keep tooltip within viewport vertically
|
|
484
|
+
if (top < viewportPadding) {
|
|
485
|
+
top = viewportPadding;
|
|
486
|
+
}
|
|
487
|
+
if (top + tooltipHeight > window.innerHeight - viewportPadding) {
|
|
488
|
+
top = window.innerHeight - tooltipHeight - viewportPadding;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// Apply positioning
|
|
493
|
+
tooltipElement.style.left = left + 'px';
|
|
494
|
+
tooltipElement.style.top = top + 'px';
|
|
495
|
+
|
|
496
|
+
// Update arrow direction
|
|
497
|
+
const arrow = tooltipElement.querySelector('.tooltip-arrow');
|
|
498
|
+
if (arrow) {
|
|
499
|
+
arrow.className = 'tooltip-arrow ' + arrowSide;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
function hideTooltip(event, fieldName) {
|
|
505
|
+
const tooltipId = 'tooltip-' + fieldName;
|
|
506
|
+
let tooltipElement = document.getElementById(tooltipId);
|
|
507
|
+
|
|
508
|
+
if (tooltipElement) {
|
|
509
|
+
tooltipElement.classList.remove('active');
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
// Close tooltip on ESC key
|
|
514
|
+
document.addEventListener('keydown', function(e) {
|
|
515
|
+
if (e.key === 'Escape') {
|
|
516
|
+
document.querySelectorAll('.tooltip-content').forEach(tip => {
|
|
517
|
+
tip.classList.remove('active');
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
});
|
|
521
|
+
|
|
522
|
+
// Notify server if window is closed without starting authentication
|
|
523
|
+
window.addEventListener('beforeunload', function(e) {
|
|
524
|
+
// Only send cancel if user never started the authentication process
|
|
525
|
+
// (If they started auth, they either completed it or clicked cancel explicitly)
|
|
526
|
+
if (!authenticationStarted) {
|
|
527
|
+
// Use sendBeacon for reliable delivery even as page unloads
|
|
528
|
+
navigator.sendBeacon('/cancel', '');
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { initHooks } from "./registration.js";
|
|
6
|
+
import {
|
|
7
|
+
AfterErrorContext,
|
|
8
|
+
AfterErrorHook,
|
|
9
|
+
AfterSuccessContext,
|
|
10
|
+
AfterSuccessHook,
|
|
11
|
+
BeforeCreateRequestContext,
|
|
12
|
+
BeforeCreateRequestHook,
|
|
13
|
+
BeforeRequestContext,
|
|
14
|
+
BeforeRequestHook,
|
|
15
|
+
Hook,
|
|
16
|
+
Hooks,
|
|
17
|
+
SDKInitHook,
|
|
18
|
+
} from "./types.js";
|
|
19
|
+
|
|
20
|
+
import { SDKOptions } from "../lib/config.js";
|
|
21
|
+
import { RequestInput } from "../lib/http.js";
|
|
22
|
+
|
|
23
|
+
export class SDKHooks implements Hooks {
|
|
24
|
+
sdkInitHooks: SDKInitHook[] = [];
|
|
25
|
+
beforeCreateRequestHooks: BeforeCreateRequestHook[] = [];
|
|
26
|
+
beforeRequestHooks: BeforeRequestHook[] = [];
|
|
27
|
+
afterSuccessHooks: AfterSuccessHook[] = [];
|
|
28
|
+
afterErrorHooks: AfterErrorHook[] = [];
|
|
29
|
+
|
|
30
|
+
constructor() {
|
|
31
|
+
const presetHooks: Array<Hook> = [];
|
|
32
|
+
|
|
33
|
+
for (const hook of presetHooks) {
|
|
34
|
+
if ("sdkInit" in hook) {
|
|
35
|
+
this.registerSDKInitHook(hook);
|
|
36
|
+
}
|
|
37
|
+
if ("beforeCreateRequest" in hook) {
|
|
38
|
+
this.registerBeforeCreateRequestHook(hook);
|
|
39
|
+
}
|
|
40
|
+
if ("beforeRequest" in hook) {
|
|
41
|
+
this.registerBeforeRequestHook(hook);
|
|
42
|
+
}
|
|
43
|
+
if ("afterSuccess" in hook) {
|
|
44
|
+
this.registerAfterSuccessHook(hook);
|
|
45
|
+
}
|
|
46
|
+
if ("afterError" in hook) {
|
|
47
|
+
this.registerAfterErrorHook(hook);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
initHooks(this);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
registerSDKInitHook(hook: SDKInitHook) {
|
|
54
|
+
this.sdkInitHooks.push(hook);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
registerBeforeCreateRequestHook(hook: BeforeCreateRequestHook) {
|
|
58
|
+
this.beforeCreateRequestHooks.push(hook);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
registerBeforeRequestHook(hook: BeforeRequestHook) {
|
|
62
|
+
this.beforeRequestHooks.push(hook);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
registerAfterSuccessHook(hook: AfterSuccessHook) {
|
|
66
|
+
this.afterSuccessHooks.push(hook);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
registerAfterErrorHook(hook: AfterErrorHook) {
|
|
70
|
+
this.afterErrorHooks.push(hook);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
sdkInit(opts: SDKOptions): SDKOptions {
|
|
74
|
+
return this.sdkInitHooks.reduce((opts, hook) => hook.sdkInit(opts), opts);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
beforeCreateRequest(
|
|
78
|
+
hookCtx: BeforeCreateRequestContext,
|
|
79
|
+
input: RequestInput,
|
|
80
|
+
): RequestInput {
|
|
81
|
+
let inp = input;
|
|
82
|
+
|
|
83
|
+
for (const hook of this.beforeCreateRequestHooks) {
|
|
84
|
+
inp = hook.beforeCreateRequest(hookCtx, inp);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return inp;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
async beforeRequest(
|
|
91
|
+
hookCtx: BeforeRequestContext,
|
|
92
|
+
request: Request,
|
|
93
|
+
): Promise<Request> {
|
|
94
|
+
let req = request;
|
|
95
|
+
|
|
96
|
+
for (const hook of this.beforeRequestHooks) {
|
|
97
|
+
req = await hook.beforeRequest(hookCtx, req);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return req;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
async afterSuccess(
|
|
104
|
+
hookCtx: AfterSuccessContext,
|
|
105
|
+
response: Response,
|
|
106
|
+
): Promise<Response> {
|
|
107
|
+
let res = response;
|
|
108
|
+
|
|
109
|
+
for (const hook of this.afterSuccessHooks) {
|
|
110
|
+
res = await hook.afterSuccess(hookCtx, res);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return res;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async afterError(
|
|
117
|
+
hookCtx: AfterErrorContext,
|
|
118
|
+
response: Response | null,
|
|
119
|
+
error: unknown,
|
|
120
|
+
): Promise<{ response: Response | null; error: unknown }> {
|
|
121
|
+
let res = response;
|
|
122
|
+
let err = error;
|
|
123
|
+
|
|
124
|
+
for (const hook of this.afterErrorHooks) {
|
|
125
|
+
const result = await hook.afterError(hookCtx, res, err);
|
|
126
|
+
res = result.response;
|
|
127
|
+
err = result.error;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return { response: res, error: err };
|
|
131
|
+
}
|
|
132
|
+
}
|