@mrjasonroy/cache-components-cache-handler 16.0.0-alpha.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/README.md +437 -0
- package/dist/data-cache/memory.d.ts +47 -0
- package/dist/data-cache/memory.d.ts.map +1 -0
- package/dist/data-cache/memory.js +310 -0
- package/dist/data-cache/memory.js.map +1 -0
- package/dist/data-cache/redis.d.ts +83 -0
- package/dist/data-cache/redis.d.ts.map +1 -0
- package/dist/data-cache/redis.js +240 -0
- package/dist/data-cache/redis.js.map +1 -0
- package/dist/data-cache/types.d.ts +85 -0
- package/dist/data-cache/types.d.ts.map +1 -0
- package/dist/data-cache/types.js +7 -0
- package/dist/data-cache/types.js.map +1 -0
- package/dist/handlers/composite.d.ts +70 -0
- package/dist/handlers/composite.d.ts.map +1 -0
- package/dist/handlers/composite.js +123 -0
- package/dist/handlers/composite.js.map +1 -0
- package/dist/handlers/memory.d.ts +77 -0
- package/dist/handlers/memory.d.ts.map +1 -0
- package/dist/handlers/memory.js +145 -0
- package/dist/handlers/memory.js.map +1 -0
- package/dist/handlers/redis.d.ts +80 -0
- package/dist/handlers/redis.d.ts.map +1 -0
- package/dist/handlers/redis.js +210 -0
- package/dist/handlers/redis.js.map +1 -0
- package/dist/helpers/buffer.d.ts +25 -0
- package/dist/helpers/buffer.d.ts.map +1 -0
- package/dist/helpers/buffer.js +45 -0
- package/dist/helpers/buffer.js.map +1 -0
- package/dist/helpers/is-implicit-tag.d.ts +9 -0
- package/dist/helpers/is-implicit-tag.d.ts.map +1 -0
- package/dist/helpers/is-implicit-tag.js +16 -0
- package/dist/helpers/is-implicit-tag.js.map +1 -0
- package/dist/helpers/lifespan.d.ts +18 -0
- package/dist/helpers/lifespan.d.ts.map +1 -0
- package/dist/helpers/lifespan.js +43 -0
- package/dist/helpers/lifespan.js.map +1 -0
- package/dist/helpers/next-config.d.ts +97 -0
- package/dist/helpers/next-config.d.ts.map +1 -0
- package/dist/helpers/next-config.js +96 -0
- package/dist/helpers/next-config.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +163 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,gFAAgF;AAChF,2DAA2D;AAC3D,gFAAgF;AAEhF,OAAO,EACL,gBAAgB,EAEhB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,WAAW;AACX,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAE9B,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF,OAAO,EACL,4BAA4B,GAE7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,2BAA2B,GAG5B,MAAM,uBAAuB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js 16 Cache Handler Types
|
|
3
|
+
* Based on: https://nextjs.org/docs/app/api-reference/config/next-config-js/cacheHandler
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Prefix for implicit tags generated by Next.js (system-generated tags for ISR)
|
|
7
|
+
*/
|
|
8
|
+
export declare const IMPLICIT_TAG_PREFIX = "_N_T_";
|
|
9
|
+
/**
|
|
10
|
+
* Cache entry value types supported by Next.js
|
|
11
|
+
*/
|
|
12
|
+
export type CacheValue = {
|
|
13
|
+
kind: "ROUTE";
|
|
14
|
+
html: string;
|
|
15
|
+
pageData: Record<string, unknown>;
|
|
16
|
+
status?: number;
|
|
17
|
+
headers?: Record<string, string | string[]>;
|
|
18
|
+
} | {
|
|
19
|
+
kind: "PAGE";
|
|
20
|
+
html: string;
|
|
21
|
+
pageData: Record<string, unknown>;
|
|
22
|
+
status?: number;
|
|
23
|
+
headers?: Record<string, string[]>;
|
|
24
|
+
} | {
|
|
25
|
+
kind: "FETCH";
|
|
26
|
+
data: {
|
|
27
|
+
headers: Record<string, string>;
|
|
28
|
+
body: string;
|
|
29
|
+
status: number;
|
|
30
|
+
url: string;
|
|
31
|
+
};
|
|
32
|
+
revalidate: number | false;
|
|
33
|
+
} | {
|
|
34
|
+
kind: "IMAGE";
|
|
35
|
+
etag: string;
|
|
36
|
+
buffer: Buffer;
|
|
37
|
+
extension: string;
|
|
38
|
+
isMiss?: boolean;
|
|
39
|
+
isStale?: boolean;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Lifespan parameters for cache entries
|
|
43
|
+
* All time values are in SECONDS (not milliseconds)
|
|
44
|
+
*/
|
|
45
|
+
export interface LifespanParameters {
|
|
46
|
+
/**
|
|
47
|
+
* Timestamp when entry was last modified (seconds since epoch)
|
|
48
|
+
*/
|
|
49
|
+
lastModifiedAt: number;
|
|
50
|
+
/**
|
|
51
|
+
* Timestamp when entry becomes stale (seconds since epoch)
|
|
52
|
+
*/
|
|
53
|
+
staleAt: number;
|
|
54
|
+
/**
|
|
55
|
+
* Timestamp when entry expires (seconds since epoch)
|
|
56
|
+
*/
|
|
57
|
+
expireAt: number;
|
|
58
|
+
/**
|
|
59
|
+
* Age in seconds until entry becomes stale
|
|
60
|
+
*/
|
|
61
|
+
staleAge: number;
|
|
62
|
+
/**
|
|
63
|
+
* Age in seconds until entry expires
|
|
64
|
+
*/
|
|
65
|
+
expireAge: number;
|
|
66
|
+
/**
|
|
67
|
+
* Original revalidate value from Next.js
|
|
68
|
+
*/
|
|
69
|
+
revalidate: number | false | undefined;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Internal cache handler value with metadata
|
|
73
|
+
* This is what handlers store internally
|
|
74
|
+
*/
|
|
75
|
+
export interface CacheHandlerValue {
|
|
76
|
+
/**
|
|
77
|
+
* Timestamp of last modification (milliseconds since epoch)
|
|
78
|
+
*/
|
|
79
|
+
lastModified: number;
|
|
80
|
+
/**
|
|
81
|
+
* Lifespan/TTL parameters (null means no expiration)
|
|
82
|
+
*/
|
|
83
|
+
lifespan: LifespanParameters | null;
|
|
84
|
+
/**
|
|
85
|
+
* Tags for cache invalidation (both explicit and implicit)
|
|
86
|
+
*/
|
|
87
|
+
tags: readonly string[];
|
|
88
|
+
/**
|
|
89
|
+
* The actual cache value
|
|
90
|
+
*/
|
|
91
|
+
value: CacheValue;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Context provided when setting cache entries
|
|
95
|
+
*/
|
|
96
|
+
export interface CacheHandlerContext {
|
|
97
|
+
/**
|
|
98
|
+
* Tags for cache invalidation
|
|
99
|
+
*/
|
|
100
|
+
tags?: string[];
|
|
101
|
+
/**
|
|
102
|
+
* Revalidation period in seconds, or false to disable
|
|
103
|
+
*/
|
|
104
|
+
revalidate?: number | false;
|
|
105
|
+
/**
|
|
106
|
+
* Soft tags (for Next.js internal use)
|
|
107
|
+
*/
|
|
108
|
+
softTags?: string[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Metadata passed to get() method
|
|
112
|
+
*/
|
|
113
|
+
export interface CacheHandlerGetMeta {
|
|
114
|
+
/**
|
|
115
|
+
* Implicit tags (system-generated) for this request
|
|
116
|
+
*/
|
|
117
|
+
implicitTags: string[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Cache handler interface that must be implemented
|
|
121
|
+
*/
|
|
122
|
+
export interface CacheHandler {
|
|
123
|
+
/**
|
|
124
|
+
* Handler name (for debugging/logging)
|
|
125
|
+
*/
|
|
126
|
+
name: string;
|
|
127
|
+
/**
|
|
128
|
+
* Get a cache entry by key
|
|
129
|
+
*/
|
|
130
|
+
get(key: string, meta?: CacheHandlerGetMeta): Promise<CacheValue | null>;
|
|
131
|
+
/**
|
|
132
|
+
* Set a cache entry
|
|
133
|
+
*/
|
|
134
|
+
set(key: string, value: CacheValue, context?: CacheHandlerContext): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* Revalidate cache entries by tag
|
|
137
|
+
* @param tag - Cache tag to revalidate
|
|
138
|
+
* @param profile - Optional revalidation profile ("max" or custom profile name) or object with expire time
|
|
139
|
+
*/
|
|
140
|
+
revalidateTag(tag: string, profile?: string | {
|
|
141
|
+
expire?: number;
|
|
142
|
+
}): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Delete a cache entry by key (optional)
|
|
145
|
+
*/
|
|
146
|
+
delete?(key: string): Promise<void>;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Cache handler constructor parameters
|
|
150
|
+
*/
|
|
151
|
+
export interface CacheHandlerOptions {
|
|
152
|
+
/**
|
|
153
|
+
* Next.js configuration
|
|
154
|
+
*/
|
|
155
|
+
_appDir?: string;
|
|
156
|
+
_pagesDir?: string;
|
|
157
|
+
_requestHeaders?: Record<string, string>;
|
|
158
|
+
flushToDisk?: boolean;
|
|
159
|
+
experimental?: {
|
|
160
|
+
ppr?: boolean;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js 16 Cache Handler Types
|
|
3
|
+
* Based on: https://nextjs.org/docs/app/api-reference/config/next-config-js/cacheHandler
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Prefix for implicit tags generated by Next.js (system-generated tags for ISR)
|
|
7
|
+
*/
|
|
8
|
+
export const IMPLICIT_TAG_PREFIX = "_N_T_";
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mrjasonroy/cache-components-cache-handler",
|
|
3
|
+
"version": "16.0.0-alpha.0",
|
|
4
|
+
"description": "Cache handler for Next.js 16+ with support for 'use cache' directive and Cache Components",
|
|
5
|
+
"author": "Jason Roy",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/index.js",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": ["dist"],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"dev": "tsc --watch",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"clean": "rm -rf dist .turbo node_modules"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"nextjs",
|
|
29
|
+
"next",
|
|
30
|
+
"cache",
|
|
31
|
+
"cache-handler",
|
|
32
|
+
"use-cache",
|
|
33
|
+
"isr",
|
|
34
|
+
"revalidation",
|
|
35
|
+
"redis",
|
|
36
|
+
"elasticache",
|
|
37
|
+
"valkey"
|
|
38
|
+
],
|
|
39
|
+
"peerDependencies": {
|
|
40
|
+
"next": "~16.0.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"ioredis": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"optionalDependencies": {
|
|
48
|
+
"ioredis": "^5.4.1"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^22.10.2",
|
|
52
|
+
"typescript": "^5.7.2",
|
|
53
|
+
"vitest": "^2.1.8"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=22.0.0"
|
|
57
|
+
},
|
|
58
|
+
"repository": {
|
|
59
|
+
"type": "git",
|
|
60
|
+
"url": "https://github.com/mrjasonroy/cache-components-cache-handler",
|
|
61
|
+
"directory": "packages/cache-handler"
|
|
62
|
+
},
|
|
63
|
+
"homepage": "https://github.com/mrjasonroy/cache-components-cache-handler#readme",
|
|
64
|
+
"bugs": {
|
|
65
|
+
"url": "https://github.com/mrjasonroy/cache-components-cache-handler/issues"
|
|
66
|
+
}
|
|
67
|
+
}
|