@uploadista/kv-store-redis 0.1.3 → 0.2.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/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- let e=require(`@uploadista/core/errors`),t=require(`@uploadista/core/types`),n=require(`effect`);function r({redis:t}){return{get:r=>n.Effect.tryPromise({try:()=>t.get(r),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}),set:(r,i)=>n.Effect.tryPromise({try:()=>t.set(r,i),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.Effect.asVoid),delete:r=>n.Effect.tryPromise({try:()=>t.del(r),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.Effect.asVoid),list:r=>n.Effect.gen(function*(i){let a=new Set,o=`0`;do{let s=yield*i(n.Effect.tryPromise({try:()=>t.scan(o,{MATCH:`${r}*`,COUNT:20}),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}));o=s.cursor;for(let e of s.keys)a.add(e.replace(r,``))}while(o!==`0`);return Array.from(a)})}}const i=e=>n.Layer.succeed(t.BaseKvStoreService,r(e));exports.makeRedisBaseKvStore=r,exports.redisKvStore=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@uploadista/core/errors`),t=require(`@uploadista/core/types`),n=require(`effect`);function r({redis:t}){return{get:r=>n.Effect.tryPromise({try:()=>t.get(r),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}),set:(r,i)=>n.Effect.tryPromise({try:()=>t.set(r,i),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.Effect.asVoid),delete:r=>n.Effect.tryPromise({try:()=>t.del(r),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.Effect.asVoid),list:r=>n.Effect.gen(function*(i){let a=new Set,o=`0`;do{let s=yield*i(n.Effect.tryPromise({try:()=>t.scan(o,{MATCH:`${r}*`,COUNT:20}),catch:t=>e.UploadistaError.fromCode(`UNKNOWN_ERROR`,{cause:t})}));o=s.cursor;for(let e of s.keys)a.add(e.replace(r,``))}while(o!==0&&o!==`0`);return Array.from(a)})}}const i=e=>n.Layer.succeed(t.BaseKvStoreService,r(e));exports.makeRedisBaseKvStore=r,exports.redisKvStore=i;
package/dist/index.d.cts CHANGED
@@ -1,15 +1,26 @@
1
- import { RedisClientType } from "@redis/client";
2
1
  import { BaseKvStore, BaseKvStoreService } from "@uploadista/core/types";
3
2
  import { Layer } from "effect";
4
3
 
5
4
  //#region src/redis-kv-store.d.ts
5
+ interface RedisLike {
6
+ get(key: string): Promise<string | null>;
7
+ set(key: string, value: string): Promise<unknown>;
8
+ del(key: string | string[]): Promise<number>;
9
+ scan(cursor: unknown, options?: {
10
+ MATCH?: string;
11
+ COUNT?: number;
12
+ }): Promise<{
13
+ cursor: unknown;
14
+ keys: string[];
15
+ }>;
16
+ }
6
17
  interface RedisKvStoreConfig {
7
- redis: RedisClientType;
18
+ redis: RedisLike;
8
19
  }
9
20
  declare function makeRedisBaseKvStore({
10
21
  redis
11
22
  }: RedisKvStoreConfig): BaseKvStore;
12
23
  declare const redisKvStore: (config: RedisKvStoreConfig) => Layer.Layer<BaseKvStoreService, never, never>;
13
24
  //#endregion
14
- export { RedisKvStoreConfig, makeRedisBaseKvStore, redisKvStore };
25
+ export { RedisKvStoreConfig, RedisLike, makeRedisBaseKvStore, redisKvStore };
15
26
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/redis-kv-store.ts"],"mappings":";;;;;UAMiB,kBAAA;EACf,KAAA,EAAO,eAAA;AAAA;AAAA,iBAIO,oBAAA,CAAA;EACd;AAAA,GACC,kBAAA,GAAqB,WAAA;AAAA,cAkDX,YAAA,GAAgB,MAAA,EAAQ,kBAAA,KAAkB,KAAA,CAAA,KAAA,CAAA,kBAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/redis-kv-store.ts"],"mappings":";;;;UAIiB,SAAA;EACf,GAAA,CAAI,GAAA,WAAc,OAAA;EAClB,GAAA,CAAI,GAAA,UAAa,KAAA,WAAgB,OAAA;EACjC,GAAA,CAAI,GAAA,sBAAyB,OAAA;EAC7B,IAAA,CACE,MAAA,WACA,OAAA;IAAY,KAAA;IAAgB,KAAA;EAAA,IAC3B,OAAA;IAAU,MAAA;IAAiB,IAAA;EAAA;AAAA;AAAA,UAGf,kBAAA;EACf,KAAA,EAAO,SAAA;AAAA;AAAA,iBAIO,oBAAA,CAAA;EACd;AAAA,GACC,kBAAA,GAAqB,WAAA;AAAA,cAkDX,YAAA,GAAgB,MAAA,EAAQ,kBAAA,KAAkB,KAAA,CAAA,KAAA,CAAA,kBAAA"}
package/dist/index.d.mts CHANGED
@@ -1,15 +1,26 @@
1
1
  import { BaseKvStore, BaseKvStoreService } from "@uploadista/core/types";
2
2
  import { Layer } from "effect";
3
- import { RedisClientType } from "@redis/client";
4
3
 
5
4
  //#region src/redis-kv-store.d.ts
5
+ interface RedisLike {
6
+ get(key: string): Promise<string | null>;
7
+ set(key: string, value: string): Promise<unknown>;
8
+ del(key: string | string[]): Promise<number>;
9
+ scan(cursor: unknown, options?: {
10
+ MATCH?: string;
11
+ COUNT?: number;
12
+ }): Promise<{
13
+ cursor: unknown;
14
+ keys: string[];
15
+ }>;
16
+ }
6
17
  interface RedisKvStoreConfig {
7
- redis: RedisClientType;
18
+ redis: RedisLike;
8
19
  }
9
20
  declare function makeRedisBaseKvStore({
10
21
  redis
11
22
  }: RedisKvStoreConfig): BaseKvStore;
12
23
  declare const redisKvStore: (config: RedisKvStoreConfig) => Layer.Layer<BaseKvStoreService, never, never>;
13
24
  //#endregion
14
- export { RedisKvStoreConfig, makeRedisBaseKvStore, redisKvStore };
25
+ export { RedisKvStoreConfig, RedisLike, makeRedisBaseKvStore, redisKvStore };
15
26
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/redis-kv-store.ts"],"mappings":";;;;;UAMiB,kBAAA;EACf,KAAA,EAAO,eAAA;AAAA;AAAA,iBAIO,oBAAA,CAAA;EACd;AAAA,GACC,kBAAA,GAAqB,WAAA;AAAA,cAkDX,YAAA,GAAgB,MAAA,EAAQ,kBAAA,KAAkB,KAAA,CAAA,KAAA,CAAA,kBAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/redis-kv-store.ts"],"mappings":";;;;UAIiB,SAAA;EACf,GAAA,CAAI,GAAA,WAAc,OAAA;EAClB,GAAA,CAAI,GAAA,UAAa,KAAA,WAAgB,OAAA;EACjC,GAAA,CAAI,GAAA,sBAAyB,OAAA;EAC7B,IAAA,CACE,MAAA,WACA,OAAA;IAAY,KAAA;IAAgB,KAAA;EAAA,IAC3B,OAAA;IAAU,MAAA;IAAiB,IAAA;EAAA;AAAA;AAAA,UAGf,kBAAA;EACf,KAAA,EAAO,SAAA;AAAA;AAAA,iBAIO,oBAAA,CAAA;EACd;AAAA,GACC,kBAAA,GAAqB,WAAA;AAAA,cAkDX,YAAA,GAAgB,MAAA,EAAQ,kBAAA,KAAkB,KAAA,CAAA,KAAA,CAAA,kBAAA"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{UploadistaError as e}from"@uploadista/core/errors";import{BaseKvStoreService as t}from"@uploadista/core/types";import{Effect as n,Layer as r}from"effect";function i({redis:t}){return{get:r=>n.tryPromise({try:()=>t.get(r),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}),set:(r,i)=>n.tryPromise({try:()=>t.set(r,i),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.asVoid),delete:r=>n.tryPromise({try:()=>t.del(r),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.asVoid),list:r=>n.gen(function*(i){let a=new Set,o=`0`;do{let s=yield*i(n.tryPromise({try:()=>t.scan(o,{MATCH:`${r}*`,COUNT:20}),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}));o=s.cursor;for(let e of s.keys)a.add(e.replace(r,``))}while(o!==`0`);return Array.from(a)})}}const a=e=>r.succeed(t,i(e));export{i as makeRedisBaseKvStore,a as redisKvStore};
1
+ import{UploadistaError as e}from"@uploadista/core/errors";import{BaseKvStoreService as t}from"@uploadista/core/types";import{Effect as n,Layer as r}from"effect";function i({redis:t}){return{get:r=>n.tryPromise({try:()=>t.get(r),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}),set:(r,i)=>n.tryPromise({try:()=>t.set(r,i),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.asVoid),delete:r=>n.tryPromise({try:()=>t.del(r),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}).pipe(n.asVoid),list:r=>n.gen(function*(i){let a=new Set,o=`0`;do{let s=yield*i(n.tryPromise({try:()=>t.scan(o,{MATCH:`${r}*`,COUNT:20}),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{cause:t})}));o=s.cursor;for(let e of s.keys)a.add(e.replace(r,``))}while(o!==0&&o!==`0`);return Array.from(a)})}}const a=e=>r.succeed(t,i(e));export{i as makeRedisBaseKvStore,a as redisKvStore};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/redis-kv-store.ts"],"sourcesContent":["import type { RedisArgument, RedisClientType } from \"@redis/client\";\n\nimport { UploadistaError } from \"@uploadista/core/errors\";\nimport { type BaseKvStore, BaseKvStoreService } from \"@uploadista/core/types\";\nimport { Effect, Layer } from \"effect\";\n\nexport interface RedisKvStoreConfig {\n redis: RedisClientType;\n}\n\n// Base Redis KV store that stores raw strings\nexport function makeRedisBaseKvStore({\n redis,\n}: RedisKvStoreConfig): BaseKvStore {\n return {\n get: (key: string) =>\n Effect.tryPromise({\n try: () => redis.get(key),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }),\n\n set: (key: string, value: string) =>\n Effect.tryPromise({\n try: () => redis.set(key, value),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }).pipe(Effect.asVoid),\n\n delete: (key: string) =>\n Effect.tryPromise({\n try: () => redis.del(key),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }).pipe(Effect.asVoid),\n\n list: (keyPrefix: string) =>\n Effect.gen(function* (_) {\n const keys = new Set<string>();\n let cursor: RedisArgument = \"0\";\n\n do {\n const result = yield* _(\n Effect.tryPromise({\n try: () =>\n redis.scan(cursor, {\n MATCH: `${keyPrefix}*`,\n COUNT: 20,\n }),\n catch: (cause) =>\n UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }),\n );\n\n cursor = result.cursor;\n for (const key of result.keys) {\n keys.add(key.replace(keyPrefix, \"\"));\n }\n } while (cursor !== \"0\");\n\n return Array.from(keys);\n }),\n };\n}\n\n// Base store layer\nexport const redisKvStore = (config: RedisKvStoreConfig) =>\n Layer.succeed(BaseKvStoreService, makeRedisBaseKvStore(config));\n"],"mappings":"iKAWA,SAAgB,EAAqB,CACnC,SACkC,CAClC,MAAO,CACL,IAAM,GACJ,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAI,CACzB,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAEJ,KAAM,EAAa,IACjB,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAK,EAAM,CAChC,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAAC,KAAK,EAAO,OAAO,CAExB,OAAS,GACP,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAI,CACzB,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAAC,KAAK,EAAO,OAAO,CAExB,KAAO,GACL,EAAO,IAAI,UAAW,EAAG,CACvB,IAAM,EAAO,IAAI,IACb,EAAwB,IAE5B,EAAG,CACD,IAAM,EAAS,MAAO,EACpB,EAAO,WAAW,CAChB,QACE,EAAM,KAAK,EAAQ,CACjB,MAAO,GAAG,EAAU,GACpB,MAAO,GACR,CAAC,CACJ,MAAQ,GACN,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvD,CAAC,CACH,CAED,EAAS,EAAO,OAChB,IAAK,IAAM,KAAO,EAAO,KACvB,EAAK,IAAI,EAAI,QAAQ,EAAW,GAAG,CAAC,OAE/B,IAAW,KAEpB,OAAO,MAAM,KAAK,EAAK,EACvB,CACL,CAIH,MAAa,EAAgB,GAC3B,EAAM,QAAQ,EAAoB,EAAqB,EAAO,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/redis-kv-store.ts"],"sourcesContent":["import { UploadistaError } from \"@uploadista/core/errors\";\nimport { type BaseKvStore, BaseKvStoreService } from \"@uploadista/core/types\";\nimport { Effect, Layer } from \"effect\";\n\nexport interface RedisLike {\n get(key: string): Promise<string | null>;\n set(key: string, value: string): Promise<unknown>;\n del(key: string | string[]): Promise<number>;\n scan(\n cursor: unknown,\n options?: { MATCH?: string; COUNT?: number },\n ): Promise<{ cursor: unknown; keys: string[] }>;\n}\n\nexport interface RedisKvStoreConfig {\n redis: RedisLike;\n}\n\n// Base Redis KV store that stores raw strings\nexport function makeRedisBaseKvStore({\n redis,\n}: RedisKvStoreConfig): BaseKvStore {\n return {\n get: (key: string) =>\n Effect.tryPromise({\n try: () => redis.get(key),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }),\n\n set: (key: string, value: string) =>\n Effect.tryPromise({\n try: () => redis.set(key, value),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }).pipe(Effect.asVoid),\n\n delete: (key: string) =>\n Effect.tryPromise({\n try: () => redis.del(key),\n catch: (cause) => UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }).pipe(Effect.asVoid),\n\n list: (keyPrefix: string) =>\n Effect.gen(function* (_) {\n const keys = new Set<string>();\n let cursor: unknown = \"0\";\n\n do {\n const result = yield* _(\n Effect.tryPromise({\n try: () =>\n redis.scan(cursor, {\n MATCH: `${keyPrefix}*`,\n COUNT: 20,\n }),\n catch: (cause) =>\n UploadistaError.fromCode(\"UNKNOWN_ERROR\", { cause }),\n }),\n );\n\n cursor = result.cursor;\n for (const key of result.keys) {\n keys.add(key.replace(keyPrefix, \"\"));\n }\n } while (cursor !== 0 && cursor !== \"0\");\n\n return Array.from(keys);\n }),\n };\n}\n\n// Base store layer\nexport const redisKvStore = (config: RedisKvStoreConfig) =>\n Layer.succeed(BaseKvStoreService, makeRedisBaseKvStore(config));\n"],"mappings":"iKAmBA,SAAgB,EAAqB,CACnC,SACkC,CAClC,MAAO,CACL,IAAM,GACJ,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAI,CACzB,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAEJ,KAAM,EAAa,IACjB,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAK,EAAM,CAChC,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAAC,KAAK,EAAO,OAAO,CAExB,OAAS,GACP,EAAO,WAAW,CAChB,QAAW,EAAM,IAAI,EAAI,CACzB,MAAQ,GAAU,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvE,CAAC,CAAC,KAAK,EAAO,OAAO,CAExB,KAAO,GACL,EAAO,IAAI,UAAW,EAAG,CACvB,IAAM,EAAO,IAAI,IACb,EAAkB,IAEtB,EAAG,CACD,IAAM,EAAS,MAAO,EACpB,EAAO,WAAW,CAChB,QACE,EAAM,KAAK,EAAQ,CACjB,MAAO,GAAG,EAAU,GACpB,MAAO,GACR,CAAC,CACJ,MAAQ,GACN,EAAgB,SAAS,gBAAiB,CAAE,QAAO,CAAC,CACvD,CAAC,CACH,CAED,EAAS,EAAO,OAChB,IAAK,IAAM,KAAO,EAAO,KACvB,EAAK,IAAI,EAAI,QAAQ,EAAW,GAAG,CAAC,OAE/B,IAAW,GAAK,IAAW,KAEpC,OAAO,MAAM,KAAK,EAAK,EACvB,CACL,CAIH,MAAa,EAAgB,GAC3B,EAAM,QAAQ,EAAoB,EAAqB,EAAO,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@uploadista/kv-store-redis",
3
3
  "type": "module",
4
- "version": "0.1.3",
4
+ "version": "0.2.0",
5
5
  "description": "Redis KV store for Uploadista",
6
6
  "license": "MIT",
7
7
  "author": "Uploadista",
@@ -14,7 +14,7 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@uploadista/core": "0.1.3"
17
+ "@uploadista/core": "0.2.0"
18
18
  },
19
19
  "peerDependencies": {
20
20
  "@redis/client": ">=5.8.0 <6.0.0",
@@ -22,11 +22,11 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@effect/vitest": "0.27.0",
25
- "@redis/client": "5.10.0",
26
- "effect": "3.19.15",
27
- "tsdown": "0.20.1",
25
+ "@redis/client": "5.11.0",
26
+ "effect": "3.19.17",
27
+ "tsdown": "0.20.3",
28
28
  "vitest": "4.0.18",
29
- "@uploadista/typescript-config": "0.1.3"
29
+ "@uploadista/typescript-config": "0.2.0"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "tsc --noEmit && tsdown",
@@ -1,11 +1,19 @@
1
- import type { RedisArgument, RedisClientType } from "@redis/client";
2
-
3
1
  import { UploadistaError } from "@uploadista/core/errors";
4
2
  import { type BaseKvStore, BaseKvStoreService } from "@uploadista/core/types";
5
3
  import { Effect, Layer } from "effect";
6
4
 
5
+ export interface RedisLike {
6
+ get(key: string): Promise<string | null>;
7
+ set(key: string, value: string): Promise<unknown>;
8
+ del(key: string | string[]): Promise<number>;
9
+ scan(
10
+ cursor: unknown,
11
+ options?: { MATCH?: string; COUNT?: number },
12
+ ): Promise<{ cursor: unknown; keys: string[] }>;
13
+ }
14
+
7
15
  export interface RedisKvStoreConfig {
8
- redis: RedisClientType;
16
+ redis: RedisLike;
9
17
  }
10
18
 
11
19
  // Base Redis KV store that stores raw strings
@@ -34,7 +42,7 @@ export function makeRedisBaseKvStore({
34
42
  list: (keyPrefix: string) =>
35
43
  Effect.gen(function* (_) {
36
44
  const keys = new Set<string>();
37
- let cursor: RedisArgument = "0";
45
+ let cursor: unknown = "0";
38
46
 
39
47
  do {
40
48
  const result = yield* _(
@@ -53,7 +61,7 @@ export function makeRedisBaseKvStore({
53
61
  for (const key of result.keys) {
54
62
  keys.add(key.replace(keyPrefix, ""));
55
63
  }
56
- } while (cursor !== "0");
64
+ } while (cursor !== 0 && cursor !== "0");
57
65
 
58
66
  return Array.from(keys);
59
67
  }),