csv-sql-engine 0.0.0 → 0.0.1
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/LICENSE-CC0 +121 -0
- package/LICENSE-MIT +21 -0
- package/README.md +49 -0
- package/dist/augments/trim-lines.d.ts +6 -0
- package/dist/augments/trim-lines.js +12 -0
- package/dist/csv/csv-file.d.ts +70 -0
- package/dist/csv/csv-file.js +98 -0
- package/dist/csv/csv-text.d.ts +52 -0
- package/dist/csv/csv-text.js +79 -0
- package/dist/engine/define-ast-handler.d.ts +27 -0
- package/dist/engine/define-ast-handler.js +8 -0
- package/dist/engine/engine.d.ts +16 -0
- package/dist/engine/engine.js +66 -0
- package/dist/engine/handlers/row-delete.handler.d.ts +6 -0
- package/dist/engine/handlers/row-delete.handler.js +51 -0
- package/dist/engine/handlers/row-insert.handler.d.ts +6 -0
- package/dist/engine/handlers/row-insert.handler.js +54 -0
- package/dist/engine/handlers/row-select.handler.d.ts +6 -0
- package/dist/engine/handlers/row-select.handler.js +46 -0
- package/dist/engine/handlers/row-update.handler.d.ts +6 -0
- package/dist/engine/handlers/row-update.handler.js +61 -0
- package/dist/engine/handlers/table-alter.handler.d.ts +6 -0
- package/dist/engine/handlers/table-alter.handler.js +85 -0
- package/dist/engine/handlers/table-create.handler.d.ts +6 -0
- package/dist/engine/handlers/table-create.handler.js +38 -0
- package/dist/engine/handlers/table-drop.handler.d.ts +6 -0
- package/dist/engine/handlers/table-drop.handler.js +36 -0
- package/dist/engine/params.d.ts +51 -0
- package/dist/engine/params.js +1 -0
- package/dist/engine/where-matcher.d.ts +9 -0
- package/dist/engine/where-matcher.js +52 -0
- package/dist/errors/csv-sql-engine.error.d.ts +9 -0
- package/dist/errors/csv-sql-engine.error.js +9 -0
- package/dist/errors/csv.error.d.ts +57 -0
- package/dist/errors/csv.error.js +68 -0
- package/dist/errors/sql.error.d.ts +45 -0
- package/dist/errors/sql.error.js +64 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +20 -0
- package/dist/sql/ast.d.ts +472 -0
- package/dist/sql/ast.js +266 -0
- package/dist/sql/parse-sql.d.ts +9 -0
- package/dist/sql/parse-sql.js +38 -0
- package/dist/sql/sql.d.ts +24 -0
- package/dist/sql/sql.js +26 -0
- package/package.json +99 -11
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { CsvSqlEngineError } from './csv-sql-engine.error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generic CSV related error thrown by the csv-sql-engine package. All CSV related errors from this
|
|
4
|
+
* package extend this error class.
|
|
5
|
+
*
|
|
6
|
+
* @category Error
|
|
7
|
+
*/
|
|
8
|
+
export class CsvError extends CsvSqlEngineError {
|
|
9
|
+
name = 'CsvError';
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Indicates that an table CSV file already exists when it shouldn't.
|
|
13
|
+
*
|
|
14
|
+
* @category Error
|
|
15
|
+
*/
|
|
16
|
+
export class CsvTableExistsError extends CsvError {
|
|
17
|
+
name = 'CsvTableExistsError';
|
|
18
|
+
constructor(tableName) {
|
|
19
|
+
super(`CSV table (file) '${tableName}' already exists.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Indicates that an expected table CSV file does not actually exist.
|
|
24
|
+
*
|
|
25
|
+
* @category Error
|
|
26
|
+
*/
|
|
27
|
+
export class CsvTableDoesNotExistError extends CsvError {
|
|
28
|
+
name = 'CsvTableExistsError';
|
|
29
|
+
constructor(tableName) {
|
|
30
|
+
super(`CSV table (file) '${tableName}' does not exist.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Indicates that parsing of an existing CSV file failed.
|
|
35
|
+
*
|
|
36
|
+
* @category Error
|
|
37
|
+
*/
|
|
38
|
+
export class CsvParseError extends CsvError {
|
|
39
|
+
name = 'CsvParseError';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Indicates that a CSV file is missing headers.
|
|
43
|
+
*
|
|
44
|
+
* @category Error
|
|
45
|
+
*/
|
|
46
|
+
export class CsvFileMissingHeadersError extends CsvParseError {
|
|
47
|
+
csvFilePath;
|
|
48
|
+
name = 'CsvFileMissingHeadersError';
|
|
49
|
+
constructor(csvFilePath) {
|
|
50
|
+
super(`Missing headers in CSV file '${csvFilePath}'`);
|
|
51
|
+
this.csvFilePath = csvFilePath;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Indicates that an expected column in a CSV file does not actually exist.
|
|
56
|
+
*
|
|
57
|
+
* @category Error
|
|
58
|
+
*/
|
|
59
|
+
export class CsvColumnDoesNotExistError extends CsvError {
|
|
60
|
+
sanitizedTableName;
|
|
61
|
+
missingColumName;
|
|
62
|
+
name = 'CsvColumnDoesNotExistError';
|
|
63
|
+
constructor(sanitizedTableName, missingColumName) {
|
|
64
|
+
super(`Column '${missingColumName}' does not exist in table '${sanitizedTableName}'.`);
|
|
65
|
+
this.sanitizedTableName = sanitizedTableName;
|
|
66
|
+
this.missingColumName = missingColumName;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Sql } from '../sql/sql.js';
|
|
2
|
+
import { CsvSqlEngineError } from './csv-sql-engine.error.js';
|
|
3
|
+
/**
|
|
4
|
+
* Generic SQL related error thrown by the csv-sql-engine package. All SQL related errors from this
|
|
5
|
+
* package extend this error class.
|
|
6
|
+
*
|
|
7
|
+
* @category Error
|
|
8
|
+
*/
|
|
9
|
+
export declare class SqlError extends CsvSqlEngineError {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* A SQL command / query / operation was encountered that is not supported by the csv-sql-engine
|
|
14
|
+
* package (yet).
|
|
15
|
+
*
|
|
16
|
+
* @category Error
|
|
17
|
+
*/
|
|
18
|
+
export declare class SqlUnsupportedOperationError extends SqlError {
|
|
19
|
+
readonly sql: Sql;
|
|
20
|
+
readonly exactFailure: string | undefined;
|
|
21
|
+
readonly name: string;
|
|
22
|
+
constructor(sql: Sql, exactFailure: string | undefined);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Indicates that the original SQL command was not syntactically correct: it cannot be parsed.
|
|
26
|
+
*
|
|
27
|
+
* @category Error
|
|
28
|
+
*/
|
|
29
|
+
export declare class SqlParseError extends SqlError {
|
|
30
|
+
readonly sql: Sql;
|
|
31
|
+
readonly originalError: unknown;
|
|
32
|
+
readonly name: string;
|
|
33
|
+
constructor(sql: Sql, originalError: unknown);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Indicates that a SQL command is missing expected column definitions.
|
|
37
|
+
*
|
|
38
|
+
* @category Error
|
|
39
|
+
*/
|
|
40
|
+
export declare class SqlMissingColumnsError extends SqlError {
|
|
41
|
+
readonly sql: Sql;
|
|
42
|
+
readonly sanitizedTableName: string;
|
|
43
|
+
readonly name: string;
|
|
44
|
+
constructor(sql: Sql, sanitizedTableName: string);
|
|
45
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { addSuffix, extractErrorMessage, indent } from '@augment-vir/common';
|
|
2
|
+
import { trimLines } from '../augments/trim-lines.js';
|
|
3
|
+
import { CsvSqlEngineError } from './csv-sql-engine.error.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generic SQL related error thrown by the csv-sql-engine package. All SQL related errors from this
|
|
6
|
+
* package extend this error class.
|
|
7
|
+
*
|
|
8
|
+
* @category Error
|
|
9
|
+
*/
|
|
10
|
+
export class SqlError extends CsvSqlEngineError {
|
|
11
|
+
name = 'SqlError';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A SQL command / query / operation was encountered that is not supported by the csv-sql-engine
|
|
15
|
+
* package (yet).
|
|
16
|
+
*
|
|
17
|
+
* @category Error
|
|
18
|
+
*/
|
|
19
|
+
export class SqlUnsupportedOperationError extends SqlError {
|
|
20
|
+
sql;
|
|
21
|
+
exactFailure;
|
|
22
|
+
name = 'SqlUnsupportedOperationError';
|
|
23
|
+
constructor(sql, exactFailure) {
|
|
24
|
+
super([
|
|
25
|
+
'Unsupported SQL:',
|
|
26
|
+
exactFailure ? ' ' : '',
|
|
27
|
+
exactFailure ? addSuffix({ value: exactFailure, suffix: '.' }) : '',
|
|
28
|
+
'\n',
|
|
29
|
+
indent(trimLines(sql.sql)),
|
|
30
|
+
].join(''));
|
|
31
|
+
this.sql = sql;
|
|
32
|
+
this.exactFailure = exactFailure;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Indicates that the original SQL command was not syntactically correct: it cannot be parsed.
|
|
37
|
+
*
|
|
38
|
+
* @category Error
|
|
39
|
+
*/
|
|
40
|
+
export class SqlParseError extends SqlError {
|
|
41
|
+
sql;
|
|
42
|
+
originalError;
|
|
43
|
+
name = 'SqlParseError';
|
|
44
|
+
constructor(sql, originalError) {
|
|
45
|
+
super(`Failed to parse SQL: ${extractErrorMessage(originalError)}:\n${indent(trimLines(sql.sql))}`);
|
|
46
|
+
this.sql = sql;
|
|
47
|
+
this.originalError = originalError;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Indicates that a SQL command is missing expected column definitions.
|
|
52
|
+
*
|
|
53
|
+
* @category Error
|
|
54
|
+
*/
|
|
55
|
+
export class SqlMissingColumnsError extends SqlError {
|
|
56
|
+
sql;
|
|
57
|
+
sanitizedTableName;
|
|
58
|
+
name = 'SqlMissingColumnsError';
|
|
59
|
+
constructor(sql, sanitizedTableName) {
|
|
60
|
+
super(`Cannot create CSV table (file) '${sanitizedTableName}': no column definitions provided:\n${indent(trimLines(sql.sql))}`);
|
|
61
|
+
this.sql = sql;
|
|
62
|
+
this.sanitizedTableName = sanitizedTableName;
|
|
63
|
+
}
|
|
64
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './augments/trim-lines.js';
|
|
2
|
+
export * from './csv/csv-file.js';
|
|
3
|
+
export * from './csv/csv-text.js';
|
|
4
|
+
export * from './engine/define-ast-handler.js';
|
|
5
|
+
export * from './engine/engine.js';
|
|
6
|
+
export * from './engine/handlers/row-delete.handler.js';
|
|
7
|
+
export * from './engine/handlers/row-insert.handler.js';
|
|
8
|
+
export * from './engine/handlers/row-select.handler.js';
|
|
9
|
+
export * from './engine/handlers/row-update.handler.js';
|
|
10
|
+
export * from './engine/handlers/table-alter.handler.js';
|
|
11
|
+
export * from './engine/handlers/table-create.handler.js';
|
|
12
|
+
export * from './engine/handlers/table-drop.handler.js';
|
|
13
|
+
export * from './engine/params.js';
|
|
14
|
+
export * from './engine/where-matcher.js';
|
|
15
|
+
export * from './errors/csv-sql-engine.error.js';
|
|
16
|
+
export * from './errors/csv.error.js';
|
|
17
|
+
export * from './errors/sql.error.js';
|
|
18
|
+
export * from './sql/ast.js';
|
|
19
|
+
export * from './sql/parse-sql.js';
|
|
20
|
+
export * from './sql/sql.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export * from './augments/trim-lines.js';
|
|
2
|
+
export * from './csv/csv-file.js';
|
|
3
|
+
export * from './csv/csv-text.js';
|
|
4
|
+
export * from './engine/define-ast-handler.js';
|
|
5
|
+
export * from './engine/engine.js';
|
|
6
|
+
export * from './engine/handlers/row-delete.handler.js';
|
|
7
|
+
export * from './engine/handlers/row-insert.handler.js';
|
|
8
|
+
export * from './engine/handlers/row-select.handler.js';
|
|
9
|
+
export * from './engine/handlers/row-update.handler.js';
|
|
10
|
+
export * from './engine/handlers/table-alter.handler.js';
|
|
11
|
+
export * from './engine/handlers/table-create.handler.js';
|
|
12
|
+
export * from './engine/handlers/table-drop.handler.js';
|
|
13
|
+
export * from './engine/params.js';
|
|
14
|
+
export * from './engine/where-matcher.js';
|
|
15
|
+
export * from './errors/csv-sql-engine.error.js';
|
|
16
|
+
export * from './errors/csv.error.js';
|
|
17
|
+
export * from './errors/sql.error.js';
|
|
18
|
+
export * from './sql/ast.js';
|
|
19
|
+
export * from './sql/parse-sql.js';
|
|
20
|
+
export * from './sql/sql.js';
|