@shopify/shopify-app-remix 2.8.0 → 2.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{build → dist}/cjs/react/components/AppProvider/AppProvider.js +4 -26
- package/dist/cjs/react/components/AppProvider/AppProvider.js.map +1 -0
- package/{build → dist}/cjs/react/components/AppProxyForm/AppProxyForm.js +8 -17
- package/dist/cjs/react/components/AppProxyForm/AppProxyForm.js.map +1 -0
- package/{build → dist}/cjs/react/components/AppProxyLink/AppProxyLink.js +8 -17
- package/dist/cjs/react/components/AppProxyLink/AppProxyLink.js.map +1 -0
- package/{build → dist}/cjs/react/components/AppProxyProvider/AppProxyProvider.js +20 -34
- package/dist/cjs/react/components/AppProxyProvider/AppProxyProvider.js.map +1 -0
- package/dist/cjs/react/components/RemixPolarisLink.js +10 -0
- package/dist/cjs/react/components/RemixPolarisLink.js.map +1 -0
- package/{build → dist}/cjs/react/const.js +1 -2
- package/dist/cjs/react/const.js.map +1 -0
- package/{build → dist}/cjs/react/index.js +1 -2
- package/dist/cjs/react/index.js.map +1 -0
- package/{build → dist}/cjs/server/adapters/node/index.js +4 -8
- package/dist/cjs/server/adapters/node/index.js.map +1 -0
- package/{build → dist}/cjs/server/adapters/vercel/index.js +3 -2
- package/dist/cjs/server/adapters/vercel/index.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/authenticate.js +131 -0
- package/dist/cjs/server/authenticate/admin/authenticate.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/billing/cancel.js +35 -0
- package/dist/cjs/server/authenticate/admin/billing/cancel.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/billing/check.js +35 -0
- package/dist/cjs/server/authenticate/admin/billing/check.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/billing/request.js +75 -0
- package/dist/cjs/server/authenticate/admin/billing/request.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/billing/require.js +45 -0
- package/dist/cjs/server/authenticate/admin/billing/require.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/begin-auth.js +14 -0
- package/dist/cjs/server/authenticate/admin/helpers/begin-auth.js.map +1 -0
- package/{build → dist}/cjs/server/authenticate/admin/helpers/create-admin-api-context.js +6 -7
- package/dist/cjs/server/authenticate/admin/helpers/create-admin-api-context.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.js +16 -0
- package/dist/cjs/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.js +19 -0
- package/dist/cjs/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/handle-client-error.js +30 -0
- package/dist/cjs/server/authenticate/admin/helpers/handle-client-error.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-auth-page.js +26 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-auth-page.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-bounce-page.js +19 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-bounce-page.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.js +17 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.js.map +1 -0
- package/{build/ts → dist/cjs}/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.js +8 -8
- package/dist/cjs/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-with-exitiframe.js +21 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect-with-exitiframe.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect.js +62 -0
- package/dist/cjs/server/authenticate/admin/helpers/redirect.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/render-app-bridge.js +25 -0
- package/dist/cjs/server/authenticate/admin/helpers/render-app-bridge.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/trigger-after-auth-hook.js +17 -0
- package/dist/cjs/server/authenticate/admin/helpers/trigger-after-auth-hook.js.map +1 -0
- package/{build/ts → dist/cjs}/server/authenticate/admin/helpers/validate-redirect-url.js +14 -15
- package/dist/cjs/server/authenticate/admin/helpers/validate-redirect-url.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/helpers/validate-shop-and-host-params.js +27 -0
- package/dist/cjs/server/authenticate/admin/helpers/validate-shop-and-host-params.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/strategies/auth-code-flow.js +225 -0
- package/dist/cjs/server/authenticate/admin/strategies/auth-code-flow.js.map +1 -0
- package/dist/cjs/server/authenticate/admin/strategies/token-exchange.js +110 -0
- package/dist/cjs/server/authenticate/admin/strategies/token-exchange.js.map +1 -0
- package/{build → dist}/cjs/server/authenticate/const.js +2 -3
- package/dist/cjs/server/authenticate/const.js.map +1 -0
- package/dist/cjs/server/authenticate/flow/authenticate.js +53 -0
- package/dist/cjs/server/authenticate/flow/authenticate.js.map +1 -0
- package/dist/cjs/server/authenticate/fulfillment-service/authenticate.js +59 -0
- package/dist/cjs/server/authenticate/fulfillment-service/authenticate.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/add-response-headers.js +27 -0
- package/dist/cjs/server/authenticate/helpers/add-response-headers.js.map +1 -0
- package/{build → dist}/cjs/server/authenticate/helpers/app-bridge-url.js +3 -4
- package/dist/cjs/server/authenticate/helpers/app-bridge-url.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/ensure-cors-headers.js +25 -0
- package/dist/cjs/server/authenticate/helpers/ensure-cors-headers.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/get-session-token-header.js +14 -0
- package/dist/cjs/server/authenticate/helpers/get-session-token-header.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/idempotent-promise-handler.js +36 -0
- package/dist/cjs/server/authenticate/helpers/idempotent-promise-handler.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/reject-bot-request.js +23 -0
- package/dist/cjs/server/authenticate/helpers/reject-bot-request.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/respond-to-invalid-session-token.js +20 -0
- package/dist/cjs/server/authenticate/helpers/respond-to-invalid-session-token.js.map +1 -0
- package/{build/ts → dist/cjs}/server/authenticate/helpers/respond-to-options-request.js +7 -6
- package/dist/cjs/server/authenticate/helpers/respond-to-options-request.js.map +1 -0
- package/dist/cjs/server/authenticate/helpers/validate-session-token.js +24 -0
- package/dist/cjs/server/authenticate/helpers/validate-session-token.js.map +1 -0
- package/dist/cjs/server/authenticate/login/login.js +43 -0
- package/dist/cjs/server/authenticate/login/login.js.map +1 -0
- package/dist/cjs/server/authenticate/public/appProxy/authenticate.js +95 -0
- package/dist/cjs/server/authenticate/public/appProxy/authenticate.js.map +1 -0
- package/dist/cjs/server/authenticate/public/checkout/authenticate.js +33 -0
- package/dist/cjs/server/authenticate/public/checkout/authenticate.js.map +1 -0
- package/{build/ts → dist/cjs}/server/authenticate/public/factory.js +12 -11
- package/dist/cjs/server/authenticate/public/factory.js.map +1 -0
- package/dist/cjs/server/authenticate/webhooks/authenticate.js +85 -0
- package/dist/cjs/server/authenticate/webhooks/authenticate.js.map +1 -0
- package/dist/cjs/server/authenticate/webhooks/register.js +45 -0
- package/dist/cjs/server/authenticate/webhooks/register.js.map +1 -0
- package/dist/cjs/server/boundary/error.js +14 -0
- package/dist/cjs/server/boundary/error.js.map +1 -0
- package/dist/cjs/server/boundary/headers.js +16 -0
- package/dist/cjs/server/boundary/headers.js.map +1 -0
- package/{build/ts → dist/cjs}/server/boundary/index.js +11 -9
- package/dist/cjs/server/boundary/index.js.map +1 -0
- package/dist/cjs/server/clients/admin/factory.js +18 -0
- package/dist/cjs/server/clients/admin/factory.js.map +1 -0
- package/dist/cjs/server/clients/admin/graphql.js +32 -0
- package/dist/cjs/server/clients/admin/graphql.js.map +1 -0
- package/dist/cjs/server/clients/admin/rest.js +121 -0
- package/dist/cjs/server/clients/admin/rest.js.map +1 -0
- package/dist/cjs/server/clients/storefront/factory.js +22 -0
- package/dist/cjs/server/clients/storefront/factory.js.map +1 -0
- package/dist/cjs/server/errors.js +9 -0
- package/dist/cjs/server/errors.js.map +1 -0
- package/{build/ts → dist/cjs}/server/future/flags.js +5 -7
- package/dist/cjs/server/future/flags.js.map +1 -0
- package/dist/cjs/server/index.js +46 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/override-logger.js +33 -0
- package/dist/cjs/server/override-logger.js.map +1 -0
- package/dist/cjs/server/shopify-app.js +151 -0
- package/dist/cjs/server/shopify-app.js.map +1 -0
- package/dist/cjs/server/types.js +16 -0
- package/dist/cjs/server/types.js.map +1 -0
- package/dist/cjs/server/unauthenticated/admin/factory.js +21 -0
- package/dist/cjs/server/unauthenticated/admin/factory.js.map +1 -0
- package/dist/cjs/server/unauthenticated/helpers/get-offline-session.js +10 -0
- package/dist/cjs/server/unauthenticated/helpers/get-offline-session.js.map +1 -0
- package/dist/cjs/server/unauthenticated/storefront/factory.js +21 -0
- package/dist/cjs/server/unauthenticated/storefront/factory.js.map +1 -0
- package/dist/cjs/server/version.js +6 -0
- package/dist/cjs/server/version.js.map +1 -0
- package/{build/ts/react/components/AppProvider/AppProvider.js → dist/esm/react/components/AppProvider/AppProvider.mjs} +11 -13
- package/dist/esm/react/components/AppProvider/AppProvider.mjs.map +1 -0
- package/{build/ts/react/components/AppProxyForm/AppProxyForm.js → dist/esm/react/components/AppProxyForm/AppProxyForm.mjs} +11 -13
- package/dist/esm/react/components/AppProxyForm/AppProxyForm.mjs.map +1 -0
- package/{build/ts/react/components/AppProxyLink/AppProxyLink.js → dist/esm/react/components/AppProxyLink/AppProxyLink.mjs} +10 -12
- package/dist/esm/react/components/AppProxyLink/AppProxyLink.mjs.map +1 -0
- package/{build/ts/react/components/AppProxyProvider/AppProxyProvider.js → dist/esm/react/components/AppProxyProvider/AppProxyProvider.mjs} +15 -18
- package/dist/esm/react/components/AppProxyProvider/AppProxyProvider.mjs.map +1 -0
- package/dist/esm/react/components/RemixPolarisLink.mjs +8 -0
- package/dist/esm/react/components/RemixPolarisLink.mjs.map +1 -0
- package/dist/esm/react/const.mjs +4 -0
- package/dist/esm/react/const.mjs.map +1 -0
- package/dist/esm/react/index.mjs +5 -0
- package/dist/esm/react/index.mjs.map +1 -0
- package/dist/esm/server/adapters/node/index.mjs +16 -0
- package/dist/esm/server/adapters/node/index.mjs.map +1 -0
- package/dist/esm/server/adapters/vercel/index.mjs +11 -0
- package/dist/esm/server/adapters/vercel/index.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/authenticate.mjs +129 -0
- package/dist/esm/server/authenticate/admin/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/billing/cancel.mjs +33 -0
- package/dist/esm/server/authenticate/admin/billing/cancel.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/billing/check.mjs +33 -0
- package/dist/esm/server/authenticate/admin/billing/check.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/billing/request.mjs +73 -0
- package/dist/esm/server/authenticate/admin/billing/request.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/billing/require.mjs +43 -0
- package/dist/esm/server/authenticate/admin/billing/require.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/begin-auth.mjs +12 -0
- package/dist/esm/server/authenticate/admin/helpers/begin-auth.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/create-admin-api-context.mjs +12 -0
- package/dist/esm/server/authenticate/admin/helpers/create-admin-api-context.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.mjs +14 -0
- package/dist/esm/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.mjs +17 -0
- package/dist/esm/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/handle-client-error.mjs +28 -0
- package/dist/esm/server/authenticate/admin/helpers/handle-client-error.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-auth-page.mjs +24 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-auth-page.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-bounce-page.mjs +17 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-bounce-page.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.mjs +15 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.mjs +15 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-with-exitiframe.mjs +19 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect-with-exitiframe.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect.mjs +60 -0
- package/dist/esm/server/authenticate/admin/helpers/redirect.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/render-app-bridge.mjs +23 -0
- package/dist/esm/server/authenticate/admin/helpers/render-app-bridge.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/trigger-after-auth-hook.mjs +15 -0
- package/dist/esm/server/authenticate/admin/helpers/trigger-after-auth-hook.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/validate-redirect-url.mjs +46 -0
- package/dist/esm/server/authenticate/admin/helpers/validate-redirect-url.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/helpers/validate-shop-and-host-params.mjs +25 -0
- package/dist/esm/server/authenticate/admin/helpers/validate-shop-and-host-params.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/strategies/auth-code-flow.mjs +223 -0
- package/dist/esm/server/authenticate/admin/strategies/auth-code-flow.mjs.map +1 -0
- package/dist/esm/server/authenticate/admin/strategies/token-exchange.mjs +108 -0
- package/dist/esm/server/authenticate/admin/strategies/token-exchange.mjs.map +1 -0
- package/dist/esm/server/authenticate/const.mjs +8 -0
- package/dist/esm/server/authenticate/const.mjs.map +1 -0
- package/dist/esm/server/authenticate/flow/authenticate.mjs +51 -0
- package/dist/esm/server/authenticate/flow/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/fulfillment-service/authenticate.mjs +57 -0
- package/dist/esm/server/authenticate/fulfillment-service/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/add-response-headers.mjs +24 -0
- package/dist/esm/server/authenticate/helpers/add-response-headers.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/app-bridge-url.mjs +12 -0
- package/dist/esm/server/authenticate/helpers/app-bridge-url.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/ensure-cors-headers.mjs +23 -0
- package/dist/esm/server/authenticate/helpers/ensure-cors-headers.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/get-session-token-header.mjs +11 -0
- package/dist/esm/server/authenticate/helpers/get-session-token-header.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/idempotent-promise-handler.mjs +34 -0
- package/dist/esm/server/authenticate/helpers/idempotent-promise-handler.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/reject-bot-request.mjs +21 -0
- package/dist/esm/server/authenticate/helpers/reject-bot-request.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/respond-to-invalid-session-token.mjs +18 -0
- package/dist/esm/server/authenticate/helpers/respond-to-invalid-session-token.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/respond-to-options-request.mjs +16 -0
- package/dist/esm/server/authenticate/helpers/respond-to-options-request.mjs.map +1 -0
- package/dist/esm/server/authenticate/helpers/validate-session-token.mjs +22 -0
- package/dist/esm/server/authenticate/helpers/validate-session-token.mjs.map +1 -0
- package/dist/esm/server/authenticate/login/login.mjs +41 -0
- package/dist/esm/server/authenticate/login/login.mjs.map +1 -0
- package/dist/esm/server/authenticate/public/appProxy/authenticate.mjs +93 -0
- package/dist/esm/server/authenticate/public/appProxy/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/public/checkout/authenticate.mjs +31 -0
- package/dist/esm/server/authenticate/public/checkout/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/public/factory.mjs +25 -0
- package/dist/esm/server/authenticate/public/factory.mjs.map +1 -0
- package/dist/esm/server/authenticate/webhooks/authenticate.mjs +83 -0
- package/dist/esm/server/authenticate/webhooks/authenticate.mjs.map +1 -0
- package/dist/esm/server/authenticate/webhooks/register.mjs +43 -0
- package/dist/esm/server/authenticate/webhooks/register.mjs.map +1 -0
- package/dist/esm/server/boundary/error.mjs +12 -0
- package/dist/esm/server/boundary/error.mjs.map +1 -0
- package/dist/esm/server/boundary/headers.mjs +14 -0
- package/dist/esm/server/boundary/headers.mjs.map +1 -0
- package/dist/esm/server/boundary/index.mjs +41 -0
- package/dist/esm/server/boundary/index.mjs.map +1 -0
- package/dist/esm/server/clients/admin/factory.mjs +16 -0
- package/dist/esm/server/clients/admin/factory.mjs.map +1 -0
- package/dist/esm/server/clients/admin/graphql.mjs +30 -0
- package/dist/esm/server/clients/admin/graphql.mjs.map +1 -0
- package/dist/esm/server/clients/admin/rest.mjs +119 -0
- package/dist/esm/server/clients/admin/rest.mjs.map +1 -0
- package/dist/esm/server/clients/storefront/factory.mjs +20 -0
- package/dist/esm/server/clients/storefront/factory.mjs.map +1 -0
- package/dist/esm/server/errors.mjs +7 -0
- package/dist/esm/server/errors.mjs.map +1 -0
- package/dist/esm/server/future/flags.mjs +20 -0
- package/dist/esm/server/future/flags.mjs.map +1 -0
- package/dist/esm/server/index.mjs +12 -0
- package/dist/esm/server/index.mjs.map +1 -0
- package/dist/esm/server/override-logger.mjs +31 -0
- package/dist/esm/server/override-logger.mjs.map +1 -0
- package/dist/esm/server/shopify-app.mjs +148 -0
- package/dist/esm/server/shopify-app.mjs.map +1 -0
- package/{build/ts/server/types.js → dist/esm/server/types.mjs} +5 -6
- package/dist/esm/server/types.mjs.map +1 -0
- package/dist/esm/server/unauthenticated/admin/factory.mjs +19 -0
- package/dist/esm/server/unauthenticated/admin/factory.mjs.map +1 -0
- package/dist/esm/server/unauthenticated/helpers/get-offline-session.mjs +8 -0
- package/dist/esm/server/unauthenticated/helpers/get-offline-session.mjs.map +1 -0
- package/dist/esm/server/unauthenticated/storefront/factory.mjs +19 -0
- package/dist/esm/server/unauthenticated/storefront/factory.mjs.map +1 -0
- package/dist/esm/server/version.mjs +4 -0
- package/dist/esm/server/version.mjs.map +1 -0
- package/{build → dist}/ts/react/components/AppProvider/AppProvider.d.ts.map +1 -1
- package/{build → dist}/ts/server/authenticate/helpers/reject-bot-request.d.ts.map +1 -1
- package/{build → dist}/ts/server/clients/admin/types.d.ts +1 -1
- package/{build → dist}/ts/server/future/flags.d.ts +1 -1
- package/dist/ts/server/future/flags.d.ts.map +1 -0
- package/{build → dist}/ts/server/shopify-app.d.ts +2 -1
- package/dist/ts/server/shopify-app.d.ts.map +1 -0
- package/dist/ts/server/version.d.ts +2 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +52 -23
- package/build/cjs/react/components/RemixPolarisLink.js +0 -22
- package/build/cjs/server/authenticate/admin/authenticate.js +0 -170
- package/build/cjs/server/authenticate/admin/billing/cancel.js +0 -41
- package/build/cjs/server/authenticate/admin/billing/check.js +0 -41
- package/build/cjs/server/authenticate/admin/billing/request.js +0 -86
- package/build/cjs/server/authenticate/admin/billing/require.js +0 -48
- package/build/cjs/server/authenticate/admin/helpers/begin-auth.js +0 -18
- package/build/cjs/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.js +0 -27
- package/build/cjs/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.js +0 -25
- package/build/cjs/server/authenticate/admin/helpers/handle-client-error.js +0 -43
- package/build/cjs/server/authenticate/admin/helpers/redirect-to-auth-page.js +0 -27
- package/build/cjs/server/authenticate/admin/helpers/redirect-to-bounce-page.js +0 -24
- package/build/cjs/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.js +0 -22
- package/build/cjs/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.js +0 -21
- package/build/cjs/server/authenticate/admin/helpers/redirect-with-exitiframe.js +0 -25
- package/build/cjs/server/authenticate/admin/helpers/redirect.js +0 -63
- package/build/cjs/server/authenticate/admin/helpers/render-app-bridge.js +0 -31
- package/build/cjs/server/authenticate/admin/helpers/trigger-after-auth-hook.js +0 -21
- package/build/cjs/server/authenticate/admin/helpers/validate-redirect-url.js +0 -45
- package/build/cjs/server/authenticate/admin/helpers/validate-shop-and-host-params.js +0 -32
- package/build/cjs/server/authenticate/admin/strategies/auth-code-flow.js +0 -334
- package/build/cjs/server/authenticate/admin/strategies/token-exchange.js +0 -155
- package/build/cjs/server/authenticate/flow/authenticate.js +0 -68
- package/build/cjs/server/authenticate/fulfillment-service/authenticate.js +0 -70
- package/build/cjs/server/authenticate/helpers/add-response-headers.js +0 -32
- package/build/cjs/server/authenticate/helpers/ensure-cors-headers.js +0 -25
- package/build/cjs/server/authenticate/helpers/get-session-token-header.js +0 -16
- package/build/cjs/server/authenticate/helpers/idempotent-promise-handler.js +0 -40
- package/build/cjs/server/authenticate/helpers/reject-bot-request.js +0 -23
- package/build/cjs/server/authenticate/helpers/respond-to-invalid-session-token.js +0 -33
- package/build/cjs/server/authenticate/helpers/respond-to-options-request.js +0 -19
- package/build/cjs/server/authenticate/helpers/validate-session-token.js +0 -33
- package/build/cjs/server/authenticate/login/login.js +0 -52
- package/build/cjs/server/authenticate/public/appProxy/authenticate.js +0 -117
- package/build/cjs/server/authenticate/public/checkout/authenticate.js +0 -39
- package/build/cjs/server/authenticate/public/factory.js +0 -31
- package/build/cjs/server/authenticate/webhooks/authenticate.js +0 -96
- package/build/cjs/server/authenticate/webhooks/register.js +0 -56
- package/build/cjs/server/boundary/error.js +0 -18
- package/build/cjs/server/boundary/headers.js +0 -18
- package/build/cjs/server/boundary/index.js +0 -44
- package/build/cjs/server/clients/admin/factory.js +0 -27
- package/build/cjs/server/clients/admin/graphql.js +0 -40
- package/build/cjs/server/clients/admin/rest.js +0 -145
- package/build/cjs/server/clients/storefront/factory.js +0 -28
- package/build/cjs/server/errors.js +0 -9
- package/build/cjs/server/future/flags.js +0 -28
- package/build/cjs/server/index.js +0 -41
- package/build/cjs/server/override-logger.js +0 -55
- package/build/cjs/server/shopify-app.js +0 -151
- package/build/cjs/server/types.js +0 -26
- package/build/cjs/server/unauthenticated/admin/factory.js +0 -25
- package/build/cjs/server/unauthenticated/helpers/get-offline-session.js +0 -14
- package/build/cjs/server/unauthenticated/storefront/factory.js +0 -25
- package/build/cjs/server/version.js +0 -7
- package/build/ts/react/components/AppProvider/AppProvider.doc.js +0 -34
- package/build/ts/react/components/AppProvider/AppProvider.doc.js.map +0 -1
- package/build/ts/react/components/AppProvider/AppProvider.js.map +0 -1
- package/build/ts/react/components/AppProvider/index.js +0 -5
- package/build/ts/react/components/AppProvider/index.js.map +0 -1
- package/build/ts/react/components/AppProxyForm/AppProxyForm.doc.js +0 -28
- package/build/ts/react/components/AppProxyForm/AppProxyForm.doc.js.map +0 -1
- package/build/ts/react/components/AppProxyForm/AppProxyForm.js.map +0 -1
- package/build/ts/react/components/AppProxyForm/index.js +0 -6
- package/build/ts/react/components/AppProxyForm/index.js.map +0 -1
- package/build/ts/react/components/AppProxyLink/AppProxyLink.doc.js +0 -28
- package/build/ts/react/components/AppProxyLink/AppProxyLink.doc.js.map +0 -1
- package/build/ts/react/components/AppProxyLink/AppProxyLink.js.map +0 -1
- package/build/ts/react/components/AppProxyLink/index.js +0 -6
- package/build/ts/react/components/AppProxyLink/index.js.map +0 -1
- package/build/ts/react/components/AppProxyProvider/AppProxyProvider.doc.js +0 -40
- package/build/ts/react/components/AppProxyProvider/AppProxyProvider.doc.js.map +0 -1
- package/build/ts/react/components/AppProxyProvider/AppProxyProvider.js.map +0 -1
- package/build/ts/react/components/AppProxyProvider/index.js +0 -7
- package/build/ts/react/components/AppProxyProvider/index.js.map +0 -1
- package/build/ts/react/components/RemixPolarisLink.js +0 -12
- package/build/ts/react/components/RemixPolarisLink.js.map +0 -1
- package/build/ts/react/components/index.js +0 -8
- package/build/ts/react/components/index.js.map +0 -1
- package/build/ts/react/const.js +0 -5
- package/build/ts/react/const.js.map +0 -1
- package/build/ts/react/index.js +0 -5
- package/build/ts/react/index.js.map +0 -1
- package/build/ts/server/__test-helpers/const.d.ts +0 -10
- package/build/ts/server/__test-helpers/const.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/const.js +0 -14
- package/build/ts/server/__test-helpers/const.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-admin-api-client.d.ts +0 -8
- package/build/ts/server/__test-helpers/expect-admin-api-client.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-admin-api-client.js +0 -165
- package/build/ts/server/__test-helpers/expect-admin-api-client.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-begin-auth-redirect.d.ts +0 -3
- package/build/ts/server/__test-helpers/expect-begin-auth-redirect.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-begin-auth-redirect.js +0 -16
- package/build/ts/server/__test-helpers/expect-begin-auth-redirect.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-document-request-headers.d.ts +0 -2
- package/build/ts/server/__test-helpers/expect-document-request-headers.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-document-request-headers.js +0 -18
- package/build/ts/server/__test-helpers/expect-document-request-headers.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-exit-iframe.d.ts +0 -9
- package/build/ts/server/__test-helpers/expect-exit-iframe.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-exit-iframe.js +0 -21
- package/build/ts/server/__test-helpers/expect-exit-iframe.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-login-redirect.d.ts +0 -2
- package/build/ts/server/__test-helpers/expect-login-redirect.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-login-redirect.js +0 -11
- package/build/ts/server/__test-helpers/expect-login-redirect.js.map +0 -1
- package/build/ts/server/__test-helpers/expect-storefront-api-client.d.ts +0 -8
- package/build/ts/server/__test-helpers/expect-storefront-api-client.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/expect-storefront-api-client.js +0 -57
- package/build/ts/server/__test-helpers/expect-storefront-api-client.js.map +0 -1
- package/build/ts/server/__test-helpers/get-hmac.d.ts +0 -2
- package/build/ts/server/__test-helpers/get-hmac.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/get-hmac.js +0 -14
- package/build/ts/server/__test-helpers/get-hmac.js.map +0 -1
- package/build/ts/server/__test-helpers/get-jwt.d.ts +0 -8
- package/build/ts/server/__test-helpers/get-jwt.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/get-jwt.js +0 -17
- package/build/ts/server/__test-helpers/get-jwt.js.map +0 -1
- package/build/ts/server/__test-helpers/get-thrown-response.d.ts +0 -2
- package/build/ts/server/__test-helpers/get-thrown-response.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/get-thrown-response.js +0 -28
- package/build/ts/server/__test-helpers/get-thrown-response.js.map +0 -1
- package/build/ts/server/__test-helpers/index.d.ts +0 -15
- package/build/ts/server/__test-helpers/index.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/index.js +0 -18
- package/build/ts/server/__test-helpers/index.js.map +0 -1
- package/build/ts/server/__test-helpers/request-mock.d.ts +0 -10
- package/build/ts/server/__test-helpers/request-mock.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/request-mock.js +0 -271
- package/build/ts/server/__test-helpers/request-mock.js.map +0 -1
- package/build/ts/server/__test-helpers/setup-valid-session.d.ts +0 -4
- package/build/ts/server/__test-helpers/setup-valid-session.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/setup-valid-session.js +0 -45
- package/build/ts/server/__test-helpers/setup-valid-session.js.map +0 -1
- package/build/ts/server/__test-helpers/sign-request-cookie.d.ts +0 -6
- package/build/ts/server/__test-helpers/sign-request-cookie.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/sign-request-cookie.js +0 -14
- package/build/ts/server/__test-helpers/sign-request-cookie.js.map +0 -1
- package/build/ts/server/__test-helpers/test-config.d.ts +0 -43
- package/build/ts/server/__test-helpers/test-config.d.ts.map +0 -1
- package/build/ts/server/__test-helpers/test-config.js +0 -46
- package/build/ts/server/__test-helpers/test-config.js.map +0 -1
- package/build/ts/server/adapters/node/index.js +0 -16
- package/build/ts/server/adapters/node/index.js.map +0 -1
- package/build/ts/server/adapters/vercel/index.js +0 -26
- package/build/ts/server/adapters/vercel/index.js.map +0 -1
- package/build/ts/server/authenticate/admin/authenticate.admin.doc.js +0 -48
- package/build/ts/server/authenticate/admin/authenticate.admin.doc.js.map +0 -1
- package/build/ts/server/authenticate/admin/authenticate.js +0 -166
- package/build/ts/server/authenticate/admin/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/authenticate.admin.billing.doc.js +0 -26
- package/build/ts/server/authenticate/admin/billing/authenticate.admin.billing.doc.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/cancel.js +0 -46
- package/build/ts/server/authenticate/admin/billing/cancel.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/check.js +0 -46
- package/build/ts/server/authenticate/admin/billing/check.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/index.js +0 -12
- package/build/ts/server/authenticate/admin/billing/index.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/request.js +0 -80
- package/build/ts/server/authenticate/admin/billing/request.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/require.js +0 -58
- package/build/ts/server/authenticate/admin/billing/require.js.map +0 -1
- package/build/ts/server/authenticate/admin/billing/types.js +0 -3
- package/build/ts/server/authenticate/admin/billing/types.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/begin-auth.js +0 -24
- package/build/ts/server/authenticate/admin/helpers/begin-auth.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/create-admin-api-context.js +0 -13
- package/build/ts/server/authenticate/admin/helpers/create-admin-api-context.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.js +0 -25
- package/build/ts/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.js +0 -23
- package/build/ts/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/handle-client-error.js +0 -42
- package/build/ts/server/authenticate/admin/helpers/handle-client-error.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/index.js +0 -18
- package/build/ts/server/authenticate/admin/helpers/index.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect-to-auth-page.js +0 -36
- package/build/ts/server/authenticate/admin/helpers/redirect-to-auth-page.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect-to-bounce-page.js +0 -18
- package/build/ts/server/authenticate/admin/helpers/redirect-to-bounce-page.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.js +0 -32
- package/build/ts/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect-with-exitiframe.js +0 -20
- package/build/ts/server/authenticate/admin/helpers/redirect-with-exitiframe.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/redirect.js +0 -61
- package/build/ts/server/authenticate/admin/helpers/redirect.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/render-app-bridge.js +0 -23
- package/build/ts/server/authenticate/admin/helpers/render-app-bridge.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.js +0 -28
- package/build/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/validate-redirect-url.js.map +0 -1
- package/build/ts/server/authenticate/admin/helpers/validate-shop-and-host-params.js +0 -26
- package/build/ts/server/authenticate/admin/helpers/validate-shop-and-host-params.js.map +0 -1
- package/build/ts/server/authenticate/admin/strategies/auth-code-flow.js +0 -343
- package/build/ts/server/authenticate/admin/strategies/auth-code-flow.js.map +0 -1
- package/build/ts/server/authenticate/admin/strategies/token-exchange.js +0 -163
- package/build/ts/server/authenticate/admin/strategies/token-exchange.js.map +0 -1
- package/build/ts/server/authenticate/admin/strategies/types.js +0 -3
- package/build/ts/server/authenticate/admin/strategies/types.js.map +0 -1
- package/build/ts/server/authenticate/admin/types.js +0 -3
- package/build/ts/server/authenticate/admin/types.js.map +0 -1
- package/build/ts/server/authenticate/const.js +0 -14
- package/build/ts/server/authenticate/const.js.map +0 -1
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.js +0 -46
- package/build/ts/server/authenticate/flow/authenticate.flow.doc.js.map +0 -1
- package/build/ts/server/authenticate/flow/authenticate.js +0 -67
- package/build/ts/server/authenticate/flow/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/flow/types.js +0 -3
- package/build/ts/server/authenticate/flow/types.js.map +0 -1
- package/build/ts/server/authenticate/fulfillment-service/authenticate.fulfillment-service.doc.js +0 -46
- package/build/ts/server/authenticate/fulfillment-service/authenticate.fulfillment-service.doc.js.map +0 -1
- package/build/ts/server/authenticate/fulfillment-service/authenticate.js +0 -73
- package/build/ts/server/authenticate/fulfillment-service/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/fulfillment-service/types.js +0 -3
- package/build/ts/server/authenticate/fulfillment-service/types.js.map +0 -1
- package/build/ts/server/authenticate/helpers/add-response-headers.js +0 -27
- package/build/ts/server/authenticate/helpers/add-response-headers.js.map +0 -1
- package/build/ts/server/authenticate/helpers/app-bridge-url.js +0 -14
- package/build/ts/server/authenticate/helpers/app-bridge-url.js.map +0 -1
- package/build/ts/server/authenticate/helpers/ensure-cors-headers.js +0 -25
- package/build/ts/server/authenticate/helpers/ensure-cors-headers.js.map +0 -1
- package/build/ts/server/authenticate/helpers/get-session-token-header.js +0 -15
- package/build/ts/server/authenticate/helpers/get-session-token-header.js.map +0 -1
- package/build/ts/server/authenticate/helpers/idempotent-promise-handler.js +0 -53
- package/build/ts/server/authenticate/helpers/idempotent-promise-handler.js.map +0 -1
- package/build/ts/server/authenticate/helpers/index.js +0 -12
- package/build/ts/server/authenticate/helpers/index.js.map +0 -1
- package/build/ts/server/authenticate/helpers/reject-bot-request.js +0 -14
- package/build/ts/server/authenticate/helpers/reject-bot-request.js.map +0 -1
- package/build/ts/server/authenticate/helpers/respond-to-invalid-session-token.js +0 -20
- package/build/ts/server/authenticate/helpers/respond-to-invalid-session-token.js.map +0 -1
- package/build/ts/server/authenticate/helpers/respond-to-options-request.js.map +0 -1
- package/build/ts/server/authenticate/helpers/validate-session-token.js +0 -37
- package/build/ts/server/authenticate/helpers/validate-session-token.js.map +0 -1
- package/build/ts/server/authenticate/login/login.js +0 -58
- package/build/ts/server/authenticate/login/login.js.map +0 -1
- package/build/ts/server/authenticate/public/appProxy/authenticate.js +0 -118
- package/build/ts/server/authenticate/public/appProxy/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/public/appProxy/authenticate.public.app-proxy.doc.js +0 -53
- package/build/ts/server/authenticate/public/appProxy/authenticate.public.app-proxy.doc.js.map +0 -1
- package/build/ts/server/authenticate/public/appProxy/types.js +0 -3
- package/build/ts/server/authenticate/public/appProxy/types.js.map +0 -1
- package/build/ts/server/authenticate/public/checkout/authenticate.js +0 -40
- package/build/ts/server/authenticate/public/checkout/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/public/checkout/authenticate.public.checkout.doc.js +0 -39
- package/build/ts/server/authenticate/public/checkout/authenticate.public.checkout.doc.js.map +0 -1
- package/build/ts/server/authenticate/public/checkout/types.js +0 -3
- package/build/ts/server/authenticate/public/checkout/types.js.map +0 -1
- package/build/ts/server/authenticate/public/factory.js.map +0 -1
- package/build/ts/server/authenticate/public/index.js +0 -5
- package/build/ts/server/authenticate/public/index.js.map +0 -1
- package/build/ts/server/authenticate/public/types.js +0 -3
- package/build/ts/server/authenticate/public/types.js.map +0 -1
- package/build/ts/server/authenticate/webhooks/authenticate.js +0 -94
- package/build/ts/server/authenticate/webhooks/authenticate.js.map +0 -1
- package/build/ts/server/authenticate/webhooks/authenticate.webhooks.doc.js +0 -40
- package/build/ts/server/authenticate/webhooks/authenticate.webhooks.doc.js.map +0 -1
- package/build/ts/server/authenticate/webhooks/index.js +0 -6
- package/build/ts/server/authenticate/webhooks/index.js.map +0 -1
- package/build/ts/server/authenticate/webhooks/register.js +0 -58
- package/build/ts/server/authenticate/webhooks/register.js.map +0 -1
- package/build/ts/server/authenticate/webhooks/types.js +0 -3
- package/build/ts/server/authenticate/webhooks/types.js.map +0 -1
- package/build/ts/server/boundary/error.js +0 -13
- package/build/ts/server/boundary/error.js.map +0 -1
- package/build/ts/server/boundary/headers.js +0 -13
- package/build/ts/server/boundary/headers.js.map +0 -1
- package/build/ts/server/boundary/index.js.map +0 -1
- package/build/ts/server/boundary/types.js +0 -3
- package/build/ts/server/boundary/types.js.map +0 -1
- package/build/ts/server/clients/admin/authenticate.admin.api.doc.js +0 -32
- package/build/ts/server/clients/admin/authenticate.admin.api.doc.js.map +0 -1
- package/build/ts/server/clients/admin/factory.js +0 -18
- package/build/ts/server/clients/admin/factory.js.map +0 -1
- package/build/ts/server/clients/admin/graphql.js +0 -45
- package/build/ts/server/clients/admin/graphql.js.map +0 -1
- package/build/ts/server/clients/admin/index.js +0 -6
- package/build/ts/server/clients/admin/index.js.map +0 -1
- package/build/ts/server/clients/admin/rest.js +0 -165
- package/build/ts/server/clients/admin/rest.js.map +0 -1
- package/build/ts/server/clients/admin/types.js +0 -3
- package/build/ts/server/clients/admin/types.js.map +0 -1
- package/build/ts/server/clients/index.js +0 -6
- package/build/ts/server/clients/index.js.map +0 -1
- package/build/ts/server/clients/storefront/authenticate.storefront.api.doc.js +0 -32
- package/build/ts/server/clients/storefront/authenticate.storefront.api.doc.js.map +0 -1
- package/build/ts/server/clients/storefront/factory.js +0 -36
- package/build/ts/server/clients/storefront/factory.js.map +0 -1
- package/build/ts/server/clients/storefront/index.js +0 -6
- package/build/ts/server/clients/storefront/index.js.map +0 -1
- package/build/ts/server/clients/storefront/types.js +0 -3
- package/build/ts/server/clients/storefront/types.js.map +0 -1
- package/build/ts/server/clients/types.js +0 -3
- package/build/ts/server/clients/types.js.map +0 -1
- package/build/ts/server/config-types.js +0 -3
- package/build/ts/server/config-types.js.map +0 -1
- package/build/ts/server/errors.js +0 -14
- package/build/ts/server/errors.js.map +0 -1
- package/build/ts/server/future/flags.d.ts.map +0 -1
- package/build/ts/server/future/flags.js.map +0 -1
- package/build/ts/server/index.js +0 -24
- package/build/ts/server/index.js.map +0 -1
- package/build/ts/server/override-logger.js +0 -40
- package/build/ts/server/override-logger.js.map +0 -1
- package/build/ts/server/shopify-app.d.ts.map +0 -1
- package/build/ts/server/shopify-app.doc.js +0 -43
- package/build/ts/server/shopify-app.doc.js.map +0 -1
- package/build/ts/server/shopify-app.js +0 -124
- package/build/ts/server/shopify-app.js.map +0 -1
- package/build/ts/server/types.js.map +0 -1
- package/build/ts/server/unauthenticated/admin/factory.js +0 -29
- package/build/ts/server/unauthenticated/admin/factory.js.map +0 -1
- package/build/ts/server/unauthenticated/admin/index.js +0 -5
- package/build/ts/server/unauthenticated/admin/index.js.map +0 -1
- package/build/ts/server/unauthenticated/admin/types.js +0 -3
- package/build/ts/server/unauthenticated/admin/types.js.map +0 -1
- package/build/ts/server/unauthenticated/admin/unauthenticated.admin.doc.js +0 -26
- package/build/ts/server/unauthenticated/admin/unauthenticated.admin.doc.js.map +0 -1
- package/build/ts/server/unauthenticated/helpers/get-offline-session.js +0 -22
- package/build/ts/server/unauthenticated/helpers/get-offline-session.js.map +0 -1
- package/build/ts/server/unauthenticated/helpers/index.js +0 -5
- package/build/ts/server/unauthenticated/helpers/index.js.map +0 -1
- package/build/ts/server/unauthenticated/storefront/factory.js +0 -29
- package/build/ts/server/unauthenticated/storefront/factory.js.map +0 -1
- package/build/ts/server/unauthenticated/storefront/index.js +0 -5
- package/build/ts/server/unauthenticated/storefront/index.js.map +0 -1
- package/build/ts/server/unauthenticated/storefront/types.js +0 -3
- package/build/ts/server/unauthenticated/storefront/types.js.map +0 -1
- package/build/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.js +0 -26
- package/build/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.js.map +0 -1
- package/build/ts/server/unauthenticated/types.js +0 -3
- package/build/ts/server/unauthenticated/types.js.map +0 -1
- package/build/ts/server/version.d.ts +0 -2
- package/build/ts/server/version.js +0 -5
- package/build/ts/server/version.js.map +0 -1
- /package/{build → dist}/ts/react/components/AppProvider/AppProvider.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProvider/AppProvider.doc.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProvider/AppProvider.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProvider/index.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProvider/index.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/AppProxyForm.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/AppProxyForm.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/AppProxyForm.doc.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/AppProxyForm.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/index.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyForm/index.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/AppProxyLink.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/AppProxyLink.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/AppProxyLink.doc.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/AppProxyLink.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/index.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyLink/index.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/AppProxyProvider.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/AppProxyProvider.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/AppProxyProvider.doc.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/AppProxyProvider.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/index.d.ts +0 -0
- /package/{build → dist}/ts/react/components/AppProxyProvider/index.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/RemixPolarisLink.d.ts +0 -0
- /package/{build → dist}/ts/react/components/RemixPolarisLink.d.ts.map +0 -0
- /package/{build → dist}/ts/react/components/index.d.ts +0 -0
- /package/{build → dist}/ts/react/components/index.d.ts.map +0 -0
- /package/{build → dist}/ts/react/const.d.ts +0 -0
- /package/{build → dist}/ts/react/const.d.ts.map +0 -0
- /package/{build → dist}/ts/react/index.d.ts +0 -0
- /package/{build → dist}/ts/react/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/adapters/node/index.d.ts +0 -0
- /package/{build → dist}/ts/server/adapters/node/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/adapters/vercel/index.d.ts +0 -0
- /package/{build → dist}/ts/server/adapters/vercel/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/authenticate.admin.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/authenticate.admin.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/authenticate.admin.billing.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/authenticate.admin.billing.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/cancel.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/cancel.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/check.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/check.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/index.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/request.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/request.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/require.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/require.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/billing/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/begin-auth.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/begin-auth.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/create-admin-api-context.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/create-admin-api-context.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/ensure-app-is-embedded-if-required.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/handle-client-error.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/handle-client-error.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/index.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-auth-page.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-auth-page.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-bounce-page.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-bounce-page.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-with-exitiframe.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect-with-exitiframe.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/redirect.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/render-app-bridge.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/render-app-bridge.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/trigger-after-auth-hook.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/validate-redirect-url.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/validate-redirect-url.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/validate-shop-and-host-params.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/helpers/validate-shop-and-host-params.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/auth-code-flow.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/auth-code-flow.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/token-exchange.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/token-exchange.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/strategies/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/admin/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/const.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/const.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/authenticate.flow.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/authenticate.flow.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/flow/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/authenticate.fulfillment-service.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/authenticate.fulfillment-service.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/fulfillment-service/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/add-response-headers.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/add-response-headers.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/app-bridge-url.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/app-bridge-url.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/ensure-cors-headers.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/ensure-cors-headers.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/get-session-token-header.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/get-session-token-header.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/idempotent-promise-handler.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/idempotent-promise-handler.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/index.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/reject-bot-request.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/respond-to-invalid-session-token.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/respond-to-invalid-session-token.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/respond-to-options-request.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/respond-to-options-request.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/validate-session-token.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/helpers/validate-session-token.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/login/login.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/login/login.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/authenticate.public.app-proxy.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/authenticate.public.app-proxy.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/appProxy/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/authenticate.public.checkout.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/authenticate.public.checkout.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/checkout/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/factory.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/factory.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/index.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/public/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/public/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/authenticate.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/authenticate.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/authenticate.webhooks.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/authenticate.webhooks.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/index.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/register.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/register.d.ts.map +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/types.d.ts +0 -0
- /package/{build → dist}/ts/server/authenticate/webhooks/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/boundary/error.d.ts +0 -0
- /package/{build → dist}/ts/server/boundary/error.d.ts.map +0 -0
- /package/{build → dist}/ts/server/boundary/headers.d.ts +0 -0
- /package/{build → dist}/ts/server/boundary/headers.d.ts.map +0 -0
- /package/{build → dist}/ts/server/boundary/index.d.ts +0 -0
- /package/{build → dist}/ts/server/boundary/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/boundary/types.d.ts +0 -0
- /package/{build → dist}/ts/server/boundary/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/authenticate.admin.api.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/admin/authenticate.admin.api.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/factory.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/admin/factory.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/graphql.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/admin/graphql.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/index.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/admin/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/rest.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/admin/rest.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/admin/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/index.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/storefront/authenticate.storefront.api.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/storefront/authenticate.storefront.api.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/storefront/factory.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/storefront/factory.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/storefront/index.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/storefront/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/storefront/types.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/storefront/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/clients/types.d.ts +0 -0
- /package/{build → dist}/ts/server/clients/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/config-types.d.ts +0 -0
- /package/{build → dist}/ts/server/config-types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/errors.d.ts +0 -0
- /package/{build → dist}/ts/server/errors.d.ts.map +0 -0
- /package/{build → dist}/ts/server/index.d.ts +0 -0
- /package/{build → dist}/ts/server/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/override-logger.d.ts +0 -0
- /package/{build → dist}/ts/server/override-logger.d.ts.map +0 -0
- /package/{build → dist}/ts/server/shopify-app.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/shopify-app.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/types.d.ts +0 -0
- /package/{build → dist}/ts/server/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/factory.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/factory.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/index.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/types.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/unauthenticated.admin.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/admin/unauthenticated.admin.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/helpers/get-offline-session.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/helpers/get-offline-session.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/helpers/index.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/helpers/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/factory.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/factory.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/index.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/index.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/types.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/storefront/unauthenticated.storefront.doc.d.ts.map +0 -0
- /package/{build → dist}/ts/server/unauthenticated/types.d.ts +0 -0
- /package/{build → dist}/ts/server/unauthenticated/types.d.ts.map +0 -0
- /package/{build → dist}/ts/server/version.d.ts.map +0 -0
package/dist/esm/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.mjs
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { redirectToBouncePage } from './redirect-to-bounce-page.mjs';
|
|
2
|
+
|
|
3
|
+
const SESSION_TOKEN_PARAM = 'id_token';
|
|
4
|
+
const ensureSessionTokenSearchParamIfRequired = async (params, request) => {
|
|
5
|
+
const { api, logger } = params;
|
|
6
|
+
const url = new URL(request.url);
|
|
7
|
+
const shop = url.searchParams.get('shop');
|
|
8
|
+
const searchParamSessionToken = url.searchParams.get(SESSION_TOKEN_PARAM);
|
|
9
|
+
const isEmbedded = url.searchParams.get('embedded') === '1';
|
|
10
|
+
if (api.config.isEmbeddedApp && isEmbedded && !searchParamSessionToken) {
|
|
11
|
+
logger.debug('Missing session token in search params, going to bounce page', { shop });
|
|
12
|
+
redirectToBouncePage(params, url);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { ensureSessionTokenSearchParamIfRequired };
|
|
17
|
+
//# sourceMappingURL=ensure-session-token-search-param-if-required.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-session-token-search-param-if-required.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/ensure-session-token-search-param-if-required.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIA,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAE1B,MAAA,uCAAuC,GAAG,OACrD,MAAmB,EACnB,OAAgB,KACd;AACF,IAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IAC3C,MAAM,uBAAuB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAC1E,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;IAE5D,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,UAAU,IAAI,CAAC,uBAAuB,EAAE;QACtE,MAAM,CAAC,KAAK,CACV,8DAA8D,EAC9D,EAAC,IAAI,EAAC,CACP,CAAC;AACF,QAAA,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACnC;AACH;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { HttpResponseError } from '@shopify/shopify-api';
|
|
2
|
+
|
|
3
|
+
function handleClientErrorFactory({ request, onError, }) {
|
|
4
|
+
return async function handleClientError({ error, params, session, }) {
|
|
5
|
+
if (error instanceof HttpResponseError !== true) {
|
|
6
|
+
params.logger.debug(`Got a response error from the API: ${error.message}`);
|
|
7
|
+
throw error;
|
|
8
|
+
}
|
|
9
|
+
params.logger.debug(`Got an HTTP response error from the API: ${error.message}`, {
|
|
10
|
+
code: error.response.code,
|
|
11
|
+
statusText: error.response.statusText,
|
|
12
|
+
body: JSON.stringify(error.response.body),
|
|
13
|
+
});
|
|
14
|
+
if (onError) {
|
|
15
|
+
await onError({ request, session, error });
|
|
16
|
+
}
|
|
17
|
+
// forward a minimal copy of the upstream HTTP response instead of an Error:
|
|
18
|
+
throw new Response(JSON.stringify(error.response.body), {
|
|
19
|
+
status: error.response.code,
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': error.response.headers['Content-Type'],
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { handleClientErrorFactory };
|
|
28
|
+
//# sourceMappingURL=handle-client-error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-client-error.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/handle-client-error.ts"],"sourcesContent":[null],"names":[],"mappings":";;SAKgB,wBAAwB,CAAC,EACvC,OAAO,EACP,OAAO,GACkB,EAAA;IACzB,OAAO,eAAe,iBAAiB,CAAC,EACtC,KAAK,EACL,MAAM,EACN,OAAO,GACR,EAAA;AACC,QAAA,IAAI,KAAK,YAAY,iBAAiB,KAAK,IAAI,EAAE;YAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CACjB,CAAsC,mCAAA,EAAA,KAAK,CAAC,OAAO,CAAE,CAAA,CACtD,CAAC;AACF,YAAA,MAAM,KAAK,CAAC;SACb;QAED,MAAM,CAAC,MAAM,CAAC,KAAK,CACjB,4CAA4C,KAAK,CAAC,OAAO,CAAA,CAAE,EAC3D;AACE,YAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;AACzB,YAAA,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;YACrC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC1C,SAAA,CACF,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,MAAM,OAAO,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;SAC1C;;AAGD,QAAA,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACtD,YAAA,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;AAC3B,YAAA,OAAO,EAAE;gBACP,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAQ,CAAC,cAAc,CAAW;AAClE,aAAA;AACF,SAAA,CAAC,CAAC;AACL,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { beginAuth } from './begin-auth.mjs';
|
|
2
|
+
import { redirectWithExitIframe } from './redirect-with-exitiframe.mjs';
|
|
3
|
+
import { redirectWithAppBridgeHeaders } from './redirect-with-app-bridge-headers.mjs';
|
|
4
|
+
|
|
5
|
+
async function redirectToAuthPage(params, request, shop, isOnline = false) {
|
|
6
|
+
const { config } = params;
|
|
7
|
+
const url = new URL(request.url);
|
|
8
|
+
const isEmbeddedRequest = url.searchParams.get('embedded') === '1';
|
|
9
|
+
const isXhrRequest = request.headers.get('authorization');
|
|
10
|
+
if (isXhrRequest) {
|
|
11
|
+
const redirectUri = new URL(config.auth.path, config.appUrl);
|
|
12
|
+
redirectUri.searchParams.set('shop', shop);
|
|
13
|
+
redirectWithAppBridgeHeaders(redirectUri.toString());
|
|
14
|
+
}
|
|
15
|
+
else if (isEmbeddedRequest) {
|
|
16
|
+
redirectWithExitIframe(params, request, shop);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw await beginAuth(params, request, isOnline, shop);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { redirectToAuthPage };
|
|
24
|
+
//# sourceMappingURL=redirect-to-auth-page.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-to-auth-page.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect-to-auth-page.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMO,eAAe,kBAAkB,CACtC,MAAmB,EACnB,OAAgB,EAChB,IAAY,EACZ,QAAQ,GAAG,KAAK,EAAA;AAEhB,IAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,IAAA,MAAM,iBAAiB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE1D,IAAI,YAAY,EAAE;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAA,4BAA4B,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;KACtD;SAAM,IAAI,iBAAiB,EAAE;AAC5B,QAAA,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KAC/C;SAAM;QACL,MAAM,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;KACxD;AACH;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
|
|
3
|
+
const redirectToBouncePage = (params, url) => {
|
|
4
|
+
const { config } = params;
|
|
5
|
+
// Make sure we always point to the configured app URL so it also works behind reverse proxies (that alter the Host
|
|
6
|
+
// header).
|
|
7
|
+
const searchParams = url.searchParams;
|
|
8
|
+
searchParams.delete('id_token');
|
|
9
|
+
searchParams.set('shopify-reload', `${config.appUrl}${url.pathname}?${searchParams.toString()}`);
|
|
10
|
+
// eslint-disable-next-line no-warning-comments
|
|
11
|
+
// TODO Make sure this works on chrome without a tunnel (weird HTTPS redirect issue)
|
|
12
|
+
// https://github.com/orgs/Shopify/projects/6899/views/1?pane=issue&itemId=28376650
|
|
13
|
+
throw redirect(`${config.auth.patchSessionTokenPath}?${searchParams.toString()}`);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { redirectToBouncePage };
|
|
17
|
+
//# sourceMappingURL=redirect-to-bounce-page.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-to-bounce-page.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect-to-bounce-page.ts"],"sourcesContent":[null],"names":[],"mappings":";;MAIa,oBAAoB,GAAG,CAAC,MAAmB,EAAE,GAAQ,KAAW;AAC3E,IAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;;;AAIxB,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;AACtC,IAAA,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,YAAY,CAAC,GAAG,CACd,gBAAgB,EAChB,CAAG,EAAA,MAAM,CAAC,MAAM,CAAA,EAAG,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAA,CAAE,CAC7D,CAAC;;;;AAKF,IAAA,MAAM,QAAQ,CACZ,CAAG,EAAA,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAA,CAAA,EAAI,YAAY,CAAC,QAAQ,EAAE,CAAA,CAAE,CAClE,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
|
|
3
|
+
async function redirectToShopifyOrAppRoot(request, params, responseHeaders) {
|
|
4
|
+
const { api } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
const host = api.utils.sanitizeHost(url.searchParams.get('host'));
|
|
7
|
+
const shop = api.utils.sanitizeShop(url.searchParams.get('shop'));
|
|
8
|
+
const redirectUrl = api.config.isEmbeddedApp
|
|
9
|
+
? await api.auth.getEmbeddedAppUrl({ rawRequest: request })
|
|
10
|
+
: `/?shop=${shop}&host=${encodeURIComponent(host)}`;
|
|
11
|
+
throw redirect(redirectUrl, { headers: responseHeaders });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { redirectToShopifyOrAppRoot };
|
|
15
|
+
//# sourceMappingURL=redirect-to-shopify-or-app-root.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-to-shopify-or-app-root.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect-to-shopify-or-app-root.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIO,eAAe,0BAA0B,CAC9C,OAAgB,EAChB,MAAmB,EACnB,eAAyB,EAAA;AAEzB,IAAA,MAAM,EAAC,GAAG,EAAC,GAAG,MAAM,CAAC;IACrB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAE,CAAC;AACpE,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAE,CAAC;AAEpE,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa;AAC1C,UAAE,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC;UACvD,UAAU,IAAI,CAAA,MAAA,EAAS,kBAAkB,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;IAEtD,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;AAC1D;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { REAUTH_URL_HEADER } from '../../const.mjs';
|
|
2
|
+
|
|
3
|
+
function redirectWithAppBridgeHeaders(redirectUri) {
|
|
4
|
+
throw new Response(undefined, {
|
|
5
|
+
status: 401,
|
|
6
|
+
statusText: 'Unauthorized',
|
|
7
|
+
headers: getAppBridgeHeaders(redirectUri),
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function getAppBridgeHeaders(url) {
|
|
11
|
+
return new Headers({ [REAUTH_URL_HEADER]: url });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { getAppBridgeHeaders, redirectWithAppBridgeHeaders };
|
|
15
|
+
//# sourceMappingURL=redirect-with-app-bridge-headers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-with-app-bridge-headers.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEM,SAAU,4BAA4B,CAAC,WAAmB,EAAA;AAC9D,IAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC;AAC1C,KAAA,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,mBAAmB,CAAC,GAAW,EAAA;IAC7C,OAAO,IAAI,OAAO,CAAC,EAAC,CAAC,iBAAiB,GAAG,GAAG,EAAC,CAAC,CAAC;AACjD;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
|
|
3
|
+
function redirectWithExitIframe(params, request, shop) {
|
|
4
|
+
const { api, config } = params;
|
|
5
|
+
const url = new URL(request.url);
|
|
6
|
+
const queryParams = url.searchParams;
|
|
7
|
+
const host = api.utils.sanitizeHost(queryParams.get('host'));
|
|
8
|
+
queryParams.set('shop', shop);
|
|
9
|
+
let destination = `${config.auth.path}?shop=${shop}`;
|
|
10
|
+
if (host) {
|
|
11
|
+
queryParams.set('host', host);
|
|
12
|
+
destination = `${destination}&host=${host}`;
|
|
13
|
+
}
|
|
14
|
+
queryParams.set('exitIframe', destination);
|
|
15
|
+
throw redirect(`${config.auth.exitIframePath}?${queryParams.toString()}`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { redirectWithExitIframe };
|
|
19
|
+
//# sourceMappingURL=redirect-with-exitiframe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect-with-exitiframe.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect-with-exitiframe.ts"],"sourcesContent":[null],"names":[],"mappings":";;SAIgB,sBAAsB,CACpC,MAAmB,EACnB,OAAgB,EAChB,IAAY,EAAA;AAEZ,IAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEjC,IAAA,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;AAErC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;AAE9D,IAAA,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE9B,IAAI,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,CAAC;IAErD,IAAI,IAAI,EAAE;AACR,QAAA,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9B,QAAA,WAAW,GAAG,CAAG,EAAA,WAAW,CAAS,MAAA,EAAA,IAAI,EAAE,CAAC;KAC7C;AACD,IAAA,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAE3C,IAAA,MAAM,QAAQ,CAAC,CAAG,EAAA,MAAM,CAAC,IAAI,CAAC,cAAc,CAAA,CAAA,EAAI,WAAW,CAAC,QAAQ,EAAE,CAAA,CAAE,CAAC,CAAC;AAC5E;;;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
import { getSessionTokenHeader } from '../../helpers/get-session-token-header.mjs';
|
|
3
|
+
import { renderAppBridge } from './render-app-bridge.mjs';
|
|
4
|
+
import { redirectWithAppBridgeHeaders } from './redirect-with-app-bridge-headers.mjs';
|
|
5
|
+
|
|
6
|
+
function redirectFactory(params, request) {
|
|
7
|
+
const { config } = params;
|
|
8
|
+
return function redirect$1(url, init) {
|
|
9
|
+
const { searchParams } = new URL(request.url);
|
|
10
|
+
const parsedUrl = new URL(url, config.appUrl);
|
|
11
|
+
const isSameOrigin = parsedUrl.origin === config.appUrl;
|
|
12
|
+
if (isSameOrigin || url.startsWith('/')) {
|
|
13
|
+
searchParams.forEach((value, key) => {
|
|
14
|
+
if (!parsedUrl.searchParams.has(key)) {
|
|
15
|
+
parsedUrl.searchParams.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
const target = (typeof init !== 'number' && init?.target) || '_self';
|
|
20
|
+
if (target === '_self') {
|
|
21
|
+
if (isBounceRequest(request)) {
|
|
22
|
+
throw renderAppBridge(params, request, {
|
|
23
|
+
url: parsedUrl.toString(),
|
|
24
|
+
target,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
return redirect(parsedUrl.toString(), init);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (isDataRequest(request)) {
|
|
32
|
+
throw redirectWithAppBridgeHeaders(parsedUrl.toString());
|
|
33
|
+
}
|
|
34
|
+
else if (isEmbeddedRequest(request)) {
|
|
35
|
+
throw renderAppBridge(params, request, {
|
|
36
|
+
url: parsedUrl.toString(),
|
|
37
|
+
target,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return redirect(url, init);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function isBounceRequest(request) {
|
|
44
|
+
return (Boolean(getSessionTokenHeader(request)) &&
|
|
45
|
+
request.headers.has('X-Shopify-Bounce'));
|
|
46
|
+
}
|
|
47
|
+
function isDataRequest(request) {
|
|
48
|
+
const isGet = request.method === 'GET';
|
|
49
|
+
const sessionTokenHeader = Boolean(getSessionTokenHeader(request));
|
|
50
|
+
return (sessionTokenHeader &&
|
|
51
|
+
!isBounceRequest(request) &&
|
|
52
|
+
(!isEmbeddedRequest(request) || !isGet));
|
|
53
|
+
}
|
|
54
|
+
function isEmbeddedRequest(request) {
|
|
55
|
+
const { searchParams } = new URL(request.url);
|
|
56
|
+
return searchParams.get('embedded') === '1';
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { redirectFactory };
|
|
60
|
+
//# sourceMappingURL=redirect.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirect.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/redirect.ts"],"sourcesContent":[null],"names":["redirect","remixRedirect"],"mappings":";;;;;AAkBgB,SAAA,eAAe,CAC7B,MAAmB,EACnB,OAAgB,EAAA;AAEhB,IAAA,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;AAExB,IAAA,OAAO,SAASA,UAAQ,CAAC,GAAG,EAAE,IAAkB,EAAA;QAC9C,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QACxD,IAAI,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACvC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;gBAClC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACpC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACxC;AACH,aAAC,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AACrE,QAAA,IAAI,MAAM,KAAK,OAAO,EAAE;AACtB,YAAA,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE;AAC5B,gBAAA,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,oBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;oBACzB,MAAM;AACP,iBAAA,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAOC,QAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;aAClD;SACF;AAAM,aAAA,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;AACjC,YAAA,MAAM,4BAA4B,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC1D;AAAM,aAAA,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACrC,gBAAA,GAAG,EAAE,SAAS,CAAC,QAAQ,EAAE;gBACzB,MAAM;AACP,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,OAAOA,QAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAClC,KAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB,EAAA;AACvC,IAAA,QACE,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACvC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAA;AACrC,IAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IACvC,MAAM,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnE,IAAA,QACE,kBAAkB;QAClB,CAAC,eAAe,CAAC,OAAO,CAAC;SACxB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACvC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB,EAAA;IACzC,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5C,OAAO,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC;AAC9C;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { appBridgeUrl } from '../../helpers/app-bridge-url.mjs';
|
|
2
|
+
import { addDocumentResponseHeaders } from '../../helpers/add-response-headers.mjs';
|
|
3
|
+
import { sanitizeRedirectUrl } from './validate-redirect-url.mjs';
|
|
4
|
+
|
|
5
|
+
function renderAppBridge({ config }, request, redirectTo) {
|
|
6
|
+
let redirectToScript = '';
|
|
7
|
+
if (redirectTo) {
|
|
8
|
+
const destination = sanitizeRedirectUrl(config.appUrl, redirectTo.url);
|
|
9
|
+
const target = redirectTo.target ?? '_top';
|
|
10
|
+
redirectToScript = `<script>window.open(${JSON.stringify(destination.toString())}, ${JSON.stringify(target)})</script>`;
|
|
11
|
+
}
|
|
12
|
+
const responseHeaders = new Headers({
|
|
13
|
+
'content-type': 'text/html;charset=utf-8',
|
|
14
|
+
});
|
|
15
|
+
addDocumentResponseHeaders(responseHeaders, config.isEmbeddedApp, new URL(request.url).searchParams.get('shop'));
|
|
16
|
+
throw new Response(`
|
|
17
|
+
<script data-api-key="${config.apiKey}" src="${appBridgeUrl()}"></script>
|
|
18
|
+
${redirectToScript}
|
|
19
|
+
`, { headers: responseHeaders });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { renderAppBridge };
|
|
23
|
+
//# sourceMappingURL=render-app-bridge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-app-bridge.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/render-app-bridge.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAaM,SAAU,eAAe,CAC7B,EAAC,MAAM,EAAc,EACrB,OAAgB,EAChB,UAA8B,EAAA;IAE9B,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,UAAU,EAAE;AACd,QAAA,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAEvE,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC;AAE3C,QAAA,gBAAgB,GAAG,CAAuB,oBAAA,EAAA,IAAI,CAAC,SAAS,CACtD,WAAW,CAAC,QAAQ,EAAE,CACvB,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;KAC1C;AAED,IAAA,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC;AAClC,QAAA,cAAc,EAAE,yBAAyB;AAC1C,KAAA,CAAC,CAAC;IACH,0BAA0B,CACxB,eAAe,EACf,MAAM,CAAC,aAAa,EACpB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAC9C,CAAC;IAEF,MAAM,IAAI,QAAQ,CAChB,CAAA;AAC0B,4BAAA,EAAA,MAAM,CAAC,MAAM,CAAU,OAAA,EAAA,YAAY,EAAE,CAAA;QAC3D,gBAAgB,CAAA;AACnB,IAAA,CAAA,EACD,EAAC,OAAO,EAAE,eAAe,EAAC,CAC3B,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createAdminApiContext } from './create-admin-api-context.mjs';
|
|
2
|
+
|
|
3
|
+
async function triggerAfterAuthHook(params, session, request, authStrategy) {
|
|
4
|
+
const { config, logger } = params;
|
|
5
|
+
if (config.hooks.afterAuth) {
|
|
6
|
+
logger.info('Running afterAuth hook');
|
|
7
|
+
await config.hooks.afterAuth({
|
|
8
|
+
session,
|
|
9
|
+
admin: createAdminApiContext(session, params, authStrategy.handleClientError(request)),
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { triggerAfterAuthHook };
|
|
15
|
+
//# sourceMappingURL=trigger-after-auth-hook.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-after-auth-hook.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/trigger-after-auth-hook.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAOO,eAAe,oBAAoB,CAGxC,MAAmB,EACnB,OAAgB,EAChB,OAAgB,EAChB,YAAmC,EAAA;AAEnC,IAAA,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAChC,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AACtC,QAAA,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;YAC3B,OAAO;AACP,YAAA,KAAK,EAAE,qBAAqB,CAC1B,OAAO,EACP,MAAM,EACN,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CACxC;AACF,SAAA,CAAC,CAAC;KACJ;AACH;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ShopifyError } from '@shopify/shopify-api';
|
|
2
|
+
|
|
3
|
+
const FILE_URI_MATCH = /\/\/\//;
|
|
4
|
+
const INVALID_RELATIVE_URL = /[/\\][/\\]/;
|
|
5
|
+
const WHITESPACE_CHARACTER = /\s/;
|
|
6
|
+
const VALID_PROTOCOLS = ['https:', 'http:'];
|
|
7
|
+
function isSafe(domain, redirectUrl, requireSSL = true) {
|
|
8
|
+
if (typeof redirectUrl !== 'string') {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (FILE_URI_MATCH.test(redirectUrl) ||
|
|
12
|
+
WHITESPACE_CHARACTER.test(redirectUrl)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
let url;
|
|
16
|
+
try {
|
|
17
|
+
url = new URL(redirectUrl, domain);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (INVALID_RELATIVE_URL.test(url.pathname)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (!VALID_PROTOCOLS.includes(url.protocol)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (requireSSL && url.protocol !== 'https:') {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
function sanitizeRedirectUrl(domain, redirectUrl, options = {}) {
|
|
34
|
+
if (isSafe(domain, redirectUrl, options.requireSSL)) {
|
|
35
|
+
return new URL(redirectUrl, domain);
|
|
36
|
+
}
|
|
37
|
+
else if (options.throwOnInvalid === false) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
throw new ShopifyError('Invalid URL. Refusing to redirect');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { sanitizeRedirectUrl };
|
|
46
|
+
//# sourceMappingURL=validate-redirect-url.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-redirect-url.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/validate-redirect-url.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAUA,MAAM,cAAc,GAAG,QAAQ,CAAC;AAChC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAC1C,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE5C,SAAS,MAAM,CACb,MAAc,EACd,WAAoB,EACpB,aAAkC,IAAI,EAAA;AAEtC,IAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACnC,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IACE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAChC,QAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EACtC;AACA,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAI,GAAQ,CAAC;AAEb,IAAA,IAAI;QACF,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KACpC;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,KAAK,CAAC;KACd;IAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3C,QAAA,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC3C,QAAA,OAAO,KAAK,CAAC;KACd;IAED,IAAI,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC3C,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAEK,SAAU,mBAAmB,CACjC,MAAc,EACd,WAAoB,EACpB,UAAsB,EAAgB,EAAA;IAEtC,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;AACnD,QAAA,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAqC,CAAC;KACzE;AAAM,SAAA,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;AAC3C,QAAA,OAAO,SAA6C,CAAC;KACtD;SAAM;AACL,QAAA,MAAM,IAAI,YAAY,CAAC,mCAAmC,CAAC,CAAC;KAC7D;AACH;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
|
|
3
|
+
function validateShopAndHostParams(params, request) {
|
|
4
|
+
const { api, config, logger } = params;
|
|
5
|
+
if (config.isEmbeddedApp) {
|
|
6
|
+
const url = new URL(request.url);
|
|
7
|
+
const shop = api.utils.sanitizeShop(url.searchParams.get('shop'));
|
|
8
|
+
if (!shop) {
|
|
9
|
+
logger.debug('Missing or invalid shop, redirecting to login path', {
|
|
10
|
+
shop,
|
|
11
|
+
});
|
|
12
|
+
throw redirect(config.auth.loginPath);
|
|
13
|
+
}
|
|
14
|
+
const host = api.utils.sanitizeHost(url.searchParams.get('host'));
|
|
15
|
+
if (!host) {
|
|
16
|
+
logger.debug('Invalid host, redirecting to login path', {
|
|
17
|
+
host: url.searchParams.get('host'),
|
|
18
|
+
});
|
|
19
|
+
throw redirect(config.auth.loginPath);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { validateShopAndHostParams };
|
|
25
|
+
//# sourceMappingURL=validate-shop-and-host-params.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-shop-and-host-params.mjs","sources":["../../../../../../../src/server/authenticate/admin/helpers/validate-shop-and-host-params.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGgB,SAAA,yBAAyB,CACvC,MAAmB,EACnB,OAAgB,EAAA;IAEhB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAErC,IAAA,IAAI,MAAM,CAAC,aAAa,EAAE;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE;gBACjE,IAAI;AACL,aAAA,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvC;AAED,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBACtD,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;AACnC,aAAA,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACvC;KACF;AACH;;;;"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { CookieNotFound, InvalidHmacError, InvalidOAuthError, HttpResponseError, GraphqlQueryError } from '@shopify/shopify-api';
|
|
2
|
+
import { beginAuth } from '../helpers/begin-auth.mjs';
|
|
3
|
+
import { redirectToShopifyOrAppRoot } from '../helpers/redirect-to-shopify-or-app-root.mjs';
|
|
4
|
+
import '@remix-run/server-runtime';
|
|
5
|
+
import { handleClientErrorFactory } from '../helpers/handle-client-error.mjs';
|
|
6
|
+
import { redirectToAuthPage } from '../helpers/redirect-to-auth-page.mjs';
|
|
7
|
+
import { redirectWithExitIframe } from '../helpers/redirect-with-exitiframe.mjs';
|
|
8
|
+
import { getSessionTokenHeader } from '../../helpers/get-session-token-header.mjs';
|
|
9
|
+
import { triggerAfterAuthHook } from '../helpers/trigger-after-auth-hook.mjs';
|
|
10
|
+
import { validateShopAndHostParams } from '../helpers/validate-shop-and-host-params.mjs';
|
|
11
|
+
import 'isbot';
|
|
12
|
+
|
|
13
|
+
class AuthCodeFlowStrategy {
|
|
14
|
+
constructor({ api, config, logger }) {
|
|
15
|
+
this.api = api;
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
}
|
|
19
|
+
async respondToOAuthRequests(request) {
|
|
20
|
+
const { api, config } = this;
|
|
21
|
+
const url = new URL(request.url);
|
|
22
|
+
const isAuthRequest = url.pathname === config.auth.path;
|
|
23
|
+
const isAuthCallbackRequest = url.pathname === config.auth.callbackPath;
|
|
24
|
+
if (isAuthRequest || isAuthCallbackRequest) {
|
|
25
|
+
const shop = api.utils.sanitizeShop(url.searchParams.get('shop'));
|
|
26
|
+
if (!shop)
|
|
27
|
+
throw new Response('Shop param is invalid', { status: 400 });
|
|
28
|
+
if (isAuthRequest) {
|
|
29
|
+
throw await this.handleAuthBeginRequest(request, shop);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw await this.handleAuthCallbackRequest(request, shop);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!getSessionTokenHeader(request)) {
|
|
36
|
+
// This is a document request that doesn't contain a session token. We check if the app is installed.
|
|
37
|
+
// If the app isn't installed, we initiate the OAuth auth code flow.
|
|
38
|
+
// Requests with a header can only happen after the app is installed.
|
|
39
|
+
await this.ensureInstalledOnShop(request);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async authenticate(request, sessionContext) {
|
|
43
|
+
const { api, config, logger } = this;
|
|
44
|
+
const { shop, session } = sessionContext;
|
|
45
|
+
if (!session) {
|
|
46
|
+
logger.debug('No session found, redirecting to OAuth', { shop });
|
|
47
|
+
await redirectToAuthPage({ config, logger, api }, request, shop);
|
|
48
|
+
}
|
|
49
|
+
else if (!session.isActive(config.scopes)) {
|
|
50
|
+
logger.debug('Found a session, but it has expired, redirecting to OAuth', { shop });
|
|
51
|
+
await redirectToAuthPage({ config, logger, api }, request, shop);
|
|
52
|
+
}
|
|
53
|
+
logger.debug('Found a valid session', { shop });
|
|
54
|
+
return session;
|
|
55
|
+
}
|
|
56
|
+
handleClientError(request) {
|
|
57
|
+
const { api, config, logger } = this;
|
|
58
|
+
return handleClientErrorFactory({
|
|
59
|
+
request,
|
|
60
|
+
onError: async ({ session, error }) => {
|
|
61
|
+
if (error.response.code === 401) {
|
|
62
|
+
throw await redirectToAuthPage({ api, config, logger }, request, session.shop);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async ensureInstalledOnShop(request) {
|
|
68
|
+
const { api, config, logger } = this;
|
|
69
|
+
validateShopAndHostParams({ api, config, logger }, request);
|
|
70
|
+
const url = new URL(request.url);
|
|
71
|
+
let shop = url.searchParams.get('shop');
|
|
72
|
+
// Ensure app is installed
|
|
73
|
+
logger.debug('Ensuring app is installed on shop', { shop });
|
|
74
|
+
if (!(await this.hasValidOfflineId(request))) {
|
|
75
|
+
logger.info("Could not find a shop, can't authenticate request");
|
|
76
|
+
throw new Response(undefined, {
|
|
77
|
+
status: 400,
|
|
78
|
+
statusText: 'Bad Request',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
const offlineSession = await this.getOfflineSession(request);
|
|
82
|
+
const isEmbedded = url.searchParams.get('embedded') === '1';
|
|
83
|
+
if (!offlineSession) {
|
|
84
|
+
logger.info("Shop hasn't installed app yet, redirecting to OAuth", {
|
|
85
|
+
shop,
|
|
86
|
+
});
|
|
87
|
+
if (isEmbedded) {
|
|
88
|
+
redirectWithExitIframe({ api, config, logger }, request, shop);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw await beginAuth({ api, config, logger }, request, false, shop);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
shop = shop || offlineSession.shop;
|
|
95
|
+
if (config.isEmbeddedApp && !isEmbedded) {
|
|
96
|
+
try {
|
|
97
|
+
logger.debug('Ensuring offline session is valid before embedding', {
|
|
98
|
+
shop,
|
|
99
|
+
});
|
|
100
|
+
await this.testSession(offlineSession);
|
|
101
|
+
logger.debug('Offline session is still valid, embedding app', { shop });
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
await this.handleInvalidOfflineSession(error, request, shop);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async handleAuthBeginRequest(request, shop) {
|
|
109
|
+
const { api, config, logger } = this;
|
|
110
|
+
logger.info('Handling OAuth begin request', { shop });
|
|
111
|
+
// If we're loading from an iframe, we need to break out of it
|
|
112
|
+
if (config.isEmbeddedApp &&
|
|
113
|
+
request.headers.get('Sec-Fetch-Dest') === 'iframe') {
|
|
114
|
+
logger.debug('Auth request in iframe detected, exiting iframe', { shop });
|
|
115
|
+
throw redirectWithExitIframe({ api, config, logger }, request, shop);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw await beginAuth({ api, config, logger }, request, false, shop);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async handleAuthCallbackRequest(request, shop) {
|
|
122
|
+
const { api, config, logger } = this;
|
|
123
|
+
logger.info('Handling OAuth callback request');
|
|
124
|
+
try {
|
|
125
|
+
const { session, headers: responseHeaders } = await api.auth.callback({
|
|
126
|
+
rawRequest: request,
|
|
127
|
+
});
|
|
128
|
+
await config.sessionStorage.storeSession(session);
|
|
129
|
+
if (config.useOnlineTokens && !session.isOnline) {
|
|
130
|
+
logger.info('Requesting online access token for offline session');
|
|
131
|
+
await beginAuth({ api, config, logger }, request, true, shop);
|
|
132
|
+
}
|
|
133
|
+
await triggerAfterAuthHook({ api, config, logger }, session, request, this);
|
|
134
|
+
throw await redirectToShopifyOrAppRoot(request, { api, config, logger }, responseHeaders);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (error instanceof Response)
|
|
138
|
+
throw error;
|
|
139
|
+
throw await this.oauthCallbackError(error, request, shop);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async getOfflineSession(request) {
|
|
143
|
+
const offlineId = await this.getOfflineSessionId(request);
|
|
144
|
+
return this.config.sessionStorage.loadSession(offlineId);
|
|
145
|
+
}
|
|
146
|
+
async hasValidOfflineId(request) {
|
|
147
|
+
return Boolean(await this.getOfflineSessionId(request));
|
|
148
|
+
}
|
|
149
|
+
async getOfflineSessionId(request) {
|
|
150
|
+
const { api } = this;
|
|
151
|
+
const url = new URL(request.url);
|
|
152
|
+
const shop = url.searchParams.get('shop');
|
|
153
|
+
return shop
|
|
154
|
+
? api.session.getOfflineId(shop)
|
|
155
|
+
: api.session.getCurrentId({ isOnline: false, rawRequest: request });
|
|
156
|
+
}
|
|
157
|
+
async testSession(session) {
|
|
158
|
+
const { api } = this;
|
|
159
|
+
const client = new api.clients.Graphql({
|
|
160
|
+
session,
|
|
161
|
+
});
|
|
162
|
+
await client.request(`#graphql
|
|
163
|
+
query shopifyAppShopName {
|
|
164
|
+
shop {
|
|
165
|
+
name
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
`);
|
|
169
|
+
}
|
|
170
|
+
async oauthCallbackError(error, request, shop) {
|
|
171
|
+
const { logger } = this;
|
|
172
|
+
logger.error('Error during OAuth callback', { error: error.message });
|
|
173
|
+
if (error instanceof CookieNotFound) {
|
|
174
|
+
return this.handleAuthBeginRequest(request, shop);
|
|
175
|
+
}
|
|
176
|
+
if (error instanceof InvalidHmacError ||
|
|
177
|
+
error instanceof InvalidOAuthError) {
|
|
178
|
+
return new Response(undefined, {
|
|
179
|
+
status: 400,
|
|
180
|
+
statusText: 'Invalid OAuth Request',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return new Response(undefined, {
|
|
184
|
+
status: 500,
|
|
185
|
+
statusText: 'Internal Server Error',
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
async handleInvalidOfflineSession(error, request, shop) {
|
|
189
|
+
const { api, logger, config } = this;
|
|
190
|
+
if (error instanceof HttpResponseError) {
|
|
191
|
+
if (error.response.code === 401) {
|
|
192
|
+
logger.info('Shop session is no longer valid, redirecting to OAuth', {
|
|
193
|
+
shop,
|
|
194
|
+
});
|
|
195
|
+
throw await beginAuth({ api, config, logger }, request, false, shop);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
const message = JSON.stringify(error.response.body, null, 2);
|
|
199
|
+
logger.error(`Unexpected error during session validation: ${message}`, {
|
|
200
|
+
shop,
|
|
201
|
+
});
|
|
202
|
+
throw new Response(undefined, {
|
|
203
|
+
status: error.response.code,
|
|
204
|
+
statusText: error.response.statusText,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else if (error instanceof GraphqlQueryError) {
|
|
209
|
+
const context = { shop };
|
|
210
|
+
if (error.response) {
|
|
211
|
+
context.response = JSON.stringify(error.body);
|
|
212
|
+
}
|
|
213
|
+
logger.error(`Unexpected error during session validation: ${error.message}`, context);
|
|
214
|
+
throw new Response(undefined, {
|
|
215
|
+
status: 500,
|
|
216
|
+
statusText: 'Internal Server Error',
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
export { AuthCodeFlowStrategy };
|
|
223
|
+
//# sourceMappingURL=auth-code-flow.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-code-flow.mjs","sources":["../../../../../../../src/server/authenticate/admin/strategies/auth-code-flow.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|