Skip to content

Commit 6d868dd

Browse files
committed
feat: Add temporary dedicated server features imports
This allows using the serializer and the parsers in server-side code without depending on React for the cache, as would be the case if importing from `nuqs/server`. Closes #804. See also discussion #717.
1 parent 1635863 commit 6d868dd

8 files changed

+49
-1
lines changed

packages/nuqs/package.json

+18
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
"files": [
3434
"dist/",
3535
"server.d.ts",
36+
"server/cache.d.ts",
37+
"server/serializer.d.ts",
38+
"server/parsers.d.ts",
3639
"adapters/react.d.ts",
3740
"adapters/next.d.ts",
3841
"adapters/next/app.d.ts",
@@ -58,6 +61,21 @@
5861
"import": "./dist/server.js",
5962
"require": "./esm-only.cjs"
6063
},
64+
"./server/cache": {
65+
"types": "./dist/server/cache.d.ts",
66+
"import": "./dist/server/cache.js",
67+
"require": "./esm-only.cjs"
68+
},
69+
"./server/serializer": {
70+
"types": "./dist/server/serializer.d.ts",
71+
"import": "./dist/server/serializer.js",
72+
"require": "./esm-only.cjs"
73+
},
74+
"./server/parsers": {
75+
"types": "./dist/server/parsers.d.ts",
76+
"import": "./dist/server/parsers.js",
77+
"require": "./esm-only.cjs"
78+
},
6179
"./adapters/react": {
6280
"types": "./dist/adapters/react.d.ts",
6381
"import": "./dist/adapters/react.js",

packages/nuqs/server/cache.d.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// This file is needed for projects that have `moduleResolution` set to `node`
2+
// in their tsconfig.json to be able to `import {} from 'nuqs/server/cache'`.
3+
// Other module resolutions strategies will look for the `exports` in `package.json`,
4+
// but with `node`, TypeScript will look for a .d.ts file with that name at the
5+
// root of the package.
6+
7+
export * from './dist/server/cache'

packages/nuqs/server/parsers.d.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// This file is needed for projects that have `moduleResolution` set to `node`
2+
// in their tsconfig.json to be able to `import {} from 'nuqs/server/parsers'`.
3+
// Other module resolutions strategies will look for the `exports` in `package.json`,
4+
// but with `node`, TypeScript will look for a .d.ts file with that name at the
5+
// root of the package.
6+
7+
export * from './dist/server/parsers'

packages/nuqs/server/serializer.d.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// This file is needed for projects that have `moduleResolution` set to `node`
2+
// in their tsconfig.json to be able to `import {} from 'nuqs/server/serializer'`.
3+
// Other module resolutions strategies will look for the `exports` in `package.json`,
4+
// but with `node`, TypeScript will look for a .d.ts file with that name at the
5+
// root of the package.
6+
7+
export * from './dist/server/serializer'
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { createSearchParamsCache } from './cache'
2+
export type { HistoryOptions, Nullable, Options, SearchParams } from './defs'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export type { HistoryOptions, Nullable, Options, SearchParams } from './defs'
2+
export * from './parsers'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export type { HistoryOptions, Nullable, Options, SearchParams } from './defs'
2+
export { createSerializer } from './serializer'

packages/nuqs/tsup.config.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ const entrypoints = {
3434
'adapters/testing': 'src/adapters/testing.ts'
3535
},
3636
server: {
37-
server: 'src/index.server.ts'
37+
server: 'src/index.server.ts',
38+
'server/cache': 'src/index.server.cache.ts',
39+
'server/parsers': 'src/index.server.parsers.ts',
40+
'server/serializer': 'src/index.server.serializer.ts'
3841
}
3942
}
4043

0 commit comments

Comments
 (0)