@shopify/shopify-app-remix 2.7.0 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/react/components/AppProvider/AppProvider.js +78 -0
- package/dist/cjs/react/components/AppProvider/AppProvider.js.map +1 -0
- package/dist/cjs/react/components/AppProxyForm/AppProxyForm.js +71 -0
- package/dist/cjs/react/components/AppProxyForm/AppProxyForm.js.map +1 -0
- package/dist/cjs/react/components/AppProxyLink/AppProxyLink.js +47 -0
- package/dist/cjs/react/components/AppProxyLink/AppProxyLink.js.map +1 -0
- package/dist/cjs/react/components/AppProxyProvider/AppProxyProvider.js +65 -0
- 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/dist/cjs/react/const.js +6 -0
- package/dist/cjs/react/const.js.map +1 -0
- package/dist/cjs/react/index.js +15 -0
- package/dist/cjs/react/index.js.map +1 -0
- package/dist/cjs/server/adapters/node/index.js +18 -0
- package/dist/cjs/server/adapters/node/index.js.map +1 -0
- package/dist/cjs/server/adapters/vercel/index.js +13 -0
- 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/dist/cjs/server/authenticate/admin/helpers/create-admin-api-context.js +14 -0
- 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/dist/cjs/server/authenticate/admin/helpers/redirect-with-app-bridge-headers.js +18 -0
- 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/dist/cjs/server/authenticate/admin/helpers/validate-redirect-url.js +48 -0
- 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/dist/cjs/server/authenticate/const.js +12 -0
- 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/dist/cjs/server/authenticate/helpers/app-bridge-url.js +15 -0
- 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 +13 -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/dist/cjs/server/authenticate/helpers/respond-to-options-request.js +18 -0
- 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/dist/cjs/server/authenticate/public/factory.js +27 -0
- 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/dist/cjs/server/boundary/index.js +43 -0
- 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/dist/cjs/server/future/flags.js +22 -0
- 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 +147 -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/dist/esm/react/components/AppProvider/AppProvider.mjs +76 -0
- package/dist/esm/react/components/AppProvider/AppProvider.mjs.map +1 -0
- package/dist/esm/react/components/AppProxyForm/AppProxyForm.mjs +69 -0
- package/dist/esm/react/components/AppProxyForm/AppProxyForm.mjs.map +1 -0
- package/dist/esm/react/components/AppProxyLink/AppProxyLink.mjs +45 -0
- package/dist/esm/react/components/AppProxyLink/AppProxyLink.mjs.map +1 -0
- package/dist/esm/react/components/AppProxyProvider/AppProxyProvider.mjs +62 -0
- 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 +11 -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 +145 -0
- package/dist/esm/server/shopify-app.mjs.map +1 -0
- package/dist/esm/server/types.mjs +16 -0
- 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/dist/ts/react/components/AppProvider/AppProvider.d.ts +92 -0
- package/dist/ts/react/components/AppProvider/AppProvider.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyForm/AppProxyForm.d.ts +59 -0
- package/dist/ts/react/components/AppProxyForm/AppProxyForm.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyForm/AppProxyForm.doc.d.ts +4 -0
- package/dist/ts/react/components/AppProxyForm/AppProxyForm.doc.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyForm/index.d.ts +2 -0
- package/dist/ts/react/components/AppProxyForm/index.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyLink/AppProxyLink.d.ts +36 -0
- package/dist/ts/react/components/AppProxyLink/AppProxyLink.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyLink/AppProxyLink.doc.d.ts +4 -0
- package/dist/ts/react/components/AppProxyLink/AppProxyLink.doc.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyLink/index.d.ts +2 -0
- package/dist/ts/react/components/AppProxyLink/index.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyProvider/AppProxyProvider.d.ts +55 -0
- package/dist/ts/react/components/AppProxyProvider/AppProxyProvider.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyProvider/AppProxyProvider.doc.d.ts +4 -0
- package/dist/ts/react/components/AppProxyProvider/AppProxyProvider.doc.d.ts.map +1 -0
- package/dist/ts/react/components/AppProxyProvider/index.d.ts +2 -0
- package/dist/ts/react/components/AppProxyProvider/index.d.ts.map +1 -0
- package/dist/ts/react/components/index.d.ts +5 -0
- package/dist/ts/react/components/index.d.ts.map +1 -0
- package/dist/ts/server/authenticate/helpers/validate-session-token.d.ts +8 -0
- package/dist/ts/server/authenticate/helpers/validate-session-token.d.ts.map +1 -0
- package/dist/ts/server/authenticate/public/appProxy/authenticate.d.ts.map +1 -0
- package/dist/ts/server/authenticate/public/appProxy/types.d.ts +201 -0
- package/dist/ts/server/authenticate/public/appProxy/types.d.ts.map +1 -0
- package/dist/ts/server/authenticate/public/checkout/authenticate.d.ts.map +1 -0
- package/dist/ts/server/boundary/index.d.ts +38 -0
- package/dist/ts/server/clients/admin/types.d.ts +242 -0
- package/dist/ts/server/version.d.ts +2 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +51 -25
- package/build/cjs/react/components/AppProvider/AppProvider.js +0 -98
- package/build/cjs/react/components/RemixPolarisLink.js +0 -22
- package/build/cjs/react/const.js +0 -7
- package/build/cjs/react/index.js +0 -9
- package/build/cjs/server/adapters/node/index.js +0 -22
- package/build/cjs/server/adapters/vercel/index.js +0 -12
- package/build/cjs/server/authenticate/admin/authenticate.js +0 -174
- 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/create-admin-api-context.js +0 -15
- 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/const.js +0 -13
- 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/app-bridge-url.js +0 -16
- 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 -29
- package/build/cjs/server/authenticate/login/login.js +0 -52
- package/build/cjs/server/authenticate/public/appProxy/authenticate.js +0 -88
- 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.d.ts +0 -90
- package/build/ts/react/components/AppProvider/AppProvider.d.ts.map +0 -1
- 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 +0 -76
- 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/RemixPolarisLink.js +0 -12
- package/build/ts/react/components/RemixPolarisLink.js.map +0 -1
- package/build/ts/react/components/index.d.ts +0 -2
- package/build/ts/react/components/index.d.ts.map +0 -1
- package/build/ts/react/components/index.js +0 -5
- 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 +0 -18
- 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 +0 -49
- 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 +0 -17
- package/build/ts/server/authenticate/helpers/respond-to-options-request.js.map +0 -1
- package/build/ts/server/authenticate/helpers/validate-session-token.d.ts +0 -8
- package/build/ts/server/authenticate/helpers/validate-session-token.d.ts.map +0 -1
- package/build/ts/server/authenticate/helpers/validate-session-token.js +0 -39
- 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.d.ts.map +0 -1
- package/build/ts/server/authenticate/public/appProxy/authenticate.js +0 -81
- 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.d.ts +0 -166
- package/build/ts/server/authenticate/public/appProxy/types.d.ts.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.d.ts.map +0 -1
- package/build/ts/server/authenticate/public/checkout/authenticate.js +0 -42
- 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 +0 -26
- 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.d.ts +0 -38
- package/build/ts/server/boundary/index.js +0 -41
- 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.d.ts +0 -242
- 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.js +0 -24
- 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.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 +0 -17
- 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.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/RemixPolarisLink.d.ts +0 -0
- /package/{build → dist}/ts/react/components/RemixPolarisLink.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/reject-bot-request.d.ts.map +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/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.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/checkout/authenticate.d.ts +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.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/future/flags.d.ts +0 -0
- /package/{build → dist}/ts/server/future/flags.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.d.ts +0 -0
- /package/{build → dist}/ts/server/shopify-app.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,108 @@
|
|
|
1
|
+
import { InvalidJwtError, RequestedTokenType, HttpResponseError } from '@shopify/shopify-api';
|
|
2
|
+
import { respondToInvalidSessionToken } from '../../helpers/respond-to-invalid-session-token.mjs';
|
|
3
|
+
import 'isbot';
|
|
4
|
+
import '@remix-run/server-runtime';
|
|
5
|
+
import { handleClientErrorFactory } from '../helpers/handle-client-error.mjs';
|
|
6
|
+
import { triggerAfterAuthHook } from '../helpers/trigger-after-auth-hook.mjs';
|
|
7
|
+
|
|
8
|
+
class TokenExchangeStrategy {
|
|
9
|
+
constructor({ api, config, logger }) {
|
|
10
|
+
this.api = api;
|
|
11
|
+
this.config = config;
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
}
|
|
14
|
+
async respondToOAuthRequests(_request) { }
|
|
15
|
+
async authenticate(request, sessionContext) {
|
|
16
|
+
const { api, config, logger } = this;
|
|
17
|
+
const { shop, session, sessionToken } = sessionContext;
|
|
18
|
+
if (!sessionToken)
|
|
19
|
+
throw new InvalidJwtError();
|
|
20
|
+
if (!session || session.isExpired()) {
|
|
21
|
+
logger.info('No valid session found');
|
|
22
|
+
logger.info('Requesting offline access token');
|
|
23
|
+
const { session: offlineSession } = await this.exchangeToken({
|
|
24
|
+
request,
|
|
25
|
+
sessionToken,
|
|
26
|
+
shop,
|
|
27
|
+
requestedTokenType: RequestedTokenType.OfflineAccessToken,
|
|
28
|
+
});
|
|
29
|
+
await config.sessionStorage.storeSession(offlineSession);
|
|
30
|
+
let newSession = offlineSession;
|
|
31
|
+
if (config.useOnlineTokens) {
|
|
32
|
+
logger.info('Requesting online access token');
|
|
33
|
+
const { session: onlineSession } = await this.exchangeToken({
|
|
34
|
+
request,
|
|
35
|
+
sessionToken,
|
|
36
|
+
shop,
|
|
37
|
+
requestedTokenType: RequestedTokenType.OnlineAccessToken,
|
|
38
|
+
});
|
|
39
|
+
await config.sessionStorage.storeSession(onlineSession);
|
|
40
|
+
newSession = onlineSession;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
await this.handleAfterAuthHook({ api, config, logger }, newSession, request, sessionToken);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw new Response(undefined, {
|
|
47
|
+
status: 500,
|
|
48
|
+
statusText: 'Internal Server Error',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return newSession;
|
|
52
|
+
}
|
|
53
|
+
return session;
|
|
54
|
+
}
|
|
55
|
+
handleClientError(request) {
|
|
56
|
+
const { api, config, logger } = this;
|
|
57
|
+
return handleClientErrorFactory({
|
|
58
|
+
request,
|
|
59
|
+
onError: async ({ session, error }) => {
|
|
60
|
+
if (error.response.code === 401) {
|
|
61
|
+
config.sessionStorage.deleteSession(session.id);
|
|
62
|
+
respondToInvalidSessionToken({
|
|
63
|
+
params: { config, api, logger },
|
|
64
|
+
request,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async exchangeToken({ request, shop, sessionToken, requestedTokenType, }) {
|
|
71
|
+
const { api, config, logger } = this;
|
|
72
|
+
try {
|
|
73
|
+
return await api.auth.tokenExchange({
|
|
74
|
+
sessionToken,
|
|
75
|
+
shop,
|
|
76
|
+
requestedTokenType,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error instanceof InvalidJwtError ||
|
|
81
|
+
(error instanceof HttpResponseError &&
|
|
82
|
+
error.response.code === 400 &&
|
|
83
|
+
error.response.body?.error === 'invalid_subject_token')) {
|
|
84
|
+
throw respondToInvalidSessionToken({
|
|
85
|
+
params: { api, config, logger },
|
|
86
|
+
request,
|
|
87
|
+
retryRequest: true,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
throw new Response(undefined, {
|
|
91
|
+
status: 500,
|
|
92
|
+
statusText: 'Internal Server Error',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async handleAfterAuthHook(params, session, request, sessionToken) {
|
|
97
|
+
const { config } = params;
|
|
98
|
+
await config.idempotentPromiseHandler.handlePromise({
|
|
99
|
+
promiseFunction: () => {
|
|
100
|
+
return triggerAfterAuthHook(params, session, request, this);
|
|
101
|
+
},
|
|
102
|
+
identifier: sessionToken,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export { TokenExchangeStrategy };
|
|
108
|
+
//# sourceMappingURL=token-exchange.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-exchange.mjs","sources":["../../../../../../../src/server/authenticate/admin/strategies/token-exchange.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
const APP_BRIDGE_URL = 'https://cdn.shopify.com/shopifycloud/app-bridge.js';
|
|
2
|
+
const REAUTH_URL_HEADER = 'X-Shopify-API-Request-Failure-Reauthorize-Url';
|
|
3
|
+
const RETRY_INVALID_SESSION_HEADER = {
|
|
4
|
+
'X-Shopify-Retry-Invalid-Session-Request': '1',
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export { APP_BRIDGE_URL, REAUTH_URL_HEADER, RETRY_INVALID_SESSION_HEADER };
|
|
8
|
+
//# sourceMappingURL=const.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.mjs","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,51 @@
|
|
|
1
|
+
import { adminClientFactory } from '../../clients/admin/factory.mjs';
|
|
2
|
+
|
|
3
|
+
function authenticateFlowFactory(params) {
|
|
4
|
+
const { api, config, logger } = params;
|
|
5
|
+
return async function authenticate(request) {
|
|
6
|
+
logger.info('Authenticating flow request');
|
|
7
|
+
if (request.method !== 'POST') {
|
|
8
|
+
logger.debug('Received a non-POST request for flow. Only POST requests are allowed.', { url: request.url, method: request.method });
|
|
9
|
+
throw new Response(undefined, {
|
|
10
|
+
status: 405,
|
|
11
|
+
statusText: 'Method not allowed',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const rawBody = await request.text();
|
|
15
|
+
const result = await api.flow.validate({
|
|
16
|
+
rawBody,
|
|
17
|
+
rawRequest: request,
|
|
18
|
+
});
|
|
19
|
+
if (!result.valid) {
|
|
20
|
+
logger.error('Received an invalid flow request', { reason: result.reason });
|
|
21
|
+
throw new Response(undefined, {
|
|
22
|
+
status: 400,
|
|
23
|
+
statusText: 'Bad Request',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const payload = JSON.parse(rawBody);
|
|
27
|
+
logger.debug('Flow request is valid, looking for an offline session', {
|
|
28
|
+
shop: payload.shopify_domain,
|
|
29
|
+
});
|
|
30
|
+
const sessionId = api.session.getOfflineId(payload.shopify_domain);
|
|
31
|
+
const session = await config.sessionStorage.loadSession(sessionId);
|
|
32
|
+
if (!session) {
|
|
33
|
+
logger.info('Flow request could not find session', {
|
|
34
|
+
shop: payload.shopify_domain,
|
|
35
|
+
});
|
|
36
|
+
throw new Response(undefined, {
|
|
37
|
+
status: 400,
|
|
38
|
+
statusText: 'Bad Request',
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
logger.debug('Found a session for the flow request', { shop: session.shop });
|
|
42
|
+
return {
|
|
43
|
+
session,
|
|
44
|
+
payload,
|
|
45
|
+
admin: adminClientFactory({ params, session }),
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { authenticateFlowFactory };
|
|
51
|
+
//# sourceMappingURL=authenticate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.mjs","sources":["../../../../../../src/server/authenticate/flow/authenticate.ts"],"sourcesContent":[null],"names":[],"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,EAAE,kBAAkB,CAAY,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;SACxD,CAAC;AACJ,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ShopifyHeader } from '@shopify/shopify-api';
|
|
2
|
+
import { adminClientFactory } from '../../clients/admin/factory.mjs';
|
|
3
|
+
|
|
4
|
+
function authenticateFulfillmentServiceFactory(params) {
|
|
5
|
+
const { api, config, logger } = params;
|
|
6
|
+
return async function authenticate(request) {
|
|
7
|
+
logger.info('Authenticating fulfillment service request');
|
|
8
|
+
if (request.method !== 'POST') {
|
|
9
|
+
logger.debug('Received a non-POST request for fulfillment service. Only POST requests are allowed.', { url: request.url, method: request.method });
|
|
10
|
+
throw new Response(undefined, {
|
|
11
|
+
status: 405,
|
|
12
|
+
statusText: 'Method not allowed',
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
const rawBody = await request.text();
|
|
16
|
+
const result = await api.fulfillmentService.validate({
|
|
17
|
+
rawBody,
|
|
18
|
+
rawRequest: request,
|
|
19
|
+
});
|
|
20
|
+
if (!result.valid) {
|
|
21
|
+
logger.error('Received an invalid fulfillment service request', {
|
|
22
|
+
reason: result.reason,
|
|
23
|
+
});
|
|
24
|
+
throw new Response(undefined, {
|
|
25
|
+
status: 400,
|
|
26
|
+
statusText: 'Bad Request',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const payload = JSON.parse(rawBody);
|
|
30
|
+
const shop = request.headers.get(ShopifyHeader.Domain) || '';
|
|
31
|
+
logger.debug('Fulfillment service request is valid, looking for an offline session', {
|
|
32
|
+
shop,
|
|
33
|
+
});
|
|
34
|
+
const sessionId = api.session.getOfflineId(shop);
|
|
35
|
+
const session = await config.sessionStorage.loadSession(sessionId);
|
|
36
|
+
if (!session) {
|
|
37
|
+
logger.info('Fulfillment service request could not find session', {
|
|
38
|
+
shop,
|
|
39
|
+
});
|
|
40
|
+
throw new Response(undefined, {
|
|
41
|
+
status: 400,
|
|
42
|
+
statusText: 'Bad Request',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
logger.debug('Found a session for the fulfillment service request', {
|
|
46
|
+
shop,
|
|
47
|
+
});
|
|
48
|
+
return {
|
|
49
|
+
session,
|
|
50
|
+
payload,
|
|
51
|
+
admin: adminClientFactory({ params, session }),
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { authenticateFulfillmentServiceFactory };
|
|
57
|
+
//# sourceMappingURL=authenticate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.mjs","sources":["../../../../../../src/server/authenticate/fulfillment-service/authenticate.ts"],"sourcesContent":[null],"names":[],"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,CAAC,aAAa,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,EAAE,kBAAkB,CAAY,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC;SACxD,CAAC;AACJ,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function addDocumentResponseHeadersFactory(params) {
|
|
2
|
+
const { api, config } = params;
|
|
3
|
+
return function (request, headers) {
|
|
4
|
+
const { searchParams } = new URL(request.url);
|
|
5
|
+
const shop = api.utils.sanitizeShop(searchParams.get('shop'));
|
|
6
|
+
addDocumentResponseHeaders(headers, config.isEmbeddedApp, shop);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function addDocumentResponseHeaders(headers, isEmbeddedApp, shop) {
|
|
10
|
+
if (shop) {
|
|
11
|
+
headers.set('Link', '<https://cdn.shopify.com/shopifycloud/app-bridge.js>; rel="preload"; as="script";');
|
|
12
|
+
}
|
|
13
|
+
if (isEmbeddedApp) {
|
|
14
|
+
if (shop) {
|
|
15
|
+
headers.set('Content-Security-Policy', `frame-ancestors https://${shop} https://admin.shopify.com https://*.spin.dev;`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
headers.set('Content-Security-Policy', `frame-ancestors 'none';`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { addDocumentResponseHeaders, addDocumentResponseHeadersFactory };
|
|
24
|
+
//# sourceMappingURL=add-response-headers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-response-headers.mjs","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;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { APP_BRIDGE_URL } from '../const.mjs';
|
|
2
|
+
|
|
3
|
+
let appBridgeUrlOverride;
|
|
4
|
+
function setAppBridgeUrlOverride(url) {
|
|
5
|
+
appBridgeUrlOverride = url;
|
|
6
|
+
}
|
|
7
|
+
function appBridgeUrl() {
|
|
8
|
+
return appBridgeUrlOverride || APP_BRIDGE_URL;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { appBridgeUrl, setAppBridgeUrlOverride };
|
|
12
|
+
//# sourceMappingURL=app-bridge-url.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-bridge-url.mjs","sources":["../../../../../../src/server/authenticate/helpers/app-bridge-url.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA,IAAI,oBAAwC,CAAC;AACvC,SAAU,uBAAuB,CAAC,GAAW,EAAA;IACjD,oBAAoB,GAAG,GAAG,CAAC;AAC7B,CAAC;SAEe,YAAY,GAAA;IAC1B,OAAO,oBAAoB,IAAI,cAAc,CAAC;AAChD;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { REAUTH_URL_HEADER } from '../const.mjs';
|
|
2
|
+
|
|
3
|
+
function ensureCORSHeadersFactory(params, request, corsHeaders = []) {
|
|
4
|
+
const { logger, config } = params;
|
|
5
|
+
return function ensureCORSHeaders(response) {
|
|
6
|
+
const origin = request.headers.get('Origin');
|
|
7
|
+
if (origin && origin !== config.appUrl) {
|
|
8
|
+
logger.debug('Request comes from a different origin, adding CORS headers');
|
|
9
|
+
const corsHeadersSet = new Set([
|
|
10
|
+
'Authorization',
|
|
11
|
+
'Content-Type',
|
|
12
|
+
...corsHeaders,
|
|
13
|
+
]);
|
|
14
|
+
response.headers.set('Access-Control-Allow-Origin', '*');
|
|
15
|
+
response.headers.set('Access-Control-Allow-Headers', [...corsHeadersSet].join(', '));
|
|
16
|
+
response.headers.set('Access-Control-Expose-Headers', REAUTH_URL_HEADER);
|
|
17
|
+
}
|
|
18
|
+
return response;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { ensureCORSHeadersFactory };
|
|
23
|
+
//# sourceMappingURL=ensure-cors-headers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-cors-headers.mjs","sources":["../../../../../../src/server/authenticate/helpers/ensure-cors-headers.ts"],"sourcesContent":[null],"names":[],"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,EAAE,iBAAiB,CAAC,CAAC;SAC1E;AAED,QAAA,OAAO,QAAQ,CAAC;AAClB,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const SESSION_TOKEN_PARAM = 'id_token';
|
|
2
|
+
function getSessionTokenHeader(request) {
|
|
3
|
+
return request.headers.get('authorization')?.replace('Bearer ', '');
|
|
4
|
+
}
|
|
5
|
+
function getSessionTokenFromUrlParam(request) {
|
|
6
|
+
const url = new URL(request.url);
|
|
7
|
+
return url.searchParams.get(SESSION_TOKEN_PARAM);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { getSessionTokenFromUrlParam, getSessionTokenHeader };
|
|
11
|
+
//# sourceMappingURL=get-session-token-header.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-session-token-header.mjs","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,34 @@
|
|
|
1
|
+
const IDENTIFIER_TTL_MS = 60000;
|
|
2
|
+
class IdempotentPromiseHandler {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.identifiers = new Map();
|
|
5
|
+
}
|
|
6
|
+
async handlePromise({ promiseFunction, identifier, }) {
|
|
7
|
+
try {
|
|
8
|
+
if (this.isPromiseRunnable(identifier)) {
|
|
9
|
+
await promiseFunction();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
finally {
|
|
13
|
+
this.clearStaleIdentifiers();
|
|
14
|
+
}
|
|
15
|
+
return Promise.resolve();
|
|
16
|
+
}
|
|
17
|
+
isPromiseRunnable(identifier) {
|
|
18
|
+
if (!this.identifiers.has(identifier)) {
|
|
19
|
+
this.identifiers.set(identifier, Date.now());
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
async clearStaleIdentifiers() {
|
|
25
|
+
this.identifiers.forEach((date, identifier, map) => {
|
|
26
|
+
if (Date.now() - date > IDENTIFIER_TTL_MS) {
|
|
27
|
+
map.delete(identifier);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { IdempotentPromiseHandler };
|
|
34
|
+
//# sourceMappingURL=idempotent-promise-handler.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotent-promise-handler.mjs","sources":["../../../../../../src/server/authenticate/helpers/idempotent-promise-handler.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,KAAK,CAAC;MAEnB,wBAAwB,CAAA;AAGnC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;KAC9C;AAED,IAAA,MAAM,aAAa,CAAC,EAClB,eAAe,EACf,UAAU,GACoB,EAAA;AAC9B,QAAA,IAAI;AACF,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;gBACtC,MAAM,eAAe,EAAE,CAAC;aACzB;SACF;gBAAS;YACR,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;AAED,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;AAEO,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7C,YAAA,OAAO,IAAI,CAAC;SACb;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,MAAM,qBAAqB,GAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,KAAI;YACjD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,iBAAiB,EAAE;AACzC,gBAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aACxB;AACH,SAAC,CAAC,CAAC;KACJ;AACF;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { isbot } from 'isbot';
|
|
2
|
+
|
|
3
|
+
function respondToBotRequest({ logger }, request) {
|
|
4
|
+
if (isbot(request.headers.get('User-Agent'))) {
|
|
5
|
+
logger.debug('Request is from a bot, skipping auth');
|
|
6
|
+
throw new Response(undefined, { status: 410, statusText: 'Gone' });
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { respondToBotRequest };
|
|
11
|
+
//# sourceMappingURL=reject-bot-request.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reject-bot-request.mjs","sources":["../../../../../../src/server/authenticate/helpers/reject-bot-request.ts"],"sourcesContent":[null],"names":[],"mappings":";;SAIgB,mBAAmB,CACjC,EAAC,MAAM,EAAc,EACrB,OAAgB,EAAA;AAEhB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE;AAC5C,QAAA,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACrD,QAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC,CAAC;KAClE;AACH;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { redirectToBouncePage } from '../admin/helpers/redirect-to-bounce-page.mjs';
|
|
2
|
+
import { RETRY_INVALID_SESSION_HEADER } from '../const.mjs';
|
|
3
|
+
|
|
4
|
+
function respondToInvalidSessionToken({ params, request, retryRequest = false, }) {
|
|
5
|
+
const { api, logger, config } = params;
|
|
6
|
+
const isDocumentRequest = !request.headers.get('authorization');
|
|
7
|
+
if (isDocumentRequest) {
|
|
8
|
+
return redirectToBouncePage({ api, logger, config }, new URL(request.url));
|
|
9
|
+
}
|
|
10
|
+
throw new Response(undefined, {
|
|
11
|
+
status: 401,
|
|
12
|
+
statusText: 'Unauthorized',
|
|
13
|
+
headers: retryRequest ? RETRY_INVALID_SESSION_HEADER : {},
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { respondToInvalidSessionToken };
|
|
18
|
+
//# sourceMappingURL=respond-to-invalid-session-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond-to-invalid-session-token.mjs","sources":["../../../../../../src/server/authenticate/helpers/respond-to-invalid-session-token.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAWM,SAAU,4BAA4B,CAAC,EAC3C,MAAM,EACN,OAAO,EACP,YAAY,GAAG,KAAK,GACe,EAAA;IACnC,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IAErC,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChE,IAAI,iBAAiB,EAAE;AACrB,QAAA,OAAO,oBAAoB,CAAC,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1E;AAED,IAAA,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,UAAU,EAAE,cAAc;QAC1B,OAAO,EAAE,YAAY,GAAG,4BAA4B,GAAG,EAAE;AAC1D,KAAA,CAAC,CAAC;AACL;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ensureCORSHeadersFactory } from './ensure-cors-headers.mjs';
|
|
2
|
+
|
|
3
|
+
function respondToOptionsRequest(params, request, corsHeaders) {
|
|
4
|
+
if (request.method === 'OPTIONS') {
|
|
5
|
+
const ensureCORSHeaders = ensureCORSHeadersFactory(params, request, corsHeaders);
|
|
6
|
+
throw ensureCORSHeaders(new Response(null, {
|
|
7
|
+
status: 204,
|
|
8
|
+
headers: {
|
|
9
|
+
'Access-Control-Max-Age': '7200',
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { respondToOptionsRequest };
|
|
16
|
+
//# sourceMappingURL=respond-to-options-request.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respond-to-options-request.mjs","sources":["../../../../../../src/server/authenticate/helpers/respond-to-options-request.ts"],"sourcesContent":[null],"names":[],"mappings":";;SAIgB,uBAAuB,CACrC,MAAmB,EACnB,OAAgB,EAChB,WAAsB,EAAA;AAEtB,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;QAChC,MAAM,iBAAiB,GAAG,wBAAwB,CAChD,MAAM,EACN,OAAO,EACP,WAAW,CACZ,CAAC;AAEF,QAAA,MAAM,iBAAiB,CACrB,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE;AACP,gBAAA,wBAAwB,EAAE,MAAM;AACjC,aAAA;AACF,SAAA,CAAC,CACH,CAAC;KACH;AACH;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { respondToInvalidSessionToken } from './respond-to-invalid-session-token.mjs';
|
|
2
|
+
|
|
3
|
+
async function validateSessionToken(params, request, token, { checkAudience = true } = {}) {
|
|
4
|
+
const { api, logger } = params;
|
|
5
|
+
logger.debug('Validating session token');
|
|
6
|
+
try {
|
|
7
|
+
const payload = await api.session.decodeSessionToken(token, {
|
|
8
|
+
checkAudience,
|
|
9
|
+
});
|
|
10
|
+
logger.debug('Session token is valid', {
|
|
11
|
+
payload: JSON.stringify(payload),
|
|
12
|
+
});
|
|
13
|
+
return payload;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
logger.debug(`Failed to validate session token: ${error.message}`);
|
|
17
|
+
throw respondToInvalidSessionToken({ params, request, retryRequest: true });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { validateSessionToken };
|
|
22
|
+
//# sourceMappingURL=validate-session-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-session-token.mjs","sources":["../../../../../../src/server/authenticate/helpers/validate-session-token.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAUO,eAAe,oBAAoB,CACxC,MAAmB,EACnB,OAAgB,EAChB,KAAa,EACb,EAAC,aAAa,GAAG,IAAI,KAAiC,EAAE,EAAA;AAExD,IAAA,MAAM,EAAC,GAAG,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAC7B,IAAA,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAEzC,IAAA,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE;YAC1D,aAAa;AACd,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;AACrC,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACjC,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,OAAO,CAAC;KAChB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,CAAA,kCAAA,EAAqC,KAAK,CAAC,OAAO,CAAE,CAAA,CAAC,CAAC;AAEnE,QAAA,MAAM,4BAA4B,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;KAC3E;AACH;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { redirect } from '@remix-run/server-runtime';
|
|
2
|
+
import { LoginErrorType } from '../../types.mjs';
|
|
3
|
+
|
|
4
|
+
function loginFactory(params) {
|
|
5
|
+
const { api, config, logger } = params;
|
|
6
|
+
return async function login(request) {
|
|
7
|
+
const url = new URL(request.url);
|
|
8
|
+
const shopParam = url.searchParams.get('shop');
|
|
9
|
+
if (request.method === 'GET' && !shopParam) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
const shop = shopParam || (await request.formData()).get('shop');
|
|
13
|
+
if (!shop) {
|
|
14
|
+
logger.debug('Missing shop parameter', { shop });
|
|
15
|
+
return { shop: LoginErrorType.MissingShop };
|
|
16
|
+
}
|
|
17
|
+
const shopWithoutProtocol = shop
|
|
18
|
+
.replace(/^https?:\/\//, '')
|
|
19
|
+
.replace(/\/$/, '');
|
|
20
|
+
const shopWithDomain = shop?.indexOf('.') === -1
|
|
21
|
+
? `${shopWithoutProtocol}.myshopify.com`
|
|
22
|
+
: shopWithoutProtocol;
|
|
23
|
+
const sanitizedShop = api.utils.sanitizeShop(shopWithDomain);
|
|
24
|
+
if (!sanitizedShop) {
|
|
25
|
+
logger.debug('Invalid shop parameter', { shop });
|
|
26
|
+
return { shop: LoginErrorType.InvalidShop };
|
|
27
|
+
}
|
|
28
|
+
const authPath = `${config.appUrl}${config.auth.path}?shop=${sanitizedShop}`;
|
|
29
|
+
const adminPath = api.utils.legacyUrlToShopAdminUrl(sanitizedShop);
|
|
30
|
+
const installPath = `https://${adminPath}/oauth/install?client_id=${config.apiKey}`;
|
|
31
|
+
const shouldInstall = config.isEmbeddedApp && config.future.unstable_newEmbeddedAuthStrategy;
|
|
32
|
+
const redirectUrl = shouldInstall ? installPath : authPath;
|
|
33
|
+
logger.info(`Redirecting login request to ${redirectUrl}`, {
|
|
34
|
+
shop: sanitizedShop,
|
|
35
|
+
});
|
|
36
|
+
throw redirect(redirectUrl);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { loginFactory };
|
|
41
|
+
//# sourceMappingURL=login.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.mjs","sources":["../../../../../../src/server/authenticate/login/login.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIM,SAAU,YAAY,CAAC,MAAmB,EAAA;IAC9C,MAAM,EAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;AAErC,IAAA,OAAO,eAAe,KAAK,CAAC,OAAgB,EAAA;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC1C,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,MAAM,IAAI,GACR,SAAS,IAAK,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,CAAY,CAAC;QAElE,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;AAC/C,YAAA,OAAO,EAAC,IAAI,EAAE,cAAc,CAAC,WAAW,EAAC,CAAC;SAC3C;QAED,MAAM,mBAAmB,GAAG,IAAI;AAC7B,aAAA,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;AAC3B,aAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,cAAc,GAClB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;cACrB,CAAG,EAAA,mBAAmB,CAAgB,cAAA,CAAA;cACtC,mBAAmB,CAAC;QAC1B,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;AAC/C,YAAA,OAAO,EAAC,IAAI,EAAE,cAAc,CAAC,WAAW,EAAC,CAAC;SAC3C;AAED,QAAA,MAAM,QAAQ,GAAG,CAAG,EAAA,MAAM,CAAC,MAAM,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAS,MAAA,EAAA,aAAa,EAAE,CAAC;QAE7E,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,CAAW,QAAA,EAAA,SAAS,4BAA4B,MAAM,CAAC,MAAM,CAAA,CAAE,CAAC;QAEpF,MAAM,aAAa,GACjB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,gCAAgC,CAAC;QACzE,MAAM,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3D,QAAA,MAAM,CAAC,IAAI,CAAC,CAAgC,6BAAA,EAAA,WAAW,EAAE,EAAE;AACzD,YAAA,IAAI,EAAE,aAAa;AACpB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9B,KAAC,CAAC;AACJ;;;;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { adminClientFactory } from '../../../clients/admin/factory.mjs';
|
|
2
|
+
import { storefrontClientFactory } from '../../../clients/storefront/factory.mjs';
|
|
3
|
+
|
|
4
|
+
function authenticateAppProxyFactory(params) {
|
|
5
|
+
const { api, config, logger } = params;
|
|
6
|
+
return async function authenticate(request) {
|
|
7
|
+
logger.info('Authenticating app proxy request');
|
|
8
|
+
const url = new URL(request.url);
|
|
9
|
+
if (!(await validateAppProxyHmac(params, url))) {
|
|
10
|
+
logger.info('App proxy request has invalid signature');
|
|
11
|
+
throw new Response(undefined, {
|
|
12
|
+
status: 400,
|
|
13
|
+
statusText: 'Bad Request',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const shop = url.searchParams.get('shop');
|
|
17
|
+
const sessionId = api.session.getOfflineId(shop);
|
|
18
|
+
const session = await config.sessionStorage.loadSession(sessionId);
|
|
19
|
+
if (!session) {
|
|
20
|
+
const context = {
|
|
21
|
+
liquid,
|
|
22
|
+
session: undefined,
|
|
23
|
+
admin: undefined,
|
|
24
|
+
storefront: undefined,
|
|
25
|
+
};
|
|
26
|
+
return context;
|
|
27
|
+
}
|
|
28
|
+
const context = {
|
|
29
|
+
liquid,
|
|
30
|
+
session,
|
|
31
|
+
admin: adminClientFactory({ params, session }),
|
|
32
|
+
storefront: storefrontClientFactory({ params, session }),
|
|
33
|
+
};
|
|
34
|
+
return context;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const liquid = (body, initAndOptions) => {
|
|
38
|
+
const processedBody = processLiquidBody(body);
|
|
39
|
+
if (typeof initAndOptions !== 'object') {
|
|
40
|
+
return new Response(processedBody, {
|
|
41
|
+
status: initAndOptions || 200,
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/liquid',
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const { layout, ...responseInit } = initAndOptions || {};
|
|
48
|
+
const responseBody = layout === false ? `{% layout none %} ${processedBody}` : processedBody;
|
|
49
|
+
const headers = new Headers(responseInit.headers);
|
|
50
|
+
headers.set('Content-Type', 'application/liquid');
|
|
51
|
+
return new Response(responseBody, {
|
|
52
|
+
...responseInit,
|
|
53
|
+
headers,
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
async function validateAppProxyHmac(params, url) {
|
|
57
|
+
const { api, logger } = params;
|
|
58
|
+
try {
|
|
59
|
+
let searchParams = new URLSearchParams(url.search);
|
|
60
|
+
if (!searchParams.get('index')) {
|
|
61
|
+
searchParams.delete('index');
|
|
62
|
+
}
|
|
63
|
+
let isValid = await api.utils.validateHmac(Object.fromEntries(searchParams.entries()), { signator: 'appProxy' });
|
|
64
|
+
if (!isValid) {
|
|
65
|
+
const cleanPath = url.pathname
|
|
66
|
+
.replace(/^\//, '')
|
|
67
|
+
.replace(/\/$/, '')
|
|
68
|
+
.replaceAll('/', '.');
|
|
69
|
+
const data = `routes%2F${cleanPath}`;
|
|
70
|
+
searchParams = new URLSearchParams(`?_data=${data}&${searchParams.toString().replace(/^\?/, '')}`);
|
|
71
|
+
isValid = await api.utils.validateHmac(Object.fromEntries(searchParams.entries()), { signator: 'appProxy' });
|
|
72
|
+
if (!isValid) {
|
|
73
|
+
const searchParams = new URLSearchParams(`?_data=${data}._index&${url.search.replace(/^\?/, '')}`);
|
|
74
|
+
isValid = await api.utils.validateHmac(Object.fromEntries(searchParams.entries()), { signator: 'appProxy' });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return isValid;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.info(error.message);
|
|
81
|
+
throw new Response(undefined, { status: 400, statusText: 'Bad Request' });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function processLiquidBody(body) {
|
|
85
|
+
return (body
|
|
86
|
+
// Add trailing slashes to relative form action URLs
|
|
87
|
+
.replaceAll(/<(form[^>]+)action="(\/[^"?]+)(\?[^"]+)?">/g, '<$1action="$2/$3">')
|
|
88
|
+
// Add trailing slashes to relative link href URLs
|
|
89
|
+
.replaceAll(/<(a[^>]+)href="(\/[^"?]+)(\?[^"]+)?">/g, '<$1href="$2/$3">'));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export { authenticateAppProxyFactory };
|
|
93
|
+
//# sourceMappingURL=authenticate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.mjs","sources":["../../../../../../../src/server/authenticate/public/appProxy/authenticate.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|