Rust discount function (one automatic discount evaluating all offers in priority order, parity with the Odoo engine), React Router admin with Polaris, theme app extension and app proxy pages, webhooks incl. GDPR, managed-pricing limits, and a Docker Compose stack (Postgres + Caddy HTTPS) for a single VPS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import "@shopify/shopify-app-react-router/adapters/node";
|
|
import {
|
|
ApiVersion,
|
|
AppDistribution,
|
|
shopifyApp,
|
|
} from "@shopify/shopify-app-react-router/server";
|
|
import { PrismaSessionStorage } from "@shopify/shopify-app-session-storage-prisma";
|
|
import prisma from "./db.server";
|
|
|
|
const shopify = shopifyApp({
|
|
apiKey: process.env.SHOPIFY_API_KEY,
|
|
apiSecretKey: process.env.SHOPIFY_API_SECRET || "",
|
|
apiVersion: ApiVersion.October26,
|
|
scopes: process.env.SCOPES?.split(","),
|
|
appUrl: process.env.SHOPIFY_APP_URL || "",
|
|
authPathPrefix: "/auth",
|
|
sessionStorage: new PrismaSessionStorage(prisma),
|
|
distribution: AppDistribution.AppStore,
|
|
future: {
|
|
expiringOfflineAccessTokens: true,
|
|
},
|
|
...(process.env.SHOP_CUSTOM_DOMAIN
|
|
? { customShopDomains: [process.env.SHOP_CUSTOM_DOMAIN] }
|
|
: {}),
|
|
});
|
|
|
|
export default shopify;
|
|
export const apiVersion = ApiVersion.October26;
|
|
export const addDocumentResponseHeaders = shopify.addDocumentResponseHeaders;
|
|
export const authenticate = shopify.authenticate;
|
|
export const unauthenticated = shopify.unauthenticated;
|
|
export const login = shopify.login;
|
|
export const registerWebhooks = shopify.registerWebhooks;
|
|
export const sessionStorage = shopify.sessionStorage;
|