@nocobase/cache 0.17.0-alpha.3 → 0.17.0-alpha.5

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,6 @@
1
+ export interface BloomFilter {
2
+ reserve(key: string, errorRate: number, capacity: number): Promise<void>;
3
+ add(key: string, val: string): Promise<void>;
4
+ mAdd(key: string, vals: string[]): Promise<void>;
5
+ exists(key: string, val: string): Promise<boolean>;
6
+ }
@@ -0,0 +1,15 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var bloom_filter_exports = {};
15
+ module.exports = __toCommonJS(bloom_filter_exports);
@@ -0,0 +1,10 @@
1
+ import { BloomFilter as IBloomFilter } from '.';
2
+ import { Cache } from '../cache';
3
+ export declare class MemoryBloomFilter implements IBloomFilter {
4
+ cache: Cache;
5
+ constructor(cache: Cache);
6
+ reserve(key: string, errorRate: number, capacity: number): Promise<void>;
7
+ add(key: string, value: string): Promise<void>;
8
+ mAdd(key: string, values: string[]): Promise<void>;
9
+ exists(key: string, value: string): Promise<boolean>;
10
+ }
@@ -0,0 +1,61 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var memory_bloom_filter_exports = {};
20
+ __export(memory_bloom_filter_exports, {
21
+ MemoryBloomFilter: () => MemoryBloomFilter
22
+ });
23
+ module.exports = __toCommonJS(memory_bloom_filter_exports);
24
+ var import_bloom_filters = require("bloom-filters");
25
+ const _MemoryBloomFilter = class _MemoryBloomFilter {
26
+ cache;
27
+ constructor(cache) {
28
+ this.cache = cache;
29
+ }
30
+ async reserve(key, errorRate, capacity) {
31
+ const filter = import_bloom_filters.BloomFilter.create(capacity, errorRate);
32
+ await this.cache.set(key, filter);
33
+ }
34
+ async add(key, value) {
35
+ const filter = await this.cache.get(key);
36
+ if (!filter) {
37
+ return;
38
+ }
39
+ filter.add(value);
40
+ }
41
+ async mAdd(key, values) {
42
+ const filter = await this.cache.get(key);
43
+ if (!filter) {
44
+ return;
45
+ }
46
+ values.forEach((value) => filter.add(value));
47
+ }
48
+ async exists(key, value) {
49
+ const filter = await this.cache.get(key);
50
+ if (!filter) {
51
+ return false;
52
+ }
53
+ return filter.has(value);
54
+ }
55
+ };
56
+ __name(_MemoryBloomFilter, "MemoryBloomFilter");
57
+ let MemoryBloomFilter = _MemoryBloomFilter;
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ MemoryBloomFilter
61
+ });
@@ -0,0 +1,12 @@
1
+ import { RedisStore } from 'cache-manager-redis-yet';
2
+ import { BloomFilter } from '.';
3
+ import { Cache } from '../cache';
4
+ export declare class RedisBloomFilter implements BloomFilter {
5
+ cache: Cache;
6
+ constructor(cache: Cache);
7
+ getStore(): RedisStore<import("redis").RedisClientType>;
8
+ reserve(key: string, errorRate: number, capacity: number): Promise<void>;
9
+ add(key: string, value: string): Promise<void>;
10
+ mAdd(key: string, values: string[]): Promise<void>;
11
+ exists(key: string, value: string): Promise<boolean>;
12
+ }
@@ -0,0 +1,54 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var redis_bloom_filter_exports = {};
20
+ __export(redis_bloom_filter_exports, {
21
+ RedisBloomFilter: () => RedisBloomFilter
22
+ });
23
+ module.exports = __toCommonJS(redis_bloom_filter_exports);
24
+ const _RedisBloomFilter = class _RedisBloomFilter {
25
+ cache;
26
+ constructor(cache) {
27
+ this.cache = cache;
28
+ }
29
+ getStore() {
30
+ return this.cache.store.store;
31
+ }
32
+ async reserve(key, errorRate, capacity) {
33
+ const store = this.getStore();
34
+ await store.client.bf.reserve(key, errorRate, capacity);
35
+ }
36
+ async add(key, value) {
37
+ const store = this.getStore();
38
+ await store.client.bf.add(key, value);
39
+ }
40
+ async mAdd(key, values) {
41
+ const store = this.getStore();
42
+ await store.client.bf.mAdd(key, values);
43
+ }
44
+ async exists(key, value) {
45
+ const store = this.getStore();
46
+ return await store.client.bf.exists(key, value);
47
+ }
48
+ };
49
+ __name(_RedisBloomFilter, "RedisBloomFilter");
50
+ let RedisBloomFilter = _RedisBloomFilter;
51
+ // Annotate the CommonJS export names for ESM import in node:
52
+ 0 && (module.exports = {
53
+ RedisBloomFilter
54
+ });
@@ -1,5 +1,6 @@
1
1
  import { FactoryStore, Store } from 'cache-manager';
