veryfront 0.1.696 → 0.1.698
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 +45 -21
- package/assets/banner.svg +55 -0
- package/esm/deno.js +1 -1
- package/esm/src/config/loader.d.ts +2 -0
- package/esm/src/config/loader.d.ts.map +1 -1
- package/esm/src/config/loader.js +15 -16
- package/esm/src/platform/adapters/redis/index.d.ts +3 -4
- package/esm/src/platform/adapters/redis/index.d.ts.map +1 -1
- package/esm/src/platform/adapters/redis/index.js +2 -3
- package/esm/src/platform/adapters/redis/modules.d.ts +1 -2
- package/esm/src/platform/adapters/redis/modules.d.ts.map +1 -1
- package/esm/src/platform/adapters/redis/modules.js +3 -5
- package/esm/src/platform/adapters/redis/types.d.ts +0 -49
- package/esm/src/platform/adapters/redis/types.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache-state.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache-state.js +16 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/backends/redis/index.d.ts.map +1 -1
- package/esm/src/workflow/backends/redis/index.js +2 -10
- package/esm/src/workflow/backends/redis/types.d.ts +1 -1
- package/esm/src/workflow/backends/redis/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/esm/src/platform/adapters/redis/deno.d.ts +0 -49
- package/esm/src/platform/adapters/redis/deno.d.ts.map +0 -1
- package/esm/src/platform/adapters/redis/deno.js +0 -93
package/README.md
CHANGED
|
@@ -1,53 +1,77 @@
|
|
|
1
|
-
# Veryfront
|
|
1
|
+
# Veryfront Code
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/veryfront)
|
|
4
4
|
[](https://socket.dev/npm/package/veryfront)
|
|
5
5
|
[](./LICENSE)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Put your agents to work.**
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Veryfront Code is a full-stack framework for building AI-powered applications and agents with TypeScript and React.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
It gives you agents, tools, workflows, and a complete React rendering stack in a single framework. Veryfront Code runs on Node.js, Deno, and Bun, and can be deployed anywhere or shipped through the Veryfront platform with built-in preview environments and production hosting.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="./assets/banner.svg" alt="Veryfront" width="100%">
|
|
15
|
+
</p>
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
## Why Veryfront Code?
|
|
16
18
|
|
|
17
|
-
-
|
|
19
|
+
Purpose-built for TypeScript and React, Veryfront Code gives you everything you need to build agentic full-stack applications out-of-the-box.
|
|
18
20
|
|
|
19
|
-
- [**
|
|
21
|
+
- [**Agents**](https://veryfront.com/docs/code/guides/agents) - Build AI agents that reason and act. Give them instructions, models, tools, skills, memory, and durable hosted execution.
|
|
20
22
|
|
|
21
|
-
- [**Skills**](https://veryfront.com/docs/code/guides/skills) -
|
|
23
|
+
- [**Skills**](https://veryfront.com/docs/code/guides/skills) - Add project-level agent capabilities with `SKILL.md` files. Skills package instructions, allowed tools, and scripts.
|
|
22
24
|
|
|
23
|
-
- [**
|
|
25
|
+
- [**Tools**](https://veryfront.com/docs/code/guides/tools) - Define Zod-validated functions that agents can call. Tools are discovered from files, so you do not need manual registration.
|
|
24
26
|
|
|
25
|
-
- [**
|
|
27
|
+
- [**Prompts**](https://veryfront.com/docs/code/concepts/prompt) - Reuse named prompt templates across agents, tools, MCP servers, and application code.
|
|
26
28
|
|
|
27
|
-
- [**
|
|
29
|
+
- [**Knowledge**](https://veryfront.com/docs/code/guides/cli-knowledge-ingestion) - Turn source documents into project knowledge files that agents can use as context.
|
|
28
30
|
|
|
29
|
-
- [**Memory & Streaming**](https://veryfront.com/docs/code/guides/memory-and-streaming) - Give agents conversation history
|
|
31
|
+
- [**Memory & Streaming**](https://veryfront.com/docs/code/guides/memory-and-streaming) - Give agents conversation history, streamed responses, and React chat UI components with AG-UI support.
|
|
30
32
|
|
|
31
|
-
- [**
|
|
33
|
+
- [**Multi-Agent Systems**](https://veryfront.com/docs/code/guides/multi-agent) - Compose orchestrators and sub-agents that delegate to each other as tools for coordinated work.
|
|
32
34
|
|
|
33
|
-
- [**
|
|
35
|
+
- [**Tasks**](https://veryfront.com/docs/code/guides/tasks) - Define file-based background jobs that Veryfront Code discovers and runs as task executions.
|
|
34
36
|
|
|
35
|
-
- [**
|
|
37
|
+
- [**Workflows**](https://veryfront.com/docs/code/guides/workflows) - Orchestrate multi-step AI pipelines with branching, parallel steps, approval gates, and durable Redis checkpoints.
|
|
36
38
|
|
|
37
|
-
- [**
|
|
39
|
+
- [**Runs**](https://veryfront.com/docs/code/guides/runs) - Execute durable task, workflow, and agent work through project-scoped run records.
|
|
38
40
|
|
|
39
|
-
- [**
|
|
41
|
+
- [**MCP Server**](https://veryfront.com/docs/code/guides/mcp-server) - Expose tools, prompts, and resources through MCP with SSE transport, sessions, and elicitation.
|
|
40
42
|
|
|
41
|
-
- [**
|
|
43
|
+
- [**Sandbox**](https://veryfront.com/docs/code/guides/sandbox) - Run isolated code in ephemeral compute environments with shell tools and agent-service integration.
|
|
44
|
+
|
|
45
|
+
- [**Integrations**](https://veryfront.com/docs/code/guides/integrations) - Add third-party services with connectors for OAuth, remote tools, and service metadata.
|
|
46
|
+
|
|
47
|
+
- [**Pages & Routing**](https://veryfront.com/docs/code/guides/pages-and-routing) - Build app routes with files, React Server Components, layouts, and server-side rendering.
|
|
48
|
+
|
|
49
|
+
- [**Data Fetching & API Routes**](https://veryfront.com/docs/code/guides/data-fetching) - Load server data, define API handlers, and add [middleware](https://veryfront.com/docs/code/guides/middleware) with built-in [OAuth](https://veryfront.com/docs/code/guides/oauth).
|
|
50
|
+
|
|
51
|
+
- [**Extensions**](https://veryfront.com/docs/code/guides/extensions) - Extend Veryfront Code with contract-based packages for LLM providers, bundling, CSS, tracing, caching, and more.
|
|
42
52
|
|
|
43
53
|
## Get Started
|
|
44
54
|
|
|
45
|
-
|
|
55
|
+
Use the interactive project wizard when you want to compare templates:
|
|
46
56
|
|
|
47
57
|
```bash
|
|
48
58
|
npm create veryfront
|
|
49
59
|
```
|
|
50
60
|
|
|
61
|
+
Choose a starting point directly with `npx` when you already know what you want
|
|
62
|
+
to build:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Agent app with a chat UI, tool, and AG-UI route
|
|
66
|
+
npx veryfront init support-agent --template ai-agent
|
|
67
|
+
|
|
68
|
+
# Blank full-stack app with pages and routing
|
|
69
|
+
npx veryfront init my-app --template minimal
|
|
70
|
+
|
|
71
|
+
# Durable multi-step AI pipeline
|
|
72
|
+
npx veryfront init my-workflow --template agentic-workflow
|
|
73
|
+
```
|
|
74
|
+
|
|
51
75
|
<details>
|
|
52
76
|
<summary>pnpm, yarn, bun, deno</summary>
|
|
53
77
|
|
|
@@ -68,7 +92,7 @@ brew install veryfront/tap/veryfront
|
|
|
68
92
|
|
|
69
93
|
</details>
|
|
70
94
|
|
|
71
|
-
Follow the [Quickstart guide](https://veryfront.com/docs/code/getting-started/quickstart)
|
|
95
|
+
Follow the [Quickstart guide](https://veryfront.com/docs/code/getting-started/quickstart) to build the agent app end-to-end, or use [Create a project](https://veryfront.com/docs/code/getting-started/create-a-project) to compare templates before you scaffold. For the full documentation, visit [veryfront.com/docs/code](https://veryfront.com/docs/code).
|
|
72
96
|
|
|
73
97
|
## Project Structure
|
|
74
98
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg width="1080" height="280" viewBox="0 0 1080 280" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_8631_80194)">
|
|
3
|
+
<rect width="1080" height="280" fill="#E8E6DB"/>
|
|
4
|
+
<g clip-path="url(#clip1_8631_80194)">
|
|
5
|
+
<path d="M686.43 410.688C702.718 410.689 715.924 423.894 715.924 440.183V574.073H1387.97C1404.26 574.074 1417.46 587.279 1417.46 603.567C1417.46 619.856 1404.26 633.061 1387.97 633.062H686.43C670.141 633.061 656.937 619.856 656.937 603.567V440.183C656.937 423.894 670.141 410.689 686.43 410.688ZM485.334 410.684C546.74 410.684 596.519 460.464 596.52 521.87C596.519 538.159 583.314 551.364 567.025 551.364C550.737 551.364 537.532 538.159 537.532 521.87C537.532 493.042 514.162 469.672 485.334 469.672H-103.853C-132.681 469.672 -156.051 493.042 -156.051 521.87C-156.051 538.159 -169.256 551.364 -185.545 551.364C-201.834 551.364 -215.039 538.159 -215.039 521.87C-215.039 460.464 -165.259 410.684 -103.853 410.684H485.334ZM476.254 300.613C492.543 300.613 505.748 313.819 505.748 330.107C505.748 346.396 492.543 359.601 476.254 359.602H-153.196C-169.485 359.602 -182.69 346.396 -182.69 330.107C-182.69 313.819 -169.485 300.613 -153.196 300.613H476.254ZM1218.37 300.613C1234.66 300.613 1247.86 313.819 1247.86 330.107C1247.86 346.396 1234.66 359.601 1218.37 359.602H588.916C572.627 359.602 559.422 346.396 559.422 330.107C559.422 313.819 572.627 300.613 588.916 300.613H1218.37ZM108.907 27.1328C125.196 27.133 138.401 40.338 138.401 56.627V220.012C138.401 236.3 125.196 249.506 108.907 249.506C92.6184 249.506 79.4133 236.301 79.4131 220.012V86.1211H-126.568C-142.857 86.1211 -156.062 72.9159 -156.062 56.627C-156.062 40.3379 -142.857 27.1328 -126.568 27.1328H108.907ZM1287 27.1934C1348.32 27.1934 1398.03 76.9031 1398.03 138.223C1398.03 199.542 1348.32 249.252 1287 249.252H307.645C246.325 249.252 196.615 199.542 196.615 138.223C196.615 76.9031 246.325 27.1934 307.645 27.1934H1287ZM307.645 86.1816C278.903 86.1817 255.604 109.481 255.604 138.223C255.604 166.964 278.903 190.264 307.645 190.264H1287C1315.75 190.264 1339.04 166.964 1339.04 138.223C1339.04 109.481 1315.75 86.1816 1287 86.1816H307.645Z" fill="#F0EFE9"/>
|
|
6
|
+
<rect x="298.631" y="190.344" width="57.9866" height="57.9866" rx="28.9933" fill="#FF9B9B"/>
|
|
7
|
+
<rect x="75" y="31" width="57.9866" height="57.9866" rx="28.9933" fill="#5BC1C3"/>
|
|
8
|
+
<ellipse cx="101.178" cy="47.2381" rx="3.15216" ry="3.12095" fill="white"/>
|
|
9
|
+
<ellipse cx="109.707" cy="47.2381" rx="3.15216" ry="3.12095" fill="white"/>
|
|
10
|
+
<ellipse cx="101.178" cy="55.6834" rx="3.15216" ry="3.12095" fill="white"/>
|
|
11
|
+
<ellipse cx="101.178" cy="64.1288" rx="3.15216" ry="3.12095" fill="white"/>
|
|
12
|
+
<ellipse cx="92.6483" cy="55.6834" rx="3.15216" ry="3.12095" fill="#282828"/>
|
|
13
|
+
<ellipse cx="92.6483" cy="64.1288" rx="3.15216" ry="3.12095" fill="white"/>
|
|
14
|
+
<ellipse cx="101.178" cy="72.5741" rx="3.15216" ry="3.12095" fill="white"/>
|
|
15
|
+
<ellipse cx="109.707" cy="55.6834" rx="3.15216" ry="3.12095" fill="white"/>
|
|
16
|
+
<ellipse cx="109.707" cy="64.1288" rx="3.15216" ry="3.12095" fill="white"/>
|
|
17
|
+
<ellipse cx="118.236" cy="64.1288" rx="3.15216" ry="3.12095" fill="white"/>
|
|
18
|
+
<ellipse cx="118.236" cy="55.6834" rx="3.15216" ry="3.12095" fill="#282828"/>
|
|
19
|
+
<ellipse cx="109.707" cy="72.5741" rx="3.15216" ry="3.12095" fill="white"/>
|
|
20
|
+
<ellipse cx="323.359" cy="209.41" rx="3.15216" ry="3.12095" fill="black"/>
|
|
21
|
+
<ellipse cx="331.888" cy="209.41" rx="3.15216" ry="3.12095" fill="black"/>
|
|
22
|
+
<ellipse cx="323.359" cy="217.855" rx="3.15216" ry="3.12095" fill="white"/>
|
|
23
|
+
<ellipse cx="314.83" cy="234.707" rx="3.15216" ry="3.12095" fill="white"/>
|
|
24
|
+
<ellipse cx="314.83" cy="217.855" rx="3.15216" ry="3.12095" fill="white"/>
|
|
25
|
+
<ellipse cx="314.83" cy="226.301" rx="3.15216" ry="3.12095" fill="white"/>
|
|
26
|
+
<ellipse cx="323.359" cy="234.746" rx="3.15216" ry="3.12095" fill="white"/>
|
|
27
|
+
<ellipse cx="331.888" cy="217.855" rx="3.15216" ry="3.12095" fill="white"/>
|
|
28
|
+
<ellipse cx="340.379" cy="234.707" rx="3.15216" ry="3.12095" fill="white"/>
|
|
29
|
+
<ellipse cx="340.418" cy="226.301" rx="3.15216" ry="3.12095" fill="white"/>
|
|
30
|
+
<ellipse cx="340.418" cy="217.855" rx="3.15216" ry="3.12095" fill="white"/>
|
|
31
|
+
<ellipse cx="331.888" cy="234.746" rx="3.15216" ry="3.12095" fill="white"/>
|
|
32
|
+
<rect x="882" y="27" width="57.9866" height="57.9866" rx="28.9933" fill="#DE84BC"/>
|
|
33
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 904.512 71.8516)" fill="white"/>
|
|
34
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 913.041 71.8516)" fill="white"/>
|
|
35
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 904.512 63.4062)" fill="white"/>
|
|
36
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 904.512 54.9609)" fill="black"/>
|
|
37
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 895.982 71.8125)" fill="white"/>
|
|
38
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 895.982 54.9609)" fill="white"/>
|
|
39
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 904.512 46.5156)" fill="white"/>
|
|
40
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 913.041 63.4062)" fill="white"/>
|
|
41
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 913.041 54.9609)" fill="black"/>
|
|
42
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 921.57 54.9609)" fill="white"/>
|
|
43
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 921.57 71.8125)" fill="white"/>
|
|
44
|
+
<ellipse cx="3.15216" cy="3.12095" rx="3.15216" ry="3.12095" transform="matrix(1 0 0 -1 913.041 46.5156)" fill="white"/>
|
|
45
|
+
</g>
|
|
46
|
+
</g>
|
|
47
|
+
<defs>
|
|
48
|
+
<clipPath id="clip0_8631_80194">
|
|
49
|
+
<rect width="1080" height="280" fill="white"/>
|
|
50
|
+
</clipPath>
|
|
51
|
+
<clipPath id="clip1_8631_80194">
|
|
52
|
+
<rect width="1080" height="632.936" fill="white" transform="translate(0 15)"/>
|
|
53
|
+
</clipPath>
|
|
54
|
+
</defs>
|
|
55
|
+
</svg>
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { VeryfrontConfig } from "./schemas/index.js";
|
|
2
2
|
import type { RuntimeAdapter } from "../platform/adapters/base.js";
|
|
3
3
|
export type { VeryfrontConfig } from "./schemas/index.js";
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare function transpileConfigSourceForImport(source: string, configPath: string): Promise<string>;
|
|
4
6
|
/**
|
|
5
7
|
* Options for getConfig
|
|
6
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAiCnE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/src/config/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAiCnE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA0Q1D,gBAAgB;AAChB,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAUjB;AA4FD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC,CAkF1B;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAI9E"}
|
package/esm/src/config/loader.js
CHANGED
|
@@ -249,10 +249,12 @@ async function loadConfigFromTempFile(source, configPath, loadUrl) {
|
|
|
249
249
|
const fs = createFileSystem();
|
|
250
250
|
const originalExt = extname(configPath) || ".mjs";
|
|
251
251
|
// In compiled Deno binaries, we can't import TypeScript directly.
|
|
252
|
-
// Convert .ts/.tsx to .mjs
|
|
252
|
+
// Convert .ts/.tsx to .mjs after running it through the bundler transform.
|
|
253
253
|
const needsTranspile = isDenoCompiled && (originalExt === ".ts" || originalExt === ".tsx");
|
|
254
254
|
const extension = needsTranspile ? ".mjs" : originalExt;
|
|
255
|
-
const processedSource = needsTranspile
|
|
255
|
+
const processedSource = needsTranspile
|
|
256
|
+
? await transpileConfigSourceForImport(source, configPath)
|
|
257
|
+
: source;
|
|
256
258
|
const tempDir = await fs.makeTempDir({ prefix: "vf-config-" });
|
|
257
259
|
const tempFile = join(tempDir, `config${extension}`);
|
|
258
260
|
try {
|
|
@@ -264,20 +266,17 @@ async function loadConfigFromTempFile(source, configPath, loadUrl) {
|
|
|
264
266
|
await fs.remove(tempDir, { recursive: true });
|
|
265
267
|
}
|
|
266
268
|
}
|
|
267
|
-
/**
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
.replace(/\s+as\s+[A-Z][a-zA-Z0-9]*(?:<[^>]+>)?/g, "")
|
|
279
|
-
// Remove generic type parameters from function calls
|
|
280
|
-
.replace(/<[A-Z][a-zA-Z0-9]*(?:\s*,\s*[A-Z][a-zA-Z0-9]*)*>/g, "");
|
|
269
|
+
/** @internal */
|
|
270
|
+
export async function transpileConfigSourceForImport(source, configPath) {
|
|
271
|
+
const { transform } = await import("../extensions/bundler/index.js");
|
|
272
|
+
const extension = extname(configPath);
|
|
273
|
+
const loader = extension === ".tsx" ? "tsx" : "ts";
|
|
274
|
+
const result = await transform(source, {
|
|
275
|
+
format: "esm",
|
|
276
|
+
loader,
|
|
277
|
+
sourcemap: false,
|
|
278
|
+
});
|
|
279
|
+
return result.code;
|
|
281
280
|
}
|
|
282
281
|
/**
|
|
283
282
|
* Load config from virtual filesystem.
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Redis Platform Adapters
|
|
3
3
|
*
|
|
4
|
-
* Runtime-agnostic Redis adapter interface and
|
|
5
|
-
*
|
|
4
|
+
* Runtime-agnostic Redis adapter interface and implementation.
|
|
5
|
+
* Uses the npm `redis` client on both Deno and Node.js runtimes.
|
|
6
6
|
*
|
|
7
7
|
* @module platform/adapters/redis
|
|
8
8
|
*/
|
|
9
|
-
export type {
|
|
9
|
+
export type { NodeRedisClient, NodeRedisModule } from "./types.js";
|
|
10
10
|
export type { RedisAdapter } from "./interface.js";
|
|
11
|
-
export { DenoRedisAdapter } from "./deno.js";
|
|
12
11
|
export { NodeRedisAdapter } from "./node.js";
|
|
13
12
|
export { clearModuleCache, getRedisModule } from "./modules.js";
|
|
14
13
|
export { arrayToObject } from "./utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Redis Platform Adapters
|
|
3
3
|
*
|
|
4
|
-
* Runtime-agnostic Redis adapter interface and
|
|
5
|
-
*
|
|
4
|
+
* Runtime-agnostic Redis adapter interface and implementation.
|
|
5
|
+
* Uses the npm `redis` client on both Deno and Node.js runtimes.
|
|
6
6
|
*
|
|
7
7
|
* @module platform/adapters/redis
|
|
8
8
|
*/
|
|
9
|
-
export { DenoRedisAdapter } from "./deno.js";
|
|
10
9
|
export { NodeRedisAdapter } from "./node.js";
|
|
11
10
|
export { clearModuleCache, getRedisModule } from "./modules.js";
|
|
12
11
|
export { arrayToObject } from "./utils.js";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeRedisModule } from "./types.js";
|
|
2
2
|
export declare function getRedisModule(): Promise<{
|
|
3
|
-
DenoRedis: DenoRedisModule | null;
|
|
4
3
|
NodeRedis: NodeRedisModule | null;
|
|
5
4
|
}>;
|
|
6
5
|
export declare function clearModuleCache(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/modules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/modules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,wBAAgB,cAAc,IAAI,OAAO,CAAC;IACxC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;CACnC,CAAC,CA6BD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { isDeno } from "../../compat/runtime.js";
|
|
2
2
|
import { withSpan } from "../../../observability/tracing/otlp-setup.js";
|
|
3
3
|
import { INITIALIZATION_ERROR } from "../../../errors/index.js";
|
|
4
|
-
let DenoRedis = null;
|
|
5
4
|
let NodeRedis = null;
|
|
6
5
|
export function getRedisModule() {
|
|
7
|
-
if (
|
|
8
|
-
return Promise.resolve({
|
|
6
|
+
if (NodeRedis) {
|
|
7
|
+
return Promise.resolve({ NodeRedis });
|
|
9
8
|
}
|
|
10
9
|
return withSpan("platform.redis.getModule", async () => {
|
|
11
10
|
try {
|
|
@@ -24,10 +23,9 @@ export function getRedisModule() {
|
|
|
24
23
|
cause: error instanceof Error ? error : undefined,
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
|
-
return {
|
|
26
|
+
return { NodeRedis };
|
|
28
27
|
}, { "redis.runtime": isDeno ? "deno" : "node" });
|
|
29
28
|
}
|
|
30
29
|
export function clearModuleCache() {
|
|
31
|
-
DenoRedis = null;
|
|
32
30
|
NodeRedis = null;
|
|
33
31
|
}
|
|
@@ -1,52 +1,3 @@
|
|
|
1
|
-
export interface DenoRedisModule {
|
|
2
|
-
connect(options: {
|
|
3
|
-
hostname?: string;
|
|
4
|
-
port?: number;
|
|
5
|
-
}): Promise<DenoRedisClient>;
|
|
6
|
-
}
|
|
7
|
-
export interface DenoRedisClient {
|
|
8
|
-
hset(key: string, fields: Record<string, string>): Promise<number | string>;
|
|
9
|
-
hgetall(key: string): Promise<string[]>;
|
|
10
|
-
hdel(key: string, ...fields: string[]): Promise<number>;
|
|
11
|
-
del(...keys: string[]): Promise<number>;
|
|
12
|
-
sadd(key: string, ...members: string[]): Promise<number>;
|
|
13
|
-
srem(key: string, ...members: string[]): Promise<number>;
|
|
14
|
-
smembers(key: string): Promise<string[]>;
|
|
15
|
-
rpush(key: string, ...values: string[]): Promise<number>;
|
|
16
|
-
lrange(key: string, start: number, stop: number): Promise<string[]>;
|
|
17
|
-
lindex(key: string, index: number): Promise<string | null>;
|
|
18
|
-
lset(key: string, index: number, value: string): Promise<string | "OK">;
|
|
19
|
-
llen(key: string): Promise<number>;
|
|
20
|
-
xadd(key: string, id: string, fields: Record<string, string>): Promise<string>;
|
|
21
|
-
xgroupCreate(key: string, group: string, id: string, mkstream?: boolean): Promise<string>;
|
|
22
|
-
xreadgroup(streams: Array<{
|
|
23
|
-
key: string;
|
|
24
|
-
xid: string;
|
|
25
|
-
}>, options: {
|
|
26
|
-
group: string;
|
|
27
|
-
consumer: string;
|
|
28
|
-
block?: number;
|
|
29
|
-
count?: number;
|
|
30
|
-
}): Promise<Array<{
|
|
31
|
-
key: string;
|
|
32
|
-
messages: Array<{
|
|
33
|
-
id: string;
|
|
34
|
-
fieldValues: string[];
|
|
35
|
-
}>;
|
|
36
|
-
}> | null>;
|
|
37
|
-
xack(key: string, group: string, ...ids: string[]): Promise<number>;
|
|
38
|
-
keys(pattern: string): Promise<string[]>;
|
|
39
|
-
exists(...keys: string[]): Promise<number>;
|
|
40
|
-
expire(key: string, seconds: number): Promise<number>;
|
|
41
|
-
set(key: string, value: string, options?: {
|
|
42
|
-
nx?: boolean;
|
|
43
|
-
px?: number;
|
|
44
|
-
ex?: number;
|
|
45
|
-
}): Promise<string | null>;
|
|
46
|
-
get(key: string): Promise<string | null>;
|
|
47
|
-
eval(script: string, keys: string[], args: string[]): Promise<unknown>;
|
|
48
|
-
close(): Promise<void>;
|
|
49
|
-
}
|
|
50
1
|
export interface NodeRedisModule {
|
|
51
2
|
createClient(options: {
|
|
52
3
|
url?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-cache-state.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/http-cache-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-cache-state.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/http-cache-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAyDtE,wBAAgB,cAAc,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9D;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGpD;AAED,wBAAgB,yBAAyB,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAEzE;AAED,gGAAgG;AAChG,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE;IACN,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACnD,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzC,sBAAsB,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAC/D,GAAG,IAAI,GACP,IAAI,CAcN"}
|
|
@@ -26,10 +26,26 @@ function getCacheEntryCount(cache) {
|
|
|
26
26
|
const size = cache.size;
|
|
27
27
|
return typeof size === "number" ? size : -1;
|
|
28
28
|
}
|
|
29
|
+
function estimateStringCacheBytes(cache) {
|
|
30
|
+
const entries = cache.entries;
|
|
31
|
+
if (typeof entries !== "function")
|
|
32
|
+
return undefined;
|
|
33
|
+
let total = 0;
|
|
34
|
+
try {
|
|
35
|
+
for (const [key, value] of entries.call(cache)) {
|
|
36
|
+
total += String(key).length + String(value).length;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (_) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
return total;
|
|
43
|
+
}
|
|
29
44
|
registerCache("http-bundle-paths", () => ({
|
|
30
45
|
name: "http-bundle-paths",
|
|
31
46
|
entries: getCacheEntryCount(getCachedPaths()),
|
|
32
47
|
maxEntries: HTTP_MODULE_CACHE_MAX_ENTRIES,
|
|
48
|
+
estimatedSizeBytes: estimateStringCacheBytes(getCachedPaths()),
|
|
33
49
|
}));
|
|
34
50
|
registerCache("http-bundle-ttl-refreshes", () => ({
|
|
35
51
|
name: "http-bundle-ttl-refreshes",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/backends/redis/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/backends/redis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import * as dntShim from "../../../../_dnt.shims.js";
|
|
|
10
10
|
import { agentLogger } from "../../../utils/index.js";
|
|
11
11
|
import { requeueRun } from "../shared/requeue-run.js";
|
|
12
12
|
import { INITIALIZATION_ERROR, INVALID_ARGUMENT, RESOURCE_NOT_FOUND } from "../../../errors/index.js";
|
|
13
|
-
import {
|
|
13
|
+
import { getRedisModule, NodeRedisAdapter } from "../../../platform/adapters/redis/index.js";
|
|
14
14
|
const logger = agentLogger.component("redis-backend");
|
|
15
15
|
/**
|
|
16
16
|
* Atomic compare-and-delete: delete the lock only if it still holds our token.
|
|
@@ -156,7 +156,7 @@ export class RedisBackend {
|
|
|
156
156
|
return this.connectionPromise;
|
|
157
157
|
}
|
|
158
158
|
async createConnection() {
|
|
159
|
-
const {
|
|
159
|
+
const { NodeRedis: nodeRedis } = await getRedisModule();
|
|
160
160
|
if (this.config.debug) {
|
|
161
161
|
logger.debug(`[RedisBackend] Connecting to ${this.config.hostname || "127.0.0.1"}:${this.config.port || 6379}`);
|
|
162
162
|
}
|
|
@@ -169,14 +169,6 @@ export class RedisBackend {
|
|
|
169
169
|
this.client = new NodeRedisAdapter(client);
|
|
170
170
|
return this.client;
|
|
171
171
|
}
|
|
172
|
-
if (denoRedis) {
|
|
173
|
-
const client = await denoRedis.connect({
|
|
174
|
-
hostname: this.config.hostname,
|
|
175
|
-
port: this.config.port,
|
|
176
|
-
});
|
|
177
|
-
this.client = new DenoRedisAdapter(client);
|
|
178
|
-
return this.client;
|
|
179
|
-
}
|
|
180
172
|
throw INITIALIZATION_ERROR.create({ detail: "No Redis client available for this runtime." });
|
|
181
173
|
}
|
|
182
174
|
async initialize() {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { BackendConfig } from "../types.js";
|
|
9
9
|
import type { RedisAdapter } from "../../../platform/adapters/redis/index.js";
|
|
10
|
-
export type {
|
|
10
|
+
export type { NodeRedisClient, NodeRedisModule, RedisAdapter, } from "../../../platform/adapters/redis/index.js";
|
|
11
11
|
/**
|
|
12
12
|
* Redis backend configuration
|
|
13
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/backends/redis/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAG9E,YAAY,EACV,eAAe,EACf,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/backends/redis/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAG9E,YAAY,EACV,eAAe,EACf,eAAe,EACf,YAAY,GACb,MAAM,2CAA2C,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAClC,QAAQ,CACR,IAAI,CACF,kBAAkB,EAClB,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAChE,CACF,GACC,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.698",
|
|
4
4
|
"description": "The simplest way to build AI-powered apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -412,6 +412,7 @@
|
|
|
412
412
|
"esm",
|
|
413
413
|
"script",
|
|
414
414
|
"bin",
|
|
415
|
+
"assets",
|
|
415
416
|
"tsconfig.json",
|
|
416
417
|
"LICENSE",
|
|
417
418
|
"README.md"
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { DenoRedisClient } from "./types.js";
|
|
2
|
-
import type { RedisAdapter } from "./interface.js";
|
|
3
|
-
export declare class DenoRedisAdapter implements RedisAdapter {
|
|
4
|
-
private client;
|
|
5
|
-
constructor(client: DenoRedisClient);
|
|
6
|
-
hset(key: string, fields: Record<string, string>): Promise<number | string>;
|
|
7
|
-
hgetall(key: string): Promise<Record<string, string>>;
|
|
8
|
-
hdel(key: string, ...fields: string[]): Promise<number>;
|
|
9
|
-
del(...keys: string[]): Promise<number>;
|
|
10
|
-
sadd(key: string, ...members: string[]): Promise<number>;
|
|
11
|
-
srem(key: string, ...members: string[]): Promise<number>;
|
|
12
|
-
smembers(key: string): Promise<string[]>;
|
|
13
|
-
rpush(key: string, ...values: string[]): Promise<number>;
|
|
14
|
-
lrange(key: string, start: number, stop: number): Promise<string[]>;
|
|
15
|
-
lindex(key: string, index: number): Promise<string | null>;
|
|
16
|
-
lset(key: string, index: number, value: string): Promise<string | "OK">;
|
|
17
|
-
llen(key: string): Promise<number>;
|
|
18
|
-
xadd(key: string, id: string, fields: Record<string, string>): Promise<string>;
|
|
19
|
-
xgroupCreate(key: string, group: string, id: string, mkstream?: boolean): Promise<string>;
|
|
20
|
-
xreadgroup(streams: Array<{
|
|
21
|
-
key: string;
|
|
22
|
-
xid: string;
|
|
23
|
-
}>, options: {
|
|
24
|
-
group: string;
|
|
25
|
-
consumer: string;
|
|
26
|
-
block?: number;
|
|
27
|
-
count?: number;
|
|
28
|
-
}): Promise<Array<{
|
|
29
|
-
key: string;
|
|
30
|
-
messages: Array<{
|
|
31
|
-
id: string;
|
|
32
|
-
data: Record<string, string>;
|
|
33
|
-
}>;
|
|
34
|
-
}>>;
|
|
35
|
-
xack(key: string, group: string, ...ids: string[]): Promise<number>;
|
|
36
|
-
keys(pattern: string): Promise<string[]>;
|
|
37
|
-
exists(...keys: string[]): Promise<number>;
|
|
38
|
-
expire(key: string, seconds: number): Promise<number>;
|
|
39
|
-
set(key: string, value: string, options?: {
|
|
40
|
-
nx?: boolean;
|
|
41
|
-
px?: number;
|
|
42
|
-
ex?: number;
|
|
43
|
-
}): Promise<string | null>;
|
|
44
|
-
get(key: string): Promise<string | null>;
|
|
45
|
-
eval(script: string, keys: string[], args: string[]): Promise<unknown>;
|
|
46
|
-
quit(): Promise<void>;
|
|
47
|
-
disconnect(): Promise<void>;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=deno.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deno.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/redis/deno.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { arrayToObject } from "./utils.js";
|
|
2
|
-
export class DenoRedisAdapter {
|
|
3
|
-
client;
|
|
4
|
-
constructor(client) {
|
|
5
|
-
this.client = client;
|
|
6
|
-
}
|
|
7
|
-
hset(key, fields) {
|
|
8
|
-
return this.client.hset(key, fields);
|
|
9
|
-
}
|
|
10
|
-
async hgetall(key) {
|
|
11
|
-
const res = await this.client.hgetall(key);
|
|
12
|
-
return arrayToObject(res);
|
|
13
|
-
}
|
|
14
|
-
hdel(key, ...fields) {
|
|
15
|
-
return this.client.hdel(key, ...fields);
|
|
16
|
-
}
|
|
17
|
-
del(...keys) {
|
|
18
|
-
return this.client.del(...keys);
|
|
19
|
-
}
|
|
20
|
-
sadd(key, ...members) {
|
|
21
|
-
return this.client.sadd(key, ...members);
|
|
22
|
-
}
|
|
23
|
-
srem(key, ...members) {
|
|
24
|
-
return this.client.srem(key, ...members);
|
|
25
|
-
}
|
|
26
|
-
smembers(key) {
|
|
27
|
-
return this.client.smembers(key);
|
|
28
|
-
}
|
|
29
|
-
rpush(key, ...values) {
|
|
30
|
-
return this.client.rpush(key, ...values);
|
|
31
|
-
}
|
|
32
|
-
lrange(key, start, stop) {
|
|
33
|
-
return this.client.lrange(key, start, stop);
|
|
34
|
-
}
|
|
35
|
-
lindex(key, index) {
|
|
36
|
-
return this.client.lindex(key, index);
|
|
37
|
-
}
|
|
38
|
-
lset(key, index, value) {
|
|
39
|
-
return this.client.lset(key, index, value);
|
|
40
|
-
}
|
|
41
|
-
llen(key) {
|
|
42
|
-
return this.client.llen(key);
|
|
43
|
-
}
|
|
44
|
-
xadd(key, id, fields) {
|
|
45
|
-
return this.client.xadd(key, id, fields);
|
|
46
|
-
}
|
|
47
|
-
xgroupCreate(key, group, id, mkstream) {
|
|
48
|
-
return this.client.xgroupCreate(key, group, id, mkstream);
|
|
49
|
-
}
|
|
50
|
-
async xreadgroup(streams, options) {
|
|
51
|
-
if (streams.length === 0)
|
|
52
|
-
return [];
|
|
53
|
-
const res = await this.client.xreadgroup(streams, options);
|
|
54
|
-
if (!res)
|
|
55
|
-
return [];
|
|
56
|
-
return res.map(({ key, messages }) => ({
|
|
57
|
-
key,
|
|
58
|
-
messages: messages.map(({ id, fieldValues }) => ({
|
|
59
|
-
id,
|
|
60
|
-
data: arrayToObject(fieldValues),
|
|
61
|
-
})),
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
xack(key, group, ...ids) {
|
|
65
|
-
return this.client.xack(key, group, ...ids);
|
|
66
|
-
}
|
|
67
|
-
keys(pattern) {
|
|
68
|
-
return this.client.keys(pattern);
|
|
69
|
-
}
|
|
70
|
-
exists(...keys) {
|
|
71
|
-
return this.client.exists(...keys);
|
|
72
|
-
}
|
|
73
|
-
expire(key, seconds) {
|
|
74
|
-
return this.client.expire(key, seconds);
|
|
75
|
-
}
|
|
76
|
-
set(key, value, options) {
|
|
77
|
-
return this.client.set(key, value, options);
|
|
78
|
-
}
|
|
79
|
-
get(key) {
|
|
80
|
-
return this.client.get(key);
|
|
81
|
-
}
|
|
82
|
-
// Redis server-side Lua (EVAL). Not JavaScript eval; runs the given script
|
|
83
|
-
// atomically inside Redis for compare-and-delete / compare-and-pexpire.
|
|
84
|
-
eval(script, keys, args) {
|
|
85
|
-
return this.client.eval(script, keys, args);
|
|
86
|
-
}
|
|
87
|
-
async quit() {
|
|
88
|
-
await this.client.close();
|
|
89
|
-
}
|
|
90
|
-
disconnect() {
|
|
91
|
-
return this.client.close();
|
|
92
|
-
}
|
|
93
|
-
}
|