@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.
@@ -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
+ }