@visactor/vquery 0.2.3 → 0.2.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.
Files changed (86) hide show
  1. package/dist/cjs/adapters/index.d.ts +1 -0
  2. package/dist/cjs/adapters/query-adapter/duckdbNodeAdapter.d.ts +14 -0
  3. package/dist/cjs/adapters/query-adapter/duckdbWebAdapter.d.ts +14 -0
  4. package/dist/cjs/adapters/storage-adapter/index.d.ts +2 -0
  5. package/dist/{db/indexedDb.d.ts → cjs/adapters/storage-adapter/indexeddbAdapter.d.ts} +5 -5
  6. package/dist/cjs/adapters/storage-adapter/inmemoryAdapter.d.ts +22 -0
  7. package/dist/cjs/browser.d.ts +5 -0
  8. package/dist/{dataset → cjs/dataset}/dataset.d.ts +4 -5
  9. package/dist/{index.cjs → cjs/node.cjs} +134 -181
  10. package/dist/{index.d.ts → cjs/node.d.ts} +1 -1
  11. package/dist/{sql-builder → cjs/sql-builder}/utils.d.ts +1 -1
  12. package/dist/cjs/types/adapters/QueryAdapter.d.ts +11 -0
  13. package/dist/cjs/types/adapters/StorageAdapter.d.ts +17 -0
  14. package/dist/cjs/types/adapters/index.d.ts +2 -0
  15. package/dist/{types/QueryDSL → cjs/types/dsl}/OrderBy.d.ts +1 -1
  16. package/dist/{types → cjs/types}/index.d.ts +2 -1
  17. package/dist/{vquery.d.ts → cjs/vquery-browser.d.ts} +4 -4
  18. package/dist/cjs/vquery-node.d.ts +21 -0
  19. package/dist/esm/adapters/index.d.ts +1 -0
  20. package/dist/esm/adapters/query-adapter/duckdbNodeAdapter.d.ts +14 -0
  21. package/dist/esm/adapters/query-adapter/duckdbWebAdapter.d.ts +14 -0
  22. package/dist/esm/adapters/storage-adapter/index.d.ts +2 -0
  23. package/dist/esm/adapters/storage-adapter/indexeddbAdapter.d.ts +21 -0
  24. package/dist/esm/adapters/storage-adapter/inmemoryAdapter.d.ts +22 -0
  25. package/dist/esm/browser.d.ts +5 -0
  26. package/dist/{index.js → esm/browser.js} +177 -176
  27. package/dist/esm/data-source-builder/dataSourceBuilder.d.ts +16 -0
  28. package/dist/esm/data-source-builder/index.d.ts +1 -0
  29. package/dist/esm/dataset/dataset.d.ts +30 -0
  30. package/dist/esm/dataset/index.d.ts +2 -0
  31. package/dist/esm/node.d.ts +5 -0
  32. package/dist/esm/sql-builder/builders/groupBy.d.ts +2 -0
  33. package/dist/esm/sql-builder/builders/index.d.ts +3 -0
  34. package/dist/esm/sql-builder/builders/limit.d.ts +2 -0
  35. package/dist/esm/sql-builder/builders/where.d.ts +3 -0
  36. package/dist/esm/sql-builder/compile/index.d.ts +1 -0
  37. package/dist/esm/sql-builder/compile/inlineParameters.d.ts +1 -0
  38. package/dist/esm/sql-builder/dialect/index.d.ts +1 -0
  39. package/dist/esm/sql-builder/dialect/postgresDialect.d.ts +11 -0
  40. package/dist/esm/sql-builder/dslToSQL.d.ts +2 -0
  41. package/dist/esm/sql-builder/index.d.ts +1 -0
  42. package/dist/esm/sql-builder/utils.d.ts +8 -0
  43. package/dist/esm/types/DataSet.d.ts +11 -0
  44. package/dist/esm/types/DataSource.d.ts +11 -0
  45. package/dist/esm/types/QueryResult.d.ts +1 -0
  46. package/dist/esm/types/adapters/QueryAdapter.d.ts +11 -0
  47. package/dist/esm/types/adapters/StorageAdapter.d.ts +17 -0
  48. package/dist/esm/types/adapters/index.d.ts +2 -0
  49. package/dist/esm/types/dsl/GroupBy.d.ts +1 -0
  50. package/dist/esm/types/dsl/OrderBy.d.ts +4 -0
  51. package/dist/esm/types/dsl/QueryDSL.d.ts +12 -0
  52. package/dist/esm/types/dsl/Select.d.ts +7 -0
  53. package/dist/esm/types/dsl/Where.d.ts +24 -0
  54. package/dist/esm/types/dsl/demo.d.ts +1 -0
  55. package/dist/esm/types/dsl/index.d.ts +5 -0
  56. package/dist/esm/types/index.d.ts +5 -0
  57. package/dist/esm/utils/index.d.ts +1 -0
  58. package/dist/esm/utils/url.d.ts +3 -0
  59. package/dist/esm/vquery-browser.d.ts +21 -0
  60. package/dist/esm/vquery-node.d.ts +21 -0
  61. package/package.json +23 -17
  62. package/dist/db/duckDb.d.ts +0 -35
  63. /package/dist/{data-source-builder → cjs/data-source-builder}/dataSourceBuilder.d.ts +0 -0
  64. /package/dist/{data-source-builder → cjs/data-source-builder}/index.d.ts +0 -0
  65. /package/dist/{dataset → cjs/dataset}/index.d.ts +0 -0
  66. /package/dist/{sql-builder → cjs/sql-builder}/builders/groupBy.d.ts +0 -0
  67. /package/dist/{sql-builder → cjs/sql-builder}/builders/index.d.ts +0 -0
  68. /package/dist/{sql-builder → cjs/sql-builder}/builders/limit.d.ts +0 -0
  69. /package/dist/{sql-builder → cjs/sql-builder}/builders/where.d.ts +0 -0
  70. /package/dist/{sql-builder → cjs/sql-builder}/compile/index.d.ts +0 -0
  71. /package/dist/{sql-builder → cjs/sql-builder}/compile/inlineParameters.d.ts +0 -0
  72. /package/dist/{sql-builder → cjs/sql-builder}/dialect/index.d.ts +0 -0
  73. /package/dist/{sql-builder → cjs/sql-builder}/dialect/postgresDialect.d.ts +0 -0
  74. /package/dist/{sql-builder → cjs/sql-builder}/dslToSQL.d.ts +0 -0
  75. /package/dist/{sql-builder → cjs/sql-builder}/index.d.ts +0 -0
  76. /package/dist/{types → cjs/types}/DataSet.d.ts +0 -0
  77. /package/dist/{types → cjs/types}/DataSource.d.ts +0 -0
  78. /package/dist/{types → cjs/types}/QueryResult.d.ts +0 -0
  79. /package/dist/{types/QueryDSL → cjs/types/dsl}/GroupBy.d.ts +0 -0
  80. /package/dist/{types/QueryDSL → cjs/types/dsl}/QueryDSL.d.ts +0 -0
  81. /package/dist/{types/QueryDSL → cjs/types/dsl}/Select.d.ts +0 -0
  82. /package/dist/{types/QueryDSL → cjs/types/dsl}/Where.d.ts +0 -0
  83. /package/dist/{types/QueryDSL → cjs/types/dsl}/demo.d.ts +0 -0
  84. /package/dist/{types/QueryDSL → cjs/types/dsl}/index.d.ts +0 -0
  85. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  86. /package/dist/{utils → cjs/utils}/url.d.ts +0 -0
