@scrolled/nav-graph 0.1.0-dev.42491aa → 0.1.1-dev.0fe9d51

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/README.md CHANGED
@@ -10,16 +10,21 @@ the design.
10
10
  (`src/ir/`). Branded `NodeId` / `GroupId`, the `TravelEdge` and `Requirement`
11
11
  unions, and a Zod schema that mirrors them.
12
12
  - **DSL** — `defineGraph(...)`, region scopes, and the verb methods (`walk`,
13
- `portalTo`, `npcTo`, `itemTo`, `skillTo`) authors call on node handles
14
- (`src/dsl/`). The requirement constructors (`meso`, `item`, `quest`, `level`)
15
- live here too. The DSL emits `NavGraphSource` — nothing more.
13
+ `transportTo`, `portalTo`, `npcTo`, `itemTo`, `skillTo`) authors call on node
14
+ handles (`src/dsl/`). `walk` and `transportTo` accept a `seconds` travel time;
15
+ `transportTo` models a boarded conveyance (boat/train/carpet) that is instant
16
+ with fast travel and costs its ride time without it. The requirement
17
+ constructors (`meso`, `item`, `quest`, `level`) live here too. The DSL emits
18
+ `NavGraphSource` — nothing more.
16
19
  - **Compiler** — `compileGraph(source)` validates the source with Zod, runs the
17
20
  pre-merge duplicate pass, expands bidirectional edges, and freezes adjacency
18
21
  into a runtime `NavGraph` (`src/compile/`).
19
- - **Pathfinding** — `findPath(graph, from, to, opts?)` is BFS with optional
20
- per-edge eligibility filtering. When filtering disconnects the destination it
21
- returns the best unfiltered path with blocking step indices flagged
22
- (`src/path/`).
22
+ - **Pathfinding** — `findPath(graph, from, to, opts?)` is a least-time Dijkstra:
23
+ `walk` and `transport` edges cost their `seconds` (or a method default), every
24
+ other method is instant, and `opts.fastTravel` waives `transport` time so
25
+ routes prefer boats over long walks. Supports optional per-edge eligibility
26
+ filtering; when filtering disconnects the destination it returns the best
27
+ unfiltered path with blocking step indices flagged (`src/path/`).
23
28
  - **JSON** — `toJSON(graph)` serializes a compiled graph to the portability
24
29
  shape (`src/json/`); `vite-node src/cli/export.ts` runs it from the command
25
30
  line.
@@ -78,6 +83,8 @@ the Actions tab with `dry_run: true`. It uploads the packed tarball as an
78
83
  artifact so you can inspect it before flipping the toggle off.
79
84
 
80
85
  The published tarball contains only `dist/` (compiled JS + .d.ts +
81
- sourcemaps), `LICENSE`, and `README.md`. `publishConfig` in `package.json`
82
- rewrites `main`/`types`/`exports` to point at `dist/` so workspace consumers
83
- inside this monorepo continue to read `src/*.ts` directly.
86
+ sourcemaps), `LICENSE`, and `README.md`. `main`/`types`/`exports` in
87
+ `package.json` point directly at `dist/`; running tests or the export CLI
88
+ inside this monorepo works without consulting the exports field (Vitest and
89
+ the CLI use relative imports), so the dist-only exports don't get in the way
90
+ of source-tree dev.
@@ -14,19 +14,37 @@ export interface EdgeOpts {
14
14
  * - npcTo / itemTo / skillTo default directed → set true for paired transit.
15
15
  */
16
16
  both?: boolean;
17
- /** Reserved for the future weighted-cost model. */
18
- weight?: number;
19
17
  notes?: string;
20
18
  }
19
+ /**
20
+ * Options for a timed edge. Only `walk` and `transport` (boats/trains/carpets)
21
+ * take time, so `seconds` lives here and not on the base `EdgeOpts` — portal /
22
+ * npc / item / skill transitions are instant and the type system rejects a
23
+ * `seconds` on them.
24
+ */
25
+ export interface TimedEdgeOpts extends EdgeOpts {
26
+ /**
27
+ * Estimated travel time, in seconds. On a `transport` edge this is the ride
28
+ * time when the traveller has no fast-travel ticket; with fast travel the ride
29
+ * is instant (see `findPath`). Drives weighted routing.
30
+ */
31
+ seconds?: number;
32
+ }
21
33
  export interface NodeHandle {
22
34
  readonly id: NodeId;
23
- walk(other: NodeHandle, opts?: EdgeOpts): void;
35
+ walk(other: NodeHandle, opts?: TimedEdgeOpts): void;
36
+ /**
37
+ * A boarded conveyance — boat, train, magic carpet. Bidirectional by default
38
+ * (vehicles round-trip). Takes `seconds` unless the route is found with fast
39
+ * travel, which makes every transport hop instant.
40
+ */
41
+ transportTo(other: NodeHandle, opts?: TimedEdgeOpts): void;
24
42
  portalTo(other: NodeHandle, opts?: EdgeOpts): void;
25
43
  npcTo(other: NodeHandle, opts?: EdgeOpts): void;
26
44
  itemTo(other: NodeHandle, opts?: EdgeOpts): void;
27
45
  skillTo(other: NodeHandle, opts?: EdgeOpts): void;
28
- /** Escape hatch when none of the named verbs fit. */
29
- edgeTo(other: NodeHandle, method: TravelMethod, opts?: EdgeOpts): void;
46
+ /** Escape hatch when none of the named verbs fit. `seconds` applies only if method is 'walk' or 'transport'. */
47
+ edgeTo(other: NodeHandle, method: TravelMethod, opts?: TimedEdgeOpts): void;
30
48
  }
