@scrolled/nav-graph 0.1.1-dev.3bb0204 → 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 CHANGED
@@ -35,8 +35,7 @@ Node and in the browser.
35
35
  ## Releasing to npm
36
36
 
37
37
  This package is published to npm as `@scrolled/nav-graph` so external
38
- deployment repos (e.g. `scrolled-mapleroyals`) can consume it without cloning
39
- the monorepo.
38
+ deployment repos can consume it without cloning the monorepo.
40
39
 
41
40
  Authentication uses **npm Trusted Publishers (OIDC)** — no `NPM_TOKEN` secret
42
41
  lives in this repo. The GitHub Actions OIDC token authenticates directly
@@ -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,cAkE1B,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"}
@@ -41,7 +41,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
41
41
  });
42
42
  g.ref('harbour').itemTo(g.ref('lighthouse'), {
43
43
  via: 'Use a Lighthouse Pass at the dock',
44
- require: [item(2_000_001, { consumed: true })],
44
+ require: [item(2_000_001, { consumed: true, name: 'Lighthouse Pass' })],
45
45
  });
46
46
  g.ref('harbour').npcTo(g.ref('trailhead'), {
47
47
  via: 'Take the mountain coach',
@@ -50,7 +50,7 @@ export const starterGraph = defineGraph({ profileId: 'starter-demo' }, (g) => {
50
50
  });
51
51
  g.ref('old-fort').npcTo(g.ref('summit'), {
52
52
  via: 'Speak to the surveyor (after completing the survey)',
53
- require: [quest(7_001)],
53
+ require: [quest(7_001, 'Summit Survey')],
54
54
  ref: { questId: 7_001 },
55
55
  });
56
56
  g.ref('harbour').transportTo(g.ref('summit'), {
@@ -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
@@ -8,8 +8,9 @@ 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,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,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;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;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"}
@@ -23,15 +23,15 @@ declare const areaNodeSchema: z.ZodObject<{
23
23
  group: z.ZodOptional<z.ZodEffects<z.ZodString, GroupId, string>>;
24
24
  nearestTown: z.ZodOptional<z.ZodEffects<z.ZodString, NodeId, string>>;
25
25
  }, "strip", z.ZodTypeAny, {
26
+ name: string;
26
27
  id: string & {
27
28
  readonly __brand: "NodeId";
28
29
  };
29
- name: string;
30
30
  group?: GroupId | undefined;
31
31
  nearestTown?: NodeId | undefined;
32
32
  }, {
33
- id: string;
34
33
  name: string;
34
+ id: string;
35
35
  group?: string | undefined;
36
36
  nearestTown?: string | undefined;
37
37
  }>;
@@ -131,13 +131,13 @@ declare const groupDefSchema: z.ZodObject<{
131
131
  id: z.ZodEffects<z.ZodString, GroupId, string>;
132
132
  name: z.ZodString;
133
133
  }, "strip", z.ZodTypeAny, {
134
+ name: string;
134
135
  id: string & {
135
136
  readonly __brand: "GroupId";
136
137
  };
137
- name: string;
138
138
  }, {
139
- id: string;
140
139
  name: string;
140
+ id: string;
141
141
  }>;
142
142
  export declare const navGraphSourceSchema: z.ZodObject<{
143
143
  profileId: z.ZodString;
@@ -147,15 +147,15 @@ export declare const navGraphSourceSchema: z.ZodObject<{
147
147
  group: z.ZodOptional<z.ZodEffects<z.ZodString, GroupId, string>>;
148
148
  nearestTown: z.ZodOptional<z.ZodEffects<z.ZodString, NodeId, string>>;
149
149
  }, "strip", z.ZodTypeAny, {
150
+ name: string;
150
151
  id: string & {
151
152
  readonly __brand: "NodeId";
152
153
  };
153
- name: string;
154
154
  group?: GroupId | undefined;
155
155
  nearestTown?: NodeId | undefined;
156
156
  }, {
157
- id: string;
158
157
  name: string;
158
+ id: string;
159
159
  group?: string | undefined;
160
160
  nearestTown?: string | undefined;
161
161
  }>, "many">;
@@ -255,21 +255,21 @@ export declare const navGraphSourceSchema: z.ZodObject<{
255
255
  id: z.ZodEffects<z.ZodString, GroupId, string>;
256
256
  name: z.ZodString;
257
257
  }, "strip", z.ZodTypeAny, {
258
+ name: string;
258
259
  id: string & {
259
260
  readonly __brand: "GroupId";
260
261
  };
261
- name: string;
262
262
  }, {
263
- id: string;
264
263
  name: string;
264
+ id: string;
265
265
  }>, "many">>;
266
266
  }, "strip", z.ZodTypeAny, {
267
267
  profileId: string;
268
268
  nodes: {
269
+ name: string;
269
270
  id: string & {
270
271
  readonly __brand: "NodeId";
271
272
  };
272
- name: string;
273
273
  group?: GroupId | undefined;
274
274
  nearestTown?: NodeId | undefined;
275
275
  }[];
@@ -294,16 +294,16 @@ export declare const navGraphSourceSchema: z.ZodObject<{
294
294
  minor?: boolean | undefined;
295
295
  }[];
296
296
  groups?: {
297
+ name: string;
297
298
  id: string & {
298
299
  readonly __brand: "GroupId";
299
300
  };
300
- name: string;
301
301
  }[] | undefined;
302
302
  }, {
303
303
  profileId: string;
304
304
  nodes: {
305
- id: string;
306
305
  name: string;
306
+ id: string;
307
307
  group?: string | undefined;
308
308
  nearestTown?: string | undefined;
309
309
  }[];
@@ -324,8 +324,8 @@ export declare const navGraphSourceSchema: z.ZodObject<{
324
324
  minor?: boolean | undefined;
325
325
  }[];
326
326
  groups?: {
327
- id: string;
328
327
  name: string;
328
+ id: string;
329
329
  }[] | undefined;
330
330
  }>;
331
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,uFAAyB,CAAC;AAElD,QAAA,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAU5C,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAC;AAEH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;EAKlB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBlB,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({
@@ -50,9 +55,7 @@ const travelEdgeSchema = z
50
55
  minor: z.boolean().optional(),
51
56
  })
52
57
  .superRefine((edge, ctx) => {
53
- if (edge.seconds !== undefined &&
54
- edge.method !== 'walk' &&
55
- edge.method !== 'transport') {
58
+ if (edge.seconds !== undefined && edge.method !== 'walk' && edge.method !== 'transport') {
56
59
  ctx.addIssue({
57
60
  code: z.ZodIssueCode.custom,
58
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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"}
@@ -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;
@@ -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,qFASjB,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;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"}
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"}
@@ -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,QAAQ;IACR,OAAO;CACC,CAAC;AAwEX,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"}
@@ -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.3bb0204",
3
+ "version": "0.1.1-dev.ab907c2",
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
+ }