@nshiab/simple-data-analysis-core 0.0.27 → 0.1.0

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 (107) hide show
  1. package/esm/class/SimpleDB.d.ts +3 -8
  2. package/esm/class/SimpleDB.d.ts.map +1 -1
  3. package/esm/class/SimpleDB.js +8 -10
  4. package/esm/class/SimpleTable.d.ts +29 -48
  5. package/esm/class/SimpleTable.d.ts.map +1 -1
  6. package/esm/class/SimpleTable.js +87 -179
  7. package/esm/helpers/convertForJS.js +1 -1
  8. package/esm/helpers/findGeoColumn.js +2 -2
  9. package/esm/helpers/hasGeometryColumn.js +1 -1
  10. package/esm/helpers/logData.d.ts.map +1 -1
  11. package/esm/helpers/logData.js +7 -2
  12. package/esm/helpers/parseTypes.d.ts +1 -1
  13. package/esm/helpers/parseTypes.d.ts.map +1 -1
  14. package/esm/helpers/parseTypes.js +3 -1
  15. package/esm/helpers/setDbProps.d.ts +1 -1
  16. package/esm/helpers/setDbProps.d.ts.map +1 -1
  17. package/esm/helpers/setDbProps.js +5 -9
  18. package/esm/helpers/unifyColumns.d.ts +0 -2
  19. package/esm/helpers/unifyColumns.d.ts.map +1 -1
  20. package/esm/helpers/unifyColumns.js +2 -6
  21. package/esm/helpers/writeGeoData.d.ts.map +1 -1
  22. package/esm/helpers/writeGeoData.js +11 -41
  23. package/esm/helpers/writeIndexes.d.ts +3 -0
  24. package/esm/helpers/writeIndexes.d.ts.map +1 -0
  25. package/esm/helpers/writeIndexes.js +16 -0
  26. package/esm/methods/bm25.d.ts.map +1 -1
  27. package/esm/methods/bm25.js +1 -1
  28. package/esm/methods/cache.js +1 -1
  29. package/esm/methods/distanceQuery.d.ts.map +1 -1
  30. package/esm/methods/distanceQuery.js +4 -2
  31. package/esm/methods/fuzzyJoin.d.ts.map +1 -1
  32. package/esm/methods/fuzzyJoin.js +1 -6
  33. package/esm/methods/getGeoData.d.ts.map +1 -1
  34. package/esm/methods/getGeoData.js +1 -10
  35. package/esm/methods/join.d.ts.map +1 -1
  36. package/esm/methods/join.js +1 -7
  37. package/esm/methods/joinGeo.d.ts.map +1 -1
  38. package/esm/methods/joinGeo.js +1 -14
  39. package/esm/methods/joinGeoQuery.js +1 -1
  40. package/esm/methods/summarizeQuery.js +1 -1
  41. package/esm/methods/writeGeoDataQuery.js +2 -2
  42. package/package.json +2 -2
  43. package/script/class/SimpleDB.d.ts +3 -8
  44. package/script/class/SimpleDB.d.ts.map +1 -1
  45. package/script/class/SimpleDB.js +8 -10
  46. package/script/class/SimpleTable.d.ts +29 -48
  47. package/script/class/SimpleTable.d.ts.map +1 -1
  48. package/script/class/SimpleTable.js +87 -179
  49. package/script/helpers/convertForJS.js +1 -1
  50. package/script/helpers/findGeoColumn.js +2 -2
  51. package/script/helpers/hasGeometryColumn.js +1 -1
  52. package/script/helpers/logData.d.ts.map +1 -1
  53. package/script/helpers/logData.js +7 -2
  54. package/script/helpers/parseTypes.d.ts +1 -1
  55. package/script/helpers/parseTypes.d.ts.map +1 -1
  56. package/script/helpers/parseTypes.js +3 -1
  57. package/script/helpers/setDbProps.d.ts +1 -1
  58. package/script/helpers/setDbProps.d.ts.map +1 -1
  59. package/script/helpers/setDbProps.js +5 -9
  60. package/script/helpers/unifyColumns.d.ts +0 -2
  61. package/script/helpers/unifyColumns.d.ts.map +1 -1
  62. package/script/helpers/unifyColumns.js +2 -6
  63. package/script/helpers/writeGeoData.d.ts.map +1 -1
  64. package/script/helpers/writeGeoData.js +11 -41
  65. package/script/helpers/writeIndexes.d.ts +3 -0
  66. package/script/helpers/writeIndexes.d.ts.map +1 -0
  67. package/script/helpers/writeIndexes.js +19 -0
  68. package/script/methods/bm25.d.ts.map +1 -1
  69. package/script/methods/bm25.js +1 -1
  70. package/script/methods/cache.js +1 -1
  71. package/script/methods/distanceQuery.d.ts.map +1 -1
  72. package/script/methods/distanceQuery.js +4 -2
  73. package/script/methods/fuzzyJoin.d.ts.map +1 -1
  74. package/script/methods/fuzzyJoin.js +1 -6
  75. package/script/methods/getGeoData.d.ts.map +1 -1
  76. package/script/methods/getGeoData.js +1 -10
  77. package/script/methods/join.d.ts.map +1 -1
  78. package/script/methods/join.js +1 -7
  79. package/script/methods/joinGeo.d.ts.map +1 -1
  80. package/script/methods/joinGeo.js +1 -14
  81. package/script/methods/joinGeoQuery.js +1 -1
  82. package/script/methods/summarizeQuery.js +1 -1
  83. package/script/methods/writeGeoDataQuery.js +2 -2
  84. package/esm/helpers/getProjection.d.ts +0 -3
  85. package/esm/helpers/getProjection.d.ts.map +0 -1
  86. package/esm/helpers/getProjection.js +0 -25
  87. package/esm/helpers/getProjectionParquet.d.ts +0 -3
  88. package/esm/helpers/getProjectionParquet.d.ts.map +0 -1
  89. package/esm/helpers/getProjectionParquet.js +0 -24
  90. package/esm/helpers/shouldFlipBeforeExport.d.ts +0 -2
  91. package/esm/helpers/shouldFlipBeforeExport.d.ts.map +0 -1
  92. package/esm/helpers/shouldFlipBeforeExport.js +0 -3
  93. package/esm/helpers/writeProjectionsAndIndexes.d.ts +0 -3
  94. package/esm/helpers/writeProjectionsAndIndexes.d.ts.map +0 -1
  95. package/esm/helpers/writeProjectionsAndIndexes.js +0 -29
  96. package/script/helpers/getProjection.d.ts +0 -3
  97. package/script/helpers/getProjection.d.ts.map +0 -1
  98. package/script/helpers/getProjection.js +0 -31
  99. package/script/helpers/getProjectionParquet.d.ts +0 -3
  100. package/script/helpers/getProjectionParquet.d.ts.map +0 -1
  101. package/script/helpers/getProjectionParquet.js +0 -30
  102. package/script/helpers/shouldFlipBeforeExport.d.ts +0 -2
  103. package/script/helpers/shouldFlipBeforeExport.d.ts.map +0 -1
  104. package/script/helpers/shouldFlipBeforeExport.js +0 -6
  105. package/script/helpers/writeProjectionsAndIndexes.d.ts +0 -3
  106. package/script/helpers/writeProjectionsAndIndexes.d.ts.map +0 -1
  107. package/script/helpers/writeProjectionsAndIndexes.js +0 -32