2
2
  import { Cache } from './cache';
3
+ import { BloomFilter } from './bloom-filter';
3
4
  type StoreOptions = {
4
5
  store?: 'memory' | FactoryStore<Store, any>;
5
6
  close?: (store: Store) => Promise<void>;
@@ -31,5 +32,8 @@ export declare class CacheManager {
31
32
  getCache(name: string): Cache;
32
33
  flushAll(): Promise<void>;
33
34
  close(): Promise<void>;
35
+ createBloomFilter(options?: {
36
+ store?: string;
37
+ }): Promise<BloomFilter>;
34
38
  }
35
39
  export {};
@@ -36,6 +36,8 @@ var import_cache = require("./cache");
36
36
  var import_lodash = __toESM(require("lodash"));
37
37
  var import_cache_manager_redis_yet = require("cache-manager-redis-yet");
38
38
  var import_deepmerge = __toESM(require("deepmerge"));
39
+ var import_memory_bloom_filter = require("./bloom-filter/memory-bloom-filter");
40
+ var import_redis_bloom_filter = require("./bloom-filter/redis-bloom-filter");
39
41
  const _CacheManager = class _CacheManager {
40
42
  defaultStore;
41
43
  stores = /* @__PURE__ */ new Map();
@@ -122,6 +124,24 @@ const _CacheManager = class _CacheManager {
122
124
  }
123
125
  await Promise.all(promises);
124
126
  }
127
+ async createBloomFilter(options) {
128
+ const name = "bloom-filter";
129
+ const { store = this.defaultStore } = options || {};
130
+ let cache;
131
+ try {
132
+ cache = this.getCache(name);
133
+ } catch (error) {
134
+ cache = await this.createCache({ name, store });
135
+ }
136
+ switch (store) {
137
+ case "memory":
138
+ return new import_memory_bloom_filter.MemoryBloomFilter(cache);
139
+ case "redis":
140
+ return new import_redis_bloom_filter.RedisBloomFilter(cache);
141
+ default:
142
+ throw new Error(`BloomFilter store [${store}] is not supported`);
143
+ }
144
+ }
125
145
  };
126
146
  __name(_CacheManager, "CacheManager");
127
147
  let CacheManager = _CacheManager;
package/lib/cache.d.ts CHANGED
@@ -26,4 +26,5 @@ export declare class Cache {
26
26
  ttl(key: string): Promise<number>;
27
27
  setValueInObject(key: string, objectKey: string, value: unknown): Promise<void>;
28
28
  getValueInObject(key: string, objectKey: string): Promise<any>;
29
+ delValueInObject(key: string, objectKey: string): Promise<void>;
29
30
  }
package/lib/cache.js CHANGED
@@ -95,6 +95,11 @@ const _Cache = class _Cache {
95
95
  const object = await this.get(key) || {};
96
96
  return object[objectKey];
97
97
  }
98
+ async delValueInObject(key, objectKey) {
99
+ const object = await this.get(key) || {};
100
+ delete object[objectKey];
101
+ await this.set(key, object);
102
+ }
98
103
  };
99
104
  __name(_Cache, "Cache");
100
105
  let Cache = _Cache;
package/lib/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './cache-manager';
2
2
  export * from './cache';
3
+ export * from './bloom-filter';
package/lib/index.js CHANGED
@@ -16,8 +16,10 @@ var src_exports = {};
16
16
  module.exports = __toCommonJS(src_exports);
17
17
  __reExport(src_exports, require("./cache-manager"), module.exports);
18
18
  __reExport(src_exports, require("./cache"), module.exports);
19
+ __reExport(src_exports, require("./bloom-filter"), module.exports);
19
20
  // Annotate the CommonJS export names for ESM import in node:
20
21
  0 && (module.exports = {
21
22
  ...require("./cache-manager"),
22
- ...require("./cache")
23
+ ...require("./cache"),
24
+ ...require("./bloom-filter")
23
25
  });
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@nocobase/cache",
3
- "version": "0.17.0-alpha.3",
3
+ "version": "0.17.0-alpha.5",
4
4
  "description": "",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
8
  "dependencies": {
9
+ "bloom-filters": "^3.0.1",
9
10
  "cache-manager": "^5.2.4",
10
11
  "cache-manager-redis-yet": "^4.1.2"
11
12
  },
@@ -17,5 +18,5 @@
17
18
  "url": "git+https://github.com/nocobase/nocobase.git",
18
19
  "directory": "packages/cache"
19
20
  },
20
- "gitHead": "8fb3aace819722ceb845ea63ec3009f324a897a9"
21
+ "gitHead": "80ae6768a0f4108afa8ac342463627ef3960663f"
21
22
  }