@b4moss/ss-cachian 0.8.0 → 0.9.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 CHANGED
@@ -2,8 +2,9 @@
2
2
 
3
3
  TypeScript / JavaScript port of [ss-cachian](https://github.com/b4moss/ss-cachian).
4
4
 
5
- Semantics match the Go package at `go/sscachian` (**v0.7.0** PoC): versioned keys, multilayer
6
- write-back, Exact Purge, Memory and Firestore drivers. Specs: [docs/specs](../../docs/specs/).
5
+ Semantics match the Go package at `go/sscachian` (**v0.9.0**): versioned keys, multilayer
6
+ write-back, Exact Purge, Memory / Firestore drivers, and **config-driven** `loadTypes`.
7
+ Specs: [docs/specs](../../docs/specs/).
7
8
 
8
9
  ## Install
9
10
 
@@ -26,6 +27,17 @@ await cache.set(kc, "alice");
26
27
  const got = await cache.get(kc); // { ok: true, value: "alice" }
27
28
  ```
28
29
 
30
+ ### Config-driven (v0.9.0)
31
+
32
+ ```ts
33
+ import { createRegistry, loadTypes } from "@b4moss/ss-cachian";
34
+
35
+ const reg = createRegistry();
36
+ reg.registerLoader("load_users", async () => "alice");
37
+ const types = await loadTypes(reg, "./sscachian.yaml");
38
+ const cache = types.get("users");
39
+ ```
40
+
29
41
  Firestore (Emulator / GCP):
30
42
 
31
43
  ```ts
@@ -47,5 +59,5 @@ npm test
47
59
 
48
60
  ## Publish
49
61
 
50
- Tags `v*` on `main` publish via **npm Trusted Publisher (OIDC)**.
51
- See [development.md](../../docs/development.md).
62
+ Tags `v*` on `main` (or Actions → **npm publish** → Run workflow) publish via
63
+ **npm Trusted Publisher (OIDC)**. See [.github/CI.md](../../.github/CI.md).
@@ -0,0 +1,17 @@
1
+ import { CacheType } from "./cache.js";
2
+ import { type DurationMs, type KeyBuilder, type Loader } from "./types.js";
3
+ export type Registry = {
4
+ registerKeyBuilder(name: string, kb: KeyBuilder): void;
5
+ registerLoader<T>(name: string, loader: Loader<T>): void;
6
+ /** @internal */
7
+ lookupKeyBuilder(name: string): KeyBuilder | undefined;
8
+ /** @internal */
9
+ lookupLoader(name: string): Loader<unknown> | undefined;
10
+ };
11
+ export declare function createRegistry(): Registry;
12
+ /** Go time.ParseDuration-compatible parser (ns/us/ms/s/m/h). */
13
+ export declare function parseDuration(s: string): DurationMs;
14
+ export declare function loadTypesYAML<T = unknown>(reg: Registry, data: string | Uint8Array): Promise<Map<string, CacheType<T>>>;
15
+ export declare function loadTypesJSON<T = unknown>(reg: Registry, data: string | Uint8Array): Promise<Map<string, CacheType<T>>>;
16
+ export declare function loadTypes<T = unknown>(reg: Registry, filePath: string): Promise<Map<string, CacheType<T>>>;
17
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAU,MAAM,YAAY,CAAC;AAG/C,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,MAAM,EACZ,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,QAAQ,GAAG;IACrB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC;IACvD,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzD,gBAAgB;IAChB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,gBAAgB;IAChB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,wBAAgB,cAAc,IAAI,QAAQ,CAsBzC;AAqBD,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CA2BnD;AAoID,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7C,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CASpC;AAED,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAC7C,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CASpC;AAED,wBAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EACzC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAMpC"}
package/dist/config.js ADDED
@@ -0,0 +1,223 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { parse as parseYaml } from "yaml";
4
+ import { define } from "./cache.js";
5
+ import { newFirestoreStore } from "./driver/firestore.js";
6
+ import { newMemoryStore } from "./driver/memory.js";
7
+ import { ErrInvalidConfig, ErrNegativeTTL, defaultKeyBuilder, } from "./types.js";
8
+ const SCHEMA_VERSION = "0.9";
9
+ export function createRegistry() {
10
+ const keyBuilders = new Map([["default", defaultKeyBuilder]]);
11
+ const loaders = new Map();
12
+ return {
13
+ registerKeyBuilder(name, kb) {
14
+ if (!name)
15
+ throw new Error(`${ErrInvalidConfig.message}: empty key builder name`);
16
+ if (kb == null)
17
+ throw new Error(`${ErrInvalidConfig.message}: nil key builder`);
18
+ keyBuilders.set(name, kb);
19
+ },
20
+ registerLoader(name, loader) {
21
+ if (!name)
22
+ throw new Error(`${ErrInvalidConfig.message}: empty loader name`);
23
+ if (loader == null)
24
+ throw new Error(`${ErrInvalidConfig.message}: nil loader`);
25
+ loaders.set(name, loader);
26
+ },
27
+ lookupKeyBuilder(name) {
28
+ return keyBuilders.get(name);
29
+ },
30
+ lookupLoader(name) {
31
+ return loaders.get(name);
32
+ },
33
+ };
34
+ }
35
+ /** Go time.ParseDuration-compatible parser (ns/us/ms/s/m/h). */
36
+ export function parseDuration(s) {
37
+ if (s === "" || s === "0")
38
+ return 0;
39
+ const re = /(-?\d+(?:\.\d+)?)(ns|us|µs|μs|ms|s|m|h)/g;
40
+ let total = 0;
41
+ let matched = 0;
42
+ let m;
43
+ const units = {
44
+ ns: 1e-6,
45
+ us: 0.001,
46
+ µs: 0.001,
47
+ μs: 0.001,
48
+ ms: 1,
49
+ s: 1000,
50
+ m: 60_000,
51
+ h: 3_600_000,
52
+ };
53
+ while ((m = re.exec(s)) !== null) {
54
+ matched += m[0].length;
55
+ const n = Number(m[1]);
56
+ const u = m[2];
57
+ total += n * (units[u] ?? 0);
58
+ }
59
+ if (matched !== s.length || Number.isNaN(total)) {
60
+ throw new Error(`${ErrInvalidConfig.message}: invalid ttl ${JSON.stringify(s)}`);
61
+ }
62
+ if (total < 0)
63
+ throw ErrNegativeTTL;
64
+ return total;
65
+ }
66
+ function optionalTTL(v) {
67
+ if (v == null)
68
+ return { set: false, ms: 0 };
69
+ if (typeof v !== "string") {
70
+ throw new Error(`${ErrInvalidConfig.message}: ttl must be a string duration`);
71
+ }
72
+ if (v === "")
73
+ return { set: false, ms: 0 };
74
+ return { set: true, ms: parseDuration(v) };
75
+ }
76
+ function schemaVersion(v) {
77
+ if (v == null || v === "") {
78
+ throw new Error(`${ErrInvalidConfig.message}: schema_version is required`);
79
+ }
80
+ if (typeof v !== "string") {
81
+ throw new Error(`${ErrInvalidConfig.message}: schema_version must be a string`);
82
+ }
83
+ return v;
84
+ }
85
+ function stringOptions(opts) {
86
+ if (opts == null)
87
+ return {};
88
+ if (typeof opts !== "object" || Array.isArray(opts)) {
89
+ throw new Error(`${ErrInvalidConfig.message}: options must be a map`);
90
+ }
91
+ const out = {};
92
+ for (const [k, v] of Object.entries(opts)) {
93
+ if (typeof v !== "string") {
94
+ throw new Error(`${ErrInvalidConfig.message}: option ${JSON.stringify(k)} must be a string`);
95
+ }
96
+ out[k] = v;
97
+ }
98
+ return out;
99
+ }
100
+ async function buildLayer(rl) {
101
+ const driver = rl.driver;
102
+ if (typeof driver !== "string" || driver === "") {
103
+ throw new Error(`${ErrInvalidConfig.message}: driver must not be empty`);
104
+ }
105
+ const opts = stringOptions(rl.options);
106
+ if (driver === "memory") {
107
+ for (const k of Object.keys(opts)) {
108
+ throw new Error(`${ErrInvalidConfig.message}: unknown memory option ${JSON.stringify(k)}`);
109
+ }
110
+ return newMemoryStore();
111
+ }
112
+ if (driver === "firestore") {
113
+ const projectId = opts.project_id;
114
+ const collection = opts.collection;
115
+ for (const k of Object.keys(opts)) {
116
+ if (k !== "project_id" && k !== "collection") {
117
+ throw new Error(`${ErrInvalidConfig.message}: unknown firestore option ${JSON.stringify(k)}`);
118
+ }
119
+ }
120
+ return newFirestoreStore({ projectId, collection });
121
+ }
122
+ throw new Error(`${ErrInvalidConfig.message}: unknown driver ${JSON.stringify(driver)}`);
123
+ }
124
+ async function buildOneType(reg, rt) {
125
+ if (typeof rt.name !== "string" || rt.name === "") {
126
+ throw new Error(`${ErrInvalidConfig.message}: type name must not be empty`);
127
+ }
128
+ if (!Array.isArray(rt.layers) || rt.layers.length === 0) {
129
+ throw new Error(`${ErrInvalidConfig.message}: type ${JSON.stringify(rt.name)}: layers must not be empty`);
130
+ }
131
+ const kbName = rt.key_builder == null || rt.key_builder === ""
132
+ ? "default"
133
+ : typeof rt.key_builder === "string"
134
+ ? rt.key_builder
135
+ : null;
136
+ if (kbName == null) {
137
+ throw new Error(`${ErrInvalidConfig.message}: key_builder must be a string`);
138
+ }
139
+ const kb = reg.lookupKeyBuilder(kbName);
140
+ if (!kb) {
141
+ throw new Error(`${ErrInvalidConfig.message}: unknown key_builder ${JSON.stringify(kbName)}`);
142
+ }
143
+ let loader;
144
+ if (rt.loader != null && rt.loader !== "") {
145
+ if (typeof rt.loader !== "string") {
146
+ throw new Error(`${ErrInvalidConfig.message}: loader must be a string`);
147
+ }
148
+ const found = reg.lookupLoader(rt.loader);
149
+ if (!found) {
150
+ throw new Error(`${ErrInvalidConfig.message}: unknown loader ${JSON.stringify(rt.loader)}`);
151
+ }
152
+ loader = found;
153
+ }
154
+ const typeTTL = optionalTTL(rt.ttl);
155
+ const layers = [];
156
+ const ttls = [];
157
+ for (let i = 0; i < rt.layers.length; i++) {
158
+ const rl = rt.layers[i];
159
+ layers.push(await buildLayer(rl));
160
+ const layerTTL = optionalTTL(rl.ttl);
161
+ if (layerTTL.set)
162
+ ttls.push(layerTTL.ms);
163
+ else if (typeTTL.set)
164
+ ttls.push(typeTTL.ms);
165
+ else
166
+ ttls.push(0);
167
+ }
168
+ const b = define(rt.name).withLayers(...layers).withKeyBuilder(kb).withLayerTTLs(...ttls);
169
+ if (loader)
170
+ b.withLoader(loader);
171
+ return b.build();
172
+ }
173
+ async function buildTypes(reg, raw) {
174
+ const ver = schemaVersion(raw.schema_version);
175
+ if (ver !== SCHEMA_VERSION) {
176
+ throw new Error(`${ErrInvalidConfig.message}: unsupported schema_version ${JSON.stringify(ver)}`);
177
+ }
178
+ if (!Array.isArray(raw.types) || raw.types.length === 0) {
179
+ throw new Error(`${ErrInvalidConfig.message}: types must not be empty`);
180
+ }
181
+ const out = new Map();
182
+ for (const rt of raw.types) {
183
+ const name = typeof rt.name === "string" ? rt.name : "";
184
+ if (out.has(name)) {
185
+ throw new Error(`${ErrInvalidConfig.message}: duplicate type name ${JSON.stringify(name)}`);
186
+ }
187
+ const ct = await buildOneType(reg, rt);
188
+ out.set(ct.name(), ct);
189
+ }
190
+ return out;
191
+ }
192
+ export async function loadTypesYAML(reg, data) {
193
+ const text = typeof data === "string" ? data : Buffer.from(data).toString("utf8");
194
+ let raw;
195
+ try {
196
+ raw = parseYaml(text);
197
+ }
198
+ catch (e) {
199
+ throw new Error(`${ErrInvalidConfig.message}: yaml: ${e instanceof Error ? e.message : e}`);
200
+ }
201
+ return buildTypes(reg, raw ?? {});
202
+ }
203
+ export async function loadTypesJSON(reg, data) {
204
+ const text = typeof data === "string" ? data : Buffer.from(data).toString("utf8");
205
+ let raw;
206
+ try {
207
+ raw = JSON.parse(text);
208
+ }
209
+ catch (e) {
210
+ throw new Error(`${ErrInvalidConfig.message}: json: ${e instanceof Error ? e.message : e}`);
211
+ }
212
+ return buildTypes(reg, raw ?? {});
213
+ }
214
+ export async function loadTypes(reg, filePath) {
215
+ const data = await fs.readFile(filePath);
216
+ const ext = path.extname(filePath).toLowerCase();
217
+ if (ext === ".json")
218
+ return loadTypesJSON(reg, data);
219
+ if (ext === ".yaml" || ext === ".yml")
220
+ return loadTypesYAML(reg, data);
221
+ throw new Error(`${ErrInvalidConfig.message}: unsupported config extension ${JSON.stringify(ext)}`);
222
+ }
223
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  /**
2
- * @b4moss/ss-cachian — Node.js / TypeScript port of ss-cachian (Go v0.7.0 parity).
2
+ * @b4moss/ss-cachian — Node.js / TypeScript port of ss-cachian (Go v0.7.0+ parity).
3
3
  */
4
4
  export declare const SSCACHIAN_RUNTIME: "node";
5
- export { ErrEmptyKey, ErrNegativeTTL, ErrNotInteger, ErrIncrOverflow, ErrNoLayer, ErrNoKeyBuilder, ErrInvalidVersion, ErrNoLoader, ErrTypeMismatch, ErrInvalidContext, ErrCorruptVersion, ErrInvalidLayerIndex, SscachianError, isVersionDataKey, defaultKeyBuilder, type Entry, type Layer, type DurationMs, type KeyContext, type KeyBuilder, type Loader, type TypeGuard, } from "./types.js";
5
+ export { ErrEmptyKey, ErrNegativeTTL, ErrNotInteger, ErrIncrOverflow, ErrNoLayer, ErrNoKeyBuilder, ErrInvalidVersion, ErrNoLoader, ErrTypeMismatch, ErrInvalidContext, ErrCorruptVersion, ErrInvalidLayerIndex, ErrInvalidConfig, SscachianError, isVersionDataKey, defaultKeyBuilder, type Entry, type Layer, type DurationMs, type KeyContext, type KeyBuilder, type Loader, type TypeGuard, } from "./types.js";
6
6
  export { define, Builder, CacheType } from "./cache.js";
7
7
  export { MemoryStore, newMemoryStore } from "./driver/memory.js";
8
8
  export { FirestoreStore, newFirestoreStore, type FirestoreOptions, } from "./driver/firestore.js";
9
+ export { createRegistry, loadTypes, loadTypesYAML, loadTypesJSON, parseDuration, type Registry, } from "./config.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,iBAAiB,EAAG,MAAe,CAAC;AAEjD,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,KAAK,EACV,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,iBAAiB,EAAG,MAAe,CAAC;AAEjD,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,KAAK,EACV,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,10 @@
1
1
  /**
2
- * @b4moss/ss-cachian — Node.js / TypeScript port of ss-cachian (Go v0.7.0 parity).
2
+ * @b4moss/ss-cachian — Node.js / TypeScript port of ss-cachian (Go v0.7.0+ parity).
3
3
  */
4
4
  export const SSCACHIAN_RUNTIME = "node";
5
- export { ErrEmptyKey, ErrNegativeTTL, ErrNotInteger, ErrIncrOverflow, ErrNoLayer, ErrNoKeyBuilder, ErrInvalidVersion, ErrNoLoader, ErrTypeMismatch, ErrInvalidContext, ErrCorruptVersion, ErrInvalidLayerIndex, SscachianError, isVersionDataKey, defaultKeyBuilder, } from "./types.js";
5
+ export { ErrEmptyKey, ErrNegativeTTL, ErrNotInteger, ErrIncrOverflow, ErrNoLayer, ErrNoKeyBuilder, ErrInvalidVersion, ErrNoLoader, ErrTypeMismatch, ErrInvalidContext, ErrCorruptVersion, ErrInvalidLayerIndex, ErrInvalidConfig, SscachianError, isVersionDataKey, defaultKeyBuilder, } from "./types.js";
6
6
  export { define, Builder, CacheType } from "./cache.js";
7
7
  export { MemoryStore, newMemoryStore } from "./driver/memory.js";
8
8
  export { FirestoreStore, newFirestoreStore, } from "./driver/firestore.js";
9
+ export { createRegistry, loadTypes, loadTypesYAML, loadTypesJSON, parseDuration, } from "./config.js";
9
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAe,CAAC;AAEjD,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAQlB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,iBAAiB,GAElB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAe,CAAC;AAEjD,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAQlB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,cAAc,EACd,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,aAAa,GAEd,MAAM,aAAa,CAAC"}
package/dist/types.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare const ErrTypeMismatch: SscachianError;
14
14
  export declare const ErrInvalidContext: SscachianError;
15
15
  export declare const ErrCorruptVersion: SscachianError;
16
16
  export declare const ErrInvalidLayerIndex: SscachianError;
17
+ export declare const ErrInvalidConfig: SscachianError;
17
18
  /** On-Layer storage wrapper. */
18
19
  export type Entry = {
19
20
  value: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,WAAW,gBAA6C,CAAC;AACtE,eAAO,MAAM,cAAc,gBAAgD,CAAC;AAC5E,eAAO,MAAM,aAAa,gBAA2D,CAAC;AACtF,eAAO,MAAM,eAAe,gBAAiD,CAAC;AAC9E,eAAO,MAAM,UAAU,gBAAwD,CAAC;AAChF,eAAO,MAAM,eAAe,gBAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,gBAAwD,CAAC;AACvF,eAAO,MAAM,WAAW,gBAAyD,CAAC;AAClF,eAAO,MAAM,eAAe,gBAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,gBAAuD,CAAC;AACtF,eAAO,MAAM,iBAAiB,gBAAiE,CAAC;AAChG,eAAO,MAAM,oBAAoB,gBAAuD,CAAC;AAEzF,gCAAgC;AAChC,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,wDAAwD;IACxD,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAa,GAAG,OAAO,CAI3E;AAED,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE,CAAC;AAEF,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAU5E;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC5F,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAKxD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,WAAW,gBAA6C,CAAC;AACtE,eAAO,MAAM,cAAc,gBAAgD,CAAC;AAC5E,eAAO,MAAM,aAAa,gBAA2D,CAAC;AACtF,eAAO,MAAM,eAAe,gBAAiD,CAAC;AAC9E,eAAO,MAAM,UAAU,gBAAwD,CAAC;AAChF,eAAO,MAAM,eAAe,gBAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,gBAAwD,CAAC;AACvF,eAAO,MAAM,WAAW,gBAAyD,CAAC;AAClF,eAAO,MAAM,eAAe,gBAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,gBAAuD,CAAC;AACtF,eAAO,MAAM,iBAAiB,gBAAiE,CAAC;AAChG,eAAO,MAAM,oBAAoB,gBAAuD,CAAC;AACzF,eAAO,MAAM,gBAAgB,gBAAkD,CAAC;AAEhF,gCAAgC;AAChC,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,wDAAwD;IACxD,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAa,GAAG,OAAO,CAI3E;AAED,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE,CAAC;AAEF,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAU5E;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAC5F,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAKxD"}
package/dist/types.js CHANGED
@@ -17,6 +17,7 @@ export const ErrTypeMismatch = new SscachianError("sscachian: cached value type
17
17
  export const ErrInvalidContext = new SscachianError("sscachian: invalid key context");
18
18
  export const ErrCorruptVersion = new SscachianError("sscachian: corrupt current-version value");
19
19
  export const ErrInvalidLayerIndex = new SscachianError("sscachian: invalid layer index");
20
+ export const ErrInvalidConfig = new SscachianError("sscachian: invalid config");
20
21
  export function noExpiry() {
21
22
  return null;
22
23
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAEpD,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,yBAAyB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,cAAc,CAAC,oCAAoC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,0BAA0B,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,iCAAiC,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,uCAAuC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,iCAAiC,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,cAAc,CAAC,kCAAkC,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,cAAc,CAAC,uCAAuC,CAAC,CAAC;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;AAChG,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAAC,gCAAgC,CAAC,CAAC;AAUzF,MAAM,UAAU,QAAQ;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAsB,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IAChE,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAaD,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,aAAqB,EAAE,GAAW;IACjE,IAAI,aAAa,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,IAAI,GAAG,GAAG,aAAa,GAAG,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG;YAAE,OAAO,KAAK,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,MAAM,UAAU,iBAAiB,CAAC,EAAc;IAC9C,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,iBAAiB,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,EAAE,CAAC,OAAO,UAAU,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@b4moss/ss-cachian",
3
- "version": "0.8.0",
4
- "description": "Server-side cache strategy library (TypeScript/JavaScript). Go v0.7.0 semantics parity.",
3
+ "version": "0.9.0",
4
+ "description": "Server-side cache strategy library (TypeScript/JavaScript). Config-driven Cache Types (v0.9.0) with Go parity.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -49,10 +49,11 @@
49
49
  "versioned-cache"
50
50
  ],
51
51
  "devDependencies": {
52
- "@types/node": "^22.13.10",
52
+ "@types/node": "^22.20.4",
53
53
  "typescript": "^5.8.2"
54
54
  },
55
55
  "dependencies": {
56
- "@google-cloud/firestore": "^7.11.6"
56
+ "@google-cloud/firestore": "^7.11.6",
57
+ "yaml": "^2.7.0"
57
58
  }
58
59
  }