@anker-in/shopify-next 0.1.1-beta.0
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/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +68 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +54 -0
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
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@anker-in/shopify-next",
|
|
3
|
+
"version": "0.1.1-beta.0",
|
|
4
|
+
"description": "Next.js adapter for Shopify React SDK",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist/**",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"cookie": "^0.6.0",
|
|
21
|
+
"@anker-in/shopify-react": "0.1.1-beta.0"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"next": ">=14.0.0",
|
|
25
|
+
"react": ">=18.0.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/cookie": "^0.6.0",
|
|
29
|
+
"@types/react": "19.1.0",
|
|
30
|
+
"@types/react-dom": "19.1.1",
|
|
31
|
+
"next": "^14.2.3",
|
|
32
|
+
"react": "^19.1.0",
|
|
33
|
+
"tsup": "^8.0.0",
|
|
34
|
+
"typescript": "5.9.2",
|
|
35
|
+
"@repo/typescript-config": "0.0.0",
|
|
36
|
+
"@repo/eslint-config": "0.0.0"
|
|
37
|
+
},
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"shopify",
|
|
43
|
+
"nextjs",
|
|
44
|
+
"react",
|
|
45
|
+
"adapter"
|
|
46
|
+
],
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"scripts": {
|
|
49
|
+
"build": "tsup",
|
|
50
|
+
"dev": "tsup --watch",
|
|
51
|
+
"check-types": "tsc --noEmit",
|
|
52
|
+
"lint": "eslint . --max-warnings 0"
|
|
53
|
+
}
|
|
54
|
+
}
|