@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
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shopifyApi = require('@shopify/shopify-api');
|
|
4
|
+
var beginAuth = require('../helpers/begin-auth.js');
|
|
5
|
+
var redirectToShopifyOrAppRoot = require('../helpers/redirect-to-shopify-or-app-root.js');
|
|
6
|
+
require('@remix-run/server-runtime');
|
|
7
|
+
var handleClientError = require('../helpers/handle-client-error.js');
|
|
8
|
+
var redirectToAuthPage = require('../helpers/redirect-to-auth-page.js');
|
|
9
|
+
var redirectWithExitiframe = require('../helpers/redirect-with-exitiframe.js');
|
|
10
|
+
var getSessionTokenHeader = require('../../helpers/get-session-token-header.js');
|
|
11
|
+
var triggerAfterAuthHook = require('../helpers/trigger-after-auth-hook.js');
|
|
12
|
+
var validateShopAndHostParams = require('../helpers/validate-shop-and-host-params.js');
|
|
13
|
+
require('isbot');
|
|
14
|
+
|
|
15
|
+
class AuthCodeFlowStrategy {
|
|
16
|
+
constructor({ api, config, logger }) {
|
|
17
|
+
this.api = api;
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.logger = logger;
|
|
20
|
+
}
|
|
21
|
+
async respondToOAuthRequests(request) {
|
|
22
|
+
const { api, config } = this;
|
|
23
|
+
const url = new URL(request.url);
|
|
24
|
+
const isAuthRequest = url.pathname === config.auth.path;
|
|
25
|
+
const isAuthCallbackRequest = url.pathname === config.auth.callbackPath;
|
|
26
|
+
if (isAuthRequest || isAuthCallbackRequest) {
|
|
27
|
+
const shop = api.utils.sanitizeShop(url.searchParams.get('shop'));
|
|
28
|
+
if (!shop)
|
|
29
|
+
throw new Response('Shop param is invalid', { status: 400 });
|
|
30
|
+
if (isAuthRequest) {
|
|
31
|
+
throw await this.handleAuthBeginRequest(request, shop);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw await this.handleAuthCallbackRequest(request, shop);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!getSessionTokenHeader.getSessionTokenHeader(request)) {
|
|
38
|
+
// This is a document request that doesn't contain a session token. We check if the app is installed.
|
|
39
|
+
// If the app isn't installed, we initiate the OAuth auth code flow.
|
|
40
|
+
// Requests with a header can only happen after the app is installed.
|
|
41
|
+
await this.ensureInstalledOnShop(request);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async authenticate(request, sessionContext) {
|
|
45
|
+
const { api, config, logger } = this;
|
|
46
|
+
const { shop, session } = sessionContext;
|
|
47
|
+
if (!session) {
|
|
48
|
+
logger.debug('No session found, redirecting to OAuth', { shop });
|
|
49
|
+
await redirectToAuthPage.redirectToAuthPage({ config, logger, api }, request, shop);
|
|
50
|
+
}
|
|
51
|
+
else if (!session.isActive(config.scopes)) {
|
|
52
|
+
logger.debug('Found a session, but it has expired, redirecting to OAuth', { shop });
|
|
53
|
+
await redirectToAuthPage.redirectToAuthPage({ config, logger, api }, request, shop);
|
|
54
|
+
}
|
|
55
|
+
logger.debug('Found a valid session', { shop });
|
|
56
|
+
return session;
|
|
57
|
+
}
|
|
58
|
+
handleClientError(request) {
|
|
59
|
+
const { api, config, logger } = this;
|
|
60
|
+
return handleClientError.handleClientErrorFactory({
|
|
61
|
+
request,
|
|
62
|
+
onError: async ({ session, error }) => {
|
|
63
|
+
if (error.response.code === 401) {
|
|
64
|
+
throw await redirectToAuthPage.redirectToAuthPage({ api, config, logger }, request, session.shop);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
async ensureInstalledOnShop(request) {
|
|
70
|
+
const { api, config, logger } = this;
|
|
71
|
+
validateShopAndHostParams.validateShopAndHostParams({ api, config, logger }, request);
|
|
72
|
+
const url = new URL(request.url);
|
|
73
|
+
let shop = url.searchParams.get('shop');
|
|
74
|
+
// Ensure app is installed
|
|
75
|
+
logger.debug('Ensuring app is installed on shop', { shop });
|
|
76
|
+
if (!(await this.hasValidOfflineId(request))) {
|
|
77
|
+
logger.info("Could not find a shop, can't authenticate request");
|
|
78
|
+
throw new Response(undefined, {
|
|
79
|
+
status: 400,
|
|
80
|
+
statusText: 'Bad Request',
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const offlineSession = await this.getOfflineSession(request);
|
|
84
|
+
const isEmbedded = url.searchParams.get('embedded') === '1';
|
|
85
|
+
if (!offlineSession) {
|
|
86
|
+
logger.info("Shop hasn't installed app yet, redirecting to OAuth", {
|
|
87
|
+
shop,
|
|
88
|
+
});
|
|
89
|
+
if (isEmbedded) {
|
|
90
|
+
redirectWithExitiframe.redirectWithExitIframe({ api, config, logger }, request, shop);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw await beginAuth.beginAuth({ api, config, logger }, request, false, shop);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
shop = shop || offlineSession.shop;
|
|
97
|
+
if (config.isEmbeddedApp && !isEmbedded) {
|
|
98
|
+
try {
|
|
99
|
+
logger.debug('Ensuring offline session is valid before embedding', {
|
|
100
|
+
shop,
|
|
101
|
+
});
|
|
102
|
+
await this.testSession(offlineSession);
|
|
103
|
+
logger.debug('Offline session is still valid, embedding app', { shop });
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
await this.handleInvalidOfflineSession(error, request, shop);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async handleAuthBeginRequest(request, shop) {
|
|
111
|
+
const { api, config, logger } = this;
|
|
112
|
+
logger.info('Handling OAuth begin request', { shop });
|
|
113
|
+
// If we're loading from an iframe, we need to break out of it
|
|
114
|
+
if (config.isEmbeddedApp &&
|
|
115
|
+
request.headers.get('Sec-Fetch-Dest') === 'iframe') {
|
|
116
|
+
logger.debug('Auth request in iframe detected, exiting iframe', { shop });
|
|
117
|
+
throw redirectWithExitiframe.redirectWithExitIframe({ api, config, logger }, request, shop);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
throw await beginAuth.beginAuth({ api, config, logger }, request, false, shop);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async handleAuthCallbackRequest(request, shop) {
|
|
124
|
+
const { api, config, logger } = this;
|
|
125
|
+
logger.info('Handling OAuth callback request');
|
|
126
|
+
try {
|
|
127
|
+
const { session, headers: responseHeaders } = await api.auth.callback({
|
|
128
|
+
rawRequest: request,
|
|
129
|
+
});
|
|
130
|
+
await config.sessionStorage.storeSession(session);
|
|
131
|
+
if (config.useOnlineTokens && !session.isOnline) {
|
|
132
|
+
logger.info('Requesting online access token for offline session');
|
|
133
|
+
await beginAuth.beginAuth({ api, config, logger }, request, true, shop);
|
|
134
|
+
}
|
|
135
|
+
await triggerAfterAuthHook.triggerAfterAuthHook({ api, config, logger }, session, request, this);
|
|
136
|
+
throw await redirectToShopifyOrAppRoot.redirectToShopifyOrAppRoot(request, { api, config, logger }, responseHeaders);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error instanceof Response)
|
|
140
|
+
throw error;
|
|
141
|
+
throw await this.oauthCallbackError(error, request, shop);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async getOfflineSession(request) {
|
|
145
|
+
const offlineId = await this.getOfflineSessionId(request);
|
|
146
|
+
return this.config.sessionStorage.loadSession(offlineId);
|
|
147
|
+
}
|
|
148
|
+
async hasValidOfflineId(request) {
|
|
149
|
+
return Boolean(await this.getOfflineSessionId(request));
|
|
150
|
+
}
|
|
151
|
+
async getOfflineSessionId(request) {
|
|
152
|
+
const { api } = this;
|
|
153
|
+
const url = new URL(request.url);
|
|
154
|
+
const shop = url.searchParams.get('shop');
|
|
155
|
+
return shop
|
|
156
|
+
? api.session.getOfflineId(shop)
|
|
157
|
+
: api.session.getCurrentId({ isOnline: false, rawRequest: request });
|
|
158
|
+
}
|
|
159
|
+
async testSession(session) {
|
|
160
|
+
const { api } = this;
|
|
161
|
+
const client = new api.clients.Graphql({
|
|
162
|
+
session,
|
|
163
|
+
});
|
|
164
|
+
await client.request(`#graphql
|
|
165
|
+
query shopifyAppShopName {
|
|
166
|
+
shop {
|
|
167
|
+
name
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
`);
|
|
171
|
+
}
|
|
172
|
+
async oauthCallbackError(error, request, shop) {
|
|
173
|
+
const { logger } = this;
|
|
174
|
+
logger.error('Error during OAuth callback', { error: error.message });
|
|
175
|
+
if (error instanceof shopifyApi.CookieNotFound) {
|
|
176
|
+
return this.handleAuthBeginRequest(request, shop);
|
|
177
|
+
}
|
|
178
|
+
if (error instanceof shopifyApi.InvalidHmacError ||
|
|
179
|
+
error instanceof shopifyApi.InvalidOAuthError) {
|
|
180
|
+
return new Response(undefined, {
|
|
181
|
+
status: 400,
|
|
182
|
+
statusText: 'Invalid OAuth Request',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return new Response(undefined, {
|
|
186
|
+
status: 500,
|
|
187
|
+
statusText: 'Internal Server Error',
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
async handleInvalidOfflineSession(error, request, shop) {
|
|
191
|
+
const { api, logger, config } = this;
|
|
192
|
+
if (error instanceof shopifyApi.HttpResponseError) {
|
|
193
|
+
if (error.response.code === 401) {
|
|
194
|
+
logger.info('Shop session is no longer valid, redirecting to OAuth', {
|
|
195
|
+
shop,
|
|
196
|
+
});
|
|
197
|
+
throw await beginAuth.beginAuth({ api, config, logger }, request, false, shop);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
const message = JSON.stringify(error.response.body, null, 2);
|
|
201
|
+
logger.error(`Unexpected error during session validation: ${message}`, {
|
|
202
|
+
shop,
|
|
203
|
+
});
|
|
204
|
+
throw new Response(undefined, {
|
|
205
|
+
status: error.response.code,
|
|
206
|
+
statusText: error.response.statusText,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else if (error instanceof shopifyApi.GraphqlQueryError) {
|
|
211
|
+
const context = { shop };
|
|
212
|
+
if (error.response) {
|
|
213
|
+
context.response = JSON.stringify(error.body);
|
|
214
|
+
}
|
|
215
|
+
logger.error(`Unexpected error during session validation: ${error.message}`, context);
|
|
216
|
+
throw new Response(undefined, {
|
|
217
|
+
status: 500,
|
|
218
|
+
statusText: 'Internal Server Error',
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
exports.AuthCodeFlowStrategy = AuthCodeFlowStrategy;
|
|
225
|
+
//# sourceMappingURL=auth-code-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-code-flow.js","sources":["../../../../../../../src/server/authenticate/admin/strategies/auth-code-flow.ts"],"sourcesContent":[null],"names":["getSessionTokenHeader","redirectToAuthPage","handleClientErrorFactory","validateShopAndHostParams","redirectWithExitIframe","beginAuth","triggerAfterAuthHook","redirectToShopifyOrAppRoot","CookieNotFound","InvalidHmacError","InvalidOAuthError","HttpResponseError","GraphqlQueryError"],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shopifyApi = require('@shopify/shopify-api');
|
|
4
|
+
var respondToInvalidSessionToken = require('../../helpers/respond-to-invalid-session-token.js');
|
|
5
|
+
require('isbot');
|
|
6
|
+
require('@remix-run/server-runtime');
|
|
7
|
+
var handleClientError = require('../helpers/handle-client-error.js');
|
|
8
|
+
var triggerAfterAuthHook = require('../helpers/trigger-after-auth-hook.js');
|
|
9
|
+
|
|
10
|
+
class TokenExchangeStrategy {
|
|
11
|
+
constructor({ api, config, logger }) {
|
|
12
|
+
this.api = api;
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
}
|
|
16
|
+
async respondToOAuthRequests(_request) { }
|
|
17
|
+
async authenticate(request, sessionContext) {
|
|
18
|
+
const { api, config, logger } = this;
|
|
19
|
+
const { shop, session, sessionToken } = sessionContext;
|
|
20
|
+
if (!sessionToken)
|
|
21
|
+
throw new shopifyApi.InvalidJwtError();
|
|
22
|
+
if (!session || session.isExpired()) {
|
|
23
|
+
logger.info('No valid session found');
|
|
24
|
+
logger.info('Requesting offline access token');
|
|
25
|
+
const { session: offlineSession } = await this.exchangeToken({
|
|
26
|
+
request,
|
|
27
|
+
sessionToken,
|
|
28
|
+
shop,
|
|
29
|
+
requestedTokenType: shopifyApi.RequestedTokenType.OfflineAccessToken,
|
|
30
|
+
});
|
|
31
|
+
await config.sessionStorage.storeSession(offlineSession);
|
|
32
|
+
let newSession = offlineSession;
|
|
33
|
+
if (config.useOnlineTokens) {
|
|
34
|
+
logger.info('Requesting online access token');
|
|
35
|
+
const { session: onlineSession } = await this.exchangeToken({
|
|
36
|
+
request,
|
|
37
|
+
sessionToken,
|
|
38
|
+
shop,
|
|
39
|
+
requestedTokenType: shopifyApi.RequestedTokenType.OnlineAccessToken,
|
|
40
|
+
});
|
|
41
|
+
await config.sessionStorage.storeSession(onlineSession);
|
|
42
|
+
newSession = onlineSession;
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
await this.handleAfterAuthHook({ api, config, logger }, newSession, request, sessionToken);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Response(undefined, {
|
|
49
|
+
status: 500,
|
|
50
|
+
statusText: 'Internal Server Error',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return newSession;
|
|
54
|
+
}
|
|
55
|
+
return session;
|
|
56
|
+
}
|
|
57
|
+
handleClientError(request) {
|
|
58
|
+
const { api, config, logger } = this;
|
|
59
|
+
return handleClientError.handleClientErrorFactory({
|
|
60
|
+
request,
|
|
61
|
+
onError: async ({ session, error }) => {
|
|
62
|
+
if (error.response.code === 401) {
|
|
63
|
+
config.sessionStorage.deleteSession(session.id);
|
|
64
|
+
respondToInvalidSessionToken.respondToInvalidSessionToken({
|
|
65
|
+
params: { config, api, logger },
|
|
66
|
+
request,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async exchangeToken({ request, shop, sessionToken, requestedTokenType, }) {
|
|
73
|
+
const { api, config, logger } = this;
|
|
74
|
+
try {
|
|
75
|
+
return await api.auth.tokenExchange({
|
|
76
|
+
sessionToken,
|
|
77
|
+
shop,
|
|
78
|
+
requestedTokenType,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error instanceof shopifyApi.InvalidJwtError ||
|
|
83
|
+
(error instanceof shopifyApi.HttpResponseError &&
|
|
84
|
+
error.response.code === 400 &&
|
|
85
|
+
error.response.body?.error === 'invalid_subject_token')) {
|
|
86
|
+
throw respondToInvalidSessionToken.respondToInvalidSessionToken({
|
|
87
|
+
params: { api, config, logger },
|
|
88
|
+
request,
|
|
89
|
+
retryRequest: true,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
throw new Response(undefined, {
|
|
93
|
+
status: 500,
|
|
94
|
+
statusText: 'Internal Server Error',
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async handleAfterAuthHook(params, session, request, sessionToken) {
|
|
99
|
+
const { config } = params;
|
|
100
|
+
await config.idempotentPromiseHandler.handlePromise({
|
|
101
|
+
promiseFunction: () => {
|
|
102
|
+
return triggerAfterAuthHook.triggerAfterAuthHook(params, session, request, this);
|
|
103
|
+
},
|
|
104
|
+
identifier: sessionToken,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
exports.TokenExchangeStrategy = TokenExchangeStrategy;
|
|
110
|
+
//# sourceMappingURL=token-exchange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-exchange.js","sources":["../../../../../../../src/server/authenticate/admin/strategies/token-exchange.ts"],"sourcesContent":[null],"names":["InvalidJwtError","RequestedTokenType","handleClientErrorFactory","respondToInvalidSessionToken","HttpResponseError","triggerAfterAuthHook"],"mappings":"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"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
const APP_BRIDGE_URL = 'https://cdn.shopify.com/shopifycloud/app-bridge.js';
|
|
6
4
|
const REAUTH_URL_HEADER = 'X-Shopify-API-Request-Failure-Reauthorize-Url';
|
|
7
5
|
const RETRY_INVALID_SESSION_HEADER = {
|
|
8
|
-
|
|
6
|
+
'X-Shopify-Retry-Invalid-Session-Request': '1',
|
|
9
7
|
};
|
|
10
8
|
|
|
11
9
|
exports.APP_BRIDGE_URL = APP_BRIDGE_URL;
|
|
12
10
|
exports.REAUTH_URL_HEADER = REAUTH_URL_HEADER;
|
|
13
11
|
exports.RETRY_INVALID_SESSION_HEADER = RETRY_INVALID_SESSION_HEADER;
|
|
12
|
+
//# sourceMappingURL=const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sources":["../../../../../src/server/authenticate/const.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAO,MAAM,cAAc,GACzB,qDAAqD;AAEhD,MAAM,iBAAiB,GAC5B,gDAAgD;AAErC,MAAA,4BAA4B,GAAG;AAC1C,IAAA,yCAAyC,EAAE,GAAG;;;;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var factory = require('../../clients/admin/factory.js');
|
|
4
|
+
|
|
5
|
+
function authenticateFlowFactory(params) {
|
|
6
|
+
const { api, config, logger } = params;
|
|
7
|
+
return async function authenticate(request) {
|
|
8
|
+
logger.info('Authenticating flow request');
|
|
9
|
+
if (request.method !== 'POST') {
|
|
10
|
+
logger.debug('Received a non-POST request for flow. Only POST requests are allowed.', { url: request.url, method: request.method });
|
|
11
|
+
throw new Response(undefined, {
|
|
12
|
+
status: 405,
|
|
13
|
+
statusText: 'Method not allowed',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const rawBody = await request.text();
|
|
17
|
+
const result = await api.flow.validate({
|
|
18
|
+
rawBody,
|
|
19
|
+
rawRequest: request,
|
|
20
|
+
});
|
|
21
|
+
if (!result.valid) {
|
|
22
|
+
logger.error('Received an invalid flow request', { reason: result.reason });
|
|
23
|
+
throw new Response(undefined, {
|
|
24
|
+
status: 400,
|
|
25
|
+
statusText: 'Bad Request',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const payload = JSON.parse(rawBody);
|
|
29
|
+
logger.debug('Flow request is valid, looking for an offline session', {
|
|
30
|
+
shop: payload.shopify_domain,
|
|
31
|
+
});
|
|
32
|
+
const sessionId = api.session.getOfflineId(payload.shopify_domain);
|
|
33
|
+
const session = await config.sessionStorage.loadSession(sessionId);
|
|
34
|
+
if (!session) {
|
|
35
|
+
logger.info('Flow request could not find session', {
|
|
36
|
+
shop: payload.shopify_domain,
|
|
37
|
+
});
|
|
38
|
+
throw new Response(undefined, {
|
|
39
|
+
status: 400,
|
|
40
|
+
statusText: 'Bad Request',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
logger.debug('Found a session for the flow request', { shop: session.shop });
|
|
44
|
+
return {
|
|
45
|
+
session,
|
|
46
|
+
payload,
|
|
47
|
+
admin: factory.adminClientFactory({ params, session }),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.authenticateFlowFactory = authenticateFlowFactory;
|
|
53
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sources":["../../../../../../src/server/authenticate/flow/authenticate.ts"],"sourcesContent":[null],"names":["adminClientFactory"],"mappings":";;;;AAOM,SAAU,uBAAuB,CAErC,MAAmB,EAAA;IACnB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAErC,IAAA,OAAO,eAAe,YAAY,CAChC,OAAgB,EAAA;AAEhB,QAAA,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAE3C,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC7B,YAAA,MAAM,CAAC,KAAK,CACV,uEAAuE,EACvE,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAC3C,CAAC;AACF,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,oBAAoB;AACjC,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,OAAO;AACP,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC;AAE1E,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAEpC,QAAA,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;YACpE,IAAI,EAAE,OAAO,CAAC,cAAc;AAC7B,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;gBACjD,IAAI,EAAE,OAAO,CAAC,cAAc;AAC7B,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAC,CAAC,CAAC;QAE3E,OAAO;YACL,OAAO;YACP,OAAO;YACP,KAAK,EAAEA,0BAAkB,CAAY,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;SACxD,CAAC;AACJ,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var shopifyApi = require('@shopify/shopify-api');
|
|
4
|
+
var factory = require('../../clients/admin/factory.js');
|
|
5
|
+
|
|
6
|
+
function authenticateFulfillmentServiceFactory(params) {
|
|
7
|
+
const { api, config, logger } = params;
|
|
8
|
+
return async function authenticate(request) {
|
|
9
|
+
logger.info('Authenticating fulfillment service request');
|
|
10
|
+
if (request.method !== 'POST') {
|
|
11
|
+
logger.debug('Received a non-POST request for fulfillment service. Only POST requests are allowed.', { url: request.url, method: request.method });
|
|
12
|
+
throw new Response(undefined, {
|
|
13
|
+
status: 405,
|
|
14
|
+
statusText: 'Method not allowed',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const rawBody = await request.text();
|
|
18
|
+
const result = await api.fulfillmentService.validate({
|
|
19
|
+
rawBody,
|
|
20
|
+
rawRequest: request,
|
|
21
|
+
});
|
|
22
|
+
if (!result.valid) {
|
|
23
|
+
logger.error('Received an invalid fulfillment service request', {
|
|
24
|
+
reason: result.reason,
|
|
25
|
+
});
|
|
26
|
+
throw new Response(undefined, {
|
|
27
|
+
status: 400,
|
|
28
|
+
statusText: 'Bad Request',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const payload = JSON.parse(rawBody);
|
|
32
|
+
const shop = request.headers.get(shopifyApi.ShopifyHeader.Domain) || '';
|
|
33
|
+
logger.debug('Fulfillment service request is valid, looking for an offline session', {
|
|
34
|
+
shop,
|
|
35
|
+
});
|
|
36
|
+
const sessionId = api.session.getOfflineId(shop);
|
|
37
|
+
const session = await config.sessionStorage.loadSession(sessionId);
|
|
38
|
+
if (!session) {
|
|
39
|
+
logger.info('Fulfillment service request could not find session', {
|
|
40
|
+
shop,
|
|
41
|
+
});
|
|
42
|
+
throw new Response(undefined, {
|
|
43
|
+
status: 400,
|
|
44
|
+
statusText: 'Bad Request',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
logger.debug('Found a session for the fulfillment service request', {
|
|
48
|
+
shop,
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
session,
|
|
52
|
+
payload,
|
|
53
|
+
admin: factory.adminClientFactory({ params, session }),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
exports.authenticateFulfillmentServiceFactory = authenticateFulfillmentServiceFactory;
|
|
59
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sources":["../../../../../../src/server/authenticate/fulfillment-service/authenticate.ts"],"sourcesContent":[null],"names":["ShopifyHeader","adminClientFactory"],"mappings":";;;;;AAUM,SAAU,qCAAqC,CAEnD,MAAmB,EAAA;IACnB,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAErC,IAAA,OAAO,eAAe,YAAY,CAChC,OAAgB,EAAA;AAEhB,QAAA,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;AAE1D,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;AAC7B,YAAA,MAAM,CAAC,KAAK,CACV,sFAAsF,EACtF,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,CAC3C,CAAC;AACF,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,oBAAoB;AACjC,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACnD,OAAO;AACP,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM;AACtB,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA,CAAC,CAAC;SACJ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACpC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAACA,wBAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAE7D,QAAA,MAAM,CAAC,KAAK,CACV,sEAAsE,EACtE;YACE,IAAI;AACL,SAAA,CACF,CAAC;QAEF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;gBAChE,IAAI;AACL,aAAA,CAAC,CAAC;AACH,YAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,UAAU,EAAE,aAAa;AAC1B,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;YAClE,IAAI;AACL,SAAA,CAAC,CAAC;QAEH,OAAO;YACL,OAAO;YACP,OAAO;YACP,KAAK,EAAEC,0BAAkB,CAAY,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;SACxD,CAAC;AACJ,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function addDocumentResponseHeadersFactory(params) {
|
|
4
|
+
const { api, config } = params;
|
|
5
|
+
return function (request, headers) {
|
|
6
|
+
const { searchParams } = new URL(request.url);
|
|
7
|
+
const shop = api.utils.sanitizeShop(searchParams.get('shop'));
|
|
8
|
+
addDocumentResponseHeaders(headers, config.isEmbeddedApp, shop);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function addDocumentResponseHeaders(headers, isEmbeddedApp, shop) {
|
|
12
|
+
if (shop) {
|
|
13
|
+
headers.set('Link', '<https://cdn.shopify.com/shopifycloud/app-bridge.js>; rel="preload"; as="script";');
|
|
14
|
+
}
|
|
15
|
+
if (isEmbeddedApp) {
|
|
16
|
+
if (shop) {
|
|
17
|
+
headers.set('Content-Security-Policy', `frame-ancestors https://${shop} https://admin.shopify.com https://*.spin.dev;`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
headers.set('Content-Security-Policy', `frame-ancestors 'none';`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
exports.addDocumentResponseHeaders = addDocumentResponseHeaders;
|
|
26
|
+
exports.addDocumentResponseHeadersFactory = addDocumentResponseHeadersFactory;
|
|
27
|
+
//# sourceMappingURL=add-response-headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-response-headers.js","sources":["../../../../../../src/server/authenticate/helpers/add-response-headers.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAOM,SAAU,iCAAiC,CAC/C,MAAmB,EAAA;AAEnB,IAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IAE7B,OAAO,UAAU,OAAgB,EAAE,OAAgB,EAAA;QACjD,MAAM,EAAC,YAAY,EAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,CAAC;QAE/D,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAClE,KAAC,CAAC;AACJ,CAAC;SAEe,0BAA0B,CACxC,OAAgB,EAChB,aAAsB,EACtB,IAA+B,EAAA;IAE/B,IAAI,IAAI,EAAE;AACR,QAAA,OAAO,CAAC,GAAG,CACT,MAAM,EACN,mFAAmF,CACpF,CAAC;KACH;IAED,IAAI,aAAa,EAAE;QACjB,IAAI,IAAI,EAAE;YACR,OAAO,CAAC,GAAG,CACT,yBAAyB,EACzB,CAA2B,wBAAA,EAAA,IAAI,CAAgD,8CAAA,CAAA,CAChF,CAAC;SACH;KACF;SAAM;AACL,QAAA,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAA,uBAAA,CAAyB,CAAC,CAAC;KACnE;AACH;;;;;"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var _const = require('../const.js');
|
|
6
4
|
|
|
7
5
|
let appBridgeUrlOverride;
|
|
8
6
|
function setAppBridgeUrlOverride(url) {
|
|
9
|
-
|
|
7
|
+
appBridgeUrlOverride = url;
|
|
10
8
|
}
|
|
11
9
|
function appBridgeUrl() {
|
|
12
|
-
|
|
10
|
+
return appBridgeUrlOverride || _const.APP_BRIDGE_URL;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
exports.appBridgeUrl = appBridgeUrl;
|
|
16
14
|
exports.setAppBridgeUrlOverride = setAppBridgeUrlOverride;
|
|
15
|
+
//# sourceMappingURL=app-bridge-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-bridge-url.js","sources":["../../../../../../src/server/authenticate/helpers/app-bridge-url.ts"],"sourcesContent":[null],"names":["APP_BRIDGE_URL"],"mappings":";;;;AAEA,IAAI,oBAAwC,CAAC;AACvC,SAAU,uBAAuB,CAAC,GAAW,EAAA;IACjD,oBAAoB,GAAG,GAAG,CAAC;AAC7B,CAAC;SAEe,YAAY,GAAA;IAC1B,OAAO,oBAAoB,IAAIA,qBAAc,CAAC;AAChD;;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _const = require('../const.js');
|
|
4
|
+
|
|
5
|
+
function ensureCORSHeadersFactory(params, request, corsHeaders = []) {
|
|
6
|
+
const { logger, config } = params;
|
|
7
|
+
return function ensureCORSHeaders(response) {
|
|
8
|
+
const origin = request.headers.get('Origin');
|
|
9
|
+
if (origin && origin !== config.appUrl) {
|
|
10
|
+
logger.debug('Request comes from a different origin, adding CORS headers');
|
|
11
|
+
const corsHeadersSet = new Set([
|
|
12
|
+
'Authorization',
|
|
13
|
+
'Content-Type',
|
|
14
|
+
...corsHeaders,
|
|
15
|
+
]);
|
|
16
|
+
response.headers.set('Access-Control-Allow-Origin', '*');
|
|
17
|
+
response.headers.set('Access-Control-Allow-Headers', [...corsHeadersSet].join(', '));
|
|
18
|
+
response.headers.set('Access-Control-Expose-Headers', _const.REAUTH_URL_HEADER);
|
|
19
|
+
}
|
|
20
|
+
return response;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.ensureCORSHeadersFactory = ensureCORSHeadersFactory;
|
|
25
|
+
//# sourceMappingURL=ensure-cors-headers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-cors-headers.js","sources":["../../../../../../src/server/authenticate/helpers/ensure-cors-headers.ts"],"sourcesContent":[null],"names":["REAUTH_URL_HEADER"],"mappings":";;;;AAOM,SAAU,wBAAwB,CACtC,MAAmB,EACnB,OAAgB,EAChB,cAAwB,EAAE,EAAA;AAE1B,IAAA,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IAEhC,OAAO,SAAS,iBAAiB,CAAC,QAAQ,EAAA;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;AACtC,YAAA,MAAM,CAAC,KAAK,CACV,4DAA4D,CAC7D,CAAC;AAEF,YAAA,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;gBAC7B,eAAe;gBACf,cAAc;AACd,gBAAA,GAAG,WAAW;AACf,aAAA,CAAC,CAAC;YAEH,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;AACzD,YAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAClB,8BAA8B,EAC9B,CAAC,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAEA,wBAAiB,CAAC,CAAC;SAC1E;AAED,QAAA,OAAO,QAAQ,CAAC;AAClB,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const SESSION_TOKEN_PARAM = 'id_token';
|
|
4
|
+
function getSessionTokenHeader(request) {
|
|
5
|
+
return request.headers.get('authorization')?.replace('Bearer ', '');
|
|
6
|
+
}
|
|
7
|
+
function getSessionTokenFromUrlParam(request) {
|
|
8
|
+
const url = new URL(request.url);
|
|
9
|
+
return url.searchParams.get(SESSION_TOKEN_PARAM);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.getSessionTokenFromUrlParam = getSessionTokenFromUrlParam;
|
|
13
|
+
exports.getSessionTokenHeader = getSessionTokenHeader;
|
|
14
|
+
//# sourceMappingURL=get-session-token-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-session-token-header.js","sources":["../../../../../../src/server/authenticate/helpers/get-session-token-header.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA,MAAM,mBAAmB,GAAG,UAAU,CAAC;AAEjC,SAAU,qBAAqB,CAAC,OAAgB,EAAA;AACpD,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAEK,SAAU,2BAA2B,CAAC,OAAgB,EAAA;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACnD;;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const IDENTIFIER_TTL_MS = 60000;
|
|
4
|
+
class IdempotentPromiseHandler {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.identifiers = new Map();
|
|
7
|
+
}
|
|
8
|
+
async handlePromise({ promiseFunction, identifier, }) {
|
|
9
|
+
try {
|
|
10
|
+
if (this.isPromiseRunnable(identifier)) {
|
|
11
|
+
await promiseFunction();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
this.clearStaleIdentifiers();
|
|
16
|
+
}
|
|
17
|
+
return Promise.resolve();
|
|
18
|
+
}
|
|
19
|
+
isPromiseRunnable(identifier) {
|
|
20
|
+
if (!this.identifiers.has(identifier)) {
|
|
21
|
+
this.identifiers.set(identifier, Date.now());
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
async clearStaleIdentifiers() {
|
|
27
|
+
this.identifiers.forEach((date, identifier, map) => {
|
|
28
|
+
if (Date.now() - date > IDENTIFIER_TTL_MS) {
|
|
29
|
+
map.delete(identifier);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exports.IdempotentPromiseHandler = IdempotentPromiseHandler;
|
|
36
|
+
//# sourceMappingURL=idempotent-promise-handler.js.map
|