@@ -24,7 +24,7 @@ export default function convertForJS(rows, types) {
24
24
  row[key] = row[key] === null ? null : Number(row[key]);
25
25
  }
26
26
  }
27
- else if (types[key] === "GEOMETRY") {
27
+ else if (types[key].toLowerCase().includes("geometry")) {
28
28
  for (const row of rows) {
29
29
  row[key] = row[key] === null ? null : "<Geometry>";
30
30
  }
@@ -1,7 +1,7 @@
1
1
  export default async function findGeoColumn(SimpleTable) {
2
2
  let column;
3
3
  const types = await SimpleTable.getTypes();
4
- const geometries = Object.values(types).filter((d) => d.toLowerCase() === "geometry");
4
+ const geometries = Object.values(types).filter((d) => d.toLowerCase().includes("geometry"));
5
5
  if (geometries.length === 0) {
6
6
  throw new Error("Table contains no geometry columns.");
7
7
  }
@@ -9,7 +9,7 @@ export default async function findGeoColumn(SimpleTable) {
9
9
  throw new Error("More than one column storing geometries. If the method allows to specify one, do it. Otherwise, use the selectColumns methods beforehand.");
10
10
  }
11
11
  else {
12
- column = Object.keys(types).find((d) => types[d].toLowerCase() === "geometry");
12
+ column = Object.keys(types).find((d) => types[d].toLowerCase().includes("geometry"));
13
13
  }
14
14
  if (typeof column !== "string") {
15
15
  throw new Error("No column");
@@ -17,5 +17,5 @@
17
17
  */
18
18
  export default async function hasGeometryColumn(table) {
19
19
  const types = await table.getTypes();
20
- return Object.values(types).some((t) => t.toLowerCase() === "geometry");
20
+ return Object.values(types).some((t) => t.toLowerCase().includes("geometry"));
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logData.d.ts","sourceRoot":"","sources":["../../src/helpers/logData.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,EACvC,IAAI,EACA;IACA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;CACxD,EAAE,GACD,IAAI,EACR,iBAAiB,CAAC,EAAE,MAAM,QAwD3B"}
1
+ {"version":3,"file":"logData.d.ts","sourceRoot":"","sources":["../../src/helpers/logData.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,OAAO,CAC7B,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,IAAI,EACvC,IAAI,EACA;IACA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;CACxD,EAAE,GACD,IAAI,EACR,iBAAiB,CAAC,EAAE,MAAM,QA4D3B"}
@@ -29,8 +29,13 @@ export default function logData(types, data, nbCharactersToLog) {
29
29
  const columns = Object.keys(types);
30
30
  if (columns.length > 0) {
31
31
  for (const col of columns) {
32
- types[col] = types[col] + "/" +
33
- (data[0][col] === null ? null : typeof data[0][col]);
32
+ if (data[0][col] === "<Geometry>") {
33
+ continue;
34
+ }
35
+ else {
36
+ types[col] = types[col] + "/" +
37
+ (data[0][col] === null ? null : typeof data[0][col]);
38
+ }
34
39
  }
35
40
  // Add types as the first row
36
41
  dataToBeLogged.unshift(types);
@@ -1,2 +1,2 @@
1
- export default function parseType(type: "integer" | "float" | "number" | "string" | "date" | "time" | "datetime" | "datetimeTz" | "bigint" | "double" | "varchar" | "timestamp" | "timestamp with time zone" | "boolean" | "geometry"): string;
1
+ export default function parseType(type: "integer" | "float" | "number" | "string" | "date" | "time" | "datetime" | "datetimeTz" | "bigint" | "double" | "varchar" | "timestamp" | "timestamp with time zone" | "boolean" | `geometry('${string}')` | `GEOMETRY('${string}')`): string;
2
2
  //# sourceMappingURL=parseTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseTypes.d.ts","sourceRoot":"","sources":["../../src/helpers/parseTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,IAAI,EACA,SAAS,GACT,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,0BAA0B,GAC1B,SAAS,GACT,UAAU,UA+Bf"}
1
+ {"version":3,"file":"parseTypes.d.ts","sourceRoot":"","sources":["../../src/helpers/parseTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,IAAI,EACA,SAAS,GACT,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,0BAA0B,GAC1B,SAAS,GACT,aAAa,MAAM,IAAI,GACvB,aAAa,MAAM,IAAI,UAgC5B"}
@@ -25,10 +25,12 @@ export default function parseType(type) {
25
25
  "timestamp",
26
26
  "timestamp with time zone",
27
27
  "boolean",
28
- "geometry",
29
28
  ].includes(typeLowerCase)) {
30
29
  return type.toUpperCase();
31
30
  }
31
+ else if (typeLowerCase.includes("geometry")) {
32
+ return type.toUpperCase();
33
+ }
32
34
  else {
33
35
  throw new Error(`Unknown type ${type}`);
34
36
  }
@@ -1,3 +1,3 @@
1
1
  import type SimpleDB from "../class/SimpleDB.js";
2
- export default function setDbProps(simpleDB: SimpleDB, file: string, extension: string, allIndexesFile: string): Promise<void>;
2
+ export default function setDbProps(simpleDB: SimpleDB, allIndexesFile: string): Promise<void>;
3
3
  //# sourceMappingURL=setDbProps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setDbProps.d.ts","sourceRoot":"","sources":["../../src/helpers/setDbProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,iBA8BvB"}
1
+ {"version":3,"file":"setDbProps.d.ts","sourceRoot":"","sources":["../../src/helpers/setDbProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,wBAA8B,UAAU,CACtC,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,iBA2BvB"}
@@ -1,17 +1,13 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
- export default async function setDbProps(simpleDB, file, extension, allIndexesFile) {
2
+ export default async function setDbProps(simpleDB, allIndexesFile) {
3
3
  for (const table of await simpleDB.getTableNames()) {
4
4
  simpleDB.newTable(table);
5
5
  }
6
- const allProjectionsFile = `${file.replace(`.${extension}`, "")}_projections.json`;
7
- if (existsSync(allProjectionsFile)) {
8
- const projections = JSON.parse(readFileSync(allProjectionsFile, "utf-8"));
9
- for (const table of simpleDB.tables) {
10
- if (projections[table.name]) {
11
- table.projections = projections[table.name];
12
- }
6
+ for (const table of await simpleDB.getTables()) {
7
+ const types = await table.getTypes();
8
+ if (Object.values(types).some((type) => type.toLowerCase().includes("geometry"))) {
9
+ await simpleDB.customQuery(`INSTALL SPATIAL; LOAD SPATIAL;`);
13
10
  }
14
- await simpleDB.customQuery(`INSTALL spatial; LOAD spatial;`);
15
11
  }
16
12
  if (existsSync(allIndexesFile)) {
17
13
  const indexes = JSON.parse(readFileSync(allIndexesFile, "utf-8"));
@@ -1,8 +1,6 @@
1
1
  import type SimpleTable from "../class/SimpleTable.js";
2
2
  export default function unifyColumns(allTables: SimpleTable[], allTypes: {
3
3
  [key: string]: string;
4
- }, allProjections: {
5
- [key: string]: string;
6
4
  }): Promise<{
7
5
  [key: string]: string[];
8
6
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"unifyColumns.d.ts","sourceRoot":"","sources":["../../src/helpers/unifyColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,YAAY,CACxC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EACnC,cAAc,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;;GA4C1C"}
1
+ {"version":3,"file":"unifyColumns.d.ts","sourceRoot":"","sources":["../../src/helpers/unifyColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,YAAY,CACxC,SAAS,EAAE,WAAW,EAAE,EACxB,QAAQ,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;;GAwCpC"}
@@ -1,15 +1,11 @@
1
- export default async function unifyColumns(allTables, allTypes, allProjections) {
1
+ export default async function unifyColumns(allTables, allTypes) {
2
2
  const columnsAdded = {};
3
3
  for (const column in allTypes) {
4
4
  for (const table of allTables) {
5
5
  if (!(await table.hasColumn(column))) {
6
6
  await table.addColumn(column,
7
7
  // Could be improved
8
- allTypes[column].toLowerCase(), `null`, {
9
- projection: allTypes[column] === "GEOMETRY"
10
- ? allProjections[column]
11
- : undefined,
12
- });
8
+ allTypes[column].toLowerCase(), `null`);
13
9
  if (!columnsAdded[table.name]) {
14
10
  columnsAdded[table.name] = [];
15
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writeGeoData.d.ts","sourceRoot":"","sources":["../../src/helpers/writeGeoData.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,YAAY,CACxC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GACL,OAAO,CAAC,IAAI,CAAC,CAqIf"}
1
+ {"version":3,"file":"writeGeoData.d.ts","sourceRoot":"","sources":["../../src/helpers/writeGeoData.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAEvD,wBAA8B,YAAY,CACxC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GACL,OAAO,CAAC,IAAI,CAAC,CAmGf"}
@@ -1,9 +1,7 @@
1
1
  import { readFileSync, writeFileSync } from "node:fs";
2
2
  import createDirectory from "./createDirectory.js";
3
3
  import getExtension from "./getExtension.js";
4
- import findGeoColumn from "./findGeoColumn.js";
5
4
  import hasGeometryColumn from "./hasGeometryColumn.js";
6
- import shouldFlipBeforeExport from "./shouldFlipBeforeExport.js";
7
5
  import queryDB from "./queryDB.js";
8
6
  import writeGeoDataQuery from "../methods/writeGeoDataQuery.js";
9
7
  import mergeOptions from "./mergeOptions.js";
@@ -29,24 +27,11 @@ export default async function writeGeoData(table, file, options = {}) {
29
27
  if (typeof options.compression === "boolean") {
30
28
  throw new Error("The compression option is not supported for writing GeoJSON files.");
31
29
  }
32
- const geoColumn = await findGeoColumn(table);
33
- const flip = shouldFlipBeforeExport(table.projections[geoColumn]);
34
- if (flip) {
35
- await table.flipCoordinates(geoColumn);
36
- await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
37
- table: table.name,
38
- method: "writeGeoData()",
39
- parameters: { file, options },
40
- }));
41
- await table.flipCoordinates(geoColumn);
42
- }
43
- else {
44
- await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
45
- table: table.name,
46
- method: "writeGeoData()",
47
- parameters: { file, options },
48
- }));
49
- }
30
+ await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
31
+ table: table.name,
32
+ method: "writeGeoData()",
33
+ parameters: { file, options },
34
+ }));
50
35
  if (options.metadata) {
51
36
  const fileData = JSON.parse(readFileSync(file, "utf-8"));
52
37
  fileData.metadata = options.metadata;
@@ -70,24 +55,11 @@ export default async function writeGeoData(table, file, options = {}) {
70
55
  options.formatDates === true) {
71
56
  throw new Error("The following options are not supported for writing SHAPEFILE files: precision, compression, rewind, metadata, and formatDates.");
72
57
  }
73
- const geoColumn = await findGeoColumn(table);
74
- const flip = shouldFlipBeforeExport(table.projections[geoColumn]);
75
- if (flip) {
76
- await table.flipCoordinates(geoColumn);
77
- await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
78
- table: table.name,
79
- method: "writeGeoData()",
80
- parameters: { file, options },
81
- }));
82
- await table.flipCoordinates(geoColumn);
83
- }
84
- else {
85
- await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
86
- table: table.name,
87
- method: "writeGeoData()",
88
- parameters: { file, options },
89
- }));
90
- }
58
+ await queryDB(table, writeGeoDataQuery(table.name, file, fileExtension, options), mergeOptions(table, {
59
+ table: table.name,
60
+ method: "writeGeoData()",
61
+ parameters: { file, options },
62
+ }));
91
63
  }
92
64
  else if (fileExtension === "geoparquet") {
93
65
  if (typeof options.precision === "number") {
@@ -96,9 +68,7 @@ export default async function writeGeoData(table, file, options = {}) {
96
68
  if (typeof options.rewind === "boolean") {
97
69
  throw new Error("The rewind option is not supported for writing PARQUET files.");
98
70
  }
99
- await queryDB(table, `COPY "${table.name}" TO '${cleanPath(file)}' WITH (FORMAT PARQUET${options.compression === true ? ", COMPRESSION 'zstd'" : ""}, KV_METADATA {
100
- projections: '${JSON.stringify(table.projections)}'
101
- });`, mergeOptions(table, {
71
+ await queryDB(table, `COPY "${table.name}" TO '${cleanPath(file)}' WITH (FORMAT PARQUET${options.compression === true ? ", COMPRESSION 'zstd'" : ""});`, mergeOptions(table, {
102
72
  table: table.name,
103
73
  method: "writeGeoData()",
104
74
  parameters: { file, options },
@@ -0,0 +1,3 @@
1
+ import type { SimpleDB } from "../index.js";
2
+ export default function writeIndexes(simpleDB: SimpleDB, extension: string, file: string): void;
3
+ //# sourceMappingURL=writeIndexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeIndexes.d.ts","sourceRoot":"","sources":["../../src/helpers/writeIndexes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,QAeb"}
@@ -0,0 +1,16 @@
1
+ import { existsSync, rmSync, writeFileSync } from "node:fs";
2
+ export default function writeIndexes(simpleDB, extension, file) {
3
+ const allIndexes = {};
4
+ for (const table of simpleDB.tables) {
5
+ if (table.indexes.length > 0) {
6
+ allIndexes[table.name] = table.indexes;
7
+ }
8
+ }
9
+ const allIndexesFile = `${file.replace(`.${extension}`, "")}_indexes.json`;
10
+ if (existsSync(allIndexesFile)) {
11
+ rmSync(allIndexesFile);
12
+ }
13
+ if (Object.keys(allIndexes).length > 0) {
14
+ writeFileSync(allIndexesFile, JSON.stringify(allIndexes));
15
+ }
16
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"bm25.d.ts","sourceRoot":"","sources":["../../src/methods/bm25.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAIvD,wBAA8B,IAAI,CAChC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,OAAO,CAAC,EACJ,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,GACZ,OAAO,GACP,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,wBAgEP"}
1
+ {"version":3,"file":"bm25.d.ts","sourceRoot":"","sources":["../../src/methods/bm25.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAIvD,wBAA8B,IAAI,CAChC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,OAAO,CAAC,EACJ,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,YAAY,GACZ,OAAO,GACP,SAAS,GACT,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,wBA+DP"}
@@ -40,7 +40,7 @@ export default async function bm25(simpleTable, text, columnId, columnText, nbRe
40
40
  },
41
41
  }));
42
42
  if (typeof options.outputTable === "string") {
43
- return simpleTable.sdb.newTable(options.outputTable, structuredClone(simpleTable.projections));
43
+ return simpleTable.sdb.newTable(options.outputTable);
44
44
  }
45
45
  else {
46
46
  return simpleTable;
@@ -91,7 +91,7 @@ async function runAndWrite(table, run, cacheSources, cacheSourcesPath, cachePath
91
91
  }
92
92
  else {
93
93
  const types = await table.getTypes();
94
- const geometriesColumns = Object.values(types).filter((d) => d === "GEOMETRY").length;
94
+ const geometriesColumns = Object.values(types).filter((d) => d.toLowerCase().includes("geometry")).length;
95
95
  if (geometriesColumns > 0) {
96
96
  const file = `${cachePath}/${id}.geoparquet`;
97
97
  const writeStart = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"distanceQuery.d.ts","sourceRoot":"","sources":["../../src/methods/distanceQuery.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,UAsDP"}
1
+ {"version":3,"file":"distanceQuery.d.ts","sourceRoot":"","sources":["../../src/methods/distanceQuery.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,UAwDP"}
@@ -29,10 +29,12 @@ export default function distanceQuery(table, column1, column2, newColumn, option
29
29
  }
30
30
  else if (options.method === "spheroid") {
31
31
  if (typeof options.decimals === "number") {
32
- query += `ROUND(ST_Distance_Spheroid("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""}, ${options.decimals});`;
32
+ query +=
33
+ `ROUND(ST_Distance_Spheroid("${column1}"::GEOMETRY, "${column2}"::GEOMETRY) ${options.unit === "km" ? "/ 1000" : ""}, ${options.decimals});`;
33
34
  }
34
35
  else {
35
- query += `ST_Distance_Spheroid("${column1}", "${column2}") ${options.unit === "km" ? "/ 1000" : ""};`;
36
+ query +=
37
+ `ST_Distance_Spheroid("${column1}"::GEOMETRY, "${column2}"::GEOMETRY) ${options.unit === "km" ? "/ 1000" : ""};`;
36
38
  }
37
39
  }
38
40
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzyJoin.d.ts","sourceRoot":"","sources":["../../src/methods/fuzzyJoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,SAAS,CACrC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,MAAM,CAAC,EACH,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACxB,wBAwFP"}
1
+ {"version":3,"file":"fuzzyJoin.d.ts","sourceRoot":"","sources":["../../src/methods/fuzzyJoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,SAAS,CACrC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IACP,MAAM,CAAC,EACH,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACxB,wBAiFP"}
@@ -38,14 +38,9 @@ export default async function fuzzyJoin(leftTable, rightTable, leftColumn, right
38
38
  options,
39
39
  },
40
40
  }));
41
- const allProjections = {
42
- ...leftTable.projections,
43
- ...rightTable.projections,
44
- };
45
41
  const outputTable = typeof options.outputTable === "string"
46
- ? leftTable.sdb.newTable(options.outputTable, allProjections)
42
+ ? leftTable.sdb.newTable(options.outputTable)
47
43
  : leftTable;
48
- outputTable.projections = allProjections;
49
44
  // Remove the duplicate right-column produced when leftColumn === rightColumn
50
45
  // (DuckDB suffixes it with _1 in SELECT *)
51
46
  const outputCols = await outputTable.getColumns();
@@ -1 +1 @@
1
- {"version":3,"file":"getGeoData.d.ts","sourceRoot":"","sources":["../../src/methods/getGeoData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,wBAA8B,UAAU,CACtC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;kBA4BtB,MAAM;yBACC,OAAO,EAAE;;;;;;GAgC7B"}
1
+ {"version":3,"file":"getGeoData.d.ts","sourceRoot":"","sources":["../../src/methods/getGeoData.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,UAAU,CACtC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;kBAuBtB,MAAM;yBACC,OAAO,EAAE;;;;;;GAgC7B"}
@@ -1,17 +1,8 @@
1
1
  import rewind from "../helpers/rewind.js";
2
2
  import mergeOptions from "../helpers/mergeOptions.js";
3
3
  import queryDB from "../helpers/queryDB.js";
4
- import shouldFlipBeforeExport from "../helpers/shouldFlipBeforeExport.js";
5
4
  export default async function getGeoData(SimpleTable, column, options = {}) {
6
- let query = "";
7
- if (shouldFlipBeforeExport(SimpleTable.projections[column])) {
8
- query =
9
- `SELECT * EXCLUDE ${column}, ST_AsGeoJSON(ST_FlipCoordinates(${column})) as geoJsonFragment from "${SimpleTable.name}";`;
10
- }
11
- else {
12
- query =
13
- `SELECT * EXCLUDE ${column}, ST_AsGeoJSON(${column}) as geoJsonFragment from "${SimpleTable.name}";`;
14
- }
5
+ const query = `SELECT * EXCLUDE ${column}, ST_AsGeoJSON(${column}) as geoJsonFragment from "${SimpleTable.name}";`;
15
6
  const queryResult = await queryDB(SimpleTable, query, mergeOptions(SimpleTable, {
16
7
  table: null,
17
8
  method: "getGeoData()",
@@ -1 +1 @@
1
- {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/methods/join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,IAAI,CAChC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,wBA4FP"}
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/methods/join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAMvD,wBAA8B,IAAI,CAChC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,WAAW,EACvB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,wBAqFP"}
@@ -46,14 +46,8 @@ export default async function join(leftTable, rightTable, options = {}) {
46
46
  },
47
47
  }));
48
48
  const outputTable = typeof options.outputTable === "string"
49
- ? leftTable.sdb.newTable(options.outputTable, leftTable.projections) // missing projections here...
49
+ ? leftTable.sdb.newTable(options.outputTable)
50
50
  : leftTable;
51
- // So we reassign here
52
- const allProjections = {
53
- ...leftTable.projections,
54
- ...rightTable.projections,
55
- };
56
- outputTable.projections = allProjections;
57
51
  const columns = await outputTable.getColumns();
58
52
  const extraCommonColumns = columns.filter((d) => commonColumn.map((c) => `${c}_1`).includes(d));
59
53
  if (extraCommonColumns.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"joinGeo.d.ts","sourceRoot":"","sources":["../../src/methods/joinGeo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,wBAA8B,OAAO,CACnC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,EACzC,UAAU,EAAE,WAAW,EACvB,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,wBAyGP"}
1
+ {"version":3,"file":"joinGeo.d.ts","sourceRoot":"","sources":["../../src/methods/joinGeo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,wBAA8B,OAAO,CACnC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,EACzC,UAAU,EAAE,WAAW,EACvB,OAAO,GAAE;IACP,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B,wBA4FP"}
@@ -46,31 +46,18 @@ export default async function joinGeo(leftTable, method, rightTable, options = {
46
46
  },
47
47
  }));
48
48
  // We bring back the column names for geometries
49
- let allProjections = {};
50
49
  if (leftTableColumn === rightTableColumn) {
51
50
  const leftObj = {};
52
51
  leftObj[leftTableColumnForQuery] = leftTableColumn;
53
52
  await leftTable.renameColumns(leftObj);
54
- // Before renaming columns in original tables
55
- allProjections = {
56
- ...leftTable.projections,
57
- ...rightTable.projections,
58
- };
59
53
  const rightObj = {};
60
54
  rightObj[rightTableColumnForQuery] = rightTableColumn;
61
55
  await rightTable.renameColumns(rightObj);
62
56
  }
63
- else {
64
- allProjections = {
65
- ...leftTable.projections,
66
- ...rightTable.projections,
67
- };
68
- }
69
57
  if (typeof options.outputTable === "string") {
70
- return leftTable.sdb.newTable(options.outputTable, allProjections);
58
+ return leftTable.sdb.newTable(options.outputTable);
71
59
  }
72
60
  else {
73
- leftTable.projections = allProjections;
74
61
  return leftTable;
75
62
  }
76
63
  }
@@ -38,7 +38,7 @@ export default function joinGeoQuery(leftTable, leftTableColumn, method, rightTa
38
38
  else if (distanceMethod === "spheroid") {
39
39
  // Should be using ST_DWithin_Spheroid but doesn't work?
40
40
  query +=
41
- ` ON ST_Distance_Spheroid("${leftTable}"."${leftTableColumn}", "${rightTable}"."${rightTableColumn}") < ${distance}`;
41
+ ` ON ST_Distance_Spheroid("${leftTable}"."${leftTableColumn}"::GEOMETRY, "${rightTable}"."${rightTableColumn}"::GEOMETRY) < ${distance}`;
42
42
  }
43
43
  else {
44
44
  throw new Error(`Unknown ${distanceMethod}`);
@@ -46,7 +46,7 @@ export default function summarizeQuery(table, types, outputTable, values, catego
46
46
  aggregates[summary] !== "count") {
47
47
  return `\nNULL as '${columns ? columns[i] : summary}'`;
48
48
  }
49
- else if (types[value] === "GEOMETRY") {
49
+ else if (types[value].toLowerCase().includes("geometry")) {
50
50
  return `\nNULL AS '${columns ? columns[i] : summary}'`;
51
51
  }
52
52
  else if (types[value] === "VARCHAR" &&
@@ -6,12 +6,12 @@ export default function writeGeoDataQuery(table, file, fileExtension, options =
6
6
  layerOptions.push(`COORDINATE_PRECISION=${options.precision}`);
7
7
  }
8
8
  layerOptions.push(`RFC7946=YES`);
9
- return `INSTALL spatial; LOAD spatial; COPY "${table}" to '${cleanPath(file)}' WITH (FORMAT GDAL, DRIVER 'GeoJSON'${layerOptions.length > 0
9
+ return `INSTALL spatial; LOAD spatial; SET geometry_always_xy = true; COPY "${table}" to '${cleanPath(file)}' WITH (FORMAT GDAL, DRIVER 'GeoJSON'${layerOptions.length > 0
10
10
  ? `, LAYER_CREATION_OPTIONS ('WRITE_NAME=NO', ${layerOptions.map((d) => `'${d}'`).join(", ")})`
11
11
  : ""})`;
12
12
  }
13
13
  else if (fileExtension === "shp") {
14
- return `INSTALL spatial; LOAD spatial; COPY "${table}" TO '${cleanPath(file)}' WITH (FORMAT GDAL, DRIVER 'ESRI Shapefile', LAYER_CREATION_OPTIONS 'ENCODING=UTF-8')`;
14
+ return `INSTALL spatial; LOAD spatial; SET geometry_always_xy = true; COPY "${table}" TO '${cleanPath(file)}' WITH (FORMAT GDAL, DRIVER 'ESRI Shapefile', LAYER_CREATION_OPTIONS 'ENCODING=UTF-8')`;
15
15
  }
16
16
  else {
17
17
  throw new Error(`Unknown extension ${fileExtension}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nshiab/simple-data-analysis-core",
3
- "version": "0.0.27",
3
+ "version": "0.1.0",
4
4
  "description": "The core functionalities of the simple-data-analysis library, with only one dependency: DuckDB.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,7 +24,7 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@duckdb/node-api": "1.4.4-r.1"
27
+ "@duckdb/node-api": "1.5.3-r.2"
28
28
  },
29
29
  "_generatedBy": "dnt@dev"
30
30
  }
@@ -148,9 +148,7 @@ export default class SimpleDB<Table extends SimpleTable = SimpleTable> extends S
148
148
  * console.log(table.customMethod()); // "hello"
149
149
  * ```
150
150
  */
151
- tableClass: new (name: string, projections: {
152
- [key: string]: string;
153
- }, sdb: SimpleDB, options?: {
151
+ tableClass: new (name: string, sdb: SimpleDB, options?: {
154
152
  debug?: boolean;
155
153
  nbRowsToLog?: number;
156
154
  nbCharactersToLog?: number;
@@ -204,7 +202,6 @@ export default class SimpleDB<Table extends SimpleTable = SimpleTable> extends S
204
202
  * Creates a new SimpleTable instance within the database.
205
203
  *
206
204
  * @param name - The name of the new table. If not provided, a default name is generated (e.g., "table1").
207
- * @param projections - An object mapping column names to their geospatial projections.
208
205
  * @returns A new table instance.
209
206
  * @category Table Management
210
207
  *
@@ -220,9 +217,7 @@ export default class SimpleDB<Table extends SimpleTable = SimpleTable> extends S
220
217
  * const employees = sdb.newTable("employees");
221
218
  * ```
222
219
  */
223
- newTable(name?: string, projections?: {
224
- [key: string]: string;
225
- }): Table;
220
+ newTable(name?: string): Table;
226
221
  /**
227
222
  * Retrieves an existing SimpleTable instance from the database.
228
223
  *
@@ -450,7 +445,7 @@ export default class SimpleDB<Table extends SimpleTable = SimpleTable> extends S
450
445
  *
451
446
  * @param file - The absolute path to the output file (e.g., "./my_exported_database.db").
452
447
  * @param options - Configuration options for writing the database.
453
- * @param options.noMetaData - If `true`, metadata files (projections, indexes) are not created alongside the database file. Defaults to `false`.
448
+ * @param options.noMetaData - If `true`, metadata files (indexes) are not created alongside the database file. Defaults to `false`.
454
449
  * @returns A promise that resolves when the database has been written to the file.
455
450
  * @category File Operations
456
451
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleDB.d.ts","sourceRoot":"","sources":["../../src/class/SimpleDB.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SimpleDB.d.ts","sourceRoot":"","sources":["../../src/class/SimpleDB.ts"],"names":[],"mappings":"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"}