@scrolled/nav-graph 0.1.1-dev.7c21e18 → 0.1.1-dev.ab907c2
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 +13 -9
- package/dist/compile/compileGraph.d.ts.map +1 -1
- package/dist/compile/compileGraph.js +23 -0
- package/dist/compile/compileGraph.js.map +1 -1
- package/dist/dsl/builder.d.ts +41 -8
- package/dist/dsl/builder.d.ts.map +1 -1
- package/dist/dsl/builder.js +26 -4
- package/dist/dsl/builder.js.map +1 -1
- package/dist/dsl/index.d.ts +1 -1
- package/dist/dsl/index.d.ts.map +1 -1
- package/dist/dsl/index.js.map +1 -1
- package/dist/dsl/requirements.d.ts +2 -1
- package/dist/dsl/requirements.d.ts.map +1 -1
- package/dist/dsl/requirements.js +10 -2
- package/dist/dsl/requirements.js.map +1 -1
- package/dist/graphs/starter/index.d.ts.map +1 -1
- package/dist/graphs/starter/index.js +16 -7
- package/dist/graphs/starter/index.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ir/schema.d.ts +115 -31
- package/dist/ir/schema.d.ts.map +1 -1
- package/dist/ir/schema.js +20 -3
- package/dist/ir/schema.js.map +1 -1
- package/dist/ir/types.d.ts +29 -3
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js +10 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/path/findPath.d.ts +33 -0
- package/dist/path/findPath.d.ts.map +1 -1
- package/dist/path/findPath.js +135 -27
- package/dist/path/findPath.js.map +1 -1
- package/dist/path/index.d.ts +4 -2
- package/dist/path/index.d.ts.map +1 -1
- package/dist/path/index.js +2 -1
- package/dist/path/index.js.map +1 -1
- package/dist/path/unlockables.d.ts +36 -0
- package/dist/path/unlockables.d.ts.map +1 -0
- package/dist/path/unlockables.js +62 -0
- package/dist/path/unlockables.js.map +1 -0
- package/package.json +26 -35
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
|
|
14
|
-
(`src/dsl/`).
|
|
15
|
-
|
|
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
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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.
|
|
@@ -30,8 +35,7 @@ Node and in the browser.
|
|
|
30
35
|
## Releasing to npm
|
|
31
36
|
|
|
32
37
|
This package is published to npm as `@scrolled/nav-graph` so external
|
|
33
|
-
deployment repos
|
|
34
|
-
the monorepo.
|
|
38
|
+
deployment repos can consume it without cloning the monorepo.
|
|
35
39
|
|
|
36
40
|
Authentication uses **npm Trusted Publishers (OIDC)** — no `NPM_TOKEN` secret
|
|
37
41
|
lives in this repo. The GitHub Actions OIDC token authenticates directly
|
|
@@ -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,
|
|
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":"AAAA,qEAAqE;AACrE,EAAE;AACF,oBAAoB;AACpB,8EAA8E;AAC9E,kFAAkF;AAClF,0EAA0E;AAC1E,+EAA+E;AAC/E,kBAAkB;AAClB,kEAAkE;AAClE,0DAA0D;AAU1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAepD,MAAM,UAAU,YAAY,CAAC,MAAsB;IACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAElD,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,qBAAqB,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"compileGraph.js","sourceRoot":"","sources":["../../src/compile/compileGraph.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl/builder.d.ts
CHANGED
|
@@ -14,24 +14,57 @@ 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;
|
|
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;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options for a timed edge. Only `walk` and `transport` (boats/trains/carpets)
|
|
26
|
+
* take time, so `seconds` lives here and not on the base `EdgeOpts` — portal /
|
|
27
|
+
* npc / item / skill transitions are instant and the type system rejects a
|
|
28
|
+
* `seconds` on them.
|
|
29
|
+
*/
|
|
30
|
+
export interface TimedEdgeOpts extends EdgeOpts {
|
|
31
|
+
/**
|
|
32
|
+
* Estimated travel time, in seconds. On a `transport` edge this is the ride
|
|
33
|
+
* time when the traveller has no fast-travel ticket; with fast travel the ride
|
|
34
|
+
* is instant (see `findPath`). Drives weighted routing.
|
|
35
|
+
*/
|
|
36
|
+
seconds?: number;
|
|
20
37
|
}
|
|
21
38
|
export interface NodeHandle {
|
|
22
39
|
readonly id: NodeId;
|
|
23
|
-
walk(other: NodeHandle, opts?:
|
|
40
|
+
walk(other: NodeHandle, opts?: TimedEdgeOpts): void;
|
|
41
|
+
/**
|
|
42
|
+
* A boarded conveyance — boat, train, magic carpet. Bidirectional by default
|
|
43
|
+
* (vehicles round-trip). Takes `seconds` unless the route is found with fast
|
|
44
|
+
* travel, which makes every transport hop instant.
|
|
45
|
+
*/
|
|
46
|
+
transportTo(other: NodeHandle, opts?: TimedEdgeOpts): void;
|
|
24
47
|
portalTo(other: NodeHandle, opts?: EdgeOpts): void;
|
|
25
48
|
npcTo(other: NodeHandle, opts?: EdgeOpts): void;
|
|
26
49
|
itemTo(other: NodeHandle, opts?: EdgeOpts): void;
|
|
27
50
|
skillTo(other: NodeHandle, opts?: EdgeOpts): void;
|
|
28
|
-
/** Escape hatch when none of the named verbs fit. */
|
|
29
|
-
edgeTo(other: NodeHandle, method: TravelMethod, opts?:
|
|
51
|
+
/** Escape hatch when none of the named verbs fit. `seconds` applies only if method is 'walk' or 'transport'. */
|
|
52
|
+
edgeTo(other: NodeHandle, method: TravelMethod, opts?: TimedEdgeOpts): void;
|
|
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;
|
|
30
65
|
}
|
|
31
66
|
export interface RegionScope {
|
|
32
|
-
node(id: string, name: string, opts?:
|
|
33
|
-
group?: string;
|
|
34
|
-
}): NodeHandle;
|
|
67
|
+
node(id: string, name: string, opts?: NodeOpts): NodeHandle;
|
|
35
68
|
region(id: string, name: string, fn: (r: RegionScope) => void): void;
|
|
36
69
|
}
|
|
37
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,
|
|
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"}
|
package/dist/dsl/builder.js
CHANGED
|
@@ -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 },
|
|
@@ -36,8 +37,18 @@ class Builder {
|
|
|
36
37
|
const group = opts?.group
|
|
37
38
|
? asGroupId(opts.group)
|
|
38
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;
|
|
39
45
|
const decl = {
|
|
40
|
-
node: {
|
|
46
|
+
node: {
|
|
47
|
+
id: nodeId,
|
|
48
|
+
name,
|
|
49
|
+
...(group ? { group } : {}),
|
|
50
|
+
...(nearestTown ? { nearestTown } : {}),
|
|
51
|
+
},
|
|
41
52
|
declarationIndex: this.nodeDecls.length,
|
|
42
53
|
};
|
|
43
54
|
this.nodeDecls.push(decl);
|
|
@@ -72,6 +83,7 @@ class Builder {
|
|
|
72
83
|
this.validateNodes();
|
|
73
84
|
this.validateGroupRefs();
|
|
74
85
|
this.validateEdgeEndpoints();
|
|
86
|
+
this.validateNearestTowns();
|
|
75
87
|
const groups = [...this.groups.values()];
|
|
76
88
|
return {
|
|
77
89
|
profileId: this.profileId,
|
|
@@ -86,8 +98,9 @@ class Builder {
|
|
|
86
98
|
id,
|
|
87
99
|
edgeTo: (other, method, opts) => this.pushEdge(id, other.id, { ...opts, method, defaultBidirectional: false }),
|
|
88
100
|
// The named verbs are populated below — keeps the type explicit while
|
|
89
|
-
// avoiding
|
|
101
|
+
// avoiding six near-identical method bodies.
|
|
90
102
|
walk: () => undefined,
|
|
103
|
+
transportTo: () => undefined,
|
|
91
104
|
portalTo: () => undefined,
|
|
92
105
|
npcTo: () => undefined,
|
|
93
106
|
itemTo: () => undefined,
|
|
@@ -99,7 +112,7 @@ class Builder {
|
|
|
99
112
|
return handle;
|
|
100
113
|
}
|
|
101
114
|
pushEdge(from, to, opts) {
|
|
102
|
-
const { method, defaultBidirectional, both, cost, require, ref, via,
|
|
115
|
+
const { method, defaultBidirectional, both, cost, require, ref, via, seconds, notes, minor } = opts;
|
|
103
116
|
const requirements = mergeRequirements(cost, require);
|
|
104
117
|
const bidirectional = both ?? defaultBidirectional;
|
|
105
118
|
const edge = {
|
|
@@ -110,8 +123,9 @@ class Builder {
|
|
|
110
123
|
...(via !== undefined ? { via } : {}),
|
|
111
124
|
...(ref ? { refs: ref } : {}),
|
|
112
125
|
...(requirements ? { requirements } : {}),
|
|
113
|
-
...(
|
|
126
|
+
...(seconds !== undefined ? { seconds } : {}),
|
|
114
127
|
...(notes !== undefined ? { notes } : {}),
|
|
128
|
+
...(minor ? { minor: true } : {}),
|
|
115
129
|
};
|
|
116
130
|
this.edges.push(edge);
|
|
117
131
|
}
|
|
@@ -158,6 +172,14 @@ class Builder {
|
|
|
158
172
|
`Either declare the node with g.node(...) or remove the edge.`);
|
|
159
173
|
}
|
|
160
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
|
+
}
|
|
161
183
|
}
|
|
162
184
|
function mergeRequirements(cost, require) {
|
|
163
185
|
if (!cost && !require)
|
package/dist/dsl/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gFAAgF;AAChF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,oEAAoE;AAapE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/dsl/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/dsl/index.d.ts
CHANGED
|
@@ -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, NodeOpts, RegionScope, TimedEdgeOpts, } from './builder';
|
|
3
3
|
export { item, level, meso, quest } from './requirements';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/dsl/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/dsl/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,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;
|
|
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"}
|
package/dist/dsl/requirements.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|
|
@@ -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),
|
|
@@ -18,8 +18,10 @@ 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'
|
|
22
|
-
|
|
21
|
+
const lighthouse = r.node('lighthouse', 'Lighthouse Point', {
|
|
22
|
+
nearestTown: harbour,
|
|
23
|
+
});
|
|
24
|
+
harbour.walk(lighthouse, { seconds: 150 });
|
|
23
25
|
harbour.skillTo(lighthouse, {
|
|
24
26
|
via: 'Use the bridge-keeper teleport',
|
|
25
27
|
cost: meso(100),
|
|
@@ -27,8 +29,9 @@ 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, {
|
|
34
|
+
seconds: 300,
|
|
32
35
|
require: [level(20)],
|
|
33
36
|
notes: 'Steep climb — recommended past level 20.',
|
|
34
37
|
});
|
|
@@ -38,7 +41,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
|
|
|
38
41
|
});
|
|
39
42
|
g.ref('harbour').itemTo(g.ref('lighthouse'), {
|
|
40
43
|
via: 'Use a Lighthouse Pass at the dock',
|
|
41
|
-
require: [item(2_000_001, { consumed: true })],
|
|
44
|
+
require: [item(2_000_001, { consumed: true, name: 'Lighthouse Pass' })],
|
|
42
45
|
});
|
|
43
46
|
g.ref('harbour').npcTo(g.ref('trailhead'), {
|
|
44
47
|
via: 'Take the mountain coach',
|
|
@@ -47,8 +50,14 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
|
|
|
47
50
|
});
|
|
48
51
|
g.ref('old-fort').npcTo(g.ref('summit'), {
|
|
49
52
|
via: 'Speak to the surveyor (after completing the survey)',
|
|
50
|
-
require: [quest(7_001)],
|
|
53
|
+
require: [quest(7_001, 'Summit Survey')],
|
|
51
54
|
ref: { questId: 7_001 },
|
|
52
55
|
});
|
|
56
|
+
g.ref('harbour').transportTo(g.ref('summit'), {
|
|
57
|
+
via: 'Board the summit ferry',
|
|
58
|
+
seconds: 480,
|
|
59
|
+
notes: 'A long ride — instant with a fast-travel ticket.',
|
|
60
|
+
minor: true,
|
|
61
|
+
});
|
|
53
62
|
});
|
|
54
63
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,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, } 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
|
-
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
|
|
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
|
|
15
|
+
export { DEFAULT_GRAPH_ID, GRAPHS, getGraph, listGraphIds } from './graphs/index';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
@@ -12,10 +12,11 @@ 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
|
+
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
|
|
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;
|
|
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"}
|