2023-02-02 11:33:11 +08:00
|
|
|
{
|
2023-02-16 20:09:54 +08:00
|
|
|
"name": "zinc-observe-web",
|
|
|
|
"version": "0.1.0",
|
2023-11-27 03:44:33 +08:00
|
|
|
"license": "AGPL-3.0",
|
2023-02-14 14:29:58 +08:00
|
|
|
"private": true,
|
2024-11-13 17:43:36 +08:00
|
|
|
"type": "module",
|
2023-02-02 11:33:11 +08:00
|
|
|
"scripts": {
|
|
|
|
"dev": "vite",
|
2023-04-07 12:55:29 +08:00
|
|
|
"devcloud": "NODE_ENV=devcloud vite --mode=devcloud",
|
|
|
|
"build-alpha1": "run-p type-check build-only-alpha1",
|
|
|
|
"build-cloud-prod": "run-p type-check build-only-cloud-prod",
|
2023-02-17 16:35:42 +08:00
|
|
|
"build": "run-p type-check build-only",
|
2023-02-02 11:33:11 +08:00
|
|
|
"postbuild": "run-p copy",
|
|
|
|
"preview": "vite preview",
|
2023-02-17 17:42:32 +08:00
|
|
|
"copy": "cd dist && mkdir src && cd src && mkdir assets && cd .. && cd .. && cp -r src/assets/* dist/src/assets/",
|
2023-02-02 11:33:11 +08:00
|
|
|
"test:unit": "vitest --environment jsdom --root src/",
|
2023-02-24 14:45:21 +08:00
|
|
|
"test:unit:coverage": "vitest --coverage",
|
2023-02-02 11:33:11 +08:00
|
|
|
"test:e2e": "start-server-and-test preview :4173 'cypress run --e2e'",
|
|
|
|
"test:e2e:dev": "start-server-and-test 'vite dev --port 4173' :4173 'cypress open --e2e'",
|
|
|
|
"build-only": "vite build",
|
2023-04-07 12:55:29 +08:00
|
|
|
"build-only-alpha1": "vite build --mode=alpha1",
|
|
|
|
"build-only-cloud-prod": "vite build --mode=production",
|
2023-02-02 11:33:11 +08:00
|
|
|
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
|
|
|
|
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
|
|
|
|
},
|
|
|
|
"dependencies": {
|
2024-07-22 16:24:34 +08:00
|
|
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
|
|
|
"@joakimono/echarts-extension-leaflet": "^1.0.2",
|
|
|
|
"@openobserve/browser-logs": "^0.2.11",
|
|
|
|
"@openobserve/browser-rum": "^0.2.11",
|
2024-10-22 16:29:39 +08:00
|
|
|
"@openobserve/node-sql-parser": "^0.1.4",
|
2023-11-03 19:53:54 +08:00
|
|
|
"@openobserve/rrweb-player": "^0.1.1",
|
2024-07-22 16:24:34 +08:00
|
|
|
"@quasar/extras": "^1.16.12",
|
2024-08-26 19:29:43 +08:00
|
|
|
"@tanstack/vue-table": "^8.19.3",
|
|
|
|
"@tanstack/vue-virtual": "^3.8.4",
|
feat: Pipeline integration v2 (#4732)
This PR implements the new design of **Pipeline** introduced by #4432
---
**2 types of pipelines differentiates by the source**
Type I: **Realtime**
- source is a stream (Logs, Metrics, & Traces)
- takes effect when the source stream is being ingested
Type II: **Scheduled** (aka DerivedSteram)
- source is a SQL query
- takes effect based on the given schedule
The new pipeline is represented as a graph consists of different types
of Nodes that are connected by edges.
**Pipeline Data Model**
```rs
pub struct Pipeline {
pub id: String,
pub version: i32,
pub enabled: bool,
pub org: String,
pub name: String,
pub description: String,
pub source: PipelineSource,
pub nodes: Vec<Node>,
pub edges: Vec<Edge>,
}
```
**4 types of node**
I. StreamNode: either used for source node of realtime pipeline or for
destination nodes
II. QueryNode: used for source node of scheduled pipeline
III. FunctionNode: used for executing vrl functions
IV. ConditionNode: used for checking routing conditions
Rules applied to validating a pipeline when it's created:
1. non-empty nodes list
2. non-empty edges list
3. 1st node in nodes list is either StreamNode or QueryNode
4. non-empty `conditions` in all ConditionNode nodes in nodes list
5. all leaf nodes are of type StreamNode
6. In the same branch, unchecked `after_flattened` FunctionNode can't
follow checked
`after_flattened` checked FunctionNode
Pipeline execution is implemented with the struct `ExecutablePipeline`,
a ready-execute pipeline object cached in memory based on the Pipeline
objects modified on the UI side.
`ExecutablePipeline` object
- builds the relationships among all the nodes based on the edges
- topologically sorts the nodes based on the level to determine which
node to process first
- registers all the vrl function node once
`ExecutablePipeline` object processes ingested records in batch.
Starting from the source node, each connecting edge has a channel
connecting the parent and child node, used for passing the records. This
approach enables batch processing in parallel.
---
**Deprecated Features**
1. previous implementation of pipeline
2. Function x Stream associations
- Functions can still be added/edited/removed as before
- Needs to create a pipeline in order to apply chosen functions to the
desired stream
The new release when this pr is merged will automatically migrate **old
pipelines** and **Function x Stream associations** to new pipeline
format and can be found in `Stream Pipelines` tab with `Migrated-`
prefix names.
**_Note: Auto generated pipelines are paused by default. Please verify
the pipelines before enabling them_**
Co-authored-by: Taiming Liu <liutaiming3@gmail.com>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2024-10-31 12:53:28 +08:00
|
|
|
"@vue-flow/background": "^1.3.0",
|
|
|
|
"@vue-flow/controls": "^1.1.2",
|
|
|
|
"@vue-flow/core": "^1.41.1",
|
2024-03-27 20:41:13 +08:00
|
|
|
"cron-parser": "^4.9.0",
|
2024-10-30 17:55:00 +08:00
|
|
|
"d3-scale": "^4.0.2",
|
2024-07-22 16:24:34 +08:00
|
|
|
"date-fns": "^3.6.0",
|
|
|
|
"date-fns-tz": "^3.1.3",
|
|
|
|
"dompurify": "^3.1.6",
|
|
|
|
"echarts": "^5.5.1",
|
|
|
|
"flag-icons": "^7.2.3",
|
|
|
|
"js-cookie": "^3.0.5",
|
2023-10-13 20:29:49 +08:00
|
|
|
"leaflet": "^1.9.4",
|
2023-02-02 11:33:11 +08:00
|
|
|
"lodash-es": "^4.17.21",
|
2024-07-22 16:24:34 +08:00
|
|
|
"luxon": "^3.4.4",
|
|
|
|
"marked": "^13.0.2",
|
|
|
|
"moment": "^2.30.1",
|
|
|
|
"moment-timezone": "^0.5.45",
|
2024-08-26 19:29:43 +08:00
|
|
|
"monaco-editor-vue": "^1.0.10",
|
2024-07-22 16:24:34 +08:00
|
|
|
"node-polyfill-webpack-plugin": "^4.0.0",
|
|
|
|
"quasar": "^2.16.6",
|
2023-02-02 11:33:11 +08:00
|
|
|
"rollup-plugin-node-polyfills": "^0.2.1",
|
2024-07-22 16:24:34 +08:00
|
|
|
"rollup-plugin-polyfill-node": "^0.13.0",
|
2024-07-23 14:31:43 +08:00
|
|
|
"rudder-sdk-js": "2.48.11",
|
2024-07-22 16:24:34 +08:00
|
|
|
"uuid": "^10.0.0",
|
|
|
|
"vue": "^3.4.31",
|
2023-02-02 11:33:11 +08:00
|
|
|
"vue-drag-resize": "^1.5.4",
|
2024-02-01 15:31:45 +08:00
|
|
|
"vue-draggable-next": "^2.2.1",
|
2024-07-22 16:24:34 +08:00
|
|
|
"vue-i18n": "^9.13.1",
|
|
|
|
"vue-router": "^4.4.0",
|
2023-02-02 11:33:11 +08:00
|
|
|
"vue3-grid-layout": "^1.0.0",
|
2024-07-22 16:24:34 +08:00
|
|
|
"vuex": "^4.1.0"
|
2023-02-02 11:33:11 +08:00
|
|
|
},
|
|
|
|
"devDependencies": {
|
2024-07-22 16:24:34 +08:00
|
|
|
"@cypress/vue": "^6.0.1",
|
|
|
|
"@cypress/webpack-dev-server": "^3.10.0",
|
|
|
|
"@quasar/vite-plugin": "^1.7.0",
|
|
|
|
"@rushstack/eslint-patch": "^1.10.3",
|
2024-11-11 14:36:21 +08:00
|
|
|
"@tailwindcss/typography": "^0.5.15",
|
2024-05-09 21:16:48 +08:00
|
|
|
"@types/axios": "^0.14.0",
|
2024-10-30 17:55:00 +08:00
|
|
|
"@types/d3-scale": "^4.0.8",
|
2024-02-07 14:15:10 +08:00
|
|
|
"@types/dompurify": "^3.0.5",
|
2024-07-22 16:24:34 +08:00
|
|
|
"@types/js-cookie": "^3.0.6",
|
|
|
|
"@types/jsdom": "^21.1.7",
|
|
|
|
"@types/leaflet": "^1.9.12",
|
|
|
|
"@types/lodash-es": "^4.17.12",
|
|
|
|
"@types/luxon": "^3.4.2",
|
|
|
|
"@types/node": "^20.14.10",
|
|
|
|
"@types/uuid": "^10.0.0",
|
|
|
|
"@vitejs/plugin-vue": "^5.0.5",
|
|
|
|
"@vitejs/plugin-vue-jsx": "^4.0.0",
|
2024-11-05 16:37:35 +08:00
|
|
|
"@vitest/coverage-v8": "^2.1.1",
|
2024-07-22 16:24:34 +08:00
|
|
|
"@vitest/ui": "^2.0.2",
|
|
|
|
"@vue/eslint-config-prettier": "^9.0.0",
|
2023-02-02 11:33:11 +08:00
|
|
|
"@vue/eslint-config-typescript": "^11.0.0",
|
2024-07-22 16:24:34 +08:00
|
|
|
"@vue/test-utils": "^2.4.6",
|
|
|
|
"@vue/tsconfig": "^0.5.1",
|
2024-07-02 15:39:54 +08:00
|
|
|
"autoprefixer": "^10.4.19",
|
2024-07-22 16:24:34 +08:00
|
|
|
"c8": "^10.1.2",
|
|
|
|
"cypress": "^13.13.0",
|
|
|
|
"cypress-localstorage-commands": "^2.2.6",
|
|
|
|
"dotenv": "^16.4.5",
|
|
|
|
"eslint": "^8.0.0",
|
|
|
|
"eslint-config-prettier": "^9.1.0",
|
|
|
|
"eslint-plugin-cypress": "^3.3.0",
|
|
|
|
"eslint-plugin-vue": "^9.27.0",
|
|
|
|
"fs-extra": "^11.2.0",
|
2024-11-07 16:44:39 +08:00
|
|
|
"happy-dom": "^15.10.2",
|
2024-07-22 16:24:34 +08:00
|
|
|
"jsdom": "^24.1.0",
|
|
|
|
"msw": "^2.3.1",
|
2023-02-02 11:33:11 +08:00
|
|
|
"npm-run-all": "^4.1.5",
|
2024-07-22 16:24:34 +08:00
|
|
|
"postcss": "^8.4.39",
|
|
|
|
"prettier": "^3.3.2",
|
2023-08-06 01:29:13 +08:00
|
|
|
"rollup-plugin-analyzer": "^4.0.0",
|
2024-07-22 16:24:34 +08:00
|
|
|
"rollup-plugin-visualizer": "^5.12.0",
|
|
|
|
"sass": "^1.77.8",
|
|
|
|
"sass-loader": "^14.2.1",
|
|
|
|
"start-server-and-test": "^2.0.4",
|
|
|
|
"tailwindcss": "^3.4.4",
|
|
|
|
"typescript": "~5.5.3",
|
2024-09-18 11:40:09 +08:00
|
|
|
"vite": "^5.4.6",
|
2024-11-13 17:43:36 +08:00
|
|
|
"vite-plugin-istanbul": "^6.0.2",
|
2023-02-02 11:33:11 +08:00
|
|
|
"vite-plugin-monaco-editor": "^1.1.0",
|
2024-11-05 16:37:35 +08:00
|
|
|
"vitest": "^2.1.1",
|
|
|
|
"vitest-canvas-mock": "^0.3.3",
|
2024-07-22 16:24:34 +08:00
|
|
|
"vue": "^3.4.31",
|
|
|
|
"vue-tsc": "^2.0.26",
|
|
|
|
"whatwg-fetch": "^3.6.20"
|
2023-02-02 11:33:11 +08:00
|
|
|
}
|
2023-10-13 20:29:49 +08:00
|
|
|
}
|