@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"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = buildGraphTemporalCostStateSql;
|
|
7
7
|
const quoteIdentifier_js_1 = __importDefault(require("./quoteIdentifier.js"));
|
|
8
8
|
/** Builds keyed best-cost chronological states from an arbitrary start relation. */
|
|
9
|
-
function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, temporal, distanceType, edgeWeight, eventSelections = []) {
|
|
9
|
+
function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, temporal, distanceType, edgeWeight, eventSelections = [], minimize = "weight") {
|
|
10
10
|
const q = quoteIdentifier_js_1.default;
|
|
11
11
|
const relations = prepared.relationNames([
|
|
12
12
|
"graph_starts",
|
|
@@ -35,12 +35,26 @@ function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, tempo
|
|
|
35
35
|
const edgeCost = `${q("edges")}.${q("__weight")}`;
|
|
36
36
|
const bestDistance = `${q("best")}.${q("distance")}`;
|
|
37
37
|
const gap = `${q("settings")}.${q("__gap")}`;
|
|
38
|
-
const
|
|
38
|
+
const candidateSteps = `${q("reached")}.${q("steps")} + 1`;
|
|
39
|
+
// A steps-only bound must not sum reported weights: discarded routes can
|
|
40
|
+
// overflow even when every optimal route's reported total is representable.
|
|
41
|
+
const firstDistance = minimize === "steps" ? "CAST(1 AS BIGINT)" : edgeCost;
|
|
42
|
+
const candidateDistance = minimize === "steps"
|
|
43
|
+
? candidateSteps
|
|
44
|
+
: `CAST(${reachedDistance} + ${edgeCost} AS ${distanceType})`;
|
|
45
|
+
const bestSteps = `${q("best")}.${q("steps")}`;
|
|
46
|
+
const order = (distance, steps) => minimize === "steps"
|
|
47
|
+
? `ROW(${steps}, ${distance})`
|
|
48
|
+
: `ROW(${distance}, ${steps})`;
|
|
49
|
+
const candidateOrder = order(candidateDistance, candidateSteps);
|
|
50
|
+
const selectedDistance = `arg_min(${candidateDistance}, ${candidateOrder})`;
|
|
51
|
+
const selectedSteps = `arg_min(${candidateSteps}, ${candidateOrder})`;
|
|
39
52
|
const resolvedStartsSelect = typeof startsSelect === "string"
|
|
40
53
|
? startsSelect
|
|
41
54
|
: startsSelect(edgesRelation);
|
|
42
|
-
// Only
|
|
43
|
-
//
|
|
55
|
+
// Only states for the same start and physical event can dominate each other.
|
|
56
|
+
// Weight optimization orders by cost then steps; step optimization counts
|
|
57
|
+
// only connections. Strict improvements terminate even zero-cost cycles.
|
|
44
58
|
return {
|
|
45
59
|
costRelation,
|
|
46
60
|
edgesRelation,
|
|
@@ -64,17 +78,17 @@ function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, tempo
|
|
|
64
78
|
${q("start")}, ${q("node")},
|
|
65
79
|
${q("__start_key")}, ${q("__node_key")},
|
|
66
80
|
${q("__event_id")}, ${q("__event_start")}, ${q("__event_end")},
|
|
67
|
-
${q("distance")}
|
|
81
|
+
${q("distance")}, ${q("steps")}
|
|
68
82
|
) USING KEY(${q("__start_key")}, ${q("__event_id")}) AS (
|
|
69
83
|
SELECT ${start}, ${edgeTo}, ${startKey}, ${edgeToKey},
|
|
70
|
-
${eventId}, ${eventStart}, ${eventEnd}, ${
|
|
84
|
+
${eventId}, ${eventStart}, ${eventEnd}, ${firstDistance}, CAST(1 AS BIGINT)
|
|
71
85
|
FROM ${startsRelation} AS ${q("starts")}
|
|
72
86
|
INNER JOIN ${edgesRelation} AS ${q("edges")}
|
|
73
87
|
ON ${startKey} = ${edgeFromKey}
|
|
74
88
|
UNION
|
|
75
89
|
SELECT ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
|
|
76
90
|
${eventId}, ${eventStart}, ${eventEnd},
|
|
77
|
-
|
|
91
|
+
${selectedDistance} AS ${q("distance")}, ${selectedSteps} AS ${q("steps")}
|
|
78
92
|
FROM ${costRelation} AS ${q("reached")}
|
|
79
93
|
INNER JOIN ${edgesRelation} AS ${q("edges")}
|
|
80
94
|
ON ${reachedNodeKey} = ${edgeFromKey}
|
|
@@ -84,9 +98,9 @@ function buildGraphTemporalCostStateSql(prepared, startsSelect, direction, tempo
|
|
|
84
98
|
AND ${eventId} = ${q("best")}.${q("__event_id")}
|
|
85
99
|
WHERE ${temporal.transition("reached", "edges", direction, gap)}
|
|
86
100
|
GROUP BY ${reachedStart}, ${edgeTo}, ${reachedStartKey}, ${edgeToKey},
|
|
87
|
-
${eventId}, ${eventStart}, ${eventEnd}, ${bestDistance}
|
|
101
|
+
${eventId}, ${eventStart}, ${eventEnd}, ${bestDistance}, ${bestSteps}
|
|
88
102
|
HAVING ${bestDistance} IS NULL OR
|
|
89
|
-
|
|
103
|
+
${order(selectedDistance, selectedSteps)} < ${order(bestDistance, bestSteps)}
|
|
90
104
|
)`,
|
|
91
105
|
};
|
|
92
106
|
}
|
|
@@ -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"}
|
|
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = graphRouteResultSchema;
|
|
7
7
|
const validateGraphRouteResultSchema_js_1 = __importDefault(require("./validateGraphRouteResultSchema.js"));
|
|
8
8
|
/** Derives the route result schema while preserving input columns and types. */
|
|
9
|
-
function graphRouteResultSchema(schema, distanceType, method, elapsedTime = false) {
|
|
10
|
-
(0, validateGraphRouteResultSchema_js_1.default)(schema, method, elapsedTime ? ["elapsedTimeMs"] : []);
|
|
9
|
+
function graphRouteResultSchema(schema, distanceType, method, elapsedTime = false, includeTotal = true) {
|
|
10
|
+
(0, validateGraphRouteResultSchema_js_1.default)(schema, method, elapsedTime ? ["elapsedTimeMs"] : [], includeTotal);
|
|
11
11
|
return {
|
|
12
12
|
pathId: "BIGINT",
|
|
13
13
|
step: "BIGINT",
|
|
14
14
|
weight: distanceType,
|
|
15
|
-
total: distanceType,
|
|
15
|
+
...(includeTotal ? { total: distanceType } : {}),
|
|
16
16
|
...(elapsedTime ? { elapsedTimeMs: "DOUBLE" } : {}),
|
|
17
17
|
...schema,
|
|
18
18
|
};
|
|
@@ -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"}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = graphRouteResultSelect;
|
|
7
7
|
const quoteIdentifier_js_1 = __importDefault(require("./quoteIdentifier.js"));
|
|
8
8
|
/** Joins ranked route steps to their original input rows for final output. */
|
|
9
|
-
function graphRouteResultSelect(rankedRelation, input, edgeIdColumn, includeStart = false, elapsedTime = false) {
|
|
9
|
+
function graphRouteResultSelect(rankedRelation, input, edgeIdColumn, includeStart = false, elapsedTime = false, includeTotal = true) {
|
|
10
10
|
const q = quoteIdentifier_js_1.default;
|
|
11
11
|
const routeStep = `${q("unnested")}.${q("route_step")}`;
|
|
12
12
|
const originalEdgeId = `${q("original")}.${q(edgeIdColumn.column)}`;
|
|
@@ -18,7 +18,7 @@ function graphRouteResultSelect(rankedRelation, input, edgeIdColumn, includeStar
|
|
|
18
18
|
return `SELECT ${includeStart ? `${q("ranked")}.${q("start")},\n ` : ""}${q("ranked")}.${q("pathId")},
|
|
19
19
|
CAST(${q("unnested")}.${q("step")} AS BIGINT) AS ${q("step")},
|
|
20
20
|
${routeStep}.${q("weight")} AS ${q("weight")},
|
|
21
|
-
${routeStep}.${q("distance")} AS ${q("total")}
|
|
21
|
+
${includeTotal ? `${routeStep}.${q("distance")} AS ${q("total")},` : ""}
|
|
22
22
|
${elapsedTime
|
|
23
23
|
? `${routeStep}.${q("elapsedTimeMs")} AS ${q("elapsedTimeMs")},`
|
|
24
24
|
: ""}
|
|
@@ -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"}
|
|
@@ -17,8 +17,9 @@ function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
17
17
|
if (!optimize) {
|
|
18
18
|
throw new TypeError(`${method} options.minimize is not supported because this method returns all routes.`);
|
|
19
19
|
}
|
|
20
|
-
if (options.minimize !== "
|
|
21
|
-
|
|
20
|
+
if (options.minimize !== "steps" && options.minimize !== "weight" &&
|
|
21
|
+
options.minimize !== "elapsedTime") {
|
|
22
|
+
throw new TypeError(`${method} options.minimize must be "steps", "weight", or "elapsedTime".`);
|
|
22
23
|
}
|
|
23
24
|
if (options.minimize === "weight" && options.weight === undefined) {
|
|
24
25
|
throw new TypeError(`${method} options.minimize: "weight" requires options.weight.`);
|
|
@@ -29,7 +30,7 @@ function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
29
30
|
}
|
|
30
31
|
if (optimize && elapsedTime && options.weight !== undefined &&
|
|
31
32
|
options.minimize === undefined) {
|
|
32
|
-
throw new TypeError(`${method} when weight and elapsedTime are both enabled, specify options.minimize: "weight" or "elapsedTime".`);
|
|
33
|
+
throw new TypeError(`${method} when weight and elapsedTime are both enabled, specify options.minimize: "steps", "weight", or "elapsedTime".`);
|
|
33
34
|
}
|
|
34
35
|
return {
|
|
35
36
|
elapsedTime,
|
|
@@ -38,6 +39,6 @@ function prepareGraphMetricOptions(options, method, optimize) {
|
|
|
38
39
|
? "weight"
|
|
39
40
|
: elapsedTime
|
|
40
41
|
? "elapsedTime"
|
|
41
|
-
: "
|
|
42
|
+
: "steps"),
|
|
42
43
|
};
|
|
43
44
|
}
|
|
@@ -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"}
|
|
@@ -75,13 +75,13 @@ function prepareGraphRouteEndpoints(start, end, method) {
|
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
/** Validates the columns shared by edge-route methods from queued schema data. */
|
|
78
|
-
function validateGraphRouteInputs(schema, source, target, edgeId, endpoints, weight, method) {
|
|
78
|
+
function validateGraphRouteInputs(schema, source, target, edgeId, endpoints, weight, method, includeTotal = true) {
|
|
79
79
|
const nodes = (0, prepareGraphTraversal_js_1.validateGraphStarts)(schema, source, target, endpoints.values, method);
|
|
80
80
|
const edges = (0, getGraphEdgeIdColumn_js_1.default)(schema, edgeId, method);
|
|
81
81
|
const weightColumn = weight === undefined
|
|
82
82
|
? undefined
|
|
83
83
|
: (0, getGraphWeightColumn_js_1.default)(schema, weight, method);
|
|
84
|
-
(0, validateGraphRouteResultSchema_js_1.default)(schema, method);
|
|
84
|
+
(0, validateGraphRouteResultSchema_js_1.default)(schema, method, [], includeTotal);
|
|
85
85
|
return {
|
|
86
86
|
distanceType: weightColumn?.distanceType ?? "BIGINT",
|
|
87
87
|
edgeIdType: edges.idType,
|
|
@@ -89,8 +89,8 @@ function validateGraphRouteInputs(schema, source, target, edgeId, endpoints, wei
|
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
/** Prepares the typed SQL expressions shared by edge-route enumeration. */
|
|
92
|
-
function prepareGraphRouteSql(input, schema, source, target, edgeId, endpoints, weight, method) {
|
|
93
|
-
(0, validateGraphRouteResultSchema_js_1.default)(schema, method);
|
|
92
|
+
function prepareGraphRouteSql(input, schema, source, target, edgeId, endpoints, weight, method, includeTotal = true) {
|
|
93
|
+
(0, validateGraphRouteResultSchema_js_1.default)(schema, method, [], includeTotal);
|
|
94
94
|
const traversal = (0, prepareGraphTraversal_js_1.default)(input, schema, source, target, endpoints.values, method);
|
|
95
95
|
const edgeIdColumn = (0, getGraphEdgeIdColumn_js_1.default)(schema, edgeId, method);
|
|
96
96
|
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"}
|
|
@@ -8,8 +8,10 @@ const foldIdentifier_js_1 = __importDefault(require("./foldIdentifier.js"));
|
|
|
8
8
|
const quoteIdentifier_js_1 = __importDefault(require("./quoteIdentifier.js"));
|
|
9
9
|
const resultColumns = ["pathId", "step", "weight", "total"];
|
|
10
10
|
/** Validates that route result columns do not replace original input columns. */
|
|
11
|
-
function validateGraphRouteResultSchema(schema, method, additionalResultColumns = []) {
|
|
11
|
+
function validateGraphRouteResultSchema(schema, method, additionalResultColumns = [], includeTotal = true) {
|
|
12
12
|
for (const resultColumn of [...resultColumns, ...additionalResultColumns]) {
|
|
13
|
+
if (resultColumn === "total" && !includeTotal)
|
|
14
|
+
continue;
|
|
13
15
|
const folded = (0, foldIdentifier_js_1.default)(resultColumn);
|
|
14
16
|
const inputColumn = Object.keys(schema).find((column) => (0, foldIdentifier_js_1.default)(column) === folded);
|
|
15
17
|
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"}
|