@demokit-ai/next 0.0.1
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/client.cjs +152 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +114 -0
- package/dist/client.d.ts +114 -0
- package/dist/client.js +128 -0
- package/dist/client.js.map +1 -0
- package/dist/index.cjs +31 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +91 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware.cjs +111 -0
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.cts +47 -0
- package/dist/middleware.d.ts +47 -0
- package/dist/middleware.js +106 -0
- package/dist/middleware.js.map +1 -0
- package/dist/server.cjs +183 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +89 -0
- package/dist/server.d.ts +89 -0
- package/dist/server.js +171 -0
- package/dist/server.js.map +1 -0
- package/dist/types-Cvq5JUP1.d.cts +129 -0
- package/dist/types-Cvq5JUP1.d.ts +129 -0
- package/package.json +94 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { FixtureMap, FixtureHandler } from '@demokit-ai/core';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { NextResponse } from 'next/server';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for DemoKit Next.js integration
|
|
7
|
+
*/
|
|
8
|
+
interface DemoKitNextConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Map of URL patterns to fixture handlers
|
|
11
|
+
*/
|
|
12
|
+
fixtures: FixtureMap;
|
|
13
|
+
/**
|
|
14
|
+
* Available scenarios with their fixtures
|
|
15
|
+
*/
|
|
16
|
+
scenarios?: Record<string, FixtureMap>;
|
|
17
|
+
/**
|
|
18
|
+
* localStorage key for persisting demo mode state
|
|
19
|
+
* @default 'demokit-mode'
|
|
20
|
+
*/
|
|
21
|
+
storageKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Cookie name for server-side demo mode detection
|
|
24
|
+
* @default 'demokit-mode'
|
|
25
|
+
*/
|
|
26
|
+
cookieName?: string;
|
|
27
|
+
/**
|
|
28
|
+
* URL parameter to enable/disable demo mode
|
|
29
|
+
* @default 'demo'
|
|
30
|
+
*/
|
|
31
|
+
urlParam?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Base URL to use for relative URL parsing
|
|
34
|
+
* @default process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000'
|
|
35
|
+
*/
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Props for DemoKitNextProvider
|
|
40
|
+
*/
|
|
41
|
+
interface DemoKitNextProviderProps extends DemoKitNextConfig {
|
|
42
|
+
/**
|
|
43
|
+
* Child components
|
|
44
|
+
*/
|
|
45
|
+
children: ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* Initial enabled state
|
|
48
|
+
* If not provided, will read from cookie/localStorage
|
|
49
|
+
*/
|
|
50
|
+
initialEnabled?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Configuration for createDemoMiddleware
|
|
54
|
+
*/
|
|
55
|
+
interface DemoMiddlewareConfig {
|
|
56
|
+
/**
|
|
57
|
+
* Cookie name for demo mode
|
|
58
|
+
* @default 'demokit-mode'
|
|
59
|
+
*/
|
|
60
|
+
cookieName?: string;
|
|
61
|
+
/**
|
|
62
|
+
* URL parameter to toggle demo mode
|
|
63
|
+
* @default 'demo'
|
|
64
|
+
*/
|
|
65
|
+
urlParam?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Header to set for API routes when in demo mode
|
|
68
|
+
* @default 'x-demokit-mode'
|
|
69
|
+
*/
|
|
70
|
+
headerName?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Paths that should have demo mode header set
|
|
73
|
+
* @default ['/api/']
|
|
74
|
+
*/
|
|
75
|
+
apiPaths?: string[];
|
|
76
|
+
/**
|
|
77
|
+
* Cookie options
|
|
78
|
+
*/
|
|
79
|
+
cookieOptions?: {
|
|
80
|
+
maxAge?: number;
|
|
81
|
+
path?: string;
|
|
82
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
83
|
+
secure?: boolean;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Result of middleware processing
|
|
88
|
+
*/
|
|
89
|
+
interface MiddlewareResult {
|
|
90
|
+
/**
|
|
91
|
+
* Whether demo mode is enabled
|
|
92
|
+
*/
|
|
93
|
+
isDemoMode: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* The scenario name if set
|
|
96
|
+
*/
|
|
97
|
+
scenario: string | null;
|
|
98
|
+
/**
|
|
99
|
+
* The response to return (may have cookies set)
|
|
100
|
+
*/
|
|
101
|
+
response: NextResponse;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Scenario definition for Next.js
|
|
105
|
+
*/
|
|
106
|
+
interface DemoScenario {
|
|
107
|
+
/**
|
|
108
|
+
* Scenario name
|
|
109
|
+
*/
|
|
110
|
+
name: string;
|
|
111
|
+
/**
|
|
112
|
+
* Scenario description
|
|
113
|
+
*/
|
|
114
|
+
description?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Fixtures for this scenario
|
|
117
|
+
*/
|
|
118
|
+
fixtures: FixtureMap;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Helper type for defining fixtures with type safety
|
|
122
|
+
*/
|
|
123
|
+
type DefineFixtures<T extends Record<string, FixtureHandler>> = T;
|
|
124
|
+
/**
|
|
125
|
+
* Helper type for defining scenarios with type safety
|
|
126
|
+
*/
|
|
127
|
+
type DefineScenarios<T extends Record<string, FixtureMap>> = T;
|
|
128
|
+
|
|
129
|
+
export type { DemoScenario as D, MiddlewareResult as M, DemoKitNextConfig as a, DemoKitNextProviderProps as b, DemoMiddlewareConfig as c, DefineFixtures as d, DefineScenarios as e };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { FixtureMap, FixtureHandler } from '@demokit-ai/core';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { NextResponse } from 'next/server';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for DemoKit Next.js integration
|
|
7
|
+
*/
|
|
8
|
+
interface DemoKitNextConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Map of URL patterns to fixture handlers
|
|
11
|
+
*/
|
|
12
|
+
fixtures: FixtureMap;
|
|
13
|
+
/**
|
|
14
|
+
* Available scenarios with their fixtures
|
|
15
|
+
*/
|
|
16
|
+
scenarios?: Record<string, FixtureMap>;
|
|
17
|
+
/**
|
|
18
|
+
* localStorage key for persisting demo mode state
|
|
19
|
+
* @default 'demokit-mode'
|
|
20
|
+
*/
|
|
21
|
+
storageKey?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Cookie name for server-side demo mode detection
|
|
24
|
+
* @default 'demokit-mode'
|
|
25
|
+
*/
|
|
26
|
+
cookieName?: string;
|
|
27
|
+
/**
|
|
28
|
+
* URL parameter to enable/disable demo mode
|
|
29
|
+
* @default 'demo'
|
|
30
|
+
*/
|
|
31
|
+
urlParam?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Base URL to use for relative URL parsing
|
|
34
|
+
* @default process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000'
|
|
35
|
+
*/
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Props for DemoKitNextProvider
|
|
40
|
+
*/
|
|
41
|
+
interface DemoKitNextProviderProps extends DemoKitNextConfig {
|
|
42
|
+
/**
|
|
43
|
+
* Child components
|
|
44
|
+
*/
|
|
45
|
+
children: ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* Initial enabled state
|
|
48
|
+
* If not provided, will read from cookie/localStorage
|
|
49
|
+
*/
|
|
50
|
+
initialEnabled?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Configuration for createDemoMiddleware
|
|
54
|
+
*/
|
|
55
|
+
interface DemoMiddlewareConfig {
|
|
56
|
+
/**
|
|
57
|
+
* Cookie name for demo mode
|
|
58
|
+
* @default 'demokit-mode'
|
|
59
|
+
*/
|
|
60
|
+
cookieName?: string;
|
|
61
|
+
/**
|
|
62
|
+
* URL parameter to toggle demo mode
|
|
63
|
+
* @default 'demo'
|
|
64
|
+
*/
|
|
65
|
+
urlParam?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Header to set for API routes when in demo mode
|
|
68
|
+
* @default 'x-demokit-mode'
|
|
69
|
+
*/
|
|
70
|
+
headerName?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Paths that should have demo mode header set
|
|
73
|
+
* @default ['/api/']
|
|
74
|
+
*/
|
|
75
|
+
apiPaths?: string[];
|
|
76
|
+
/**
|
|
77
|
+
* Cookie options
|
|
78
|
+
*/
|
|
79
|
+
cookieOptions?: {
|
|
80
|
+
maxAge?: number;
|
|
81
|
+
path?: string;
|
|
82
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
83
|
+
secure?: boolean;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Result of middleware processing
|
|
88
|
+
*/
|
|
89
|
+
interface MiddlewareResult {
|
|
90
|
+
/**
|
|
91
|
+
* Whether demo mode is enabled
|
|
92
|
+
*/
|
|
93
|
+
isDemoMode: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* The scenario name if set
|
|
96
|
+
*/
|
|
97
|
+
scenario: string | null;
|
|
98
|
+
/**
|
|
99
|
+
* The response to return (may have cookies set)
|
|
100
|
+
*/
|
|
101
|
+
response: NextResponse;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Scenario definition for Next.js
|
|
105
|
+
*/
|
|
106
|
+
interface DemoScenario {
|
|
107
|
+
/**
|
|
108
|
+
* Scenario name
|
|
109
|
+
*/
|
|
110
|
+
name: string;
|
|
111
|
+
/**
|
|
112
|
+
* Scenario description
|
|
113
|
+
*/
|
|
114
|
+
description?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Fixtures for this scenario
|
|
117
|
+
*/
|
|
118
|
+
fixtures: FixtureMap;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Helper type for defining fixtures with type safety
|
|
122
|
+
*/
|
|
123
|
+
type DefineFixtures<T extends Record<string, FixtureHandler>> = T;
|
|
124
|
+
/**
|
|
125
|
+
* Helper type for defining scenarios with type safety
|
|
126
|
+
*/
|
|
127
|
+
type DefineScenarios<T extends Record<string, FixtureMap>> = T;
|
|
128
|
+
|
|
129
|
+
export type { DemoScenario as D, MiddlewareResult as M, DemoKitNextConfig as a, DemoKitNextProviderProps as b, DemoMiddlewareConfig as c, DefineFixtures as d, DefineScenarios as e };
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@demokit-ai/next",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Next.js adapter for DemoKit - App Router, middleware, and API route mocking",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/index.d.cts",
|
|
17
|
+
"default": "./dist/index.cjs"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"./client": {
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/client.d.ts",
|
|
23
|
+
"default": "./dist/client.js"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/client.d.cts",
|
|
27
|
+
"default": "./dist/client.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"./server": {
|
|
31
|
+
"import": {
|
|
32
|
+
"types": "./dist/server.d.ts",
|
|
33
|
+
"default": "./dist/server.js"
|
|
34
|
+
},
|
|
35
|
+
"require": {
|
|
36
|
+
"types": "./dist/server.d.cts",
|
|
37
|
+
"default": "./dist/server.cjs"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"./middleware": {
|
|
41
|
+
"import": {
|
|
42
|
+
"types": "./dist/middleware.d.ts",
|
|
43
|
+
"default": "./dist/middleware.js"
|
|
44
|
+
},
|
|
45
|
+
"require": {
|
|
46
|
+
"types": "./dist/middleware.d.cts",
|
|
47
|
+
"default": "./dist/middleware.cjs"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist"
|
|
53
|
+
],
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "tsup",
|
|
56
|
+
"dev": "tsup --watch",
|
|
57
|
+
"test": "vitest",
|
|
58
|
+
"typecheck": "tsc --noEmit"
|
|
59
|
+
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"@demokit-ai/core": "*",
|
|
62
|
+
"@demokit-ai/react": "*"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@types/react": "^19.0.0",
|
|
66
|
+
"@types/react-dom": "^19.0.0",
|
|
67
|
+
"next": "^15.1.0",
|
|
68
|
+
"react": "^19.0.0",
|
|
69
|
+
"react-dom": "^19.0.0",
|
|
70
|
+
"tsup": "^8.3.5",
|
|
71
|
+
"typescript": "^5.7.2",
|
|
72
|
+
"vitest": "^2.1.8"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"next": ">=13.0.0",
|
|
76
|
+
"react": ">=17.0.0",
|
|
77
|
+
"react-dom": ">=17.0.0"
|
|
78
|
+
},
|
|
79
|
+
"keywords": [
|
|
80
|
+
"demo",
|
|
81
|
+
"mock",
|
|
82
|
+
"next.js",
|
|
83
|
+
"app-router",
|
|
84
|
+
"middleware",
|
|
85
|
+
"fixtures"
|
|
86
|
+
],
|
|
87
|
+
"license": "MIT",
|
|
88
|
+
"repository": {
|
|
89
|
+
"type": "git",
|
|
90
|
+
"url": "https://github.com/your-org/demokit",
|
|
91
|
+
"directory": "packages/next"
|
|
92
|
+
},
|
|
93
|
+
"sideEffects": false
|
|
94
|
+
}
|