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.
Files changed (46) hide show
  1. package/LICENSE-CC0 +121 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +49 -0
  4. package/dist/augments/trim-lines.d.ts +6 -0
  5. package/dist/augments/trim-lines.js +12 -0
  6. package/dist/csv/csv-file.d.ts +70 -0
  7. package/dist/csv/csv-file.js +98 -0
  8. package/dist/csv/csv-text.d.ts +52 -0
  9. package/dist/csv/csv-text.js +79 -0
  10. package/dist/engine/define-ast-handler.d.ts +27 -0
  11. package/dist/engine/define-ast-handler.js +8 -0
  12. package/dist/engine/engine.d.ts +16 -0
  13. package/dist/engine/engine.js +66 -0
  14. package/dist/engine/handlers/row-delete.handler.d.ts +6 -0
  15. package/dist/engine/handlers/row-delete.handler.js +51 -0
  16. package/dist/engine/handlers/row-insert.handler.d.ts +6 -0
  17. package/dist/engine/handlers/row-insert.handler.js +54 -0
  18. package/dist/engine/handlers/row-select.handler.d.ts +6 -0
  19. package/dist/engine/handlers/row-select.handler.js +46 -0
  20. package/dist/engine/handlers/row-update.handler.d.ts +6 -0
  21. package/dist/engine/handlers/row-update.handler.js +61 -0
  22. package/dist/engine/handlers/table-alter.handler.d.ts +6 -0
  23. package/dist/engine/handlers/table-alter.handler.js +85 -0
  24. package/dist/engine/handlers/table-create.handler.d.ts +6 -0
  25. package/dist/engine/handlers/table-create.handler.js +38 -0
  26. package/dist/engine/handlers/table-drop.handler.d.ts +6 -0
  27. package/dist/engine/handlers/table-drop.handler.js +36 -0
  28. package/dist/engine/params.d.ts +51 -0
  29. package/dist/engine/params.js +1 -0
  30. package/dist/engine/where-matcher.d.ts +9 -0
  31. package/dist/engine/where-matcher.js +52 -0
  32. package/dist/errors/csv-sql-engine.error.d.ts +9 -0
  33. package/dist/errors/csv-sql-engine.error.js +9 -0
  34. package/dist/errors/csv.error.d.ts +57 -0
  35. package/dist/errors/csv.error.js +68 -0
  36. package/dist/errors/sql.error.d.ts +45 -0
  37. package/dist/errors/sql.error.js +64 -0
  38. package/dist/index.d.ts +20 -0
  39. package/dist/index.js +20 -0
  40. package/dist/sql/ast.d.ts +472 -0
  41. package/dist/sql/ast.js +266 -0
  42. package/dist/sql/parse-sql.d.ts +9 -0
  43. package/dist/sql/parse-sql.js +38 -0
  44. package/dist/sql/sql.d.ts +24 -0
  45. package/dist/sql/sql.js +26 -0
  46. 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
+ }
@@ -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';