@nshiab/simple-data-analysis-core 2.1.7 → 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/class/SimpleTable.d.ts +187 -104
- package/esm/class/SimpleTable.d.ts.map +1 -1
- package/esm/class/SimpleTable.js +185 -102
- package/esm/helpers/buildGraphTemporalCostStateSql.d.ts +1 -1
- package/esm/helpers/buildGraphTemporalCostStateSql.d.ts.map +1 -1
- package/esm/helpers/buildGraphTemporalCostStateSql.js +23 -9
- package/esm/helpers/graphRouteResultSchema.d.ts +1 -1
- package/esm/helpers/graphRouteResultSchema.d.ts.map +1 -1
- package/esm/helpers/graphRouteResultSchema.js +3 -3
- package/esm/helpers/graphRouteResultSelect.d.ts +1 -1
- package/esm/helpers/graphRouteResultSelect.d.ts.map +1 -1
- package/esm/helpers/graphRouteResultSelect.js +2 -2
- package/esm/helpers/prepareGraphMetricOptions.d.ts +2 -2
- package/esm/helpers/prepareGraphMetricOptions.d.ts.map +1 -1
- package/esm/helpers/prepareGraphMetricOptions.js +5 -4
- package/esm/helpers/prepareGraphRouteSql.d.ts +2 -2
- package/esm/helpers/prepareGraphRouteSql.d.ts.map +1 -1
- package/esm/helpers/prepareGraphRouteSql.js +4 -4
- package/esm/helpers/validateGraphRouteResultSchema.d.ts +1 -1
- package/esm/helpers/validateGraphRouteResultSchema.d.ts.map +1 -1
- package/esm/helpers/validateGraphRouteResultSchema.js +3 -1
- package/esm/methods/distances.d.ts +1 -1
- package/esm/methods/distances.d.ts.map +1 -1
- package/esm/methods/distances.js +235 -73
- package/esm/methods/shortestPath.d.ts +1 -1
- package/esm/methods/shortestPath.d.ts.map +1 -1
- package/esm/methods/shortestPath.js +44 -28
- package/llm.md +207 -112
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/script/class/SimpleTable.d.ts +187 -104
- package/script/class/SimpleTable.d.ts.map +1 -1
- package/script/class/SimpleTable.js +185 -102
- package/script/helpers/buildGraphTemporalCostStateSql.d.ts +1 -1
- package/script/helpers/buildGraphTemporalCostStateSql.d.ts.map +1 -1
- package/script/helpers/buildGraphTemporalCostStateSql.js +23 -9
- package/script/helpers/graphRouteResultSchema.d.ts +1 -1
- package/script/helpers/graphRouteResultSchema.d.ts.map +1 -1
- package/script/helpers/graphRouteResultSchema.js +3 -3
- package/script/helpers/graphRouteResultSelect.d.ts +1 -1
- package/script/helpers/graphRouteResultSelect.d.ts.map +1 -1
- package/script/helpers/graphRouteResultSelect.js +2 -2
- package/script/helpers/prepareGraphMetricOptions.d.ts +2 -2
- package/script/helpers/prepareGraphMetricOptions.d.ts.map +1 -1
- package/script/helpers/prepareGraphMetricOptions.js +5 -4
- package/script/helpers/prepareGraphRouteSql.d.ts +2 -2
- package/script/helpers/prepareGraphRouteSql.d.ts.map +1 -1
- package/script/helpers/prepareGraphRouteSql.js +4 -4
- package/script/helpers/validateGraphRouteResultSchema.d.ts +1 -1
- package/script/helpers/validateGraphRouteResultSchema.d.ts.map +1 -1
- package/script/helpers/validateGraphRouteResultSchema.js +3 -1
- package/script/methods/distances.d.ts +1 -1
- package/script/methods/distances.d.ts.map +1 -1
- package/script/methods/distances.js +235 -73
- package/script/methods/shortestPath.d.ts +1 -1
- package/script/methods/shortestPath.d.ts.map +1 -1
- package/script/methods/shortestPath.js +44 -28
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGraphTemporalCostStateSql.d.ts","sourceRoot":"","sources":["../../src/helpers/buildGraphTemporalCostStateSql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,KAAK,MAAM,CAAC,EAC/D,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,wBAAwB,EAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,GAAE,MAAM,EAAO,
|
|
1
|
+
{"version":3,"file":"buildGraphTemporalCostStateSql.d.ts","sourceRoot":"","sources":["../../src/helpers/buildGraphTemporalCostStateSql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,QAAQ,EAAE,gBAAgB,EAC1B,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,kBAAkB,EAAE,MAAM,KAAK,MAAM,CAAC,EAC/D,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAC1C,QAAQ,EAAE,wBAAwB,EAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,GAAE,MAAM,EAAO,EAC9B,QAAQ,GAAE,QAAQ,GAAG,OAAkB,GACtC,yBAAyB,CAyG3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import quoteIdentifier from "./quoteIdentifier.js";
|
|
2
2
|
/** Builds keyed best-cost chronological states from an arbitrary start relation. */
|
|
3
|
-
export default function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, temporal, distanceType, edgeWeight, eventSelections = []) {
|
|
3
|
+
export default function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, temporal, distanceType, edgeWeight, eventSelections = [], minimize = "weight") {
|
|
4
4
|
const q = quoteIdentifier;
|
|
5
5
|
const relations = prepared.relationNames([
|
|
6
6
|
"graph_starts",
|
|
@@ -29,12 +29,26 @@ export default function buildGraphTemporalCostStateSql(prepared, startsSelect, d
|
|
|
29
29
|
const edgeCost = `${q("edges")}.${q("__weight")}`;
|
|
30
30
|
const bestDistance = `${q("best")}.${q("distance")}`;
|
|
31
31
|
const gap = `${q("settings")}.${q("__gap")}`;
|
|
32
|
-
const
|
|
32
|
+
const candidateSteps = `${q("reached")}.${q("steps")} + 1`;
|
|
33
|
+
// A steps-only bound must not sum reported weights: discarded routes can
|
|
34
|
+
// overflow even when every optimal route's reported total is representable.
|
|
35
|
+
const firstDistance = minimize === "steps" ? "CAST(1 AS BIGINT)" : edgeCost;
|
|
36
|
+
const candidateDistance = minimize === "steps"
|
|
37
|
+
? candidateSteps
|
|
38
|
+
: `CAST(${reachedDistance} + ${edgeCost} AS ${distanceType})`;
|
|
39
|
+
const bestSteps = `${q("best")}.${q("steps")}`;
|
|
40
|
+
const order = (distance, steps) => minimize === "steps"
|
|
41
|
+
? `ROW(${steps}, ${distance})`
|
|
42
|
+
: `ROW(${distance}, ${steps})`;
|
|
43
|
+
const candidateOrder = order(candidateDistance, candidateSteps);
|
|
44
|
+
const selectedDistance = `arg_min(${candidateDistance}, ${candidateOrder})`;
|
|
45
|
+
const selectedSteps = `arg_min(${candidateSteps}, ${candidateOrder})`;
|
|
33
46
|
const resolvedStartsSelect = typeof startsSelect === "string"
|
|
34
47
|
? startsSelect
|
|
35
48
|
: startsSelect(edgesRelation);
|
|
36
|
-
// Only
|
|
37
|
-
//
|
|
49
|
+
// Only states for the same start and physical event can dominate each other.
|
|
50
|
+
// Weight optimization orders by cost then steps; step optimization counts
|
|
51
|
+
// only connections. Strict improvements terminate even zero-cost cycles.
|
|
38
52
|
return {
|
|
39
53
|
costRelation,
|
|
40
54
|
edgesRelation,
|
|
@@ -58,17 +72,17 @@ export default function buildGraphTemporalCostStateSql(prepared, startsSelect, d
|
|
|
58
72
|
${q("start")}, ${q("node")},
|
|
59
73
|
${q("__start_key")}, ${q("__node_key")},
|
|
60
74
|
${q("__event_id")}, ${q("__event_start")}, ${q("__event_end")},
|
|
61
|
-
${q("distance")}
|
|
75
|
+
${q("distance")}, ${q("steps")}
|
|
62
76
|
) USING KEY(${q("__start_key")}, ${q("__event_id")}) AS (
|
|
63
77
|
SELECT ${start}, ${edgeTo}, ${startKey}, ${edgeToKey},
|
|
64
|
-
${eventId}, ${eventStart}, ${eventEnd}, ${
|
|
78
|
+
${eventId}, ${eventStart}, ${eventEnd}, ${firstDistance}, CAST(1 AS BIGINT)
|
|
65
79
|
FROM ${startsRelation} AS ${q("starts")}
|
|
66
80
|
INNER JOIN ${edgesRelation} AS ${q("edges")}
|
|
67
81
|
ON ${startKey} = ${edgeFromKey}
|
|
68
82
|
UNION
|
|
69
83
|
SELECT ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
|
|
70
84
|
${eventId}, ${eventStart}, ${eventEnd},
|
|
71
|
-
|
|
85
|
+
${selectedDistance} AS ${q("distance")}, ${selectedSteps} AS ${q("steps")}
|
|
72
86
|
FROM ${costRelation} AS ${q("reached")}
|
|
73
87
|
INNER JOIN ${edgesRelation} AS ${q("edges")}
|
|
74
88
|
ON ${reachedNodeKey} = ${edgeFromKey}
|
|
@@ -78,9 +92,9 @@ export default function buildGraphTemporalCostStateSql(prepared, startsSelect, d
|
|
|
78
92
|
AND ${eventId} = ${q("best")}.${q("__event_id")}
|
|
79
93
|
WHERE ${temporal.transition("reached", "edges", direction, gap)}
|
|
80
94
|
GROUP BY ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
|
|
81
|
-
${eventId}, ${eventStart}, ${eventEnd}, ${bestDistance}
|
|
95
|
+
${eventId}, ${eventStart}, ${eventEnd}, ${bestDistance}, ${bestSteps}
|
|
82
96
|
HAVING ${bestDistance} IS NULL OR
|
|
83
|
-
|
|
97
|
+
${order(selectedDistance, selectedSteps)} < ${order(bestDistance, bestSteps)}
|
|
84
98
|
)`,
|
|
85
99
|
};
|
|
86
100
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TableSchema } from "./pendingOps.js";
|
|
2
2
|
/** Derives the route result schema while preserving input columns and types. */
|
|
3
|
-
export default function graphRouteResultSchema(schema: TableSchema, distanceType: string, method: string, elapsedTime?: boolean): TableSchema;
|
|
3
|
+
export default function graphRouteResultSchema(schema: TableSchema, distanceType: string, method: string, elapsedTime?: boolean, includeTotal?: boolean): TableSchema;
|
|
4
4
|
//# sourceMappingURL=graphRouteResultSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphRouteResultSchema.d.ts","sourceRoot":"","sources":["../../src/helpers/graphRouteResultSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,gFAAgF;AAChF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,UAAQ,GAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"graphRouteResultSchema.d.ts","sourceRoot":"","sources":["../../src/helpers/graphRouteResultSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,gFAAgF;AAChF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,UAAQ,EACnB,YAAY,UAAO,GAClB,WAAW,CAeb"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import validateGraphRouteResultSchema from "./validateGraphRouteResultSchema.js";
|
|
2
2
|
/** Derives the route result schema while preserving input columns and types. */
|
|
3
|
-
export default function graphRouteResultSchema(schema, distanceType, method, elapsedTime = false) {
|
|
4
|
-
validateGraphRouteResultSchema(schema, method, elapsedTime ? ["elapsedTimeMs"] : []);
|
|
3
|
+
export default function graphRouteResultSchema(schema, distanceType, method, elapsedTime = false, includeTotal = true) {
|
|
4
|
+
validateGraphRouteResultSchema(schema, method, elapsedTime ? ["elapsedTimeMs"] : [], includeTotal);
|
|
5
5
|
return {
|
|
6
6
|
pathId: "BIGINT",
|
|
7
7
|
step: "BIGINT",
|
|
8
8
|
weight: distanceType,
|
|
9
|
-
total: distanceType,
|
|
9
|
+
...(includeTotal ? { total: distanceType } : {}),
|
|
10
10
|
...(elapsedTime ? { elapsedTimeMs: "DOUBLE" } : {}),
|
|
11
11
|
...schema,
|
|
12
12
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { GraphEdgeIdColumn } from "./getGraphEdgeIdColumn.js";
|
|
2
2
|
/** Joins ranked route steps to their original input rows for final output. */
|
|
3
|
-
export default function graphRouteResultSelect(rankedRelation: string, input: string, edgeIdColumn: GraphEdgeIdColumn, includeStart?: boolean, elapsedTime?: boolean): string;
|
|
3
|
+
export default function graphRouteResultSelect(rankedRelation: string, input: string, edgeIdColumn: GraphEdgeIdColumn, includeStart?: boolean, elapsedTime?: boolean, includeTotal?: boolean): string;
|
|
4
4
|
//# sourceMappingURL=graphRouteResultSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphRouteResultSelect.d.ts","sourceRoot":"","sources":["../../src/helpers/graphRouteResultSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,8EAA8E;AAC9E,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,iBAAiB,EAC/B,YAAY,UAAQ,EACpB,WAAW,UAAQ,GAClB,MAAM,CA8BR"}
|
|
1
|
+
{"version":3,"file":"graphRouteResultSelect.d.ts","sourceRoot":"","sources":["../../src/helpers/graphRouteResultSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,8EAA8E;AAC9E,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAC5C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,iBAAiB,EAC/B,YAAY,UAAQ,EACpB,WAAW,UAAQ,EACnB,YAAY,UAAO,GAClB,MAAM,CA8BR"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import quoteIdentifier from "./quoteIdentifier.js";
|
|
2
2
|
/** Joins ranked route steps to their original input rows for final output. */
|
|
3
|
-
export default function graphRouteResultSelect(rankedRelation, input, edgeIdColumn, includeStart = false, elapsedTime = false) {
|
|
3
|
+
export default function graphRouteResultSelect(rankedRelation, input, edgeIdColumn, includeStart = false, elapsedTime = false, includeTotal = true) {
|
|
4
4
|
const q = quoteIdentifier;
|
|
5
5
|
const routeStep = `${q("unnested")}.${q("route_step")}`;
|
|
6
6
|
const originalEdgeId = `${q("original")}.${q(edgeIdColumn.column)}`;
|
|
@@ -12,7 +12,7 @@ export default function graphRouteResultSelect(rankedRelation, input, edgeIdColu
|
|
|
12
12
|
return `SELECT ${includeStart ? `${q("ranked")}.${q("start")},\n ` : ""}${q("ranked")}.${q("pathId")},
|
|
13
13
|
CAST(${q("unnested")}.${q("step")} AS BIGINT) AS ${q("step")},
|
|
14
14
|
${routeStep}.${q("weight")} AS ${q("weight")},
|
|
15
|
-
${routeStep}.${q("distance")} AS ${q("total")}
|
|
15
|
+
${includeTotal ? `${routeStep}.${q("distance")} AS ${q("total")},` : ""}
|
|
16
16
|
${elapsedTime
|
|
17
17
|
? `${routeStep}.${q("elapsedTimeMs")} AS ${q("elapsedTimeMs")},`
|
|
18
18
|
: ""}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export type GraphMetricOptions = {
|
|
2
2
|
elapsedTime?: boolean;
|
|
3
|
-
minimize?: "weight" | "elapsedTime";
|
|
3
|
+
minimize?: "steps" | "weight" | "elapsedTime";
|
|
4
4
|
weight?: string;
|
|
5
5
|
startTimeColumn?: string;
|
|
6
6
|
endTimeColumn?: string;
|
|
7
7
|
};
|
|
8
8
|
export type PreparedGraphMetricOptions = {
|
|
9
9
|
elapsedTime: boolean;
|
|
10
|
-
minimize: "
|
|
10
|
+
minimize: "steps" | "weight" | "elapsedTime";
|
|
11
11
|
};
|
|
12
12
|
/** Resolves graph cost selection separately from optional elapsed-time reporting. */
|
|
13
13
|
export default function prepareGraphMetricOptions(options: GraphMetricOptions, method: string, optimize: boolean): PreparedGraphMetricOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareGraphMetricOptions.d.ts","sourceRoot":"","sources":["../../src/helpers/prepareGraphMetricOptions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"prepareGraphMetricOptions.d.ts","sourceRoot":"","sources":["../../src/helpers/prepareGraphMetricOptions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;CAC9C,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAChB,0BAA0B,CA2D5B"}
|
|
@@ -14,8 +14,9 @@ export default function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
14
14
|
if (!optimize) {
|
|
15
15
|
throw new TypeError(`${method} options.minimize is not supported because this method returns all routes.`);
|
|
16
16
|
}
|
|
17
|
-
if (options.minimize !== "
|
|
18
|
-
|
|
17
|
+
if (options.minimize !== "steps" && options.minimize !== "weight" &&
|
|
18
|
+
options.minimize !== "elapsedTime") {
|
|
19
|
+
throw new TypeError(`${method} options.minimize must be "steps", "weight", or "elapsedTime".`);
|
|
19
20
|
}
|
|
20
21
|
if (options.minimize === "weight" && options.weight === undefined) {
|
|
21
22
|
throw new TypeError(`${method} options.minimize: "weight" requires options.weight.`);
|
|
@@ -26,7 +27,7 @@ export default function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
26
27
|
}
|
|
27
28
|
if (optimize && elapsedTime && options.weight !== undefined &&
|
|
28
29
|
options.minimize === undefined) {
|
|
29
|
-
throw new TypeError(`${method} when weight and elapsedTime are both enabled, specify options.minimize: "weight" or "elapsedTime".`);
|
|
30
|
+
throw new TypeError(`${method} when weight and elapsedTime are both enabled, specify options.minimize: "steps", "weight", or "elapsedTime".`);
|
|
30
31
|
}
|
|
31
32
|
return {
|
|
32
33
|
elapsedTime,
|
|
@@ -35,6 +36,6 @@ export default function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
35
36
|
? "weight"
|
|
36
37
|
: elapsedTime
|
|
37
38
|
? "elapsedTime"
|
|
38
|
-
: "
|
|
39
|
+
: "steps"),
|
|
39
40
|
};
|
|
40
41
|
}
|
|
@@ -8,13 +8,13 @@ export type PreparedGraphRouteEndpoints = {
|
|
|
8
8
|
/** Prepares and validates the two scalar endpoints shared by route methods. */
|
|
9
9
|
export declare function prepareGraphRouteEndpoints(start: GraphId, end: GraphId, method: string): PreparedGraphRouteEndpoints;
|
|
10
10
|
/** Validates the columns shared by edge-route methods from queued schema data. */
|
|
11
|
-
export declare function validateGraphRouteInputs(schema: TableSchema, source: string, target: string, edgeId: string, endpoints: PreparedGraphRouteEndpoints, weight: string | undefined, method: string): {
|
|
11
|
+
export declare function validateGraphRouteInputs(schema: TableSchema, source: string, target: string, edgeId: string, endpoints: PreparedGraphRouteEndpoints, weight: string | undefined, method: string, includeTotal?: boolean): {
|
|
12
12
|
distanceType: string;
|
|
13
13
|
edgeIdType: string;
|
|
14
14
|
nodeIdType: string;
|
|
15
15
|
};
|
|
16
16
|
/** Prepares the typed SQL expressions shared by edge-route enumeration. */
|
|
17
|
-
export declare function prepareGraphRouteSql(input: string, schema: TableSchema, source: string, target: string, edgeId: string, endpoints: PreparedGraphRouteEndpoints, weight: string | undefined, method: string): {
|
|
17
|
+
export declare function prepareGraphRouteSql(input: string, schema: TableSchema, source: string, target: string, edgeId: string, endpoints: PreparedGraphRouteEndpoints, weight: string | undefined, method: string, includeTotal?: boolean): {
|
|
18
18
|
distanceType: string;
|
|
19
19
|
edgeIdColumn: import("./getGraphEdgeIdColumn.js").GraphEdgeIdColumn;
|
|
20
20
|
edgeKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareGraphRouteSql.d.ts","sourceRoot":"","sources":["../../src/helpers/prepareGraphRouteSql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAA2B,EACzB,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,MAAM,2BAA2B,GAAG;IACxC,GAAG,EAAE,mBAAmB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,GACb,2BAA2B,CA+B7B;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,2BAA2B,EACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM;;;;
|
|
1
|
+
{"version":3,"file":"prepareGraphRouteSql.d.ts","sourceRoot":"","sources":["../../src/helpers/prepareGraphRouteSql.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAA2B,EACzB,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,MAAM,2BAA2B,GAAG;IACxC,GAAG,EAAE,mBAAmB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,GACb,2BAA2B,CA+B7B;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,2BAA2B,EACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,UAAO;;;;EAmBpB;AAED,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,2BAA2B,EACtC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,UAAO;;;;;;;;;;;;;EAkDpB"}
|
|
@@ -34,13 +34,13 @@ export function prepareGraphRouteEndpoints(start, end, method) {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
/** Validates the columns shared by edge-route methods from queued schema data. */
|
|
37
|
-
export function validateGraphRouteInputs(schema, source, target, edgeId, endpoints, weight, method) {
|
|
37
|
+
export function validateGraphRouteInputs(schema, source, target, edgeId, endpoints, weight, method, includeTotal = true) {
|
|
38
38
|
const nodes = validateGraphStarts(schema, source, target, endpoints.values, method);
|
|
39
39
|
const edges = getGraphEdgeIdColumn(schema, edgeId, method);
|
|
40
40
|
const weightColumn = weight === undefined
|
|
41
41
|
? undefined
|
|
42
42
|
: getGraphWeightColumn(schema, weight, method);
|
|
43
|
-
validateGraphRouteResultSchema(schema, method);
|
|
43
|
+
validateGraphRouteResultSchema(schema, method, [], includeTotal);
|
|
44
44
|
return {
|
|
45
45
|
distanceType: weightColumn?.distanceType ?? "BIGINT",
|
|
46
46
|
edgeIdType: edges.idType,
|
|
@@ -48,8 +48,8 @@ export function validateGraphRouteInputs(schema, source, target, edgeId, endpoin
|
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
/** Prepares the typed SQL expressions shared by edge-route enumeration. */
|
|
51
|
-
export function prepareGraphRouteSql(input, schema, source, target, edgeId, endpoints, weight, method) {
|
|
52
|
-
validateGraphRouteResultSchema(schema, method);
|
|
51
|
+
export function prepareGraphRouteSql(input, schema, source, target, edgeId, endpoints, weight, method, includeTotal = true) {
|
|
52
|
+
validateGraphRouteResultSchema(schema, method, [], includeTotal);
|
|
53
53
|
const traversal = prepareGraphTraversal(input, schema, source, target, endpoints.values, method);
|
|
54
54
|
const edgeIdColumn = getGraphEdgeIdColumn(schema, edgeId, method);
|
|
55
55
|
const weightColumn = weight === undefined
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TableSchema } from "./pendingOps.js";
|
|
2
2
|
/** Validates that route result columns do not replace original input columns. */
|
|
3
|
-
export default function validateGraphRouteResultSchema(schema: TableSchema, method: string, additionalResultColumns?: readonly string[]): void;
|
|
3
|
+
export default function validateGraphRouteResultSchema(schema: TableSchema, method: string, additionalResultColumns?: readonly string[], includeTotal?: boolean): void;
|
|
4
4
|
//# sourceMappingURL=validateGraphRouteResultSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateGraphRouteResultSchema.d.ts","sourceRoot":"","sources":["../../src/helpers/validateGraphRouteResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,iFAAiF;AACjF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,uBAAuB,GAAE,SAAS,MAAM,EAAO,
|
|
1
|
+
{"version":3,"file":"validateGraphRouteResultSchema.d.ts","sourceRoot":"","sources":["../../src/helpers/validateGraphRouteResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD,iFAAiF;AACjF,MAAM,CAAC,OAAO,UAAU,8BAA8B,CACpD,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,uBAAuB,GAAE,SAAS,MAAM,EAAO,EAC/C,YAAY,UAAO,GAClB,IAAI,CAmBN"}
|
|
@@ -2,8 +2,10 @@ import foldIdentifier from "./foldIdentifier.js";
|
|
|
2
2
|
import quoteIdentifier from "./quoteIdentifier.js";
|
|
3
3
|
const resultColumns = ["pathId", "step", "weight", "total"];
|
|
4
4
|
/** Validates that route result columns do not replace original input columns. */
|
|
5
|
-
export default function validateGraphRouteResultSchema(schema, method, additionalResultColumns = []) {
|
|
5
|
+
export default function validateGraphRouteResultSchema(schema, method, additionalResultColumns = [], includeTotal = true) {
|
|
6
6
|
for (const resultColumn of [...resultColumns, ...additionalResultColumns]) {
|
|
7
|
+
if (resultColumn === "total" && !includeTotal)
|
|
8
|
+
continue;
|
|
7
9
|
const folded = foldIdentifier(resultColumn);
|
|
8
10
|
const inputColumn = Object.keys(schema).find((column) => foldIdentifier(column) === folded);
|
|
9
11
|
if (inputColumn !== undefined) {
|
|
@@ -7,7 +7,7 @@ type DistancesOptions = GraphTemporalOptions & {
|
|
|
7
7
|
outputTable?: string | boolean;
|
|
8
8
|
weight?: string;
|
|
9
9
|
elapsedTime?: boolean;
|
|
10
|
-
minimize?: "weight" | "elapsedTime";
|
|
10
|
+
minimize?: "steps" | "weight" | "elapsedTime";
|
|
11
11
|
};
|
|
12
12
|
export default function distances(simpleTable: SimpleTable, sourceColumn: string, targetColumn: string, startNodes: GraphId | GraphId[], options?: DistancesOptions): SimpleTable;
|
|
13
13
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distances.d.ts","sourceRoot":"","sources":["../../src/methods/distances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,OAAgC,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAC/C,OAA2B,EACzB,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAA8B,EAC5B,KAAK,cAAc,EAEpB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,gBAAgB,GAAG,oBAAoB,GAAG;IAC7C,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"distances.d.ts","sourceRoot":"","sources":["../../src/methods/distances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,yBAAyB,CAAC;AAOvD,OAAgC,EAC9B,KAAK,oBAAoB,EAG1B,MAAM,uCAAuC,CAAC;AAC/C,OAA2B,EACzB,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAA8B,EAC5B,KAAK,cAAc,EAEpB,MAAM,qCAAqC,CAAC;AAK7C,KAAK,gBAAgB,GAAG,oBAAoB,GAAG;IAC7C,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;CAC/C,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,OAAO,GAAG,OAAO,EAAE,EAC/B,OAAO,GAAE,gBAAqB,GAC7B,WAAW,CA+Gb"}
|