{"_id":"@alphasquad/storefront-base","_rev":"3-063f7b2969f9900e00807e52888e82c9","name":"@alphasquad/storefront-base","dist-tags":{"latest":"0.2.2"},"versions":{"0.2.0":{"name":"@alphasquad/storefront-base","version":"0.2.0","_id":"@alphasquad/storefront-base@0.2.0","maintainers":[{"name":"aqkhan","email":"aqk.neo@gmail.com"},{"name":"abasitq","email":"basit@iintellect.co.uk"},{"name":"assadakramiintellect","email":"assad@iintellect.co.uk"}],"homepage":"https://github.com/AlphaSquadTech/storefront-foundation#readme","bugs":{"url":"https://github.com/AlphaSquadTech/storefront-foundation/issues"},"dist":{"shasum":"980c1c5ccd927a4e53000bd5b82b11d82b5d0aa8","tarball":"https://registry.npmjs.org/@alphasquad/storefront-base/-/storefront-base-0.2.0.tgz","fileCount":37,"integrity":"sha512-tYG6W7SIFrdOubgtLuIbF32GM5BIMg2kV4AaQHNjN6PhUDWAqjRkHtY+F/Xxk+F9oKKbQHDZLsW6kThRBfDClw==","signatures":[{"sig":"MEQCIBP2BjMyn24ROEULYDMcrVUuXQlUkVJOCWn9Pj7R2xoDAiBFezQWOpWCSqaLmeXDVSSr1faOXwPDgnSEzMohb0WKkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alphasquad%2fstorefront-base@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":81174},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./head":{"types":"./dist/head.d.ts","default":"./dist/head.js"},"./runtime/head-links":{"types":"./dist/runtime/head-links.d.ts","default":"./dist/runtime/head-links.js"},"./runtime/middleware":{"types":"./dist/runtime/middleware.d.ts","default":"./dist/runtime/middleware.js"},"./runtime/root-shell":{"types":"./dist/runtime/root-shell.d.ts","default":"./dist/runtime/root-shell.js"},"./runtime/next-config":{"types":"./dist/runtime/next-config.d.ts","default":"./dist/runtime/next-config.js"},"./runtime/app-configuration":{"types":"./dist/runtime/app-configuration.d.ts","default":"./dist/runtime/app-configuration.js"},"./runtime/configuration-service":{"types":"./dist/runtime/configuration-service.d.ts","default":"./dist/runtime/configuration-service.js"},"./runtime/server-configuration-service":{"types":"./dist/runtime/server-configuration-service.d.ts","default":"./dist/runtime/server-configuration-service.js"}},"gitHead":"27a9ccf013c0050976ff66c8de9feb74e7254384","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"aqkhan","email":"aqk.neo@gmail.com"},"repository":{"url":"git+https://github.com/AlphaSquadTech/storefront-foundation.git","type":"git","directory":"packages/storefront-base"},"_npmVersion":"10.8.2","description":"Shared AlphaSquad storefront foundation for Next.js tenants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"jwt-decode":"^4.0.0","@alphasquad/storefront-config":"0.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.2","@types/react":"^19.1.13"},"peerDependencies":{"next":"^15.4.10","react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/storefront-base_0.2.0_1770381881768_0.5870289968257245","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@alphasquad/storefront-base","version":"0.2.1","_id":"@alphasquad/storefront-base@0.2.1","maintainers":[{"name":"aqkhan","email":"aqk.neo@gmail.com"},{"name":"abasitq","email":"basit@iintellect.co.uk"},{"name":"assadakramiintellect","email":"assad@iintellect.co.uk"}],"homepage":"https://github.com/AlphaSquadTech/storefront-foundation#readme","bugs":{"url":"https://github.com/AlphaSquadTech/storefront-foundation/issues"},"dist":{"shasum":"21479618096ddb00d55834fb31547a39f016ab1d","tarball":"https://registry.npmjs.org/@alphasquad/storefront-base/-/storefront-base-0.2.1.tgz","fileCount":38,"integrity":"sha512-axXaXrRJQZ4kp4OG3c0Uz4hhzxu8P8qOrYTa682SxIhmFZgfLHhdc5rJzZ5unyVJ+pvTvVw198la1vFwMxgRkQ==","signatures":[{"sig":"MEYCIQCxgWCoIwAuPSNeQw9yTY5Lw91MzThQdppvDOHKq+9JvQIhAJB8MB302q7wpV5o6IeWeBZtmLDS9ewJWNgcohK0Ok/F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alphasquad%2fstorefront-base@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":83791},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./head":{"types":"./dist/head.d.ts","default":"./dist/head.js"},"./runtime/head-links":{"types":"./dist/runtime/head-links.d.ts","default":"./dist/runtime/head-links.js"},"./runtime/middleware":{"types":"./dist/runtime/middleware.d.ts","default":"./dist/runtime/middleware.js"},"./runtime/root-shell":{"types":"./dist/runtime/root-shell.d.ts","default":"./dist/runtime/root-shell.js"},"./runtime/next-config":{"types":"./dist/runtime/next-config.d.ts","default":"./dist/runtime/next-config.js"},"./runtime/app-configuration":{"types":"./dist/runtime/app-configuration.d.ts","default":"./dist/runtime/app-configuration.js"},"./runtime/configuration-service":{"types":"./dist/runtime/configuration-service.d.ts","default":"./dist/runtime/configuration-service.js"},"./runtime/server-configuration-service":{"types":"./dist/runtime/server-configuration-service.d.ts","default":"./dist/runtime/server-configuration-service.js"}},"gitHead":"f01944a058f381bdd5258d3f9f3152767343e4a1","scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"aqkhan","email":"aqk.neo@gmail.com"},"repository":{"url":"git+https://github.com/AlphaSquadTech/storefront-foundation.git","type":"git","directory":"packages/storefront-base"},"_npmVersion":"10.8.2","description":"Shared AlphaSquad storefront foundation for Next.js tenants","directories":{},"_nodeVersion":"20.20.0","dependencies":{"jwt-decode":"^4.0.0","@alphasquad/storefront-config":"0.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.2","@types/react":"^19.1.13"},"peerDependencies":{"next":"^15.4.10","react":"^19.1.0","react-dom":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/storefront-base_0.2.1_1770382745755_0.13325492632184632","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alphasquad/storefront-base","version":"0.2.2","description":"Shared AlphaSquad storefront foundation for Next.js tenants","type":"module","repository":{"type":"git","url":"git+https://github.com/AlphaSquadTech/storefront-foundation.git","directory":"packages/storefront-base"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./head":{"types":"./dist/head.d.ts","default":"./dist/head.js"},"./runtime/app-configuration":{"types":"./dist/runtime/app-configuration.d.ts","default":"./dist/runtime/app-configuration.js"},"./runtime/configuration-service":{"types":"./dist/runtime/configuration-service.d.ts","default":"./dist/runtime/configuration-service.js"},"./runtime/server-configuration-service":{"types":"./dist/runtime/server-configuration-service.d.ts","default":"./dist/runtime/server-configuration-service.js"},"./runtime/middleware":{"types":"./dist/runtime/middleware.d.ts","default":"./dist/runtime/middleware.js"},"./runtime/next-config":{"types":"./dist/runtime/next-config.d.ts","default":"./dist/runtime/next-config.js"},"./runtime/head-links":{"types":"./dist/runtime/head-links.d.ts","default":"./dist/runtime/head-links.js"},"./runtime/root-shell":{"types":"./dist/runtime/root-shell.d.ts","default":"./dist/runtime/root-shell.js"}},"publishConfig":{"access":"public","provenance":true},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit"},"peerDependencies":{"next":"^15.4.10","react":"^19.1.0","react-dom":"^19.1.0"},"dependencies":{"@alphasquad/storefront-config":"0.2.2","jwt-decode":"^4.0.0"},"devDependencies":{"@types/react":"^19.1.13","typescript":"^5.9.2"},"_id":"@alphasquad/storefront-base@0.2.2","gitHead":"161eeb0d8c9dabe58bc330268943dbe17d9fc6b8","bugs":{"url":"https://github.com/AlphaSquadTech/storefront-foundation/issues"},"homepage":"https://github.com/AlphaSquadTech/storefront-foundation#readme","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ES5HSO7BtwwURM9/ecsT/2PQ2kvu1JTGqnCi0MqHFYBXMte/AX2z0TMHtuKd2kOKv9USmRHUwXO7U+NgR455tw==","shasum":"f9fde9b8439bb09d64114d2fb2bc5bb9df26967d","tarball":"https://registry.npmjs.org/@alphasquad/storefront-base/-/storefront-base-0.2.2.tgz","fileCount":38,"unpackedSize":83791,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alphasquad%2fstorefront-base@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHyc3eVudnz3Nk7FIXit81VVpU92KOrRagqQhj0O5fmbAiBFwtzzD1SMyW0cQdWXYh56iK7BnBbNXoUK+aveoyrZvA=="}]},"_npmUser":{"name":"aqkhan","email":"aqk.neo@gmail.com"},"directories":{},"maintainers":[{"name":"aqkhan","email":"aqk.neo@gmail.com"},{"name":"abasitq","email":"basit@iintellect.co.uk"},{"name":"assadakramiintellect","email":"assad@iintellect.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/storefront-base_0.2.2_1770383130577_0.017276541474832596"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-06T12:44:41.659Z","modified":"2026-02-06T13:05:31.039Z","0.2.0":"2026-02-06T12:44:41.973Z","0.2.1":"2026-02-06T12:59:05.905Z","0.2.2":"2026-02-06T13:05:30.722Z"},"bugs":{"url":"https://github.com/AlphaSquadTech/storefront-foundation/issues"},"homepage":"https://github.com/AlphaSquadTech/storefront-foundation#readme","repository":{"type":"git","url":"git+https://github.com/AlphaSquadTech/storefront-foundation.git","directory":"packages/storefront-base"},"description":"Shared AlphaSquad storefront foundation for Next.js tenants","maintainers":[{"name":"aqkhan","email":"aqk.neo@gmail.com"},{"name":"abasitq","email":"basit@iintellect.co.uk"},{"name":"assadakramiintellect","email":"assad@iintellect.co.uk"}],"readme":"# @alphasquad/storefront-base\n\nShared AlphaSquad storefront foundation for Next.js tenants.\n\nThis package is meant to centralize cross-tenant behavior (for example: default `<head>` metadata rules, Next config defaults,\nshared middleware behavior, etc.) so tenants stay consistent and can be updated via normal npm dependency updates.\n\n## Install\n\n```bash\nnpm install @alphasquad/storefront-base @alphasquad/storefront-config\n```\n\nThis package declares `next`, `react`, and `react-dom` as `peerDependencies` on purpose: each tenant owns its runtime versions.\n\n## Usage\n\n### 1. Tenant Config\n\nCreate `storefront.config.ts` in the tenant:\n\n```ts\nimport type { TenantStorefrontConfig } from \"@alphasquad/storefront-config\";\n\nexport const storefrontConfig: TenantStorefrontConfig = {\n  branding: {\n    tenantName: \"my-tenant\",\n    storeName: \"My Tenant Store\",\n  },\n  theme: {\n    palette: \"base-template\",\n  },\n  integrations: {\n    apiUrl: process.env.NEXT_PUBLIC_API_URL || \"\",\n    siteUrl: process.env.NEXT_PUBLIC_SITE_URL || \"http://localhost:3000\",\n  },\n  head: {\n    title: \"My Tenant Store\",\n    canonicalPath: \"/\",\n    robots: { index: true, follow: true },\n  },\n};\n```\n\n### 2. Base Metadata (Head)\n\nIn `app/layout.tsx`:\n\n```tsx\nimport type { Metadata, Viewport } from \"next\";\nimport { buildBaseMetadata, buildBaseViewport } from \"@alphasquad/storefront-base\";\nimport { storefrontConfig } from \"../storefront.config\";\n\nexport const metadata: Metadata = buildBaseMetadata(storefrontConfig);\nexport const viewport: Viewport = buildBaseViewport();\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  );\n}\n```\n\nIf a tenant needs custom metadata beyond the base defaults, use `applyMetadataOverrides(base, overrides)`.\n\n### 3. Next.js Config\n\nIn `next.config.ts`:\n\n```ts\nimport { createBaseNextConfig } from \"@alphasquad/storefront-base/runtime/next-config\";\n\nconst nextConfig = createBaseNextConfig();\n\n// If you import anything from @alphasquad/* packages at runtime, keep this enabled.\nnextConfig.transpilePackages = [\n  \"@alphasquad/storefront-base\",\n  \"@alphasquad/storefront-config\",\n];\n\nexport default nextConfig;\n```\n\n### 4. Middleware\n\nCreate `middleware.ts` in the tenant:\n\n```ts\nimport { createStorefrontMiddleware } from \"@alphasquad/storefront-base/runtime/middleware\";\n\nexport default createStorefrontMiddleware();\n\n// Note: Next.js requires this matcher to be a static literal (do not import it).\nexport const config = {\n  matcher: [\"/((?!api|_next/static|_next/image|favicon.ico).*)\"],\n};\n```\n\n","readmeFilename":"README.md"}