@anker-in/shopify-next 1.0.8-beta.2 → 1.0.8-beta.3

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.
@@ -0,0 +1,30 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ShopifyProviderProps, RouterAdapter, CookieAdapter } from '@anker-in/shopify-react';
3
+ export * from '@anker-in/shopify-react';
4
+ import { IncomingMessage, ServerResponse } from 'http';
5
+
6
+ interface ShopifyNextProviderProps extends Omit<ShopifyProviderProps, 'routerAdapter' | 'locale'> {
7
+ /**
8
+ * Locale override (optional, will use Next.js router locale by default)
9
+ */
10
+ locale?: string;
11
+ }
12
+ /**
13
+ * Next.js Shopify Provider
14
+ * Automatically integrates with Next.js router
15
+ */
16
+ declare function ShopifyNextProvider({ locale: propLocale, children, ...props }: ShopifyNextProviderProps): react_jsx_runtime.JSX.Element;
17
+
18
+ /**
19
+ * Next.js router adapter hook
20
+ * Adapts Next.js router to RouterAdapter interface
21
+ */
22
+ declare function useNextRouterAdapter(): RouterAdapter;
23
+
24
+ /**
25
+ * Next.js server-side cookie adapter
26
+ * For use in getServerSideProps, API routes, etc.
27
+ */
28
+ declare function createNextServerCookieAdapter(req: IncomingMessage, res: ServerResponse): CookieAdapter;
29
+
30
+ export { ShopifyNextProvider, type ShopifyNextProviderProps, createNextServerCookieAdapter, useNextRouterAdapter };
@@ -0,0 +1,30 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ShopifyProviderProps, RouterAdapter, CookieAdapter } from '@anker-in/shopify-react';
3
+ export * from '@anker-in/shopify-react';
4
+ import { IncomingMessage, ServerResponse } from 'http';
5
+
6
+ interface ShopifyNextProviderProps extends Omit<ShopifyProviderProps, 'routerAdapter' | 'locale'> {
7
+ /**
8
+ * Locale override (optional, will use Next.js router locale by default)
9
+ */
10
+ locale?: string;
11
+ }
12
+ /**
13
+ * Next.js Shopify Provider
14
+ * Automatically integrates with Next.js router
15
+ */
16
+ declare function ShopifyNextProvider({ locale: propLocale, children, ...props }: ShopifyNextProviderProps): react_jsx_runtime.JSX.Element;
17
+
18
+ /**
19
+ * Next.js router adapter hook
20
+ * Adapts Next.js router to RouterAdapter interface
21
+ */
22
+ declare function useNextRouterAdapter(): RouterAdapter;
23
+
24
+ /**
25
+ * Next.js server-side cookie adapter
26
+ * For use in getServerSideProps, API routes, etc.
27
+ */
28
+ declare function createNextServerCookieAdapter(req: IncomingMessage, res: ServerResponse): CookieAdapter;
29
+
30
+ export { ShopifyNextProvider, type ShopifyNextProviderProps, createNextServerCookieAdapter, useNextRouterAdapter };
package/dist/index.js ADDED
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ var shopifyReact = require('@anker-in/shopify-react');
4
+ var router = require('next/router');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var cookie = require('cookie');
7
+
8
+ // src/provider/provider.tsx
9
+ function useNextRouterAdapter() {
10
+ const router$1 = router.useRouter();
11
+ return {
12
+ locale: router$1.locale || "us",
13
+ locales: router$1.locales,
14
+ pathname: router$1.pathname,
15
+ push: async (url) => {
16
+ await router$1.push(url);
17
+ },
18
+ replace: async (url) => {
19
+ await router$1.replace(url);
20
+ }
21
+ };
22
+ }
23
+ function ShopifyNextProvider({
24
+ locale: propLocale,
25
+ children,
26
+ ...props
27
+ }) {
28
+ const routerAdapter = useNextRouterAdapter();
29
+ const locale = propLocale || routerAdapter.locale;
30
+ return /* @__PURE__ */ jsxRuntime.jsx(
31
+ shopifyReact.ShopifyProvider,
32
+ {
33
+ ...props,
34
+ locale,
35
+ locales: routerAdapter.locales,
36
+ routerAdapter,
37
+ children
38
+ }
39
+ );
40
+ }
41
+ function createNextServerCookieAdapter(req, res) {
42
+ return {
43
+ get(key) {
44
+ const cookies = cookie.parse(req.headers.cookie || "");
45
+ return cookies[key];
46
+ },
47
+ set(key, value, options) {
48
+ const cookie$1 = cookie.serialize(key, value, {
49
+ path: options?.path || "/",
50
+ domain: options?.domain,
51
+ expires: options?.expires,
52
+ maxAge: options?.maxAge,
53
+ secure: options?.secure,
54
+ httpOnly: options?.httpOnly,
55
+ sameSite: options?.sameSite
56
+ });
57
+ const existing = res.getHeader("Set-Cookie") || [];
58
+ const cookies = Array.isArray(existing) ? existing : [existing.toString()];
59
+ res.setHeader("Set-Cookie", [...cookies, cookie$1]);
60
+ },
61
+ remove(key) {
62
+ this.set(key, "", { maxAge: -1 });
63
+ }
64
+ };
65
+ }
66
+
67
+ exports.ShopifyNextProvider = ShopifyNextProvider;
68
+ exports.createNextServerCookieAdapter = createNextServerCookieAdapter;
69
+ exports.useNextRouterAdapter = useNextRouterAdapter;
70
+ Object.keys(shopifyReact).forEach(function (k) {
71
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
72
+ enumerable: true,
73
+ get: function () { return shopifyReact[k]; }
74
+ });
75
+ });
76
+ //# sourceMappingURL=index.js.map
77
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/router.ts","../src/provider/provider.tsx","../src/adapters/cookie-server.ts"],"names":["router","useRouter","jsx","ShopifyProvider","parse","cookie","serialize"],"mappings":";;;;;;;;AAOO,SAAS,oBAAA,GAAsC;AACpD,EAAA,MAAMA,WAASC,gBAAA,EAAU;AAEzB,EAAA,OAAO;AAAA,IACL,MAAA,EAAQD,SAAO,MAAA,IAAU,IAAA;AAAA,IACzB,SAASA,QAAA,CAAO,OAAA;AAAA,IAChB,UAAUA,QAAA,CAAO,QAAA;AAAA,IACjB,IAAA,EAAM,OAAO,GAAA,KAAgB;AAAE,MAAA,MAAMA,QAAA,CAAO,KAAK,GAAG,CAAA;AAAA,IAAE,CAAA;AAAA,IACtD,OAAA,EAAS,OAAO,GAAA,KAAgB;AAAE,MAAA,MAAMA,QAAA,CAAO,QAAQ,GAAG,CAAA;AAAA,IAAE;AAAA,GAC9D;AACF;ACDO,SAAS,mBAAA,CAAoB;AAAA,EAClC,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,MAAA,GAAS,cAAc,aAAA,CAAc,MAAA;AAE3C,EAAA,uBACEE,cAAA;AAAA,IAACC,4BAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,MAAA;AAAA,MACA,SAAS,aAAA,CAAc,OAAA;AAAA,MACvB,aAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AC1BO,SAAS,6BAAA,CACd,KACA,GAAA,EACe;AACf,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,EAAiC;AACnC,MAAA,MAAM,OAAA,GAAUC,YAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,UAAU,EAAE,CAAA;AAC9C,MAAA,OAAO,QAAQ,GAAG,CAAA;AAAA,IACpB,CAAA;AAAA,IAEA,GAAA,CAAI,GAAA,EAAa,KAAA,EAAe,OAAA,EAA+B;AAC7D,MAAA,MAAMC,QAAA,GAASC,gBAAA,CAAU,GAAA,EAAK,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,SAAS,IAAA,IAAQ,GAAA;AAAA,QACvB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,SAAS,OAAA,EAAS,OAAA;AAAA,QAClB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,UAAU,OAAA,EAAS,QAAA;AAAA,QACnB,UAAU,OAAA,EAAS;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,QAAA,GAAW,GAAA,CAAI,SAAA,CAAU,YAAY,KAAK,EAAC;AACjD,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,QAAQ,IAClC,QAAA,GACA,CAAC,QAAA,CAAS,QAAA,EAAU,CAAA;AAExB,MAAA,GAAA,CAAI,UAAU,YAAA,EAAc,CAAC,GAAG,OAAA,EAASD,QAAM,CAAC,CAAA;AAAA,IAClD,CAAA;AAAA,IAEA,OAAO,GAAA,EAAmB;AACxB,MAAA,IAAA,CAAK,IAAI,GAAA,EAAK,EAAA,EAAI,EAAE,MAAA,EAAQ,IAAI,CAAA;AAAA,IAClC;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { useRouter } from 'next/router'\nimport type { RouterAdapter } from '@anker-in/shopify-react'\n\n/**\n * Next.js router adapter hook\n * Adapts Next.js router to RouterAdapter interface\n */\nexport function useNextRouterAdapter(): RouterAdapter {\n const router = useRouter()\n\n return {\n locale: router.locale || 'us',\n locales: router.locales,\n pathname: router.pathname,\n push: async (url: string) => { await router.push(url) },\n replace: async (url: string) => { await router.replace(url) },\n }\n}\n","import React from 'react'\nimport { ShopifyProvider, type ShopifyProviderProps } from '@anker-in/shopify-react'\nimport { useNextRouterAdapter } from '../adapters/router'\n\nexport interface ShopifyNextProviderProps\n extends Omit<ShopifyProviderProps, 'routerAdapter' | 'locale'> {\n /**\n * Locale override (optional, will use Next.js router locale by default)\n */\n locale?: string\n}\n\n/**\n * Next.js Shopify Provider\n * Automatically integrates with Next.js router\n */\nexport function ShopifyNextProvider({\n locale: propLocale,\n children,\n ...props\n}: ShopifyNextProviderProps) {\n const routerAdapter = useNextRouterAdapter()\n const locale = propLocale || routerAdapter.locale\n\n return (\n <ShopifyProvider\n {...props}\n locale={locale}\n locales={routerAdapter.locales}\n routerAdapter={routerAdapter}\n >\n {children}\n </ShopifyProvider>\n )\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport { parse, serialize } from 'cookie'\nimport type { CookieAdapter, CookieOptions } from '@anker-in/shopify-react'\n\n/**\n * Next.js server-side cookie adapter\n * For use in getServerSideProps, API routes, etc.\n */\nexport function createNextServerCookieAdapter(\n req: IncomingMessage,\n res: ServerResponse\n): CookieAdapter {\n return {\n get(key: string): string | undefined {\n const cookies = parse(req.headers.cookie || '')\n return cookies[key]\n },\n\n set(key: string, value: string, options?: CookieOptions): void {\n const cookie = serialize(key, value, {\n path: options?.path || '/',\n domain: options?.domain,\n expires: options?.expires as Date | undefined,\n maxAge: options?.maxAge,\n secure: options?.secure,\n httpOnly: options?.httpOnly,\n sameSite: options?.sameSite,\n })\n\n const existing = res.getHeader('Set-Cookie') || []\n const cookies = Array.isArray(existing)\n ? existing\n : [existing.toString()]\n\n res.setHeader('Set-Cookie', [...cookies, cookie])\n },\n\n remove(key: string): void {\n this.set(key, '', { maxAge: -1 })\n },\n }\n}\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,68 @@
1
+ import { ShopifyProvider } from '@anker-in/shopify-react';
2
+ export * from '@anker-in/shopify-react';
3
+ import { useRouter } from 'next/router';
4
+ import { jsx } from 'react/jsx-runtime';
5
+ import { serialize, parse } from 'cookie';
6
+
7
+ // src/provider/provider.tsx
8
+ function useNextRouterAdapter() {
9
+ const router = useRouter();
10
+ return {
11
+ locale: router.locale || "us",
12
+ locales: router.locales,
13
+ pathname: router.pathname,
14
+ push: async (url) => {
15
+ await router.push(url);
16
+ },
17
+ replace: async (url) => {
18
+ await router.replace(url);
19
+ }
20
+ };
21
+ }
22
+ function ShopifyNextProvider({
23
+ locale: propLocale,
24
+ children,
25
+ ...props
26
+ }) {
27
+ const routerAdapter = useNextRouterAdapter();
28
+ const locale = propLocale || routerAdapter.locale;
29
+ return /* @__PURE__ */ jsx(
30
+ ShopifyProvider,
31
+ {
32
+ ...props,
33
+ locale,
34
+ locales: routerAdapter.locales,
35
+ routerAdapter,
36
+ children
37
+ }
38
+ );
39
+ }
40
+ function createNextServerCookieAdapter(req, res) {
41
+ return {
42
+ get(key) {
43
+ const cookies = parse(req.headers.cookie || "");
44
+ return cookies[key];
45
+ },
46
+ set(key, value, options) {
47
+ const cookie = serialize(key, value, {
48
+ path: options?.path || "/",
49
+ domain: options?.domain,
50
+ expires: options?.expires,
51
+ maxAge: options?.maxAge,
52
+ secure: options?.secure,
53
+ httpOnly: options?.httpOnly,
54
+ sameSite: options?.sameSite
55
+ });
56
+ const existing = res.getHeader("Set-Cookie") || [];
57
+ const cookies = Array.isArray(existing) ? existing : [existing.toString()];
58
+ res.setHeader("Set-Cookie", [...cookies, cookie]);
59
+ },
60
+ remove(key) {
61
+ this.set(key, "", { maxAge: -1 });
62
+ }
63
+ };
64
+ }
65
+
66
+ export { ShopifyNextProvider, createNextServerCookieAdapter, useNextRouterAdapter };
67
+ //# sourceMappingURL=index.mjs.map
68
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/router.ts","../src/provider/provider.tsx","../src/adapters/cookie-server.ts"],"names":[],"mappings":";;;;;;;AAOO,SAAS,oBAAA,GAAsC;AACpD,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,OAAO,MAAA,IAAU,IAAA;AAAA,IACzB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,IAAA,EAAM,OAAO,GAAA,KAAgB;AAAE,MAAA,MAAM,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,IAAE,CAAA;AAAA,IACtD,OAAA,EAAS,OAAO,GAAA,KAAgB;AAAE,MAAA,MAAM,MAAA,CAAO,QAAQ,GAAG,CAAA;AAAA,IAAE;AAAA,GAC9D;AACF;ACDO,SAAS,mBAAA,CAAoB;AAAA,EAClC,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA6B;AAC3B,EAAA,MAAM,gBAAgB,oBAAA,EAAqB;AAC3C,EAAA,MAAM,MAAA,GAAS,cAAc,aAAA,CAAc,MAAA;AAE3C,EAAA,uBACE,GAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,MAAA;AAAA,MACA,SAAS,aAAA,CAAc,OAAA;AAAA,MACvB,aAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AC1BO,SAAS,6BAAA,CACd,KACA,GAAA,EACe;AACf,EAAA,OAAO;AAAA,IACL,IAAI,GAAA,EAAiC;AACnC,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,GAAA,CAAI,OAAA,CAAQ,UAAU,EAAE,CAAA;AAC9C,MAAA,OAAO,QAAQ,GAAG,CAAA;AAAA,IACpB,CAAA;AAAA,IAEA,GAAA,CAAI,GAAA,EAAa,KAAA,EAAe,OAAA,EAA+B;AAC7D,MAAA,MAAM,MAAA,GAAS,SAAA,CAAU,GAAA,EAAK,KAAA,EAAO;AAAA,QACnC,IAAA,EAAM,SAAS,IAAA,IAAQ,GAAA;AAAA,QACvB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,SAAS,OAAA,EAAS,OAAA;AAAA,QAClB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,QAAQ,OAAA,EAAS,MAAA;AAAA,QACjB,UAAU,OAAA,EAAS,QAAA;AAAA,QACnB,UAAU,OAAA,EAAS;AAAA,OACpB,CAAA;AAED,MAAA,MAAM,QAAA,GAAW,GAAA,CAAI,SAAA,CAAU,YAAY,KAAK,EAAC;AACjD,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,QAAQ,IAClC,QAAA,GACA,CAAC,QAAA,CAAS,QAAA,EAAU,CAAA;AAExB,MAAA,GAAA,CAAI,UAAU,YAAA,EAAc,CAAC,GAAG,OAAA,EAAS,MAAM,CAAC,CAAA;AAAA,IAClD,CAAA;AAAA,IAEA,OAAO,GAAA,EAAmB;AACxB,MAAA,IAAA,CAAK,IAAI,GAAA,EAAK,EAAA,EAAI,EAAE,MAAA,EAAQ,IAAI,CAAA;AAAA,IAClC;AAAA,GACF;AACF","file":"index.mjs","sourcesContent":["import { useRouter } from 'next/router'\nimport type { RouterAdapter } from '@anker-in/shopify-react'\n\n/**\n * Next.js router adapter hook\n * Adapts Next.js router to RouterAdapter interface\n */\nexport function useNextRouterAdapter(): RouterAdapter {\n const router = useRouter()\n\n return {\n locale: router.locale || 'us',\n locales: router.locales,\n pathname: router.pathname,\n push: async (url: string) => { await router.push(url) },\n replace: async (url: string) => { await router.replace(url) },\n }\n}\n","import React from 'react'\nimport { ShopifyProvider, type ShopifyProviderProps } from '@anker-in/shopify-react'\nimport { useNextRouterAdapter } from '../adapters/router'\n\nexport interface ShopifyNextProviderProps\n extends Omit<ShopifyProviderProps, 'routerAdapter' | 'locale'> {\n /**\n * Locale override (optional, will use Next.js router locale by default)\n */\n locale?: string\n}\n\n/**\n * Next.js Shopify Provider\n * Automatically integrates with Next.js router\n */\nexport function ShopifyNextProvider({\n locale: propLocale,\n children,\n ...props\n}: ShopifyNextProviderProps) {\n const routerAdapter = useNextRouterAdapter()\n const locale = propLocale || routerAdapter.locale\n\n return (\n <ShopifyProvider\n {...props}\n locale={locale}\n locales={routerAdapter.locales}\n routerAdapter={routerAdapter}\n >\n {children}\n </ShopifyProvider>\n )\n}\n","import type { IncomingMessage, ServerResponse } from 'http'\nimport { parse, serialize } from 'cookie'\nimport type { CookieAdapter, CookieOptions } from '@anker-in/shopify-react'\n\n/**\n * Next.js server-side cookie adapter\n * For use in getServerSideProps, API routes, etc.\n */\nexport function createNextServerCookieAdapter(\n req: IncomingMessage,\n res: ServerResponse\n): CookieAdapter {\n return {\n get(key: string): string | undefined {\n const cookies = parse(req.headers.cookie || '')\n return cookies[key]\n },\n\n set(key: string, value: string, options?: CookieOptions): void {\n const cookie = serialize(key, value, {\n path: options?.path || '/',\n domain: options?.domain,\n expires: options?.expires as Date | undefined,\n maxAge: options?.maxAge,\n secure: options?.secure,\n httpOnly: options?.httpOnly,\n sameSite: options?.sameSite,\n })\n\n const existing = res.getHeader('Set-Cookie') || []\n const cookies = Array.isArray(existing)\n ? existing\n : [existing.toString()]\n\n res.setHeader('Set-Cookie', [...cookies, cookie])\n },\n\n remove(key: string): void {\n this.set(key, '', { maxAge: -1 })\n },\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anker-in/shopify-next",
3
- "version": "1.0.8-beta.2",
3
+ "version": "1.0.8-beta.3",
4
4
  "description": "Next.js adapter for Shopify React SDK",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -18,7 +18,7 @@
18
18
  ],
19
19
  "dependencies": {
20
20
  "cookie": "^0.6.0",
21
- "@anker-in/shopify-react": "1.3.0-beta.2"
21
+ "@anker-in/shopify-react": "1.3.0-beta.3"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "next": ">=14.0.0",