31
49
  export interface RegionScope {
32
50
  node(id: string, name: string, opts?: {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,UAAU,EAGV,cAAc,EACd,MAAM,EACN,WAAW,EAEX,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,oEAAoE;IACpE,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClD,qDAAqD;IACrD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,gFAAgF;IAChF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAmMD,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAC5B,cAAc,CAIhB"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,UAAU,EAGV,cAAc,EACd,MAAM,EACN,WAAW,EAEX,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,oEAAoE;IACpE,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACpD;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClD,gHAAgH;IAChH,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC;IACtE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,gFAAgF;IAChF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAqMD,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAC5B,cAAc,CAIhB"}
@@ -9,6 +9,7 @@
9
9
  import { asGroupId, asNodeId } from '../ir/types';
10
10
  const VERB_DEFAULTS = {
11
11
  walk: { method: 'walk', defaultBidirectional: true },
12
+ transportTo: { method: 'transport', defaultBidirectional: true },
12
13
  portalTo: { method: 'portal', defaultBidirectional: true },
13
14
  npcTo: { method: 'npc', defaultBidirectional: false },
14
15
  itemTo: { method: 'item', defaultBidirectional: false },
@@ -86,8 +87,9 @@ class Builder {
86
87
  id,
87
88
  edgeTo: (other, method, opts) => this.pushEdge(id, other.id, { ...opts, method, defaultBidirectional: false }),
88
89
  // The named verbs are populated below — keeps the type explicit while
89
- // avoiding five near-identical method bodies.
90
+ // avoiding six near-identical method bodies.
90
91
  walk: () => undefined,
92
+ transportTo: () => undefined,
91
93
  portalTo: () => undefined,
92
94
  npcTo: () => undefined,
93
95
  itemTo: () => undefined,
@@ -99,7 +101,7 @@ class Builder {
99
101
  return handle;
100
102
  }
101
103
  pushEdge(from, to, opts) {
102
- const { method, defaultBidirectional, both, cost, require, ref, via, weight, notes } = opts;
104
+ const { method, defaultBidirectional, both, cost, require, ref, via, seconds, notes } = opts;
103
105
  const requirements = mergeRequirements(cost, require);
104
106
  const bidirectional = both ?? defaultBidirectional;
105
107
  const edge = {
@@ -110,7 +112,7 @@ class Builder {
110
112
  ...(via !== undefined ? { via } : {}),
111
113
  ...(ref ? { refs: ref } : {}),
112
114
  ...(requirements ? { requirements } : {}),
113
- ...(weight !== undefined ? { weight } : {}),
115
+ ...(seconds !== undefined ? { seconds } : {}),
114
116
  ...(notes !== undefined ? { notes } : {}),
115
117
  };
116
118
  this.edges.push(edge);
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { defineGraph } from './builder';
2
- export type { EdgeOpts, GraphBuilder, NodeHandle, RegionScope } from './builder';
2
+ export type { EdgeOpts, GraphBuilder, NodeHandle, RegionScope, TimedEdgeOpts, } from './builder';
3
3
  export { item, level, meso, quest } from './requirements';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAQxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphs/starter/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,cAyD1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphs/starter/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,cA+D1B,CAAC"}
@@ -7,8 +7,8 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
7
7
  const riverside = r.node('riverside', 'Riverside');
8
8
  const meadow = r.node('meadow', 'Meadow Crossing');
9
9
  const oldFort = r.node('old-fort', 'Old Fort');
10
- riverside.walk(meadow);
11
- meadow.walk(oldFort);
10
+ riverside.walk(meadow, { seconds: 90 });
11
+ meadow.walk(oldFort, { seconds: 120 });
12
12
  riverside.npcTo(oldFort, {
13
13
  via: 'Hire the wagon driver at the inn',
14
14
  cost: meso(500),
@@ -19,7 +19,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
19
19
  g.region('coast', 'Eastern Coast', (r) => {
20
20
  const harbour = r.node('harbour', 'Harbour Town');
21
21
  const lighthouse = r.node('lighthouse', 'Lighthouse Point');
22
- harbour.walk(lighthouse);
22
+ harbour.walk(lighthouse, { seconds: 150 });
23
23
  harbour.skillTo(lighthouse, {
24
24
  via: 'Use the bridge-keeper teleport',
25
25
  cost: meso(100),
@@ -29,6 +29,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
29
29
  const trailhead = r.node('trailhead', 'Trailhead');
30
30
  const summit = r.node('summit', 'Summit Shrine');
31
31
  trailhead.walk(summit, {
32
+ seconds: 300,
32
33
  require: [level(20)],
33
34
  notes: 'Steep climb — recommended past level 20.',
34
35
  });
@@ -50,5 +51,10 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
50
51
  require: [quest(7_001)],
51
52
  ref: { questId: 7_001 },
52
53
  });
54
+ g.ref('harbour').transportTo(g.ref('summit'), {
55
+ via: 'Board the summit ferry',
56
+ seconds: 480,
57
+ notes: 'A long ride — instant with a fast-travel ticket.',
58
+ });
53
59
  });
54
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphs/starter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graphs/starter/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,13 +2,13 @@ export type { AreaNode, EntityRefs, GroupDef, GroupId, NavGraphSource, NodeId, R
2
2
  export { TRAVEL_METHODS, asGroupId, asNodeId } from './ir/types';
3
3
  export { navGraphSourceSchema } from './ir/schema';
4
4
  export { defineGraph } from './dsl/builder';
5
- export type { EdgeOpts, GraphBuilder, NodeHandle, RegionScope, } from './dsl/builder';
5
+ export type { EdgeOpts, GraphBuilder, NodeHandle, RegionScope, TimedEdgeOpts, } from './dsl/builder';
6
6
  export { item, level, meso, quest } from './dsl/requirements';
7
7
  export { compileGraph } from './compile/compileGraph';
8
8
  export type { NavGraph } from './compile/compileGraph';
9
- export { findPath } from './path/findPath';
9
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './path/findPath';
10
10
  export { eligibilityFilter } from './path/eligibility';
11
- export type { FindPathOptions, PathResult, UserCapability, } from './path/index';
11
+ export type { EdgeCostOptions, FindPathOptions, PathResult, UserCapability, } from './path/index';
12
12
  export { toJSON } from './json/toJSON';
13
13
  export type { NavGraphJSON } from './json/toJSON';
14
14
  export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds, } from './graphs/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,YAAY,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,UAAU,EACV,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,YAAY,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ export { item, level, meso, quest } from './dsl/requirements';
12
12
  // Compiler
13
13
  export { compileGraph } from './compile/compileGraph';
14
14
  // Pathfinding
15
- export { findPath } from './path/findPath';
15
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './path/findPath';
16
16
  export { eligibilityFilter } from './path/eligibility';
17
17
  // Portability
18
18
  export { toJSON } from './json/toJSON';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,8DAA8D;AAc9D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,cAAc;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAOvD,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,oFAAoF;AACpF,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,8DAA8D;AAc9D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,cAAc;AACd,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQvD,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,oFAAoF;AACpF,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,YAAY,GACb,MAAM,gBAAgB,CAAC"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import type { GroupId, NodeId, Requirement } from './types';
3
3
  declare const nodeIdSchema: z.ZodEffects<z.ZodString, NodeId, string>;
4
4
  declare const groupIdSchema: z.ZodEffects<z.ZodString, GroupId, string>;
5
- declare const travelMethodSchema: z.ZodEnum<["walk", "portal", "npc", "item", "skill", "other"]>;
5
+ declare const travelMethodSchema: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "other"]>;
6
6
  declare const requirementSchema: z.ZodType<Requirement>;
7
7
  declare const entityRefsSchema: z.ZodObject<{
8
8
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -32,11 +32,11 @@ declare const areaNodeSchema: z.ZodObject<{
32
32
  name: string;
33
33
  group?: string | undefined;
34
34
  }>;
35
- declare const travelEdgeSchema: z.ZodObject<{
35
+ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
36
36
  from: z.ZodEffects<z.ZodString, NodeId, string>;
37
37
  to: z.ZodEffects<z.ZodString, NodeId, string>;
38
38
  bidirectional: z.ZodOptional<z.ZodBoolean>;
39
- method: z.ZodEnum<["walk", "portal", "npc", "item", "skill", "other"]>;
39
+ method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "other"]>;
40
40
  via: z.ZodOptional<z.ZodString>;
41
41
  refs: z.ZodOptional<z.ZodObject<{
42
42
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -52,7 +52,7 @@ declare const travelEdgeSchema: z.ZodObject<{
52
52
  npcId?: number | undefined;
53
53
  }>>;
54
54
  requirements: z.ZodOptional<z.ZodArray<z.ZodType<Requirement, z.ZodTypeDef, Requirement>, "many">>;
55
- weight: z.ZodOptional<z.ZodNumber>;
55
+ seconds: z.ZodOptional<z.ZodNumber>;
56
56
  notes: z.ZodOptional<z.ZodString>;
57
57
  }, "strip", z.ZodTypeAny, {
58
58
  from: string & {
@@ -61,7 +61,7 @@ declare const travelEdgeSchema: z.ZodObject<{
61
61
  to: string & {
62
62
  readonly __brand: "NodeId";
63
63
  };
64
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
64
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
65
65
  bidirectional?: boolean | undefined;
66
66
  via?: string | undefined;
67
67
  refs?: {
@@ -70,12 +70,12 @@ declare const travelEdgeSchema: z.ZodObject<{
70
70
  npcId?: number | undefined;
71
71
  } | undefined;
72
72
  requirements?: Requirement[] | undefined;
73
- weight?: number | undefined;
73
+ seconds?: number | undefined;
74
74
  notes?: string | undefined;
75
75
  }, {
76
76
  from: string;
77
77
  to: string;
78
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
78
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
79
79
  bidirectional?: boolean | undefined;
80
80
  via?: string | undefined;
81
81
  refs?: {
@@ -84,7 +84,39 @@ declare const travelEdgeSchema: z.ZodObject<{
84
84
  npcId?: number | undefined;
85
85
  } | undefined;
86
86
  requirements?: Requirement[] | undefined;
87
- weight?: number | undefined;
87
+ seconds?: number | undefined;
88
+ notes?: string | undefined;
89
+ }>, {
90
+ from: string & {
91
+ readonly __brand: "NodeId";
92
+ };
93
+ to: string & {
94
+ readonly __brand: "NodeId";
95
+ };
96
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
97
+ bidirectional?: boolean | undefined;
98
+ via?: string | undefined;
99
+ refs?: {
100
+ itemId?: number | undefined;
101
+ questId?: number | undefined;
102
+ npcId?: number | undefined;
103
+ } | undefined;
104
+ requirements?: Requirement[] | undefined;
105
+ seconds?: number | undefined;
106
+ notes?: string | undefined;
107
+ }, {
108
+ from: string;
109
+ to: string;
110
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
111
+ bidirectional?: boolean | undefined;
112
+ via?: string | undefined;
113
+ refs?: {
114
+ itemId?: number | undefined;
115
+ questId?: number | undefined;
116
+ npcId?: number | undefined;
117
+ } | undefined;
118
+ requirements?: Requirement[] | undefined;
119
+ seconds?: number | undefined;
88
120
  notes?: string | undefined;
89
121
  }>;
90
122
  declare const groupDefSchema: z.ZodObject<{
@@ -116,11 +148,11 @@ export declare const navGraphSourceSchema: z.ZodObject<{
116
148
  name: string;
117
149
  group?: string | undefined;
118
150
  }>, "many">;
119
- edges: z.ZodArray<z.ZodObject<{
151
+ edges: z.ZodArray<z.ZodEffects<z.ZodObject<{
120
152
  from: z.ZodEffects<z.ZodString, NodeId, string>;
121
153
  to: z.ZodEffects<z.ZodString, NodeId, string>;
122
154
  bidirectional: z.ZodOptional<z.ZodBoolean>;
123
- method: z.ZodEnum<["walk", "portal", "npc", "item", "skill", "other"]>;
155
+ method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "other"]>;
124
156
  via: z.ZodOptional<z.ZodString>;
125
157
  refs: z.ZodOptional<z.ZodObject<{
126
158
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -136,7 +168,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
136
168
  npcId?: number | undefined;
137
169
  }>>;
138
170
  requirements: z.ZodOptional<z.ZodArray<z.ZodType<Requirement, z.ZodTypeDef, Requirement>, "many">>;
139
- weight: z.ZodOptional<z.ZodNumber>;
171
+ seconds: z.ZodOptional<z.ZodNumber>;
140
172
  notes: z.ZodOptional<z.ZodString>;
141
173
  }, "strip", z.ZodTypeAny, {
142
174
  from: string & {
@@ -145,7 +177,39 @@ export declare const navGraphSourceSchema: z.ZodObject<{
145
177
  to: string & {
146
178
  readonly __brand: "NodeId";
147
179
  };
148
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
180
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
181
+ bidirectional?: boolean | undefined;
182
+ via?: string | undefined;
183
+ refs?: {
184
+ itemId?: number | undefined;
185
+ questId?: number | undefined;
186
+ npcId?: number | undefined;
187
+ } | undefined;
188
+ requirements?: Requirement[] | undefined;
189
+ seconds?: number | undefined;
190
+ notes?: string | undefined;
191
+ }, {
192
+ from: string;
193
+ to: string;
194
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
195
+ bidirectional?: boolean | undefined;
196
+ via?: string | undefined;
197
+ refs?: {
198
+ itemId?: number | undefined;
199
+ questId?: number | undefined;
200
+ npcId?: number | undefined;
201
+ } | undefined;
202
+ requirements?: Requirement[] | undefined;
203
+ seconds?: number | undefined;
204
+ notes?: string | undefined;
205
+ }>, {
206
+ from: string & {
207
+ readonly __brand: "NodeId";
208
+ };
209
+ to: string & {
210
+ readonly __brand: "NodeId";
211
+ };
212
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
149
213
  bidirectional?: boolean | undefined;
150
214
  via?: string | undefined;
151
215
  refs?: {
@@ -154,12 +218,12 @@ export declare const navGraphSourceSchema: z.ZodObject<{
154
218
  npcId?: number | undefined;
155
219
  } | undefined;
156
220
  requirements?: Requirement[] | undefined;
157
- weight?: number | undefined;
221
+ seconds?: number | undefined;
158
222
  notes?: string | undefined;
159
223
  }, {
160
224
  from: string;
161
225
  to: string;
162
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
226
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
163
227
  bidirectional?: boolean | undefined;
164
228
  via?: string | undefined;
165
229
  refs?: {
@@ -168,7 +232,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
168
232
  npcId?: number | undefined;
169
233
  } | undefined;
170
234
  requirements?: Requirement[] | undefined;
171
- weight?: number | undefined;
235
+ seconds?: number | undefined;
172
236
  notes?: string | undefined;
173
237
  }>, "many">;
174
238
  groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -199,7 +263,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
199
263
  to: string & {
200
264
  readonly __brand: "NodeId";
201
265
  };
202
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
266
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
203
267
  bidirectional?: boolean | undefined;
204
268
  via?: string | undefined;
205
269
  refs?: {
@@ -208,7 +272,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
208
272
  npcId?: number | undefined;
209
273
  } | undefined;
210
274
  requirements?: Requirement[] | undefined;
211
- weight?: number | undefined;
275
+ seconds?: number | undefined;
212
276
  notes?: string | undefined;
213
277
  }[];
214
278
  groups?: {
@@ -227,7 +291,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
227
291
  edges: {
228
292
  from: string;
229
293
  to: string;
230
- method: "walk" | "portal" | "npc" | "item" | "skill" | "other";
294
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
231
295
  bidirectional?: boolean | undefined;
232
296
  via?: string | undefined;
233
297
  refs?: {
@@ -236,7 +300,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
236
300
  npcId?: number | undefined;
237
301
  } | undefined;
238
302
  requirements?: Requirement[] | undefined;
239
- weight?: number | undefined;
303
+ seconds?: number | undefined;
240
304
  notes?: string | undefined;
241
305
  }[];
242
306
  groups?: {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG5D,QAAA,MAAM,YAAY,2CAIc,CAAC;AAEjC,QAAA,MAAM,aAAa,4CAIc,CAAC;AAElC,QAAA,MAAM,kBAAkB,gEAAyB,CAAC;AAElD,QAAA,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAU5C,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;EAIlB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;EAGlB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG5D,QAAA,MAAM,YAAY,2CAIc,CAAC;AAEjC,QAAA,MAAM,aAAa,4CAIc,CAAC;AAElC,QAAA,MAAM,kBAAkB,6EAAyB,CAAC;AAElD,QAAA,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAU5C,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;EAIlB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBlB,CAAC;AAEL,QAAA,MAAM,cAAc;;;;;;;;;;;EAGlB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC"}
package/dist/ir/schema.js CHANGED
@@ -35,7 +35,8 @@ const areaNodeSchema = z.object({
35
35
  name: z.string().min(1),
36
36
  group: groupIdSchema.optional(),
37
37
  });
38
- const travelEdgeSchema = z.object({
38
+ const travelEdgeSchema = z
39
+ .object({
39
40
  from: nodeIdSchema,
40
41
  to: nodeIdSchema,
41
42
  bidirectional: z.boolean().optional(),
@@ -43,8 +44,19 @@ const travelEdgeSchema = z.object({
43
44
  via: z.string().optional(),
44
45
  refs: entityRefsSchema.optional(),
45
46
  requirements: z.array(requirementSchema).optional(),
46
- weight: z.number().nonnegative().optional(),
47
+ seconds: z.number().positive().optional(),
47
48
  notes: z.string().optional(),
49
+ })
50
+ .superRefine((edge, ctx) => {
51
+ if (edge.seconds !== undefined &&
52
+ edge.method !== 'walk' &&
53
+ edge.method !== 'transport') {
54
+ ctx.addIssue({
55
+ code: z.ZodIssueCode.custom,
56
+ path: ['seconds'],
57
+ message: `seconds is only valid on walk or transport edges; "${edge.method}" transitions are instant.`,
58
+ });
59
+ }
48
60
  });
49
61
  const groupDefSchema = z.object({
50
62
  id: groupIdSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/ir/schema.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export type NodeId = string & {
6
6
  export type GroupId = string & {
7
7
  readonly __brand: 'GroupId';
8
8
  };
9
- export declare const TRAVEL_METHODS: readonly ["walk", "portal", "npc", "item", "skill", "other"];
9
+ export declare const TRAVEL_METHODS: readonly ["walk", "transport", "portal", "npc", "item", "skill", "other"];
10
10
  export type TravelMethod = (typeof TRAVEL_METHODS)[number];
11
11
  export type Requirement = {
12
12
  kind: 'meso';
@@ -43,8 +43,16 @@ export interface TravelEdge {
43
43
  via?: string;
44
44
  refs?: EntityRefs;
45
45
  requirements?: Requirement[];
46
- /** Reserved for the future weighted-cost model; BFS ignores it. */
47
- weight?: number;
46
+ /**
47
+ * Estimated travel time for this edge, in seconds. Valid only on the timed
48
+ * methods — `walk` and `transport` (boats/trains/carpets); every other method
49
+ * is an instant transition and the schema rejects `seconds` on it. Pathfinding
50
+ * minimizes the summed time of a route (Dijkstra). Omit when unknown — untimed
51
+ * timed-edges fall back to their method default, so a graph with no times set
52
+ * still routes sensibly. A `transport` edge's time is waived entirely when the
53
+ * route is found with fast travel enabled (see `findPath`).
54
+ */
55
+ seconds?: number;
48
56
  notes?: string;
49
57
  }
50
58
  export interface GroupDef {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7D,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D,eAAO,MAAM,cAAc,8DAA+D,CAAC;AAC3F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED,oEAAoE;AACpE,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,MAAqB,CAAC;AAC3D,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,OAAuB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAKA,qFAAqF;AACrF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7D,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;CAAE,CAAC;AAE/D,eAAO,MAAM,cAAc,2EAQjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED,oEAAoE;AACpE,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,KAAG,MAAqB,CAAC;AAC3D,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,KAAG,OAAuB,CAAC"}
package/dist/ir/types.js CHANGED
@@ -2,7 +2,15 @@
2
2
  // autocomplete, and compile errors instead of writing JSON or a query language.
3
3
  // The shapes here are the schema the rest of the package operates on; the
4
4
  // runtime mirror lives next door in `schema.ts` (Zod).
5
- export const TRAVEL_METHODS = ['walk', 'portal', 'npc', 'item', 'skill', 'other'];
5
+ export const TRAVEL_METHODS = [
6
+ 'walk',
7
+ 'transport',
8
+ 'portal',
9
+ 'npc',
10
+ 'item',
11
+ 'skill',
12
+ 'other',
13
+ ];
6
14
  /** Helper for narrowing string literals to the branded id types. */
7
15
  export const asNodeId = (s) => s;
8
16
  export const asGroupId = (s) => s;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAQvD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAgD3F,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAW,CAAC;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAY,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ir/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gFAAgF;AAChF,0EAA0E;AAC1E,uDAAuD;AAQvD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM;IACN,WAAW;IACX,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;CACC,CAAC;AAwDX,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAW,CAAC;AAC3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAY,CAAC"}
@@ -1,16 +1,43 @@
1
1
  import type { NavGraph } from '../compile/compileGraph';
2
2
  import type { NodeId, TravelEdge } from '../ir/types';
3
+ /** Assumed travel time, in seconds, for a walk edge that declares no `seconds`. */
4
+ export declare const DEFAULT_WALK_SECONDS = 60;
5
+ /**
6
+ * Assumed ride time, in seconds, for a transport edge that declares no
7
+ * `seconds`. Longer than a walk hop: boarding a boat/train means waiting for it.
8
+ */
9
+ export declare const DEFAULT_TRANSPORT_SECONDS = 300;
10
+ /** Cost inputs that depend on the traveller, not the edge. */
11
+ export interface EdgeCostOptions {
12
+ /** When true, `transport` hops are instant (the player has a fast-travel ticket). */
13
+ fastTravel?: boolean;
14
+ }
15
+ /**
16
+ * Travel time an edge contributes to a route. `walk` always costs time;
17
+ * `transport` costs its ride time unless `fastTravel` waives it; portal / npc /
18
+ * item / skill transitions teleport the player instantly.
19
+ */
20
+ export declare function edgeSeconds(edge: TravelEdge, opts?: EdgeCostOptions): number;
3
21
  export interface PathResult {
4
22
  status: 'found' | 'unreachable' | 'unreachable-when-filtered';
5
23
  steps: TravelEdge[];
24
+ /** Total estimated travel time of `steps`, in seconds. 0 when `steps` empty. */
25
+ totalSeconds: number;
6
26
  fallback?: {
7
27
  steps: TravelEdge[];
28
+ totalSeconds: number;
8
29
  /** Indices into `fallback.steps` whose eligibility predicate failed. */
9
30
  blocked: number[];
10
31
  };
11
32
  }
12
33
  export interface FindPathOptions {
13
34
  eligible?: (edge: TravelEdge) => boolean;
35
+ /**
36
+ * When true, `transport` hops (boats/trains/carpets) are treated as instant —
37
+ * the traveller holds a fast-travel ticket. Affects route *cost*, never
38
+ * *reachability*: transports are always traversable either way.
39
+ */
40
+ fastTravel?: boolean;
14
41
  }
15
42
  export declare function findPath(graph: NavGraph, from: NodeId, to: NodeId, opts?: FindPathOptions): PathResult;
16
43
  //# sourceMappingURL=findPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findPath.d.ts","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,GAAG,aAAa,GAAG,2BAA2B,CAAC;IAC9D,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,wEAAwE;QACxE,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;CAC1C;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,eAAoB,GACzB,UAAU,CAyBZ"}
1
+ {"version":3,"file":"findPath.d.ts","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAShF;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,GAAG,aAAa,GAAG,2BAA2B,CAAC;IAC9D,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,UAAU,EAAE,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,wEAAwE;QACxE,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,eAAoB,GACzB,UAAU,CA+BZ"}
@@ -1,37 +1,74 @@
1
- // MVP pathfinding: fewest-hops BFS over the compiled adjacency.
1
+ // Weighted pathfinding: least-time Dijkstra over the compiled adjacency.
2
+ //
3
+ // Two methods cost time — `walk` and `transport` (boats/trains/carpets). Each
4
+ // costs its declared `seconds`, or its method default when untimed, so a graph
5
+ // with no times set still routes sensibly. Every other method (portal, npc,
6
+ // item, skill) is a teleport-like transition, treated as instant.
7
+ //
8
+ // `transport` time is *conditional*: with fast travel enabled (the player holds
9
+ // a fast-travel ticket), every transport hop is instant, so routes prefer boats
10
+ // over long walks; without it, transports cost their ride time and the router
11
+ // may route around them.
2
12
  //
3
13
  // When an eligibility predicate is supplied:
4
- // 1. Run BFS with the predicate pruning candidate edges.
14
+ // 1. Run Dijkstra with the predicate pruning candidate edges.
5
15
  // 2. If the destination is reachable that way, return `status: 'found'`.
6
- // 3. Otherwise run BFS again *without* the filter. If a path exists, return
7
- // `status: 'unreachable-when-filtered'` with the unfiltered path as
16
+ // 3. Otherwise run Dijkstra again *without* the filter. If a path exists,
17
+ // return `status: 'unreachable-when-filtered'` with the unfiltered path as
8
18
  // `fallback` and the step indices the filter blocked. This is FR7 — the
9
19
  // app never has to surface a blank "no path" state when the graph itself
10
20
  // is connected.
11
- // 4. If the unfiltered BFS also fails, return `status: 'unreachable'`.
21
+ // 4. If the unfiltered search also fails, return `status: 'unreachable'`.
22
+ /** Assumed travel time, in seconds, for a walk edge that declares no `seconds`. */
23
+ export const DEFAULT_WALK_SECONDS = 60;
24
+ /**
25
+ * Assumed ride time, in seconds, for a transport edge that declares no
26
+ * `seconds`. Longer than a walk hop: boarding a boat/train means waiting for it.
27
+ */
28
+ export const DEFAULT_TRANSPORT_SECONDS = 300;
29
+ /**
30
+ * Travel time an edge contributes to a route. `walk` always costs time;
31
+ * `transport` costs its ride time unless `fastTravel` waives it; portal / npc /
32
+ * item / skill transitions teleport the player instantly.
33
+ */
34
+ export function edgeSeconds(edge, opts = {}) {
35
+ switch (edge.method) {
36
+ case 'walk':
37
+ return edge.seconds ?? DEFAULT_WALK_SECONDS;
38
+ case 'transport':
39
+ return opts.fastTravel ? 0 : (edge.seconds ?? DEFAULT_TRANSPORT_SECONDS);
40
+ default:
41
+ return 0;
42
+ }
43
+ }
12
44
  export function findPath(graph, from, to, opts = {}) {
13
45
  assertNodeKnown(graph, from, 'from');
14
46
  assertNodeKnown(graph, to, 'to');
15
47
  if (from === to)
16
- return { status: 'found', steps: [] };
17
- const filtered = opts.eligible ? bfs(graph, from, to, opts.eligible) : null;
18
- if (filtered)
19
- return { status: 'found', steps: filtered };
20
- const unfiltered = bfs(graph, from, to);
48
+ return { status: 'found', steps: [], totalSeconds: 0 };
49
+ const cost = { fastTravel: opts.fastTravel };
50
+ const filtered = opts.eligible
51
+ ? dijkstra(graph, from, to, cost, opts.eligible)
52
+ : null;
53
+ if (filtered) {
54
+ return { status: 'found', steps: filtered.steps, totalSeconds: filtered.totalSeconds };
55
+ }
56
+ const unfiltered = dijkstra(graph, from, to, cost);
21
57
  if (!unfiltered)
22
- return { status: 'unreachable', steps: [] };
58
+ return { status: 'unreachable', steps: [], totalSeconds: 0 };
23
59
  if (!opts.eligible) {
24
- return { status: 'found', steps: unfiltered };
60
+ return { status: 'found', steps: unfiltered.steps, totalSeconds: unfiltered.totalSeconds };
25
61
  }
26
62
  const blocked = [];
27
- unfiltered.forEach((edge, i) => {
63
+ unfiltered.steps.forEach((edge, i) => {
28
64
  if (!opts.eligible(edge))
29
65
  blocked.push(i);
30
66
  });
31
67
  return {
32
68
  status: 'unreachable-when-filtered',
33
69
  steps: [],
34
- fallback: { steps: unfiltered, blocked },
70
+ totalSeconds: 0,
71
+ fallback: { steps: unfiltered.steps, totalSeconds: unfiltered.totalSeconds, blocked },
35
72
  };
36
73
  }
37
74
  function assertNodeKnown(graph, id, label) {
@@ -39,23 +76,31 @@ function assertNodeKnown(graph, id, label) {
39
76
  throw new Error(`findPath ${label} references undeclared node "${id}".`);
40
77
  }
41
78
  }
42
- function bfs(graph, from, to, eligible) {
79
+ function dijkstra(graph, from, to, cost, eligible) {
80
+ const dist = new Map([[from, 0]]);
43
81
  const cameFrom = new Map();
44
- const visited = new Set([from]);
45
- const queue = [from];
46
- while (queue.length > 0) {
47
- const node = queue.shift();
82
+ const settled = new Set();
83
+ const frontier = new MinHeap();
84
+ frontier.push(from, 0);
85
+ while (!frontier.isEmpty()) {
86
+ const node = frontier.pop();
87
+ if (settled.has(node))
88
+ continue; // stale heap entry — already finalized
48
89
  if (node === to)
49
- return reconstruct(cameFrom, from, to);
50
- const out = graph.adjacency.get(node) ?? [];
51
- for (const edge of out) {
90
+ return { steps: reconstruct(cameFrom, from, to), totalSeconds: dist.get(to) };
91
+ settled.add(node);
92
+ const base = dist.get(node);
93
+ for (const edge of graph.adjacency.get(node) ?? []) {
52
94
  if (eligible && !eligible(edge))
53
95
  continue;
54
- if (visited.has(edge.to))
96
+ if (settled.has(edge.to))
55
97
  continue;
56
- visited.add(edge.to);
57
- cameFrom.set(edge.to, edge);
58
- queue.push(edge.to);
98
+ const next = base + edgeSeconds(edge, cost);
99
+ if (next < (dist.get(edge.to) ?? Infinity)) {
100
+ dist.set(edge.to, next);
101
+ cameFrom.set(edge.to, edge);
102
+ frontier.push(edge.to, next);
103
+ }
59
104
  }
60
105
  }
61
106
  return null;
@@ -66,7 +111,7 @@ function reconstruct(cameFrom, from, to) {
66
111
  while (cursor !== from) {
67
112
  const edge = cameFrom.get(cursor);
68
113
  if (!edge) {
69
- // Defensive: BFS only stores cameFrom for reachable nodes, so this
114
+ // Defensive: Dijkstra only stores cameFrom for reachable nodes, so this
70
115
  // branch is unreachable in practice — but typing the lookup demands it.
71
116
  throw new Error(`Path reconstruction broke at "${cursor}".`);
72
117
  }
@@ -75,4 +120,60 @@ function reconstruct(cameFrom, from, to) {
75
120
  }
76
121
  return steps.reverse();
77
122
  }
123
+ // Binary min-heap keyed by tentative distance. Uses lazy deletion — a node can
124
+ // appear more than once and settled entries are skipped on pop.
125
+ class MinHeap {
126
+ nodes = [];
127
+ keys = [];
128
+ isEmpty() {
129
+ return this.nodes.length === 0;
130
+ }
131
+ push(node, key) {
132
+ this.nodes.push(node);
133
+ this.keys.push(key);
134
+ this.bubbleUp(this.nodes.length - 1);
135
+ }
136
+ pop() {
137
+ if (this.nodes.length === 0)
138
+ return undefined;
139
+ const top = this.nodes[0];
140
+ const lastNode = this.nodes.pop();
141
+ const lastKey = this.keys.pop();
142
+ if (this.nodes.length > 0) {
143
+ this.nodes[0] = lastNode;
144
+ this.keys[0] = lastKey;
145
+ this.bubbleDown(0);
146
+ }
147
+ return top;
148
+ }
149
+ bubbleUp(i) {
150
+ while (i > 0) {
151
+ const parent = (i - 1) >> 1;
152
+ if (this.keys[parent] <= this.keys[i])
153
+ break;
154
+ this.swap(i, parent);
155
+ i = parent;
156
+ }
157
+ }
158
+ bubbleDown(i) {
159
+ const n = this.nodes.length;
160
+ for (;;) {
161
+ const left = 2 * i + 1;
162
+ const right = left + 1;
163
+ let smallest = i;
164
+ if (left < n && this.keys[left] < this.keys[smallest])
165
+ smallest = left;
166
+ if (right < n && this.keys[right] < this.keys[smallest])
167
+ smallest = right;
168
+ if (smallest === i)
169
+ break;
170
+ this.swap(i, smallest);
171
+ i = smallest;
172
+ }
173
+ }
174
+ swap(a, b) {
175
+ [this.nodes[a], this.nodes[b]] = [this.nodes[b], this.nodes[a]];
176
+ [this.keys[a], this.keys[b]] = [this.keys[b], this.keys[a]];
177
+ }
178
+ }
78
179
  //# sourceMappingURL=findPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findPath.js","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,6CAA6C;AAC7C,2DAA2D;AAC3D,2EAA2E;AAC3E,8EAA8E;AAC9E,yEAAyE;AACzE,6EAA6E;AAC7E,8EAA8E;AAC9E,qBAAqB;AACrB,yEAAyE;AAmBzE,MAAM,UAAU,QAAQ,CACtB,KAAe,EACf,IAAY,EACZ,EAAU,EACV,OAAwB,EAAE;IAE1B,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAEjC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE1D,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAE7D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAS,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,2BAA2B;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,EAAU,EAAE,KAAoB;IACxE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,gCAAgC,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,GAAG,CACV,KAAe,EACf,IAAY,EACZ,EAAU,EACV,QAAwC;IAExC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAExD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YACvB,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACnC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAClB,QAAiC,EACjC,IAAY,EACZ,EAAU;IAEV,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,OAAO,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,mEAAmE;YACnE,wEAAwE;YACxE,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"findPath.js","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { eligibilityFilter } from './eligibility';
2
2
  export type { UserCapability } from './eligibility';
3
- export { findPath } from './findPath';
4
- export type { FindPathOptions, PathResult } from './findPath';
3
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './findPath';
4
+ export type { EdgeCostOptions, FindPathOptions, PathResult } from './findPath';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/path/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/path/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { eligibilityFilter } from './eligibility';
2
- export { findPath } from './findPath';
2
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './findPath';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/path/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/path/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrolled/nav-graph",
3
- "version": "0.1.0-dev.42491aa",
3
+ "version": "0.1.1-dev.0fe9d51",
4
4
  "type": "module",
5
5
  "description": "Framework-agnostic graph core: IR types + Zod schema, an authoring DSL, a compiler (IR → runtime adjacency), and pathfinding (BFS + eligibility). The engine behind Scrolled Navigator; usable standalone in Node and the browser.",
6
6
  "license": "Apache-2.0",
@@ -29,6 +29,9 @@
29
29
  "README.md",
30
30
  "LICENSE"
31
31
  ],
32
+ "main": "./src/index.ts",
33
+ "module": "./src/index.ts",
34
+ "types": "./src/index.ts",
32
35
  "exports": {
33
36
  ".": "./src/index.ts",
34
37
  "./ir": "./src/ir/index.ts",