@wxn0brp/db-string-query 0.0.10 → 0.0.11

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 (53) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/sql/handle/collection.js +1 -1
  3. package/dist/sql/handle/delete.js +1 -1
  4. package/dist/sql/handle/insert.js +9 -5
  5. package/dist/sql/handle/select.js +3 -3
  6. package/dist/sql/handle/update.js +1 -1
  7. package/dist/sql/utils/index.d.ts +7 -0
  8. package/dist/sql/utils/index.js +21 -0
  9. package/package.json +1 -1
  10. package/src/sql/handle/insert.ts +9 -4
  11. package/src/sql/handle/select.ts +1 -1
  12. package/src/sql/utils/index.ts +26 -0
  13. package/test/sql/delete.test.ts +8 -8
  14. package/test/sql/index.test.ts +1 -1
  15. package/test/sql/insert.test.ts +8 -8
  16. package/test/sql/update.test.ts +7 -7
  17. package/test/sql/utils/join.test.ts +1 -1
  18. package/typedocs-generated/assets/hierarchy.js +1 -1
  19. package/typedocs-generated/assets/navigation.js +1 -1
  20. package/typedocs-generated/assets/search.js +1 -1
  21. package/typedocs-generated/classes/js.default.html +2 -2
  22. package/typedocs-generated/classes/sql_index.default.html +2 -2
  23. package/typedocs-generated/classes/sql_utils_join.util.JoinToRelationsEngine.html +2 -2
  24. package/typedocs-generated/functions/sql_handle_collection.handleCreate.html +1 -1
  25. package/typedocs-generated/functions/sql_handle_collection.handleDrop.html +1 -1
  26. package/typedocs-generated/functions/sql_handle_collection.handleExists.html +1 -1
  27. package/typedocs-generated/functions/sql_handle_collection.handleGet.html +1 -1
  28. package/typedocs-generated/functions/sql_handle_delete.handleDelete.html +1 -1
  29. package/typedocs-generated/functions/sql_handle_insert.handleInsert.html +1 -1
  30. package/typedocs-generated/functions/sql_handle_select.handleSelect.html +1 -1
  31. package/typedocs-generated/functions/sql_handle_select.parseJoinClauses.html +1 -1
  32. package/typedocs-generated/functions/sql_handle_select.parseSelectClause.html +1 -1
  33. package/typedocs-generated/functions/sql_handle_update.handleUpdate.html +1 -1
  34. package/typedocs-generated/functions/sql_utils_index.parseNum.html +1 -0
  35. package/typedocs-generated/functions/sql_utils_index.parseReturn.html +1 -0
  36. package/typedocs-generated/functions/sql_utils_index.parseSet.html +1 -0
  37. package/typedocs-generated/functions/sql_utils_index.removeQuotes.html +1 -0
  38. package/typedocs-generated/functions/sql_where.parseWhere.html +1 -1
  39. package/typedocs-generated/hierarchy.html +1 -1
  40. package/typedocs-generated/interfaces/types.Opts.html +2 -2
  41. package/typedocs-generated/interfaces/types.ValtheraParser.html +2 -2
  42. package/typedocs-generated/interfaces/types.ValtheraQuery.html +2 -2
  43. package/typedocs-generated/modules/sql_utils_index.html +1 -0
  44. package/typedocs-generated/modules.html +1 -1
  45. package/typedocs-generated/types/sql_utils_join.util.JoinClause.html +1 -1
  46. package/typedocs-generated/variables/.ValtheraDbParsers.html +1 -1
  47. package/typedocs-generated/variables/.ValtheraDbRelations.html +1 -1
  48. package/dist/sql/utils.d.ts +0 -3
  49. package/dist/sql/utils.js +0 -13
  50. package/src/sql/utils.ts +0 -17
  51. package/typedocs-generated/functions/sql_utils.parseReturn.html +0 -1
  52. package/typedocs-generated/functions/sql_utils.parseSet.html +0 -1
  53. package/typedocs-generated/modules/sql_utils.html +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.0.11](https://github.com/wxn0brP/ValtheraDB-string-query/compare/v0.0.10...v0.0.11) (2025-12-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * bug fixes & organize code ([9a93a89](https://github.com/wxn0brP/ValtheraDB-string-query/commit/9a93a893a9e51e311c63f23e7f9aadae5317f152))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * bugs ([eb94c46](https://github.com/wxn0brP/ValtheraDB-string-query/commit/eb94c469ac8a0ea21afc17d10eeeef3828cc766c))
16
+
5
17
  ### [0.0.10](https://github.com/wxn0brP/ValtheraDB-string-query/compare/v0.0.9...v0.0.10) (2025-12-05)
6
18
 
7
19
 
@@ -1,4 +1,4 @@
1
- import { parseReturn } from "../utils.js";
1
+ import { parseReturn } from "../utils/index.js";
2
2
  export function handleGet(query) {
3
3
  if (!/^GET\s+COLLECTIONS$/i.test(query)) {
4
4
  throw new Error("Invalid GET COLLECTIONS syntax.");
@@ -1,4 +1,4 @@
1
- import { parseReturn } from "../../sql/utils.js";
1
+ import { parseReturn } from "../../sql/utils/index.js";
2
2
  import { parseWhere } from "../../sql/where.js";
3
3
  export function handleDelete(query) {
4
4
  const match = query.match(/DELETE FROM ([\w\/]+)(?: WHERE (.+))?/i);
@@ -1,6 +1,7 @@
1
- import { parseReturn } from "../../sql/utils.js";
1
+ import { parseNum, parseReturn } from "../../sql/utils/index.js";
2
+ import { removeQuotes } from "../../sql/utils/index.js";
2
3
  export function handleInsert(query) {
3
- const match = query.match(/INSERT INTO ([\w\/]+)\s*\(([^)]+)\)\s*VALUES\s*\(([^)]+)\)/i);
4
+ const match = query.match(/INSERT INTO\s+((?:`[^`]+`|"[^"]+"|\w+(?:\.\w+)*))\s*\(\s*([^)]+)\s*\)\s*VALUES\s*\(\s*([^)]+)\s*\)/i);
4
5
  if (!match)
5
6
  throw new Error("Invalid INSERT syntax");
6
7
  const collection = match[1];
@@ -46,7 +47,10 @@ export function handleInsert(query) {
46
47
  });
47
48
  if (keys.length !== values.length)
48
49
  throw new Error("Number of columns and values does not match");
49
- const data = Object.fromEntries(keys.map((k, i) => [k, isNaN(values[i]) ? values[i] : Number(values[i])]));
50
- return parseReturn("add", [collection, data]);
50
+ const data = keys.map((k, i) => [
51
+ removeQuotes(k),
52
+ parseNum(values[i])
53
+ ]);
54
+ return parseReturn("add", [removeQuotes(collection), Object.fromEntries(data)]);
51
55
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NxbC9oYW5kbGUvaW5zZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztJQUN6RixJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2QyxTQUFTLDBCQUEwQixDQUFDLEdBQVc7UUFDM0MsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsYUFBYSxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUMvQixPQUFPLElBQUksSUFBSSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hDLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLElBQUksSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pELENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUNsRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NxbC9oYW5kbGUvaW5zZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMscUdBQXFHLENBQUMsQ0FBQztJQUNqSSxJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV2QyxTQUFTLDBCQUEwQixDQUFDLEdBQVc7UUFDM0MsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsYUFBYSxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUMvQixPQUFPLElBQUksSUFBSSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hDLGFBQWEsR0FBRyxDQUFDLGFBQWEsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLElBQUksSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUM3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDMUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pELENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUVsRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUNmLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDdEIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUMifQ==
@@ -1,6 +1,6 @@
1
- import { parseReturn } from "../../sql/utils.js";
1
+ import { parseReturn } from "../../sql/utils/index.js";
2
2
  import { parseWhere } from "../../sql/where.js";
3
- import { JoinToRelationsEngine } from "../utils/join.util.js";
3
+ import { JoinToRelationsEngine } from "../../sql/utils/join.util.js";
4
4
  export function handleSelect(query, opts) {
5
5
  let whereClauseStr;
6
6
  let mainQueryPart = query;
@@ -52,4 +52,4 @@ export function parseSelectClause(selectClause) {
52
52
  select: selectClause.split(/\s*,\s*/),
53
53
  };
54
54
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NxbC9oYW5kbGUvc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU5RCxNQUFNLFVBQVUsWUFBWSxDQUN4QixLQUFhLEVBQ2IsSUFBVztJQUVYLElBQUksY0FBa0MsQ0FBQztJQUN2QyxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFMUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxhQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVyRSxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVoRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxRSxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0MsT0FBTyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQzdDLE1BQU0sV0FBVyxHQUEyQixFQUFFLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsNkVBQTZFLENBQUM7SUFDaEcsSUFBSSxLQUFLLENBQUM7SUFDVixPQUFPLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFlBQW9CO0lBQ2xELFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxZQUFZLEtBQUssR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXBDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNoRSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2YsT0FBTztZQUNILE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUM1QyxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7S0FDeEMsQ0FBQztBQUNOLENBQUMifQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NxbC9oYW5kbGUvc2VsZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3RCxNQUFNLFVBQVUsWUFBWSxDQUN4QixLQUFhLEVBQ2IsSUFBVztJQUVYLElBQUksY0FBa0MsQ0FBQztJQUN2QyxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFMUIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5RCxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxhQUFhLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUM1RixJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVyRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVyRSxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVoRCxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxRSxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0MsT0FBTyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWdCO0lBQzdDLE1BQU0sV0FBVyxHQUEyQixFQUFFLENBQUM7SUFDL0MsTUFBTSxTQUFTLEdBQUcsNkVBQTZFLENBQUM7SUFDaEcsSUFBSSxLQUFLLENBQUM7SUFDVixPQUFPLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFlBQW9CO0lBQ2xELFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkMsSUFBSSxZQUFZLEtBQUssR0FBRztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXBDLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNoRSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2YsT0FBTztZQUNILE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztTQUM1QyxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDSCxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7S0FDeEMsQ0FBQztBQUNOLENBQUMifQ==
@@ -1,4 +1,4 @@
1
- import { parseReturn, parseSet } from "../../sql/utils.js";
1
+ import { parseReturn, parseSet } from "../../sql/utils/index.js";
2
2
  import { parseWhere } from "../../sql/where.js";
3
3
  export function handleUpdate(query) {
4
4
  const match = query.match(/UPDATE\s+([\w\/]+)\s+SET\s+(.+)\s+WHERE\s+(.+)/i);
@@ -0,0 +1,7 @@
1
+ import { ValtheraQuery } from "../../types.js";
2
+ export declare function parseReturn(method: string, args: any[]): ValtheraQuery;
3
+ export declare function parseSet(setString: string): {
4
+ [k: string]: any;
5
+ };
6
+ export declare function removeQuotes(str: string): string;
7
+ export declare function parseNum(str: string): string | number;
@@ -0,0 +1,21 @@
1
+ export function parseReturn(method, args) {
2
+ return { method, args };
3
+ }
4
+ export function parseSet(setString) {
5
+ return Object.fromEntries(setString.split(/\s*,\s*/).map(pair => {
6
+ const [key, value] = pair.split(/\s*=\s*/);
7
+ let parsedValue = value;
8
+ if (!isNaN(+value))
9
+ parsedValue = +value;
10
+ else
11
+ parsedValue = removeQuotes(value);
12
+ return [removeQuotes(key), parsedValue];
13
+ }));
14
+ }
15
+ export function removeQuotes(str) {
16
+ return str.replace(/^['"`]|['"`]$/g, "");
17
+ }
18
+ export function parseNum(str) {
19
+ return isNaN(+str) ? str : +str;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3FsL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVc7SUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxTQUFpQjtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLFdBQVcsR0FBUSxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUFFLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQzs7WUFDcEMsV0FBVyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2QyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUNMLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3BDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFXO0lBQ2hDLE9BQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDcEMsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wxn0brp/db-string-query",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "repository": {
@@ -1,7 +1,8 @@
1
- import { parseReturn } from "#sql/utils";
1
+ import { parseNum, parseReturn } from "#sql/utils";
2
+ import { removeQuotes } from "#sql/utils";
2
3
 
3
4
  export function handleInsert(query: string) {
4
- const match = query.match(/INSERT INTO ([\w\/]+)\s*\(([^)]+)\)\s*VALUES\s*\(([^)]+)\)/i);
5
+ const match = query.match(/INSERT INTO\s+((?:`[^`]+`|"[^"]+"|\w+(?:\.\w+)*))\s*\(\s*([^)]+)\s*\)\s*VALUES\s*\(\s*([^)]+)\s*\)/i);
5
6
  if (!match) throw new Error("Invalid INSERT syntax");
6
7
  const collection = match[1];
7
8
  const keys = match[2].split(/\s*,\s*/);
@@ -45,6 +46,10 @@ export function handleInsert(query: string) {
45
46
  });
46
47
 
47
48
  if (keys.length !== values.length) throw new Error("Number of columns and values does not match");
48
- const data = Object.fromEntries(keys.map((k, i) => [k, isNaN(values[i] as any) ? values[i] : Number(values[i])]));
49
- return parseReturn("add", [collection, data]);
49
+
50
+ const data = keys.map((k, i) => [
51
+ removeQuotes(k),
52
+ parseNum(values[i])
53
+ ]);
54
+ return parseReturn("add", [removeQuotes(collection), Object.fromEntries(data)]);
50
55
  }
@@ -1,7 +1,7 @@
1
1
  import { parseReturn } from "#sql/utils";
2
2
  import { parseWhere } from "#sql/where";
3
3
  import { Opts } from "#types.js";
4
- import { JoinToRelationsEngine } from "../utils/join.util.js";
4
+ import { JoinToRelationsEngine } from "#sql/utils/join.util";
5
5
 
6
6
  export function handleSelect(
7
7
  query: string,
@@ -0,0 +1,26 @@
1
+ import { ValtheraQuery } from "../../types";
2
+
3
+ export function parseReturn(method: string, args: any[]): ValtheraQuery {
4
+ return { method, args };
5
+ }
6
+
7
+ export function parseSet(setString: string) {
8
+ return Object.fromEntries(
9
+ setString.split(/\s*,\s*/).map(pair => {
10
+ const [key, value]: any = pair.split(/\s*=\s*/);
11
+ let parsedValue: any = value;
12
+ if (!isNaN(+value)) parsedValue = +value;
13
+ else parsedValue = removeQuotes(value);
14
+
15
+ return [removeQuotes(key), parsedValue];
16
+ })
17
+ );
18
+ }
19
+
20
+ export function removeQuotes(str: string) {
21
+ return str.replace(/^['"`]|['"`]$/g, "");
22
+ }
23
+
24
+ export function parseNum(str: string) {
25
+ return isNaN(+str) ? str : +str;
26
+ }
@@ -4,7 +4,7 @@ import { describe, expect, test } from "bun:test";
4
4
  const sqlParser = new SQLParser();
5
5
 
6
6
  describe("SQL Parser - DELETE", () => {
7
- test("should parse a simple DELETE query", () => {
7
+ test("1. should parse a simple DELETE query", () => {
8
8
  const query = "DELETE FROM users WHERE id = 1";
9
9
  const parsedQuery = sqlParser.parse(query);
10
10
 
@@ -15,7 +15,7 @@ describe("SQL Parser - DELETE", () => {
15
15
  expect(parsedQuery.args[1]).toEqual({ id: 1 }); // where clause
16
16
  });
17
17
 
18
- test("should parse DELETE query without WHERE clause", () => {
18
+ test("2. should parse DELETE query without WHERE clause", () => {
19
19
  const query = "DELETE FROM users";
20
20
  const parsedQuery = sqlParser.parse(query);
21
21
 
@@ -26,7 +26,7 @@ describe("SQL Parser - DELETE", () => {
26
26
  expect(parsedQuery.args[1]).toEqual({}); // empty where clause
27
27
  });
28
28
 
29
- test("should parse DELETE with complex WHERE conditions", () => {
29
+ test("3. should parse DELETE with complex WHERE conditions", () => {
30
30
  const query = "DELETE FROM users WHERE age > 65 AND status = 'inactive'";
31
31
  const parsedQuery = sqlParser.parse(query);
32
32
 
@@ -37,7 +37,7 @@ describe("SQL Parser - DELETE", () => {
37
37
  expect(parsedQuery.args[1]).toEqual({ $gt: { age: 65 }, status: "inactive" }); // where clause
38
38
  });
39
39
 
40
- test("should parse DELETE with string values", () => {
40
+ test("4. should parse DELETE with string values", () => {
41
41
  const query = "DELETE FROM posts WHERE title = 'Unwanted Post'";
42
42
  const parsedQuery = sqlParser.parse(query);
43
43
 
@@ -48,7 +48,7 @@ describe("SQL Parser - DELETE", () => {
48
48
  expect(parsedQuery.args[1]).toEqual({ title: "Unwanted Post" }); // where clause
49
49
  });
50
50
 
51
- test("should parse DELETE with numeric values", () => {
51
+ test("5. should parse DELETE with numeric values", () => {
52
52
  const query = "DELETE FROM products WHERE price = 0";
53
53
  const parsedQuery = sqlParser.parse(query);
54
54
 
@@ -59,7 +59,7 @@ describe("SQL Parser - DELETE", () => {
59
59
  expect(parsedQuery.args[1]).toEqual({ price: 0 }); // where clause
60
60
  });
61
61
 
62
- test("should throw error for invalid DELETE syntax", () => {
62
+ test("6. should throw error for invalid DELETE syntax", () => {
63
63
  const query = "DELETE users WHERE id = 1"; // missing FROM keyword
64
64
 
65
65
  expect(() => {
@@ -67,7 +67,7 @@ describe("SQL Parser - DELETE", () => {
67
67
  }).toThrow("Invalid DELETE syntax");
68
68
  });
69
69
 
70
- test("should parse DELETE with quoted string values", () => {
70
+ test("7. should parse DELETE with quoted string values", () => {
71
71
  const query = "DELETE FROM users WHERE name = 'John Doe'";
72
72
  const parsedQuery = sqlParser.parse(query);
73
73
 
@@ -78,7 +78,7 @@ describe("SQL Parser - DELETE", () => {
78
78
  expect(parsedQuery.args[1]).toEqual({ name: "John Doe" }); // where clause
79
79
  });
80
80
 
81
- test("should handle DELETE with multiple condition types", () => {
81
+ test("8. should handle DELETE with multiple condition types", () => {
82
82
  const query = "DELETE FROM orders WHERE total > 1000 AND status = 'cancelled' AND user_id != 5";
83
83
  const parsedQuery = sqlParser.parse(query);
84
84
 
@@ -4,7 +4,7 @@ import { describe, expect, test } from "bun:test";
4
4
  const sqlParser = new SQLParser();
5
5
 
6
6
  describe("SQL Parser - SELECT", () => {
7
- test("should parse with ;", () => {
7
+ test("1. should parse with ;", () => {
8
8
  const query = "SELECT * FROM users WHERE id = 1;";
9
9
  const parsedQuery = sqlParser.parse(query);
10
10
 
@@ -4,7 +4,7 @@ import { describe, expect, test } from "bun:test";
4
4
  const sqlParser = new SQLParser();
5
5
 
6
6
  describe("SQL Parser - INSERT", () => {
7
- test("should parse a simple INSERT query", () => {
7
+ test("1. should parse a simple INSERT query", () => {
8
8
  const query = "INSERT INTO users (name, email) VALUES ('John', 'john@example.com')";
9
9
  const parsedQuery = sqlParser.parse(query);
10
10
 
@@ -15,7 +15,7 @@ describe("SQL Parser - INSERT", () => {
15
15
  expect(parsedQuery.args[1]).toEqual({ name: "John", email: "john@example.com" }); // data
16
16
  });
17
17
 
18
- test("should parse INSERT with numeric values", () => {
18
+ test("2. should parse INSERT with numeric values", () => {
19
19
  const query = "INSERT INTO products (id, name, price) VALUES (1, 'Laptop', 999.99)";
20
20
  const parsedQuery = sqlParser.parse(query);
21
21
 
@@ -26,7 +26,7 @@ describe("SQL Parser - INSERT", () => {
26
26
  expect(parsedQuery.args[1]).toEqual({ id: 1, name: "Laptop", price: 999.99 }); // data with numeric values
27
27
  });
28
28
 
29
- test("should parse INSERT with mixed data types", () => {
29
+ test("3. should parse INSERT with mixed data types", () => {
30
30
  const query = "INSERT INTO users (id, name, active, score) VALUES (1, 'Jane', true, 95.5)";
31
31
  const parsedQuery = sqlParser.parse(query);
32
32
 
@@ -37,7 +37,7 @@ describe("SQL Parser - INSERT", () => {
37
37
  expect(parsedQuery.args[1]).toEqual({ id: 1, name: "Jane", active: "true", score: 95.5 });
38
38
  });
39
39
 
40
- test("should handle INSERT with quoted values containing commas", () => {
40
+ test("4. should handle INSERT with quoted values containing commas", () => {
41
41
  const query = `INSERT INTO posts (title, content) VALUES ('Hello, World!', 'This is a post, with commas.')`;
42
42
  const parsedQuery = sqlParser.parse(query);
43
43
 
@@ -51,7 +51,7 @@ describe("SQL Parser - INSERT", () => {
51
51
  });
52
52
  });
53
53
 
54
- test("should throw error for mismatched columns and values", () => {
54
+ test("5. should throw error for mismatched columns and values", () => {
55
55
  const query = "INSERT INTO users (name, email) VALUES ('John')"; // missing value
56
56
 
57
57
  expect(() => {
@@ -59,7 +59,7 @@ describe("SQL Parser - INSERT", () => {
59
59
  }).toThrow("Number of columns and values does not match");
60
60
  });
61
61
 
62
- test("should throw error for invalid INSERT syntax", () => {
62
+ test("6. should throw error for invalid INSERT syntax", () => {
63
63
  const query = "INSERT users (name) VALUES ('John')"; // missing INTO
64
64
 
65
65
  expect(() => {
@@ -67,7 +67,7 @@ describe("SQL Parser - INSERT", () => {
67
67
  }).toThrow("Invalid INSERT syntax");
68
68
  });
69
69
 
70
- test("should handle INSERT with double quotes", () => {
70
+ test("7. should handle INSERT with double quotes", () => {
71
71
  const query = 'INSERT INTO users (name, email) VALUES ("Jane", "jane@example.com")';
72
72
  const parsedQuery = sqlParser.parse(query);
73
73
 
@@ -78,7 +78,7 @@ describe("SQL Parser - INSERT", () => {
78
78
  expect(parsedQuery.args[1]).toEqual({ name: "Jane", email: "jane@example.com" });
79
79
  });
80
80
 
81
- test("should handle INSERT with mixed quote types", () => {
81
+ test("8. should handle INSERT with mixed quote types", () => {
82
82
  const query = `INSERT INTO users (name, email, description) VALUES ("Jane", 'jane@example.com', "User, with 'special' chars")`;
83
83
  const parsedQuery = sqlParser.parse(query);
84
84
 
@@ -4,7 +4,7 @@ import { describe, expect, test } from "bun:test";
4
4
  const sqlParser = new SQLParser();
5
5
 
6
6
  describe("SQL Parser - UPDATE", () => {
7
- test("should parse a simple UPDATE query", () => {
7
+ test("1. should parse a simple UPDATE query", () => {
8
8
  const query = "UPDATE users SET name = 'John' WHERE id = 1";
9
9
  const parsedQuery = sqlParser.parse(query);
10
10
 
@@ -16,7 +16,7 @@ describe("SQL Parser - UPDATE", () => {
16
16
  expect(parsedQuery.args[2]).toEqual({ name: "John" }); // set clause
17
17
  });
18
18
 
19
- test("should parse UPDATE with multiple SET fields", () => {
19
+ test("2. should parse UPDATE with multiple SET fields", () => {
20
20
  const query = "UPDATE users SET name = 'Jane', email = 'jane@example.com' WHERE id = 2";
21
21
  const parsedQuery = sqlParser.parse(query);
22
22
 
@@ -28,7 +28,7 @@ describe("SQL Parser - UPDATE", () => {
28
28
  expect(parsedQuery.args[2]).toEqual({ name: "Jane", email: "jane@example.com" }); // set clause
29
29
  });
30
30
 
31
- test("should parse UPDATE with numeric values", () => {
31
+ test("3. should parse UPDATE with numeric values", () => {
32
32
  const query = "UPDATE products SET price = 29.99, stock = 100 WHERE id = 1";
33
33
  const parsedQuery = sqlParser.parse(query);
34
34
 
@@ -40,7 +40,7 @@ describe("SQL Parser - UPDATE", () => {
40
40
  expect(parsedQuery.args[2]).toEqual({ price: 29.99, stock: 100 }); // set clause
41
41
  });
42
42
 
43
- test("should parse UPDATE with string values containing spaces", () => {
43
+ test("4. should parse UPDATE with string values containing spaces", () => {
44
44
  const query = "UPDATE posts SET title = 'Hello World Post', content = 'This is the content' WHERE id = 1";
45
45
  const parsedQuery = sqlParser.parse(query);
46
46
 
@@ -55,7 +55,7 @@ describe("SQL Parser - UPDATE", () => {
55
55
  }); // set clause
56
56
  });
57
57
 
58
- test("should throw error for invalid UPDATE syntax", () => {
58
+ test("5. should throw error for invalid UPDATE syntax", () => {
59
59
  const query = "UPDATE users name = 'John' WHERE id = 1"; // missing SET keyword
60
60
 
61
61
  expect(() => {
@@ -63,7 +63,7 @@ describe("SQL Parser - UPDATE", () => {
63
63
  }).toThrow("Invalid UPDATE syntax");
64
64
  });
65
65
 
66
- test("should handle UPDATE with complex WHERE conditions", () => {
66
+ test("6. should handle UPDATE with complex WHERE conditions", () => {
67
67
  const query = "UPDATE users SET status = 'inactive' WHERE age > 65 AND active = 1";
68
68
  const parsedQuery = sqlParser.parse(query);
69
69
 
@@ -75,7 +75,7 @@ describe("SQL Parser - UPDATE", () => {
75
75
  expect(parsedQuery.args[2]).toEqual({ status: "inactive" }); // set clause
76
76
  });
77
77
 
78
- test("should throw error when there is no WHERE clause", () => {
78
+ test("7. should throw error when there is no WHERE clause", () => {
79
79
  const query = "UPDATE users SET name = 'John'"; // missing WHERE
80
80
 
81
81
  expect(() => {
@@ -2,7 +2,7 @@ import { JoinClause, JoinToRelationsEngine } from "#sql/utils/join.util";
2
2
  import { describe, expect, test } from "bun:test";
3
3
 
4
4
  describe("SQL Utils - Join", () => {
5
- test("works", () => {
5
+ test("1. works", () => {
6
6
  const joinClauses: JoinClause = {
7
7
  comments: "posts.id = comments.post_id",
8
8
  users: "comments.user_id = users.id",
@@ -1 +1 @@
1
- window.hierarchyData = "eJyVjssKwjAQRf/lrmPLCIrJV7hyI0VCM6XRmGomgiL9d6mPogtBN7OYmXvuuSJ1XRaYNelKIXETuM6+iwJzBelhRrtnGKxsyC0nu7RJOEFh56ODmc7mCqcUYOBj5tTYmqXMlwNL8Rkp2rwPUKiDFYFBFjcZGJMxNxxbH1ziCLPWWhFR1Svodw/HjT2FPArQdPESuJNZyq0Uz6+vnY9Fr0BE/8HlGDY+Oj7/2tH3Nx6zdwM="
1
+ window.hierarchyData = "eJyVjssKwjAQRf/lrmPbFJQ2X+HKjYiEZkqjMdVMBKX03yU+ii4E3cxiZu65Z0Do+8hQa1lvBAK1jppoe89QA2SdptcHgsJKu9hR0EsdmAIE9tYbqHK+EDgHBwXrI4VWN8R5vB6Js89I1sWDg0DjNDMUIptZYsymXDp21plAPhkVlZBlsRkFZFG9mRhq9dnFSUGW1UvhzibOd5w9v762PhYJXhb/wfnkttYbuvzaMY43yBF3UQ=="
@@ -1 +1 @@
1
- window.navigationData = "eJylll9P2zAUxb+L9xoxGgobfaUIbS/bgLEHVFVufLuYGSfYDhQhvvsUu03sxHEc8Rqf8/O5vv6T+zekYKfQAqEElVjlaIEeC1IxkJ+PcvXIUIL+UU7QIk1QllNGBHC0uG9sd5ipHARebn5iIUHIlvOMBcUbTeqpXPZJ+p54iNfAsKIFH2M2uh51ZXEpJ7DrV6k/f7TUPuzT815NNmWjNvj57Hx+cjyPLTnIFpbepdulP3hwDzKqaAJbXDHV+jOGpTT+/ZjLmaVfnbnlUz3mQ+eYEwYDg1nBGGR1af3o8omtjXndyqKqMa4LAVhBy91WXCMGyZbLnebM7qKRLUVRTkXXnlHw5Y5KJaeijWsUfgVqKvkKVA9rN54AA3uVPd0zkgmdW3aY3qQHquUIBqVcglDBoEYyIei3DtMb9EC1HMGgEuoOBIMayYSgNx2mN+iBajkCO0rfd98Lyi8YriSMbdk9vOsam8DEMOIJM9i24GJXJcEj29dIJiz27w7Tm/ZAtRyeoBEvW82Mf90GL/oWE3XfV4oyz3NTU/RQVBjdqmtQleBDq2VglnB8wwxuc4t147nVrIe0oPyoVgcKXDeiqFLrLX9bNO/+Jf9LOfi70MV7rf3uJM5c3ROjXssA3ndQ0uPzL7PTtLMJX3IQA8dFD8X3/Y9LcltlWK1u5Gjo6vqp9OeoRD9K+82lXIHY4qxB1MMdzumZ58/O/DEGQK4wBvmrAvEaQdS6PnD1vvoPAUgwPQ=="
1
+ window.navigationData = "eJylllFv2yAUhf8Le7W6xk27Na9NVW0P3dpu60MVVcS+mUkJdgFnqab+98kQ29hgjLVXc87HgXvBPP1FEg4SLRCKUIFlhhZol6clBfHxJJM7iiL0QliKFnGEkozQlANDi6fG9gtTmQHHy/V3zAVw0XL2mBO8ViRL1WWfxe+Rg3gPFEuSszFmo7OoK4NLWAoHe5Xq8/8u1YZ92B/V6bpo1Bo/n13Oz07noUv2srmh79LNpW8duK0IWnQKG1xS2foTioXQ/uNYlzOLP3fmFq/VmAudYZZSGBhMckohqZZmRxev9Fmbn1tZ0Gq064oDltByNyVTiEGy4epOc2FWUcuWPC+moivPKPj6QIQUU9HaNQq/ATmVfAPSwpqFT4GCucuO6mnJhMote0xn0ppqOLxBCRPApTeolkwI+qXHdAatqYbDG1RAVQFvUC2ZEPShx3QGramGw9NR6r77mhN2RXEpYKxlj/C+a2wCHUOLJ8xg2rybXRYpHmlfLZmw2T97TGfammo4HEED/mwVM/zvNnjRt5ig+76UhIqBS90TVNkmxFXFvC13Q5tp8mrtWEvdgyw5CyZq+XifDp4ui/jguFJbHIddvoe7MpfDZ8pEmnpvq29zwk4qp680jSioPNVB/pE3r5lr9pswcPdWH++02j0Xdebq3wPyrfDgXcc/Pr38NDuPe0frTwZ84BJQQ+G9+tgldcumWa1u5MCr1dmp1OegRN8K8yVBmAS+wUmDqIZ7nPMLx3tVv4M9oK4wBHlXAn8LICqdDVy9r/4BTs99eA=="
@@ -1 +1 @@
1
- window.searchData = "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";
1
+ window.searchData = "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";
@@ -1,3 +1,3 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>default | @wxn0brp/db-string-query</title><meta name="description" content="Documentation for @wxn0brp/db-string-query"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@wxn0brp/db-string-query</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/js.html">js</a></li><li><a href="" aria-current="page">default</a></li></ul><h1>Class default</h1></div><section class="tsd-panel"><h4>Implements</h4><ul class="tsd-hierarchy"><li><a href="../interfaces/types.ValtheraParser.html" class="tsd-signature-type tsd-kind-interface">ValtheraParser</a></li></ul></section><aside class="tsd-sources"><ul><li>Defined in js.ts:4</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>default | @wxn0brp/db-string-query</title><meta name="description" content="Documentation for @wxn0brp/db-string-query"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@wxn0brp/db-string-query</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/js.html">js</a></li><li><a href="" aria-current="page">default</a></li></ul><h1>Class default</h1></div><section class="tsd-panel"><h4>Implements</h4><ul class="tsd-hierarchy"><li><a href="../interfaces/types.ValtheraParser.html" class="tsd-signature-type tsd-kind-interface">ValtheraParser</a></li></ul></section><aside class="tsd-sources"><ul><li>Defined in src/js.ts:4</li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
2
2
  </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="#parse" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>parse</span></a>
3
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructordefault"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">default</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">default</a><a href="#constructordefault" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">default</a></h4></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="parse"><span>parse</span><a href="#parse" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="parse-1"><span class="tsd-kind-call-signature">parse</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">query</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><a href="#parse-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">query</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span></h4><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/types.ValtheraParser.html">ValtheraParser</a>.<a href="../interfaces/types.ValtheraParser.html#parse">parse</a></p><ul><li>Defined in js.ts:5</li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#parse"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>parse</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@wxn0brp/db-string-query</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
3
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructordefault"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">default</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">default</a><a href="#constructordefault" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">default</a></h4></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="parse"><span>parse</span><a href="#parse" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="parse-1"><span class="tsd-kind-call-signature">parse</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">query</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><a href="#parse-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">query</span>: <span class="tsd-signature-type">string</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">method</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span></h4><aside class="tsd-sources"><p>Implementation of <a href="../interfaces/types.ValtheraParser.html">ValtheraParser</a>.<a href="../interfaces/types.ValtheraParser.html#parse">parse</a></p><ul><li>Defined in src/js.ts:5</li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#parse"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>parse</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@wxn0brp/db-string-query</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>