@@ -0,0 +1,11 @@
1
+ import { QueryResult } from '../QueryResult';
2
+ export interface QueryAdapter {
3
+ open: () => Promise<void>;
4
+ close: () => Promise<void>;
5
+ writeFile: <T extends Blob>(fileName: string, source: T) => Promise<void>;
6
+ getSchema: (fileName: string) => Promise<QueryResult>;
7
+ query: (sql: string) => Promise<{
8
+ dataset: any[];
9
+ table: any;
10
+ }>;
11
+ }
@@ -0,0 +1,17 @@
1
+ import { DatasetSchema } from '../DataSet';
2
+ import { DatasetSource } from '../DataSource';
3
+ export interface StorageAdapter {
4
+ open: () => Promise<void>;
5
+ close: () => Promise<void>;
6
+ writeDataset: (datasetId: string, datasetSchema: DatasetSchema, datasetSource?: DatasetSource) => Promise<void>;
7
+ readDataset: (datasetId: string) => Promise<{
8
+ datasetSchema: DatasetSchema;
9
+ datasetSource?: DatasetSource;
10
+ } | null>;
11
+ deleteDataset: (datasetId: string) => Promise<void>;
12
+ listDatasets: () => Promise<{
13
+ datasetId: string;
14
+ datasetSchema: DatasetSchema;
15
+ datasetSource?: DatasetSource;
16
+ }[]>;
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from './QueryAdapter';
2
+ export * from './StorageAdapter';
@@ -0,0 +1 @@
1
+ export type GroupBy<T> = Array<keyof T>;
@@ -0,0 +1,4 @@
1
+ export type OrderBy<T> = Array<{
2
+ field: string | keyof T;
3
+ order?: 'asc' | 'desc';
4
+ }>;
@@ -0,0 +1,12 @@
1
+ import { GroupBy } from './GroupBy';
2
+ import { OrderBy } from './OrderBy';
3
+ import { Select } from './Select';
4
+ import { Where } from './Where';
5
+ export interface QueryDSL<Table> {
6
+ select: Select<Table>;
7
+ where?: Where<Table>;
8
+ groupBy?: GroupBy<Table>;
9
+ orderBy?: OrderBy<Table>;
10
+ limit?: number;
11
+ }
12
+ export type VQueryDSL<Table = Record<string, unknown>> = QueryDSL<Table>;
@@ -0,0 +1,7 @@
1
+ export type AggregateFunction = 'count' | 'sum' | 'avg' | 'min' | 'max' | 'quantile';
2
+ export type SelectItem<T> = {
3
+ field: keyof T;
4
+ alias?: string;
5
+ func?: AggregateFunction;
6
+ };
7
+ export type Select<T> = Array<keyof T | SelectItem<T>>;
@@ -0,0 +1,24 @@
1
+ export type Where<T> = WhereGroup<T>;
2
+ export type WhereGroup<T> = {
3
+ op: 'and' | 'or';
4
+ conditions: Array<WhereClause<T>>;
5
+ };
6
+ export type WhereClause<T> = WhereLeaf<T> | WhereGroup<T>;
7
+ export type WhereLeaf<T> = {
8
+ [K in keyof T]: {
9
+ [O in Operator]: {
10
+ field: K;
11
+ op: O;
12
+ } & (O extends 'is null' | 'is not null' ? {
13
+ value?: never;
14
+ } : O extends 'in' | 'not in' ? {
15
+ value: T[K] | T[K][];
16
+ } : O extends 'between' | 'not between' ? {
17
+ value: [T[K], T[K]];
18
+ } : {
19
+ value: T[K];
20
+ });
21
+ }[Operator];
22
+ }[keyof T];
23
+ type Operator = '=' | '!=' | '>' | '>=' | '<' | '<=' | 'like' | 'not like' | 'ilike' | 'not ilike' | 'in' | 'not in' | 'between' | 'not between' | 'is null' | 'is not null';
24
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export type { QueryDSL, VQueryDSL } from './QueryDSL';
2
+ export type { GroupBy } from './GroupBy';
3
+ export type { OrderBy } from './OrderBy';
4
+ export type { Select } from './Select';
5
+ export type { Where, WhereClause, WhereLeaf, WhereGroup } from './Where';
@@ -0,0 +1,5 @@
1
+ export * from './DataSet';
2
+ export * from './DataSource';
3
+ export * from './QueryResult';
4
+ export * from './dsl';
5
+ export * from './adapters';
@@ -0,0 +1 @@
1
+ export { isUrl, isHttpUrl, isBase64Url } from './url';
@@ -0,0 +1,3 @@
1
+ export declare const isUrl: (url: string) => boolean;
2
+ export declare const isHttpUrl: (url: string) => boolean;
3
+ export declare const isBase64Url: (url: string) => boolean;
@@ -0,0 +1,21 @@
1
+ import { Dataset } from './dataset/dataset';
2
+ import { RawDatasetSource, DatasetColumn } from './types';
3
+ export declare class VQuery {
4
+ private queryAdapter;
5
+ private storageAdapter;
6
+ private isInitialized;
7
+ constructor();
8
+ private checkInitialized;
9
+ private checkDatasetExists;
10
+ createDataset(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
11
+ updateDatasetSource(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
12
+ dropDataset(datasetId: string): Promise<void>;
13
+ connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[], temporaryRawDatasetSource?: RawDatasetSource): Promise<Dataset>;
14
+ hasDataset(datasetId: string): Promise<boolean>;
15
+ listDatasets(): Promise<{
16
+ datasetId: string;
17
+ datasetSchema: import("./types").DatasetSchema;
18
+ datasetSource?: import("./types").DatasetSource;
19
+ }[]>;
20
+ close(): Promise<void>;
21
+ }
@@ -0,0 +1,21 @@
1
+ import { Dataset } from './dataset/dataset';
2
+ import { RawDatasetSource, DatasetColumn } from './types';
3
+ export declare class VQuery {
4
+ private queryAdapter;
5
+ private storageAdapter;
6
+ private isInitialized;
7
+ constructor();
8
+ private checkInitialized;
9
+ private checkDatasetExists;
10
+ createDataset(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
11
+ updateDatasetSource(datasetId: string, columns?: DatasetColumn[], rawDatasetSource?: RawDatasetSource): Promise<void>;
12
+ dropDataset(datasetId: string): Promise<void>;
13
+ connectDataset(datasetId: string, temporaryColumns?: DatasetColumn[], temporaryRawDatasetSource?: RawDatasetSource): Promise<Dataset>;
14
+ hasDataset(datasetId: string): Promise<boolean>;
15
+ listDatasets(): Promise<{
16
+ datasetId: string;
17
+ datasetSchema: import("./types").DatasetSchema;
18
+ datasetSource?: import("./types").DatasetSource;
19
+ }[]>;
20
+ close(): Promise<void>;
21
+ }
package/package.json CHANGED
@@ -1,33 +1,39 @@
1
1
  {
2
2
  "name": "@visactor/vquery",
3
- "version": "0.2.3",
3
+ "version": "0.2.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
7
- "types": "./dist/index.d.ts",
8
- "import": "./dist/index.js",
9
- "require": "./dist/index.cjs"
7
+ "require": {
8
+ "types": "./dist/cjs/node.d.ts",
9
+ "default": "./dist/cjs/node.cjs"
10
+ },
11
+ "import": {
12
+ "types": "./dist/esm/browser.d.js",
13
+ "default": "./dist/esm/browser.js"
14
+ }
10
15
  }
11
16
  },
12
- "main": "./dist/index.cjs",
13
- "types": "./dist/index.d.ts",
17
+ "main": "./dist/cjs/node.cjs",
18
+ "types": "./dist/cjs/node.d.ts",
14
19
  "files": [
15
20
  "dist"
16
21
  ],
17
22
  "dependencies": {
18
23
  "@duckdb/duckdb-wasm": "1.30.0",
19
- "kysely": "^0.27.2"
24
+ "kysely": "0.27.6",
25
+ "web-worker": "1.5.0"
20
26
  },
21
27
  "devDependencies": {
22
- "@eslint/js": "^9.35.0",
23
- "@rslib/core": "0.18.1",
24
- "@rstest/core": "0.6.5",
25
- "@types/node": "^22.18.10",
26
- "@rstest/coverage-istanbul": "0.0.5",
27
- "eslint": "^9.35.0",
28
- "globals": "^16.3.0",
29
- "typescript": "^5.9.3",
30
- "typescript-eslint": "^8.43.0"
28
+ "@eslint/js": "9.39.0",
29
+ "@rslib/core": "0.18.3",
30
+ "@rstest/core": "0.7.0",
31
+ "@types/node": "24.10.1",
32
+ "@rstest/coverage-istanbul": "0.1.0",
33
+ "eslint": "9.39.0",
34
+ "globals": "16.4.0",
35
+ "typescript": "5.9.3",
36
+ "typescript-eslint": "8.46.2"
31
37
  },
32
38
  "scripts": {
33
39
  "build": "rslib build",
@@ -35,7 +41,7 @@
35
41
  "lint": "eslint .",
36
42
  "test": "rstest",
37
43
  "test:update": "rstest --update",
38
- "test:coverage": "rstest --coverage && open ./coverage/index.html",
44
+ "test:coverage": "rstest --coverage; open ./coverage/index.html",
39
45
  "type-check": "tsc --noEmit"
40
46
  }
41
47
  }
@@ -1,35 +0,0 @@
1
- import { QueryResult } from '../types/DataSet';
2
- export declare class DuckDB {
3
- private db;
4
- private connection;
5
- constructor();
6
- /**
7
- * @description 初始化 DuckDB 实例
8
- */
9
- init: () => Promise<void>;
10
- /**
11
- * @description 释放 DuckDB 实例
12
- */
13
- close: () => Promise<void>;
14
- /**
15
- * 注册文件到 DuckDB 实例
16
- * @param fileName 文件名
17
- * @param source 文件内容
18
- */
19
- writeFile: <T extends Blob>(fileName: string, source: T) => Promise<void>;
20
- /**
21
- * @description 执行 SQL 查询
22
- * @param sql SQL 语句
23
- * @returns 查询结果
24
- */
25
- query: (sql: string) => Promise<{
26
- dataset: any[];
27
- table: any;
28
- }>;
29
- /**
30
- * @description 获取文件的 Schema
31
- * @param fileName 文件名
32
- * @returns 文件的 Schema
33
- */
34
- getSchema: (fileName: string) => Promise<QueryResult>;
35
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes