@scrolled/nav-graph 0.1.1-dev.0fe9d51 → 0.1.1-dev.2a1f128

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/compile/compileGraph.d.ts.map +1 -1
  2. package/dist/compile/compileGraph.js +23 -0
  3. package/dist/compile/compileGraph.js.map +1 -1
  4. package/dist/dsl/builder.d.ts +18 -3
  5. package/dist/dsl/builder.d.ts.map +1 -1
  6. package/dist/dsl/builder.js +22 -2
  7. package/dist/dsl/builder.js.map +1 -1
  8. package/dist/dsl/index.d.ts +1 -1
  9. package/dist/dsl/index.d.ts.map +1 -1
  10. package/dist/dsl/index.js.map +1 -1
  11. package/dist/dsl/requirements.d.ts +2 -1
  12. package/dist/dsl/requirements.d.ts.map +1 -1
  13. package/dist/dsl/requirements.js +10 -2
  14. package/dist/dsl/requirements.js.map +1 -1
  15. package/dist/graphs/starter/index.d.ts.map +1 -1
  16. package/dist/graphs/starter/index.js +7 -4
  17. package/dist/graphs/starter/index.js.map +1 -1
  18. package/dist/index.d.ts +4 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/ir/schema.d.ts +45 -25
  23. package/dist/ir/schema.d.ts.map +1 -1
  24. package/dist/ir/schema.js +9 -4
  25. package/dist/ir/schema.js.map +1 -1
  26. package/dist/ir/types.d.ts +19 -1
  27. package/dist/ir/types.d.ts.map +1 -1
  28. package/dist/ir/types.js +1 -0
  29. package/dist/ir/types.js.map +1 -1
  30. package/dist/path/findPath.d.ts +6 -0
  31. package/dist/path/findPath.d.ts.map +1 -1
  32. package/dist/path/findPath.js +10 -3
  33. package/dist/path/findPath.js.map +1 -1
  34. package/dist/path/index.d.ts +3 -1
  35. package/dist/path/index.d.ts.map +1 -1
  36. package/dist/path/index.js +2 -1
  37. package/dist/path/index.js.map +1 -1
  38. package/dist/path/unlockables.d.ts +36 -0
  39. package/dist/path/unlockables.d.ts.map +1 -0
  40. package/dist/path/unlockables.js +62 -0
  41. package/dist/path/unlockables.js.map +1 -0
  42. package/package.json +26 -35
@@ -1 +1 @@
1
- {"version":3,"file":"compileGraph.d.ts","sourceRoot":"","sources":["../../src/compile/compileGraph.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,MAAM,EACN,UAAU,EACX,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;CAChE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAc7D"}
1
+ {"version":3,"file":"compileGraph.d.ts","sourceRoot":"","sources":["../../src/compile/compileGraph.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,cAAc,EACd,MAAM,EACN,UAAU,EACX,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;CAChE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAe7D"}
@@ -14,6 +14,7 @@ export function compileGraph(source) {
14
14
  validateNodes(parsed.nodes);
15
15
  validateGroups(parsed);
16
16
  validateEdgeEndpoints(parsed);
17
+ validateNearestTowns(parsed);
17
18
  const nodes = new Map(parsed.nodes.map((n) => [n.id, n]));
18
19
  const groups = new Map((parsed.groups ?? []).map((g) => [g.id, g]));
19
20
  const adjacency = buildAdjacency(parsed.nodes, parsed.edges);
@@ -71,6 +72,14 @@ function validateEdgeEndpoints(source) {
71
72
  throw new Error(`Edge endpoint(s) reference undeclared nodes: ${[...missing].join(', ')}.`);
72
73
  }
73
74
  }
75
+ function validateNearestTowns(source) {
76
+ const known = new Set(source.nodes.map((n) => n.id));
77
+ for (const node of source.nodes) {
78
+ if (node.nearestTown && !known.has(node.nearestTown)) {
79
+ throw new Error(`Node "${node.id}" has nearestTown "${node.nearestTown}", which is not a declared node.`);
80
+ }
81
+ }
82
+ }
74
83
  function buildAdjacency(nodes, edges) {
75
84
  const adj = new Map();
76
85
  for (const node of nodes)
@@ -85,6 +94,20 @@ function buildAdjacency(nodes, edges) {
85
94
  adj.get(edge.to).push({ ...edge, from: edge.to, to: edge.from });
86
95
  }
87
96
  }
97
+ // Synthesize a one-way "return scroll" edge from each node to its nearest
98
+ // town. These live only in the adjacency (not source.edges), so they don't
99
+ // clutter the rendered graph; pathfinding gates them behind the traveller's
100
+ // nearestTownScroll option. Self-targets (the default) yield no edge.
101
+ for (const node of nodes) {
102
+ if (!node.nearestTown || node.nearestTown === node.id)
103
+ continue;
104
+ adj.get(node.id).push({
105
+ from: node.id,
106
+ to: node.nearestTown,
107
+ method: 'scroll',
108
+ via: 'Return to nearest town',
109
+ });
110
+ }
88
111
  for (const [id, list] of adj)
89
112
  adj.set(id, Object.freeze(list));
90
113
  return adj;
@@ -1 +1 @@
1
- {"version":3,"file":"compileGraph.js","sourceRoot":"","sources":["../../src/compile/compileGraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compileGraph.js","sourceRoot":"","sources":["../../src/compile/compileGraph.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,11 @@ export interface EdgeOpts {
15
15
  */
16
16
  both?: boolean;
17
17
  notes?: string;
18
+ /**
19
+ * Hide this edge from the default map (pathfinding is unaffected; it still
20
+ * draws when it's on the computed route). For noisy or rarely-taken links.
21
+ */
22
+ minor?: boolean;
18
23
  }
19
24
  /**
20
25
  * Options for a timed edge. Only `walk` and `transport` (boats/trains/carpets)
@@ -46,10 +51,20 @@ export interface NodeHandle {
46
51
  /** Escape hatch when none of the named verbs fit. `seconds` applies only if method is 'walk' or 'transport'. */
47
52
  edgeTo(other: NodeHandle, method: TravelMethod, opts?: TimedEdgeOpts): void;
48
53
  }
54
+ export interface NodeOpts {
55
+ group?: string;
56
+ /**
57
+ * Where a "return to nearest town" scroll sends you from this node. Defaults
58
+ * to the node itself (scroll is a no-op); set it when the scroll routes
59
+ * elsewhere, e.g. a dungeon whose scroll drops you at its hub town. Pass the
60
+ * town's `NodeHandle` (its id is inferred) or its id string as a fallback —
61
+ * handy for forward references. Resolved at build(); the target need not be
62
+ * declared yet.
63
+ */
64
+ nearestTown?: NodeHandle | string;
65
+ }
49
66
  export interface RegionScope {
50
- node(id: string, name: string, opts?: {
51
- group?: string;
52
- }): NodeHandle;
67
+ node(id: string, name: string, opts?: NodeOpts): NodeHandle;
53
68
  region(id: string, name: string, fn: (r: RegionScope) => void): void;
54
69
  }
55
70
  export interface GraphBuilder extends RegionScope {
@@ -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,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"}
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;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;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,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5D,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;AA8ND,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3B,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAC5B,cAAc,CAIhB"}
@@ -37,8 +37,18 @@ class Builder {
37
37
  const group = opts?.group
38
38
  ? asGroupId(opts.group)
39
39
  : (this.groupStack[this.groupStack.length - 1] ?? undefined);
40
+ const nearestTown = opts?.nearestTown === undefined
41
+ ? undefined
42
+ : typeof opts.nearestTown === 'string'
43
+ ? asNodeId(opts.nearestTown)
44
+ : opts.nearestTown.id;
40
45
  const decl = {
41
- node: { id: nodeId, name, ...(group ? { group } : {}) },
46
+ node: {
47
+ id: nodeId,
48
+ name,
49
+ ...(group ? { group } : {}),
50
+ ...(nearestTown ? { nearestTown } : {}),
51
+ },
42
52
  declarationIndex: this.nodeDecls.length,
43
53
  };
44
54
  this.nodeDecls.push(decl);
@@ -73,6 +83,7 @@ class Builder {
73
83
  this.validateNodes();
74
84
  this.validateGroupRefs();
75
85
  this.validateEdgeEndpoints();
86
+ this.validateNearestTowns();
76
87
  const groups = [...this.groups.values()];
77
88
  return {
78
89
  profileId: this.profileId,
@@ -101,7 +112,7 @@ class Builder {
101
112
  return handle;
102
113
  }
103
114
  pushEdge(from, to, opts) {
104
- const { method, defaultBidirectional, both, cost, require, ref, via, seconds, notes } = opts;
115
+ const { method, defaultBidirectional, both, cost, require, ref, via, seconds, notes, minor } = opts;
105
116
  const requirements = mergeRequirements(cost, require);
106
117
  const bidirectional = both ?? defaultBidirectional;
107
118
  const edge = {
@@ -114,6 +125,7 @@ class Builder {
114
125
  ...(requirements ? { requirements } : {}),
115
126
  ...(seconds !== undefined ? { seconds } : {}),
116
127
  ...(notes !== undefined ? { notes } : {}),
128
+ ...(minor ? { minor: true } : {}),
117
129
  };
118
130
  this.edges.push(edge);
119
131
  }
@@ -160,6 +172,14 @@ class Builder {
160
172
  `Either declare the node with g.node(...) or remove the edge.`);
161
173
  }
162
174
  }
175
+ validateNearestTowns() {
176
+ const declared = new Set(this.nodeDecls.map((d) => d.node.id));
177
+ for (const { node } of this.nodeDecls) {
178
+ if (node.nearestTown && !declared.has(node.nearestTown)) {
179
+ throw new Error(`Node "${node.id}" has nearestTown "${node.nearestTown}", which is not a declared node.`);
180
+ }
181
+ }
182
+ }
163
183
  }
164
184
  function mergeRequirements(cost, require) {
165
185
  if (!cost && !require)
@@ -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, TimedEdgeOpts, } from './builder';
2
+ export type { EdgeOpts, GraphBuilder, NodeHandle, NodeOpts, 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,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
+ {"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,QAAQ,EACR,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;AAQxC,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;AASxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -3,7 +3,8 @@ export declare const meso: (amount: number) => Requirement;
3
3
  export declare const item: (itemId: number, opts?: {
4
4
  consumed?: boolean;
5
5
  quantity?: number;
6
+ name?: string;
6
7
  }) => Requirement;
7
- export declare const quest: (questId: number) => Requirement;
8
+ export declare const quest: (questId: number, name?: string) => Requirement;
8
9
  export declare const level: (min: number) => Requirement;
9
10
  //# sourceMappingURL=requirements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/dsl/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,WAAyC,CAAC;AAEhF,eAAO,MAAM,IAAI,GACf,QAAQ,MAAM,EACd,OAAO;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KAC/C,WAKD,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,KAAG,WAA2C,CAAC;AAEpF,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,WAAuC,CAAC"}
1
+ {"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/dsl/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,WAAyC,CAAC;AAEhF,eAAO,MAAM,IAAI,GACf,QAAQ,MAAM,EACd,OAAO;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9D,WAMD,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,WAIrD,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,WAAuC,CAAC"}
@@ -1,12 +1,20 @@
1
1
  // Authoring sugar so a requirement list reads like prose:
2
- // require: [item(4031746, { consumed: true }), level(30)]
2
+ // require: [item(4031746, { consumed: true, name: 'Warp Rock' }), level(30)]
3
+ //
4
+ // `name` on item/quest is the label the UI shows in place of the raw id; omit
5
+ // it and the UI falls back to "item #<id>" / "quest #<id>".
3
6
  export const meso = (amount) => ({ kind: 'meso', amount });
4
7
  export const item = (itemId, opts) => ({
5
8
  kind: 'item',
6
9
  itemId,
7
10
  consumed: opts?.consumed ?? false,
8
11
  ...(opts?.quantity != null ? { quantity: opts.quantity } : {}),
12
+ ...(opts?.name != null ? { name: opts.name } : {}),
13
+ });
14
+ export const quest = (questId, name) => ({
15
+ kind: 'quest',
16
+ questId,
17
+ ...(name != null ? { name } : {}),
9
18
  });
10
- export const quest = (questId) => ({ kind: 'quest', questId });
11
19
  export const level = (min) => ({ kind: 'level', min });
12
20
  //# sourceMappingURL=requirements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/dsl/requirements.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,4DAA4D;AAE5D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAc,EACd,IAAgD,EACnC,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM;IACZ,MAAM;IACN,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,KAAK;IACjC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/dsl/requirements.ts"],"names":[],"mappings":"AAEA,0DAA0D;AAC1D,+EAA+E;AAC/E,EAAE;AACF,8EAA8E;AAC9E,4DAA4D;AAE5D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAc,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,MAAc,EACd,IAA+D,EAClD,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM;IACZ,MAAM;IACN,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,KAAK;IACjC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,IAAa,EAAe,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,OAAO;IACb,OAAO;IACP,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,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,cA+D1B,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+DzB,CAAC"}
@@ -18,7 +18,9 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
18
18
  });
19
19
  g.region('coast', 'Eastern Coast', (r) => {
20
20
  const harbour = r.node('harbour', 'Harbour Town');
21
- const lighthouse = r.node('lighthouse', 'Lighthouse Point');
21
+ const lighthouse = r.node('lighthouse', 'Lighthouse Point', {
22
+ nearestTown: harbour,
23
+ });
22
24
  harbour.walk(lighthouse, { seconds: 150 });
23
25
  harbour.skillTo(lighthouse, {
24
26
  via: 'Use the bridge-keeper teleport',
@@ -27,7 +29,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
27
29
  });
28
30
  g.region('mountain', 'Mountain Pass', (r) => {
29
31
  const trailhead = r.node('trailhead', 'Trailhead');
30
- const summit = r.node('summit', 'Summit Shrine');
32
+ const summit = r.node('summit', 'Summit Shrine', { nearestTown: 'riverside' });
31
33
  trailhead.walk(summit, {
32
34
  seconds: 300,
33
35
  require: [level(20)],
@@ -39,7 +41,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
39
41
  });
40
42
  g.ref('harbour').itemTo(g.ref('lighthouse'), {
41
43
  via: 'Use a Lighthouse Pass at the dock',
42
- require: [item(2_000_001, { consumed: true })],
44
+ require: [item(2_000_001, { consumed: true, name: 'Lighthouse Pass' })],
43
45
  });
44
46
  g.ref('harbour').npcTo(g.ref('trailhead'), {
45
47
  via: 'Take the mountain coach',
@@ -48,13 +50,14 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
48
50
  });
49
51
  g.ref('old-fort').npcTo(g.ref('summit'), {
50
52
  via: 'Speak to the surveyor (after completing the survey)',
51
- require: [quest(7_001)],
53
+ require: [quest(7_001, 'Summit Survey')],
52
54
  ref: { questId: 7_001 },
53
55
  });
54
56
  g.ref('harbour').transportTo(g.ref('summit'), {
55
57
  via: 'Board the summit ferry',
56
58
  seconds: 480,
57
59
  notes: 'A long ride — instant with a fast-travel ticket.',
60
+ minor: true,
58
61
  });
59
62
  });
60
63
  //# 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":"AAAA,0EAA0E;AAC1E,yEAAyE;AAEzE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,CAAC,MAAM,YAAY,GAAmB,WAAW,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3F,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE;QACzC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE/C,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE;YACvB,GAAG,EAAE,kCAAkC;YACvC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;YACf,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YACzB,KAAK,EAAE,sCAAsC;SAC9C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,EAAE;YAC1D,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1B,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QAE/E,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;YACrB,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpB,KAAK,EAAE,0CAA0C;SAClD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC5C,GAAG,EAAE,0BAA0B;KAChC,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;QAC3C,GAAG,EAAE,mCAAmC;QACxC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;KACxE,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QACzC,GAAG,EAAE,yBAAyB;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAChB,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;KAC1B,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QACvC,GAAG,EAAE,qDAAqD;QAC1D,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACxC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KACxB,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC5C,GAAG,EAAE,wBAAwB;QAC7B,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,kDAAkD;QACzD,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,14 +2,15 @@ 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, TimedEdgeOpts, } from './dsl/builder';
5
+ export type { EdgeOpts, GraphBuilder, NodeHandle, NodeOpts, 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
9
  export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './path/findPath';
10
10
  export { eligibilityFilter } from './path/eligibility';
11
- export type { EdgeCostOptions, FindPathOptions, PathResult, UserCapability, } from './path/index';
11
+ export { collectUnlockables, isUnlockable, lockedRequirementsFilter, requirementEntityId, requirementKey, } from './path/unlockables';
12
+ export type { EdgeCostOptions, FindPathOptions, PathResult, UnlockableEntry, UnlockableKind, UnlockableRequirement, UserCapability, } from './path/index';
12
13
  export { toJSON } from './json/toJSON';
13
14
  export type { NavGraphJSON } from './json/toJSON';
14
- export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds, } from './graphs/index';
15
+ export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds } from './graphs/index';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -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,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"}
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,QAAQ,EACR,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,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,eAAe,EACf,UAAU,EACV,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -14,8 +14,9 @@ export { compileGraph } from './compile/compileGraph';
14
14
  // Pathfinding
15
15
  export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './path/findPath';
16
16
  export { eligibilityFilter } from './path/eligibility';
17
+ export { collectUnlockables, isUnlockable, lockedRequirementsFilter, requirementEntityId, requirementKey, } from './path/unlockables';
17
18
  // Portability
18
19
  export { toJSON } from './json/toJSON';
19
20
  // Authored graphs registry (per-profile NavGraphSources). See src/graphs/README.md.
20
- export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds, } from './graphs/index';
21
+ export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds } from './graphs/index';
21
22
  //# sourceMappingURL=index.js.map
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;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"}
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;AAS5C,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;AACvD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAW5B,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,oFAAoF;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,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", "transport", "portal", "npc", "item", "skill", "other"]>;
5
+ declare const travelMethodSchema: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "scroll", "other"]>;
6
6
  declare const requirementSchema: z.ZodType<Requirement>;
7
7
  declare const entityRefsSchema: z.ZodObject<{
8
8
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -21,22 +21,25 @@ declare const areaNodeSchema: z.ZodObject<{
21
21
  id: z.ZodEffects<z.ZodString, NodeId, string>;
22
22
  name: z.ZodString;
23
23
  group: z.ZodOptional<z.ZodEffects<z.ZodString, GroupId, string>>;
24
+ nearestTown: z.ZodOptional<z.ZodEffects<z.ZodString, NodeId, string>>;
24
25
  }, "strip", z.ZodTypeAny, {
26
+ name: string;
25
27
  id: string & {
26
28
  readonly __brand: "NodeId";
27
29
  };
28
- name: string;
29
30
  group?: GroupId | undefined;
31
+ nearestTown?: NodeId | undefined;
30
32
  }, {
31
- id: string;
32
33
  name: string;
34
+ id: string;
33
35
  group?: string | undefined;
36
+ nearestTown?: string | undefined;
34
37
  }>;
35
38
  declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
36
39
  from: z.ZodEffects<z.ZodString, NodeId, string>;
37
40
  to: z.ZodEffects<z.ZodString, NodeId, string>;
38
41
  bidirectional: z.ZodOptional<z.ZodBoolean>;
39
- method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "other"]>;
42
+ method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "scroll", "other"]>;
40
43
  via: z.ZodOptional<z.ZodString>;
41
44
  refs: z.ZodOptional<z.ZodObject<{
42
45
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -54,6 +57,7 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
54
57
  requirements: z.ZodOptional<z.ZodArray<z.ZodType<Requirement, z.ZodTypeDef, Requirement>, "many">>;
55
58
  seconds: z.ZodOptional<z.ZodNumber>;
56
59
  notes: z.ZodOptional<z.ZodString>;
60
+ minor: z.ZodOptional<z.ZodBoolean>;
57
61
  }, "strip", z.ZodTypeAny, {
58
62
  from: string & {
59
63
  readonly __brand: "NodeId";
@@ -61,7 +65,7 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
61
65
  to: string & {
62
66
  readonly __brand: "NodeId";
63
67
  };
64
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
68
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
65
69
  bidirectional?: boolean | undefined;
66
70
  via?: string | undefined;
67
71
  refs?: {
@@ -72,10 +76,11 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
72
76
  requirements?: Requirement[] | undefined;
73
77
  seconds?: number | undefined;
74
78
  notes?: string | undefined;
79
+ minor?: boolean | undefined;
75
80
  }, {
76
81
  from: string;
77
82
  to: string;
78
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
83
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
79
84
  bidirectional?: boolean | undefined;
80
85
  via?: string | undefined;
81
86
  refs?: {
@@ -86,6 +91,7 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
86
91
  requirements?: Requirement[] | undefined;
87
92
  seconds?: number | undefined;
88
93
  notes?: string | undefined;
94
+ minor?: boolean | undefined;
89
95
  }>, {
90
96
  from: string & {
91
97
  readonly __brand: "NodeId";
@@ -93,7 +99,7 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
93
99
  to: string & {
94
100
  readonly __brand: "NodeId";
95
101
  };
96
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
102
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
97
103
  bidirectional?: boolean | undefined;
98
104
  via?: string | undefined;
99
105
  refs?: {
@@ -104,10 +110,11 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
104
110
  requirements?: Requirement[] | undefined;
105
111
  seconds?: number | undefined;
106
112
  notes?: string | undefined;
113
+ minor?: boolean | undefined;
107
114
  }, {
108
115
  from: string;
109
116
  to: string;
110
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
117
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
111
118
  bidirectional?: boolean | undefined;
112
119
  via?: string | undefined;
113
120
  refs?: {
@@ -118,18 +125,19 @@ declare const travelEdgeSchema: z.ZodEffects<z.ZodObject<{
118
125
  requirements?: Requirement[] | undefined;
119
126
  seconds?: number | undefined;
120
127
  notes?: string | undefined;
128
+ minor?: boolean | undefined;
121
129
  }>;
122
130
  declare const groupDefSchema: z.ZodObject<{
123
131
  id: z.ZodEffects<z.ZodString, GroupId, string>;
124
132
  name: z.ZodString;
125
133
  }, "strip", z.ZodTypeAny, {
134
+ name: string;
126
135
  id: string & {
127
136
  readonly __brand: "GroupId";
128
137
  };
129
- name: string;
130
138
  }, {
131
- id: string;
132
139
  name: string;
140
+ id: string;
133
141
  }>;
134
142
  export declare const navGraphSourceSchema: z.ZodObject<{
135
143
  profileId: z.ZodString;
@@ -137,22 +145,25 @@ export declare const navGraphSourceSchema: z.ZodObject<{
137
145
  id: z.ZodEffects<z.ZodString, NodeId, string>;
138
146
  name: z.ZodString;
139
147
  group: z.ZodOptional<z.ZodEffects<z.ZodString, GroupId, string>>;
148
+ nearestTown: z.ZodOptional<z.ZodEffects<z.ZodString, NodeId, string>>;
140
149
  }, "strip", z.ZodTypeAny, {
150
+ name: string;
141
151
  id: string & {
142
152
  readonly __brand: "NodeId";
143
153
  };
144
- name: string;
145
154
  group?: GroupId | undefined;
155
+ nearestTown?: NodeId | undefined;
146
156
  }, {
147
- id: string;
148
157
  name: string;
158
+ id: string;
149
159
  group?: string | undefined;
160
+ nearestTown?: string | undefined;
150
161
  }>, "many">;
151
162
  edges: z.ZodArray<z.ZodEffects<z.ZodObject<{
152
163
  from: z.ZodEffects<z.ZodString, NodeId, string>;
153
164
  to: z.ZodEffects<z.ZodString, NodeId, string>;
154
165
  bidirectional: z.ZodOptional<z.ZodBoolean>;
155
- method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "other"]>;
166
+ method: z.ZodEnum<["walk", "transport", "portal", "npc", "item", "skill", "scroll", "other"]>;
156
167
  via: z.ZodOptional<z.ZodString>;
157
168
  refs: z.ZodOptional<z.ZodObject<{
158
169
  itemId: z.ZodOptional<z.ZodNumber>;
@@ -170,6 +181,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
170
181
  requirements: z.ZodOptional<z.ZodArray<z.ZodType<Requirement, z.ZodTypeDef, Requirement>, "many">>;
171
182
  seconds: z.ZodOptional<z.ZodNumber>;
172
183
  notes: z.ZodOptional<z.ZodString>;
184
+ minor: z.ZodOptional<z.ZodBoolean>;
173
185
  }, "strip", z.ZodTypeAny, {
174
186
  from: string & {
175
187
  readonly __brand: "NodeId";
@@ -177,7 +189,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
177
189
  to: string & {
178
190
  readonly __brand: "NodeId";
179
191
  };
180
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
192
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
181
193
  bidirectional?: boolean | undefined;
182
194
  via?: string | undefined;
183
195
  refs?: {
@@ -188,10 +200,11 @@ export declare const navGraphSourceSchema: z.ZodObject<{
188
200
  requirements?: Requirement[] | undefined;
189
201
  seconds?: number | undefined;
190
202
  notes?: string | undefined;
203
+ minor?: boolean | undefined;
191
204
  }, {
192
205
  from: string;
193
206
  to: string;
194
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
207
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
195
208
  bidirectional?: boolean | undefined;
196
209
  via?: string | undefined;
197
210
  refs?: {
@@ -202,6 +215,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
202
215
  requirements?: Requirement[] | undefined;
203
216
  seconds?: number | undefined;
204
217
  notes?: string | undefined;
218
+ minor?: boolean | undefined;
205
219
  }>, {
206
220
  from: string & {
207
221
  readonly __brand: "NodeId";
@@ -209,7 +223,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
209
223
  to: string & {
210
224
  readonly __brand: "NodeId";
211
225
  };
212
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
226
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
213
227
  bidirectional?: boolean | undefined;
214
228
  via?: string | undefined;
215
229
  refs?: {
@@ -220,10 +234,11 @@ export declare const navGraphSourceSchema: z.ZodObject<{
220
234
  requirements?: Requirement[] | undefined;
221
235
  seconds?: number | undefined;
222
236
  notes?: string | undefined;
237
+ minor?: boolean | undefined;
223
238
  }, {
224
239
  from: string;
225
240
  to: string;
226
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
241
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
227
242
  bidirectional?: boolean | undefined;
228
243
  via?: string | undefined;
229
244
  refs?: {
@@ -234,27 +249,29 @@ export declare const navGraphSourceSchema: z.ZodObject<{
234
249
  requirements?: Requirement[] | undefined;
235
250
  seconds?: number | undefined;
236
251
  notes?: string | undefined;
252
+ minor?: boolean | undefined;
237
253
  }>, "many">;
238
254
  groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
239
255
  id: z.ZodEffects<z.ZodString, GroupId, string>;
240
256
  name: z.ZodString;
241
257
  }, "strip", z.ZodTypeAny, {
258
+ name: string;
242
259
  id: string & {
243
260
  readonly __brand: "GroupId";
244
261
  };
245
- name: string;
246
262
  }, {
247
- id: string;
248
263
  name: string;
264
+ id: string;
249
265
  }>, "many">>;
250
266
  }, "strip", z.ZodTypeAny, {
251
267
  profileId: string;
252
268
  nodes: {
269
+ name: string;
253
270
  id: string & {
254
271
  readonly __brand: "NodeId";
255
272
  };
256
- name: string;
257
273
  group?: GroupId | undefined;
274
+ nearestTown?: NodeId | undefined;
258
275
  }[];
259
276
  edges: {
260
277
  from: string & {
@@ -263,7 +280,7 @@ export declare const navGraphSourceSchema: z.ZodObject<{
263
280
  to: string & {
264
281
  readonly __brand: "NodeId";
265
282
  };
266
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
283
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
267
284
  bidirectional?: boolean | undefined;
268
285
  via?: string | undefined;
269
286
  refs?: {
@@ -274,24 +291,26 @@ export declare const navGraphSourceSchema: z.ZodObject<{
274
291
  requirements?: Requirement[] | undefined;
275
292
  seconds?: number | undefined;
276
293
  notes?: string | undefined;
294
+ minor?: boolean | undefined;
277
295
  }[];
278
296
  groups?: {
297
+ name: string;
279
298
  id: string & {
280
299
  readonly __brand: "GroupId";
281
300
  };
282
- name: string;
283
301
  }[] | undefined;
284
302
  }, {
285
303
  profileId: string;
286
304
  nodes: {
287
- id: string;
288
305
  name: string;
306
+ id: string;
289
307
  group?: string | undefined;
308
+ nearestTown?: string | undefined;
290
309
  }[];
291
310
  edges: {
292
311
  from: string;
293
312
  to: string;
294
- method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "other";
313
+ method: "walk" | "transport" | "portal" | "npc" | "item" | "skill" | "scroll" | "other";
295
314
  bidirectional?: boolean | undefined;
296
315
  via?: string | undefined;
297
316
  refs?: {
@@ -302,10 +321,11 @@ export declare const navGraphSourceSchema: z.ZodObject<{
302
321
  requirements?: Requirement[] | undefined;
303
322
  seconds?: number | undefined;
304
323
  notes?: string | undefined;
324
+ minor?: boolean | undefined;
305
325
  }[];
306
326
  groups?: {
307
- id: string;
308
327
  name: string;
328
+ id: string;
309
329
  }[] | undefined;
310
330
  }>;
311
331
  export { areaNodeSchema, entityRefsSchema, groupDefSchema, groupIdSchema, nodeIdSchema, requirementSchema, travelEdgeSchema, travelMethodSchema, };
@@ -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,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"}
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,uFAAyB,CAAC;AAElD,QAAA,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAe5C,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;EAKlB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBlB,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
@@ -21,8 +21,13 @@ const requirementSchema = z.discriminatedUnion('kind', [
21
21
  itemId: z.number().int().positive(),
22
22
  consumed: z.boolean(),
23
23
  quantity: z.number().int().positive().optional(),
24
+ name: z.string().min(1).optional(),
25
+ }),
26
+ z.object({
27
+ kind: z.literal('quest'),
28
+ questId: z.number().int().positive(),
29
+ name: z.string().min(1).optional(),
24
30
  }),
25
- z.object({ kind: z.literal('quest'), questId: z.number().int().positive() }),
26
31
  z.object({ kind: z.literal('level'), min: z.number().int().min(1).max(300) }),
27
32
  ]);
28
33
  const entityRefsSchema = z.object({
@@ -34,6 +39,7 @@ const areaNodeSchema = z.object({
34
39
  id: nodeIdSchema,
35
40
  name: z.string().min(1),
36
41
  group: groupIdSchema.optional(),
42
+ nearestTown: nodeIdSchema.optional(),
37
43
  });
38
44
  const travelEdgeSchema = z
39
45
  .object({
@@ -46,11 +52,10 @@ const travelEdgeSchema = z
46
52
  requirements: z.array(requirementSchema).optional(),
47
53
  seconds: z.number().positive().optional(),
48
54
  notes: z.string().optional(),
55
+ minor: z.boolean().optional(),
49
56
  })
50
57
  .superRefine((edge, ctx) => {
51
- if (edge.seconds !== undefined &&
52
- edge.method !== 'walk' &&
53
- edge.method !== 'transport') {
58
+ if (edge.seconds !== undefined && edge.method !== 'walk' && edge.method !== 'transport') {
54
59
  ctx.addIssue({
55
60
  code: z.ZodIssueCode.custom,
56
61
  path: ['seconds'],
@@ -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", "transport", "portal", "npc", "item", "skill", "other"];
9
+ export declare const TRAVEL_METHODS: readonly ["walk", "transport", "portal", "npc", "item", "skill", "scroll", "other"];
10
10
  export type TravelMethod = (typeof TRAVEL_METHODS)[number];
11
11
  export type Requirement = {
12
12
  kind: 'meso';
@@ -16,9 +16,11 @@ export type Requirement = {
16
16
  itemId: number;
17
17
  consumed: boolean;
18
18
  quantity?: number;
19
+ name?: string;
19
20
  } | {
20
21
  kind: 'quest';
21
22
  questId: number;
23
+ name?: string;
22
24
  } | {
23
25
  kind: 'level';
24
26
  min: number;
@@ -27,6 +29,15 @@ export interface AreaNode {
27
29
  id: NodeId;
28
30
  name: string;
29
31
  group?: GroupId;
32
+ /**
33
+ * The town a "return to nearest town" scroll sends you to from this node.
34
+ * Every node is a town, so this defaults to the node itself (a scroll there
35
+ * is a no-op). Set it when the game routes the scroll elsewhere — e.g. a
36
+ * dungeon whose scroll drops you at its continent's hub town. Must reference
37
+ * a declared node. Enables an optional `scroll` edge used only when the
38
+ * traveller has declared they carry return scrolls (see findPath).
39
+ */
40
+ nearestTown?: NodeId;
30
41
  }
31
42
  export interface EntityRefs {
32
43
  itemId?: number;
@@ -54,6 +65,13 @@ export interface TravelEdge {
54
65
  */
55
66
  seconds?: number;
56
67
  notes?: string;
68
+ /**
69
+ * Hide this edge from the default map to reduce clutter. Purely a rendering
70
+ * hint — pathfinding ignores it, so a `minor` edge is still routable and is
71
+ * drawn (highlighted) whenever it lies on the computed route. Use it for
72
+ * noisy or rarely-taken connections that would otherwise crowd the graph.
73
+ */
74
+ minor?: boolean;
57
75
  }
58
76
  export interface GroupDef {
59
77
  id: GroupId;
@@ -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,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"}
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,qFASjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAO3D,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,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD;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;IAChB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;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;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;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
@@ -9,6 +9,7 @@ export const TRAVEL_METHODS = [
9
9
  'npc',
10
10
  'item',
11
11
  'skill',
12
+ 'scroll',
12
13
  'other',
13
14
  ];
14
15
  /** Helper for narrowing string literals to the branded id types. */
@@ -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;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
+ {"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,QAAQ;IACR,OAAO;CACC,CAAC;AA6EX,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"}
@@ -38,6 +38,12 @@ export interface FindPathOptions {
38
38
  * *reachability*: transports are always traversable either way.
39
39
  */
40
40
  fastTravel?: boolean;
41
+ /**
42
+ * When true, `scroll` edges (return to nearest town) are traversable — the
43
+ * traveller carries return scrolls. When false (default) they are skipped
44
+ * entirely, so a route never assumes a scroll the player doesn't have.
45
+ */
46
+ nearestTownScroll?: boolean;
41
47
  }
42
48
  export declare function findPath(graph: NavGraph, from: NodeId, to: NodeId, opts?: FindPathOptions): PathResult;
43
49
  //# sourceMappingURL=findPath.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"findPath.d.ts","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"AA0BA,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;IACrB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,eAAoB,GACzB,UAAU,CAgCZ"}
@@ -10,6 +10,10 @@
10
10
  // over long walks; without it, transports cost their ride time and the router
11
11
  // may route around them.
12
12
  //
13
+ // `scroll` edges (return-to-nearest-town) are *availability*-conditional: they
14
+ // are traversable only when `nearestTownScroll` is set (the player carries
15
+ // return scrolls). They are instant like other teleports when enabled.
16
+ //
13
17
  // When an eligibility predicate is supplied:
14
18
  // 1. Run Dijkstra with the predicate pruning candidate edges.
15
19
  // 2. If the destination is reachable that way, return `status: 'found'`.
@@ -47,13 +51,14 @@ export function findPath(graph, from, to, opts = {}) {
47
51
  if (from === to)
48
52
  return { status: 'found', steps: [], totalSeconds: 0 };
49
53
  const cost = { fastTravel: opts.fastTravel };
54
+ const allowScroll = opts.nearestTownScroll ?? false;
50
55
  const filtered = opts.eligible
51
- ? dijkstra(graph, from, to, cost, opts.eligible)
56
+ ? dijkstra(graph, from, to, cost, allowScroll, opts.eligible)
52
57
  : null;
53
58
  if (filtered) {
54
59
  return { status: 'found', steps: filtered.steps, totalSeconds: filtered.totalSeconds };
55
60
  }
56
- const unfiltered = dijkstra(graph, from, to, cost);
61
+ const unfiltered = dijkstra(graph, from, to, cost, allowScroll);
57
62
  if (!unfiltered)
58
63
  return { status: 'unreachable', steps: [], totalSeconds: 0 };
59
64
  if (!opts.eligible) {
@@ -76,7 +81,7 @@ function assertNodeKnown(graph, id, label) {
76
81
  throw new Error(`findPath ${label} references undeclared node "${id}".`);
77
82
  }
78
83
  }
79
- function dijkstra(graph, from, to, cost, eligible) {
84
+ function dijkstra(graph, from, to, cost, allowScroll, eligible) {
80
85
  const dist = new Map([[from, 0]]);
81
86
  const cameFrom = new Map();
82
87
  const settled = new Set();
@@ -91,6 +96,8 @@ function dijkstra(graph, from, to, cost, eligible) {
91
96
  settled.add(node);
92
97
  const base = dist.get(node);
93
98
  for (const edge of graph.adjacency.get(node) ?? []) {
99
+ if (edge.method === 'scroll' && !allowScroll)
100
+ continue;
94
101
  if (eligible && !eligible(edge))
95
102
  continue;
96
103
  if (settled.has(edge.to))
@@ -1 +1 @@
1
- {"version":3,"file":"findPath.js","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"findPath.js","sourceRoot":"","sources":["../../src/path/findPath.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export { eligibilityFilter } from './eligibility';
2
2
  export type { UserCapability } from './eligibility';
3
- export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './findPath';
3
+ export { collectUnlockables, isUnlockable, lockedRequirementsFilter, requirementEntityId, requirementKey, } from './unlockables';
4
+ export type { UnlockableEntry, UnlockableKind, UnlockableRequirement } from './unlockables';
5
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath } from './findPath';
4
6
  export type { EdgeCostOptions, FindPathOptions, PathResult } from './findPath';
5
7
  //# 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,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
+ {"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,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACpG,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { eligibilityFilter } from './eligibility';
2
- export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath, } from './findPath';
2
+ export { collectUnlockables, isUnlockable, lockedRequirementsFilter, requirementEntityId, requirementKey, } from './unlockables';
3
+ export { DEFAULT_TRANSPORT_SECONDS, DEFAULT_WALK_SECONDS, edgeSeconds, findPath } from './findPath';
3
4
  //# 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,EACL,yBAAyB,EACzB,oBAAoB,EACpB,WAAW,EACX,QAAQ,GACT,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,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { NavGraphSource, Requirement, TravelEdge } from '../ir/types';
2
+ export type UnlockableKind = 'item' | 'quest';
3
+ export type UnlockableRequirement = Extract<Requirement, {
4
+ kind: UnlockableKind;
5
+ }>;
6
+ export declare function isUnlockable(req: Requirement): req is UnlockableRequirement;
7
+ /** The opaque entity id a requirement gates on. */
8
+ export declare function requirementEntityId(req: UnlockableRequirement): number;
9
+ /**
10
+ * Stable `${kind}:${id}` key identifying a requirement's unlockable subject.
11
+ * Two edges that require the same item (or quest) share a key, so one toggle
12
+ * governs both.
13
+ */
14
+ export declare function requirementKey(req: UnlockableRequirement): string;
15
+ /** One distinct unlockable subject referenced somewhere in the graph. */
16
+ export interface UnlockableEntry {
17
+ key: string;
18
+ kind: UnlockableKind;
19
+ id: number;
20
+ /** Author-supplied display name, when any edge naming this subject provides one. */
21
+ name?: string;
22
+ }
23
+ /**
24
+ * Every distinct item/quest requirement referenced by the graph's edges, one
25
+ * entry per `${kind}:${id}` in first-seen order. A named occurrence wins over
26
+ * an anonymous one, so a subject named on any edge surfaces its name.
27
+ */
28
+ export declare function collectUnlockables(source: NavGraphSource): UnlockableEntry[];
29
+ /**
30
+ * An eligibility predicate for `findPath` that blocks any edge requiring a
31
+ * *locked* item or quest — a subject whose `${kind}:${id}` key is in `locked`.
32
+ * Non-unlockable requirements (meso, level) never block. An empty set passes
33
+ * every edge, matching "all requirements unlocked by default".
34
+ */
35
+ export declare function lockedRequirementsFilter(locked: ReadonlySet<string>): (edge: TravelEdge) => boolean;
36
+ //# sourceMappingURL=unlockables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlockables.d.ts","sourceRoot":"","sources":["../../src/path/unlockables.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC;AAEnF,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,IAAI,qBAAqB,CAE3E;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG,MAAM,CAEjE;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,EAAE,CAoB5E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAM/B"}
@@ -0,0 +1,62 @@
1
+ // The "requirements you've unlocked" model.
2
+ //
3
+ // Two requirement kinds gate on an opaque game entity id — `item` and `quest`.
4
+ // Those are things a traveller either has unlocked or hasn't, so the navigator
5
+ // lets them declare which ones they hold and routes around the rest. `meso` and
6
+ // `level` are scalar thresholds rather than opaque ids, so they're never gated
7
+ // here and always pass.
8
+ export function isUnlockable(req) {
9
+ return req.kind === 'item' || req.kind === 'quest';
10
+ }
11
+ /** The opaque entity id a requirement gates on. */
12
+ export function requirementEntityId(req) {
13
+ return req.kind === 'item' ? req.itemId : req.questId;
14
+ }
15
+ /**
16
+ * Stable `${kind}:${id}` key identifying a requirement's unlockable subject.
17
+ * Two edges that require the same item (or quest) share a key, so one toggle
18
+ * governs both.
19
+ */
20
+ export function requirementKey(req) {
21
+ return `${req.kind}:${requirementEntityId(req)}`;
22
+ }
23
+ /**
24
+ * Every distinct item/quest requirement referenced by the graph's edges, one
25
+ * entry per `${kind}:${id}` in first-seen order. A named occurrence wins over
26
+ * an anonymous one, so a subject named on any edge surfaces its name.
27
+ */
28
+ export function collectUnlockables(source) {
29
+ const byKey = new Map();
30
+ for (const edge of source.edges) {
31
+ for (const req of edge.requirements ?? []) {
32
+ if (!isUnlockable(req))
33
+ continue;
34
+ const key = requirementKey(req);
35
+ const existing = byKey.get(key);
36
+ if (!existing) {
37
+ byKey.set(key, {
38
+ key,
39
+ kind: req.kind,
40
+ id: requirementEntityId(req),
41
+ ...(req.name ? { name: req.name } : {}),
42
+ });
43
+ }
44
+ else if (!existing.name && req.name) {
45
+ existing.name = req.name;
46
+ }
47
+ }
48
+ }
49
+ return [...byKey.values()];
50
+ }
51
+ /**
52
+ * An eligibility predicate for `findPath` that blocks any edge requiring a
53
+ * *locked* item or quest — a subject whose `${kind}:${id}` key is in `locked`.
54
+ * Non-unlockable requirements (meso, level) never block. An empty set passes
55
+ * every edge, matching "all requirements unlocked by default".
56
+ */
57
+ export function lockedRequirementsFilter(locked) {
58
+ if (locked.size === 0)
59
+ return () => true;
60
+ return (edge) => (edge.requirements ?? []).every((req) => !isUnlockable(req) || !locked.has(requirementKey(req)));
61
+ }
62
+ //# sourceMappingURL=unlockables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlockables.js","sourceRoot":"","sources":["../../src/path/unlockables.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,wBAAwB;AAQxB,MAAM,UAAU,YAAY,CAAC,GAAgB;IAC3C,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC;AACrD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,mBAAmB,CAAC,GAA0B;IAC5D,OAAO,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAA0B;IACvD,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;AACnD,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBAAE,SAAS;YACjC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;oBACb,GAAG;oBACH,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,EAAE,EAAE,mBAAmB,CAAC,GAAG,CAAC;oBAC5B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA2B;IAE3B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IACzC,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAC7B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrolled/nav-graph",
3
- "version": "0.1.1-dev.0fe9d51",
3
+ "version": "0.1.1-dev.2a1f128",
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,42 +29,25 @@
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
+ "main": "./dist/index.js",
33
+ "module": "./dist/index.js",
34
+ "types": "./dist/index.d.ts",
35
35
  "exports": {
36
- ".": "./src/index.ts",
37
- "./ir": "./src/ir/index.ts",
38
- "./dsl": "./src/dsl/index.ts"
39
- },
40
- "publishConfig": {
41
- "access": "public",
42
- "main": "./dist/index.js",
43
- "module": "./dist/index.js",
44
- "types": "./dist/index.d.ts",
45
- "exports": {
46
- ".": {
47
- "types": "./dist/index.d.ts",
48
- "import": "./dist/index.js"
49
- },
50
- "./ir": {
51
- "types": "./dist/ir/index.d.ts",
52
- "import": "./dist/ir/index.js"
53
- },
54
- "./dsl": {
55
- "types": "./dist/dsl/index.d.ts",
56
- "import": "./dist/dsl/index.js"
57
- }
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "import": "./dist/index.js"
39
+ },
40
+ "./ir": {
41
+ "types": "./dist/ir/index.d.ts",
42
+ "import": "./dist/ir/index.js"
43
+ },
44
+ "./dsl": {
45
+ "types": "./dist/dsl/index.d.ts",
46
+ "import": "./dist/dsl/index.js"
58
47
  }
59
48
  },
60
- "scripts": {
61
- "build": "tsc -p tsconfig.build.json",
62
- "clean": "rm -rf dist LICENSE",
63
- "export": "vite-node src/cli/export.ts",
64
- "test": "vitest run --passWithNoTests",
65
- "typecheck": "tsc --noEmit",
66
- "lint": "eslint .",
67
- "prepublishOnly": "pnpm run typecheck && pnpm run test && pnpm run clean && pnpm run build && cp ../../LICENSE LICENSE"
49
+ "publishConfig": {
50
+ "access": "public"
68
51
  },
69
52
  "dependencies": {
70
53
  "zod": "^3.23.8"
@@ -74,5 +57,13 @@
74
57
  "vite": "^5.4.8",
75
58
  "vite-node": "^2.1.2",
76
59
  "vitest": "^2.1.2"
60
+ },
61
+ "scripts": {
62
+ "build": "tsc -p tsconfig.build.json",
63
+ "clean": "rm -rf dist LICENSE",
64
+ "export": "vite-node src/cli/export.ts",
65
+ "test": "vitest run --passWithNoTests",
66
+ "typecheck": "tsc --noEmit",
67
+ "lint": "eslint ."
77
68
  }
78
- }
69
+ }