@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.
Files changed (50) hide show
  1. package/README.md +437 -0
  2. package/dist/data-cache/memory.d.ts +47 -0
  3. package/dist/data-cache/memory.d.ts.map +1 -0
  4. package/dist/data-cache/memory.js +310 -0
  5. package/dist/data-cache/memory.js.map +1 -0
  6. package/dist/data-cache/redis.d.ts +83 -0
  7. package/dist/data-cache/redis.d.ts.map +1 -0
  8. package/dist/data-cache/redis.js +240 -0
  9. package/dist/data-cache/redis.js.map +1 -0
  10. package/dist/data-cache/types.d.ts +85 -0
  11. package/dist/data-cache/types.d.ts.map +1 -0
  12. package/dist/data-cache/types.js +7 -0
  13. package/dist/data-cache/types.js.map +1 -0
  14. package/dist/handlers/composite.d.ts +70 -0
  15. package/dist/handlers/composite.d.ts.map +1 -0
  16. package/dist/handlers/composite.js +123 -0
  17. package/dist/handlers/composite.js.map +1 -0
  18. package/dist/handlers/memory.d.ts +77 -0
  19. package/dist/handlers/memory.d.ts.map +1 -0
  20. package/dist/handlers/memory.js +145 -0
  21. package/dist/handlers/memory.js.map +1 -0
  22. package/dist/handlers/redis.d.ts +80 -0
  23. package/dist/handlers/redis.d.ts.map +1 -0
  24. package/dist/handlers/redis.js +210 -0
  25. package/dist/handlers/redis.js.map +1 -0
  26. package/dist/helpers/buffer.d.ts +25 -0
  27. package/dist/helpers/buffer.d.ts.map +1 -0
  28. package/dist/helpers/buffer.js +45 -0
  29. package/dist/helpers/buffer.js.map +1 -0
  30. package/dist/helpers/is-implicit-tag.d.ts +9 -0
  31. package/dist/helpers/is-implicit-tag.d.ts.map +1 -0
  32. package/dist/helpers/is-implicit-tag.js +16 -0
  33. package/dist/helpers/is-implicit-tag.js.map +1 -0
  34. package/dist/helpers/lifespan.d.ts +18 -0
  35. package/dist/helpers/lifespan.d.ts.map +1 -0
  36. package/dist/helpers/lifespan.js +43 -0
  37. package/dist/helpers/lifespan.js.map +1 -0
  38. package/dist/helpers/next-config.d.ts +97 -0
  39. package/dist/helpers/next-config.d.ts.map +1 -0
  40. package/dist/helpers/next-config.js +96 -0
  41. package/dist/helpers/next-config.js.map +1 -0
  42. package/dist/index.d.ts +17 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +23 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/types.d.ts +163 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +9 -0
  49. package/dist/types.js.map +1 -0
  50. 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"}
@@ -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
+ }