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>
89 lines
2.5 KiB
JSON
89 lines
2.5 KiB
JSON
{
|
|
"name": "app",
|
|
"private": true,
|
|
"scripts": {
|
|
"build": "react-router build",
|
|
"dev": "shopify app dev",
|
|
"config:link": "shopify app config link",
|
|
"generate": "shopify app generate",
|
|
"deploy": "shopify app deploy",
|
|
"config:use": "shopify app config use",
|
|
"env": "shopify app env",
|
|
"start": "react-router-serve ./build/server/index.js",
|
|
"docker-start": "npm run setup && npm run start",
|
|
"setup": "prisma generate && prisma migrate deploy",
|
|
"lint": "eslint --ignore-path .gitignore --cache --cache-location ./node_modules/.cache/eslint .",
|
|
"shopify": "shopify",
|
|
"prisma": "prisma",
|
|
"graphql-codegen": "graphql-codegen",
|
|
"vite": "vite",
|
|
"typecheck": "react-router typegen && tsc --noEmit",
|
|
"test": "npm run test:engine && npm run test:function",
|
|
"test:function": "cd extensions/bundle-discount && cargo test",
|
|
"test:engine": "cd engine && vitest run"
|
|
},
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=22.12"
|
|
},
|
|
"dependencies": {
|
|
"@prisma/client": "^6.19.0",
|
|
"@react-router/dev": "7.18.2",
|
|
"@react-router/fs-routes": "7.18.2",
|
|
"@react-router/node": "7.18.2",
|
|
"@react-router/serve": "7.18.2",
|
|
"@shopify/app-bridge-react": "^4.2.4",
|
|
"@shopify/shopify-app-react-router": "^3.0.1",
|
|
"@shopify/shopify-app-session-storage-prisma": "^11.0.0",
|
|
"isbot": "^5.1.31",
|
|
"prisma": "^6.19.0",
|
|
"react": "^18.3.1",
|
|
"react-dom": "^18.3.1",
|
|
"react-router": "7.18.2",
|
|
"vite-tsconfig-paths": "^6.0.4"
|
|
},
|
|
"devDependencies": {
|
|
"@shopify/api-codegen-preset": "^2.0.0",
|
|
"@shopify/polaris-types": "1.0.1",
|
|
"@types/eslint": "^9.6.1",
|
|
"@types/node": "^25.5.2",
|
|
"@types/react": "^18.3.25",
|
|
"@types/react-dom": "^18.3.7",
|
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
"@typescript-eslint/parser": "^6.21.0",
|
|
"ajv": "^8.20.0",
|
|
"ajv-formats": "^3.0.1",
|
|
"eslint": "^8.57.1",
|
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
"eslint-plugin-import": "^2.32.0",
|
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
"graphql-config": "^5.1.1",
|
|
"prettier": "^3.6.2",
|
|
"typescript": "^5.9.3",
|
|
"vite": "^7.3.1",
|
|
"vitest": "^3.2.7"
|
|
},
|
|
"workspaces": {
|
|
"packages": [
|
|
"extensions/*"
|
|
]
|
|
},
|
|
"trustedDependencies": [
|
|
"@shopify/plugin-cloudflare"
|
|
],
|
|
"overrides": {
|
|
"p-map": "^4.0.0",
|
|
"qs": "^6.16.0"
|
|
},
|
|
"resolutions": {
|
|
"qs": "^6.16.0"
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"qs": "^6.16.0"
|
|
}
|
|
}
|
|
}
|