react-native-roster 0.4.6 → 0.4.7

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
@@ -256,6 +256,12 @@ render from. See [customization](https://github.com/simiancraft/react-native-ros
256
256
 
257
257
  ## Size and support
258
258
 
259
+ Core geometry and coverage caches accept an optional `ScopedCacheIdentity`. Keep one stable empty
260
+ identity object per dataset, and pass it to both `layoutLane` and `coverageFor`; independent
261
+ datasets then cannot collide when they reuse lane IDs and versions. Omitting the identity uses the
262
+ core-owned default, while deliberately reusing one identity shares target-warm coverage across
263
+ projections.
264
+
259
265
  Minified, with peers external: `/core` is 13.6 kB and the root entry is 51.2 kB.
260
266
  `/rrule` adds 12.9 kB of its own code plus its two dependencies, `rrule-temporal`
261
267
  and `@js-temporal/polyfill`, which install with the package. Web runs in CI on
@@ -1,10 +1,10 @@
1
- import type { Coverage, LaneFlag, LaneGeometry, Rect } from './types';
2
- export declare const layoutCache: Map<string, {
1
+ import type { Coverage, LaneFlag, LaneGeometry, Rect, ScopedCacheIdentity } from './types';
2
+ export declare const defaultScopedCacheIdentity: ScopedCacheIdentity;
3
+ type LayoutCache = Map<string, {
3
4
  rects: Rect[];
4
5
  gapRects: Rect[];
5
6
  assemblies: WeakMap<Coverage, Map<LaneFlag, LaneGeometry>>;
6
7
  }>;
7
- export declare const coverageCache: Map<string, Coverage>;
8
8
  export declare const counts: {
9
9
  layout: {
10
10
  runs: number;
@@ -24,6 +24,9 @@ export declare function coverageStats(): {
24
24
  cacheHits: number;
25
25
  };
26
26
  export declare function resetStats(): void;
27
+ export declare function layoutCacheFor(cacheIdentity: ScopedCacheIdentity): LayoutCache;
28
+ export declare function coverageCacheFor(cacheIdentity: ScopedCacheIdentity): Map<string, Coverage>;
27
29
  export declare function clearLayoutCache(): void;
28
30
  export declare function clearCoverageCache(): void;
31
+ export {};
29
32
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEtE,eAAO,MAAM,WAAW;WAGb,IAAI,EAAE;cACH,IAAI,EAAE;gBACJ,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;EAE3D,CAAC;AACJ,eAAO,MAAM,aAAa,uBAA8B,CAAC;AACzD,eAAO,MAAM,MAAM;IACjB,MAAM;QAAI,IAAI;QAAK,SAAS;;IAC5B,QAAQ;QAAI,IAAI;QAAK,SAAS;;CAC/B,CAAC;AAEF,wBAAgB,WAAW,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEjE;AAED,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE3F,eAAO,MAAM,0BAA0B,EAAE,mBAAwB,CAAC;AAElE,KAAK,WAAW,GAAG,GAAG,CACpB,MAAM,EACN;IACE,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;CAC5D,CACF,CAAC;AAIF,eAAO,MAAM,MAAM;IACjB,MAAM;QAAI,IAAI;QAAK,SAAS;;IAC5B,QAAQ;QAAI,IAAI;QAAK,SAAS;;CAC/B,CAAC;AAEF,wBAAgB,WAAW,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEjE;AAED,wBAAgB,aAAa,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAEnE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAKjC;AAED,wBAAgB,cAAc,CAAC,aAAa,EAAE,mBAAmB,GAAG,WAAW,CAO9E;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAO1F;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -1,13 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.counts = exports.coverageCache = exports.layoutCache = void 0;
3
+ exports.counts = exports.defaultScopedCacheIdentity = void 0;
4
4
  exports.layoutStats = layoutStats;
5
5
  exports.coverageStats = coverageStats;
6
6
  exports.resetStats = resetStats;
7
+ exports.layoutCacheFor = layoutCacheFor;
8
+ exports.coverageCacheFor = coverageCacheFor;
7
9
  exports.clearLayoutCache = clearLayoutCache;
8
10
  exports.clearCoverageCache = clearCoverageCache;
9
- exports.layoutCache = new Map();
10
- exports.coverageCache = new Map();
11
+ exports.defaultScopedCacheIdentity = {};
12
+ let layoutCaches = new WeakMap();
13
+ let coverageCaches = new WeakMap();
11
14
  exports.counts = {
12
15
  layout: { runs: 0, cacheHits: 0 },
13
16
  coverage: { runs: 0, cacheHits: 0 },
@@ -24,10 +27,26 @@ function resetStats() {
24
27
  exports.counts.coverage.runs = 0;
25
28
  exports.counts.coverage.cacheHits = 0;
26
29
  }
30
+ function layoutCacheFor(cacheIdentity) {
31
+ let cache = layoutCaches.get(cacheIdentity);
32
+ if (!cache) {
33
+ cache = new Map();
34
+ layoutCaches.set(cacheIdentity, cache);
35
+ }
36
+ return cache;
37
+ }
38
+ function coverageCacheFor(cacheIdentity) {
39
+ let cache = coverageCaches.get(cacheIdentity);
40
+ if (!cache) {
41
+ cache = new Map();
42
+ coverageCaches.set(cacheIdentity, cache);
43
+ }
44
+ return cache;
45
+ }
27
46
  function clearLayoutCache() {
28
- exports.layoutCache.clear();
47
+ layoutCaches = new WeakMap();
29
48
  }
30
49
  function clearCoverageCache() {
31
- exports.coverageCache.clear();
50
+ coverageCaches = new WeakMap();
32
51
  }
33
52
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":";;;;;;;;AAEa,QAAA,WAAW,GAAG,IAAI,GAAG,EAO/B,CAAC;AACS,QAAA,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAC;AAC5C,QAAA,MAAM,GAAG;IACpB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;IACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;CACpC,CAAC;AAEF;IACE,OAAO,EAAE,GAAG,QAAA,MAAM,CAAC,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;IACE,OAAO,EAAE,GAAG,QAAA,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;IACE,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACvB,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IAC5B,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACzB,QAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;IACE,QAAA,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAED;IACE,QAAA,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":";;;;;;;;;;AAEa,QAAA,0BAA0B,GAAwB,EAAE,CAAC;AAWlE,IAAI,YAAY,GAAG,IAAI,OAAO,EAAoC,CAAC;AACnE,IAAI,cAAc,GAAG,IAAI,OAAO,EAA8C,CAAC;AAClE,QAAA,MAAM,GAAG;IACpB,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;IACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;CACpC,CAAC;AAEF;IACE,OAAO,EAAE,GAAG,QAAA,MAAM,CAAC,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;IACE,OAAO,EAAE,GAAG,QAAA,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChC,CAAC;AAED;IACE,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IACvB,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IAC5B,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACzB,QAAA,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,wBAA+B,aAAkC;IAC/D,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAClB,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0BAAiC,aAAkC;IACjE,IAAI,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAClB,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;IACE,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;IACE,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Coverage, Lane, Window } from './types';
2
- export declare function coverageFor(lane: Lane, window: Window): Coverage;
1
+ import type { Coverage, Lane, ScopedCacheIdentity, Window } from './types';
2
+ export declare function coverageFor(lane: Lane, window: Window, cacheIdentity?: ScopedCacheIdentity): Coverage;
3
3
  //# sourceMappingURL=coverage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAa,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CA4BhE"}
1
+ {"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAa,mBAAmB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtF,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,mBAAgD,GAC9D,QAAQ,CA6BV"}
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.coverageFor = coverageFor;
4
4
  const cache_1 = require("./cache");
5
5
  const hash_1 = require("./hash");
6
- function coverageFor(lane, window) {
6
+ function coverageFor(lane, window, cacheIdentity = cache_1.defaultScopedCacheIdentity) {
7
+ const coverageCache = (0, cache_1.coverageCacheFor)(cacheIdentity);
7
8
  const key = (0, hash_1.laneKey)(lane, window);
8
- const cached = cache_1.coverageCache.get(key);
9
+ const cached = coverageCache.get(key);
9
10
  if (cached) {
10
11
  cache_1.counts.coverage.cacheHits++;
11
12
  return cached;
@@ -31,7 +32,7 @@ function coverageFor(lane, window) {
31
32
  bookingMinutes: duration(booked) / 60_000,
32
33
  availabilityMinusBookingMinutes: availabilityMinutes - intersection / 60_000,
33
34
  };
34
- cache_1.coverageCache.set(key, result);
35
+ coverageCache.set(key, result);
35
36
  return result;
36
37
  }
37
38
  function union(lane, window, role) {
@@ -1 +1 @@
1
- {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../../src/core/coverage.ts"],"names":[],"mappings":"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"}
@@ -10,5 +10,5 @@ export { byCoverage, byLabel } from './order';
10
10
  export { snapToStep, timeAtX, timeAtY, xAtTime } from './snap';
11
11
  export { hasSource } from './source';
12
12
  export { extentOf, intersectionOf, unionOf } from './spans';
13
- export type { Coverage, DayColumn, Gap, Interval, Lane, LaneFlag, LaneGeometry, Layer, LayerRole, LayerStyle, Projection, Rect, Source, Transition, Weekday, Window, } from './types';
13
+ export type { Coverage, DayColumn, Gap, Interval, Lane, LaneFlag, LaneGeometry, Layer, LayerRole, LayerStyle, Projection, Rect, ScopedCacheIdentity, Source, Transition, Weekday, Window, } from './types';
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5D,YAAY,EACV,QAAQ,EACR,SAAS,EACT,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,IAAI,EACJ,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5D,YAAY,EACV,QAAQ,EACR,SAAS,EACT,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,IAAI,EACJ,mBAAmB,EACnB,MAAM,EACN,UAAU,EACV,OAAO,EACP,MAAM,GACP,MAAM,SAAS,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Lane, LaneGeometry, Projection, Window } from './types';
2
- export declare function layoutLane(lane: Lane, window: Window, projection: Projection): LaneGeometry;
1
+ import type { Lane, LaneGeometry, Projection, ScopedCacheIdentity, Window } from './types';
2
+ export declare function layoutLane(lane: Lane, window: Window, projection: Projection, cacheIdentity?: ScopedCacheIdentity): LaneGeometry;
3
3
  //# sourceMappingURL=layout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/core/layout.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAY,IAAI,EAAE,YAAY,EAAS,UAAU,EAAQ,MAAM,EAAE,MAAM,SAAS,CAAC;AAE7F,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,CAwC3F"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/core/layout.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,IAAI,EACJ,YAAY,EAEZ,UAAU,EAEV,mBAAmB,EACnB,MAAM,EACP,MAAM,SAAS,CAAC;AAEjB,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,aAAa,GAAE,mBAAgD,GAC9D,YAAY,CAyCd"}
@@ -8,10 +8,11 @@ const hash_1 = require("./hash");
8
8
  const scale_1 = require("./scale");
9
9
  const snap_1 = require("./snap");
10
10
  const spans_1 = require("./spans");
11
- function layoutLane(lane, window, projection) {
11
+ function layoutLane(lane, window, projection, cacheIdentity = cache_1.defaultScopedCacheIdentity) {
12
+ const layoutCache = (0, cache_1.layoutCacheFor)(cacheIdentity);
12
13
  const key = `${(0, hash_1.laneKey)(lane, window)}|${(0, hash_1.projectionKey)(projection)}`;
13
- let cached = cache_1.layoutCache.get(key);
14
- const coverage = (0, coverage_1.coverageFor)(lane, window);
14
+ let cached = layoutCache.get(key);
15
+ const coverage = (0, coverage_1.coverageFor)(lane, window, cacheIdentity);
15
16
  const flag = (0, flag_1.flagFor)(lane, window);
16
17
  if (cached) {
17
18
  cache_1.counts.layout.cacheHits++;
@@ -28,7 +29,7 @@ function layoutLane(lane, window, projection) {
28
29
  project((0, spans_1.sourceSpans)(layer.gaps ?? [], window), layer, window, projection, pieces, gapRects);
29
30
  }
30
31
  cached = { rects, gapRects, assemblies: new WeakMap() };
31
- cache_1.layoutCache.set(key, cached);
32
+ layoutCache.set(key, cached);
32
33
  }
33
34
  // Read the current flag and coverage above, then retain each complete assembly
34
35
  // by reference, including when a consumer revisits an earlier explicit flag.
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/core/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/core/layout.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,8 @@ export type Lane = {
46
46
  layers: Layer[];
47
47
  meta?: unknown;
48
48
  };
49
+ /** A stable object reference that scopes retained geometry and coverage to one dataset. */
50
+ export type ScopedCacheIdentity = Readonly<Record<PropertyKey, never>>;
49
51
  /** A span of absolute time. No span kind, no resolution; those are axis and component concerns (#6). */
50
52
  export type Window = {
51
53
  start: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -29,5 +29,6 @@ export { ScheduleGutter } from './components/schedule/parts/gutter';
29
29
  export { ScheduleIncomplete } from './components/schedule/parts/incomplete';
30
30
  export type { ScheduleColumnInput, ScheduleHoursInput, ScheduleInput, ScheduleModel, ScheduleProjection, ScheduleProps, ScheduleStyleProps, ScheduleTransitionInput, ScheduleWindowSpec, } from './components/schedule/schedule.types';
31
31
  export { useSchedule } from './components/schedule/use-schedule';
32
+ export type { ScopedCacheIdentity } from './core';
32
33
  export * from './core';
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,YAAY,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,UAAU,GACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,YAAY,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,YAAY,EACV,SAAS,EACT,SAAS,EACT,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,UAAU,GACX,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,YAAY,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAClD,cAAc,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qDAA0D;AAAjD,gGAAA,SAAS,OAAA;AAClB,+DAAoE;AAA3D,0GAAA,cAAc,OAAA;AACvB,yDAAoE;AAA3D,gGAAA,MAAM,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC3B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,+DAAmE;AAA1D,+GAAA,gBAAgB,OAAA;AACzB,yEAA6E;AAApE,6GAAA,eAAe,OAAA;AACxB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,yDAA8D;AAArD,oGAAA,WAAW,OAAA;AACpB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,qEAAyE;AAAhE,+GAAA,gBAAgB,OAAA;AACzB,iFAAoF;AAA3E,0HAAA,qBAAqB,OAAA;AAC9B,iEAAqE;AAA5D,2GAAA,cAAc,OAAA;AACvB,+DAAmE;AAA1D,yGAAA,aAAa,OAAA;AAmBtB,mFAAwF;AAA/E,0HAAA,sBAAsB,OAAA;AAE/B,6DAA2D;AAAlD,uGAAA,SAAS,OAAA;AAClB,kDAAiD;AAAxC,oGAAA,QAAQ,OAAA;AACjB,kEAAyE;AAAhE,wGAAA,cAAc,OAAA;AACvB,0EAAgF;AAAvE,+GAAA,iBAAiB,OAAA;AAC1B,8DAAqE;AAA5D,oGAAA,YAAY,OAAA;AACrB,sEAA4E;AAAnE,2GAAA,eAAe,OAAA;AACxB,8EAAoF;AAA3E,mHAAA,mBAAmB,OAAA;AAC5B,0EAAiF;AAAxE,gHAAA,kBAAkB,OAAA;AAC3B,6DAAoE;AAA3D,wGAAA,cAAc,OAAA;AACvB,qEAA4E;AAAnE,gHAAA,kBAAkB,OAAA;AAY3B,mEAAiE;AAAxD,2GAAA,WAAW,OAAA;AACpB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qDAA0D;AAAjD,gGAAA,SAAS,OAAA;AAClB,+DAAoE;AAA3D,0GAAA,cAAc,OAAA;AACvB,yDAAoE;AAA3D,gGAAA,MAAM,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC3B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,+DAAmE;AAA1D,+GAAA,gBAAgB,OAAA;AACzB,yEAA6E;AAApE,6GAAA,eAAe,OAAA;AACxB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,yDAA8D;AAArD,oGAAA,WAAW,OAAA;AACpB,uDAA4D;AAAnD,kGAAA,UAAU,OAAA;AACnB,2DAAgE;AAAvD,sGAAA,YAAY,OAAA;AACrB,qEAAyE;AAAhE,+GAAA,gBAAgB,OAAA;AACzB,iFAAoF;AAA3E,0HAAA,qBAAqB,OAAA;AAC9B,iEAAqE;AAA5D,2GAAA,cAAc,OAAA;AACvB,+DAAmE;AAA1D,yGAAA,aAAa,OAAA;AAmBtB,mFAAwF;AAA/E,0HAAA,sBAAsB,OAAA;AAE/B,6DAA2D;AAAlD,uGAAA,SAAS,OAAA;AAClB,kDAAiD;AAAxC,oGAAA,QAAQ,OAAA;AACjB,kEAAyE;AAAhE,wGAAA,cAAc,OAAA;AACvB,0EAAgF;AAAvE,+GAAA,iBAAiB,OAAA;AAC1B,8DAAqE;AAA5D,oGAAA,YAAY,OAAA;AACrB,sEAA4E;AAAnE,2GAAA,eAAe,OAAA;AACxB,8EAAoF;AAA3E,mHAAA,mBAAmB,OAAA;AAC5B,0EAAiF;AAAxE,gHAAA,kBAAkB,OAAA;AAC3B,6DAAoE;AAA3D,wGAAA,cAAc,OAAA;AACvB,qEAA4E;AAAnE,gHAAA,kBAAkB,OAAA;AAY3B,mEAAiE;AAAxD,2GAAA,WAAW,OAAA;AAEpB,yCAAuB"}
package/llms.txt CHANGED
@@ -406,14 +406,18 @@ layout. Scroll retains viewport offset, not a lane anchor.
406
406
 
407
407
  ## Caches and counters
408
408
 
409
- layoutLane(lane,window,projection) computes rects for visible lanes only.
410
- coverageFor(lane,window) computes role unions for all lanes, projection-independent.
409
+ layoutLane(lane,window,projection,cacheIdentity?) computes rects for visible lanes only.
410
+ coverageFor(lane,window,cacheIdentity?) computes role unions for all lanes,
411
+ projection-independent. ScopedCacheIdentity is a stable empty object whose reference
412
+ identifies one dataset. Omitted identities use the core-owned default; pass the same
413
+ explicit identity to share one dataset across calls and projections, and use distinct
414
+ identities for independent datasets whose lane IDs and versions can collide.
411
415
  flagFor(lane,window) is cheap and uncached. Geometry assembly reads fresh flag and
412
416
  coverage outside cached rects. Repeated complete inputs retain references; treat
413
417
  all results as read-only.
414
418
 
415
- Geometry key: lane.id + lane.version (or structural encoding of layers only) +
416
- window bounds + every projection field. Coverage uses the same key without
419
+ Geometry key: cache identity + lane.id + lane.version (or structural encoding of layers
420
+ only) + window bounds + every projection field. Coverage uses the same key without
417
421
  projection. Bump any supplied version when layers change. Label, lane timezone,
418
422
  flag, complete, and meta never invalidate rects. Clear retained windows explicitly
419
423
  when a consumer no longer needs them. This cache lifetime belongs to the consumer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-roster",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "Resource timeline and schedule components for React Native and web, with layered intervals, coverage, provenance, and explicit daylight-saving handling.",
5
5
  "keywords": [
6
6
  "react-native",
@@ -5,7 +5,8 @@ no React Native, no dependencies.
5
5
 
6
6
  - Public subpath: `react-native-roster/core`; the root entry re-exports it
7
7
  - Authoritative types: `types.ts` (`Lane`, `Layer`, `Interval`, `Gap`,
8
- `Source`, `Window`, `Projection`, `Rect`, `Coverage`, `LaneGeometry`)
8
+ `Source`, `Window`, `Projection`, `Rect`, `Coverage`, `LaneGeometry`,
9
+ `ScopedCacheIdentity`)
9
10
  - Interval helpers: `extentOf(segments: readonly Window[]): Window | null`,
10
11
  `intersectionOf(spans: readonly Window[]): Window | null`, and
11
12
  `unionOf(spans: readonly Window[]): Window[]`
@@ -25,6 +26,21 @@ no React Native, no dependencies.
25
26
  | `order.ts`, `flag.ts` | lane comparators and lane flags |
26
27
  | `cache.ts`, `hash.ts` | layout and coverage caches keyed by lane content |
27
28
 
29
+ `layoutLane(lane, window, projection, cacheIdentity?)` and
30
+ `coverageFor(lane, window, cacheIdentity?)` use a stable `ScopedCacheIdentity` object to keep
31
+ retained results within one dataset. Omitted identities use the core-owned default. Standalone
32
+ callers should keep one empty identity object for each dataset and pass the same object to both
33
+ functions; projections share coverage because projection fields remain outside the coverage key.
34
+
35
+ ```ts
36
+ import type { ScopedCacheIdentity } from 'react-native-roster/core';
37
+ import { coverageFor, layoutLane } from 'react-native-roster/core';
38
+
39
+ const cacheIdentity: ScopedCacheIdentity = {};
40
+ const coverage = coverageFor(lane, window, cacheIdentity);
41
+ const geometry = layoutLane(lane, window, projection, cacheIdentity);
42
+ ```
43
+
28
44
  All interval helpers reuse the bare `{ start, end }` `Window` type with
29
45
  end-exclusive epoch millisecond bounds. `extentOf` bridges disjoint segments;
30
46
  `intersectionOf` returns only their shared span. Both return `null` for empty
package/src/core/cache.ts CHANGED
@@ -1,14 +1,18 @@
1
- import type { Coverage, LaneFlag, LaneGeometry, Rect } from './types';
1
+ import type { Coverage, LaneFlag, LaneGeometry, Rect, ScopedCacheIdentity } from './types';
2
2
 
3
- export const layoutCache = new Map<
3
+ export const defaultScopedCacheIdentity: ScopedCacheIdentity = {};
4
+
5
+ type LayoutCache = Map<
4
6
  string,
5
7
  {
6
8
  rects: Rect[];
7
9
  gapRects: Rect[];
8
10
  assemblies: WeakMap<Coverage, Map<LaneFlag, LaneGeometry>>;
9
11
  }
10
- >();
11
- export const coverageCache = new Map<string, Coverage>();
12
+ >;
13
+
14
+ let layoutCaches = new WeakMap<ScopedCacheIdentity, LayoutCache>();
15
+ let coverageCaches = new WeakMap<ScopedCacheIdentity, Map<string, Coverage>>();
12
16
  export const counts = {
13
17
  layout: { runs: 0, cacheHits: 0 },
14
18
  coverage: { runs: 0, cacheHits: 0 },
@@ -29,10 +33,28 @@ export function resetStats(): void {
29
33
  counts.coverage.cacheHits = 0;
30
34
  }
31
35
 
36
+ export function layoutCacheFor(cacheIdentity: ScopedCacheIdentity): LayoutCache {
37
+ let cache = layoutCaches.get(cacheIdentity);
38
+ if (!cache) {
39
+ cache = new Map();
40
+ layoutCaches.set(cacheIdentity, cache);
41
+ }
42
+ return cache;
43
+ }
44
+
45
+ export function coverageCacheFor(cacheIdentity: ScopedCacheIdentity): Map<string, Coverage> {
46
+ let cache = coverageCaches.get(cacheIdentity);
47
+ if (!cache) {
48
+ cache = new Map();
49
+ coverageCaches.set(cacheIdentity, cache);
50
+ }
51
+ return cache;
52
+ }
53
+
32
54
  export function clearLayoutCache(): void {
33
- layoutCache.clear();
55
+ layoutCaches = new WeakMap();
34
56
  }
35
57
 
36
58
  export function clearCoverageCache(): void {
37
- coverageCache.clear();
59
+ coverageCaches = new WeakMap();
38
60
  }
@@ -1,8 +1,13 @@
1
- import { counts, coverageCache } from './cache';
1
+ import { counts, coverageCacheFor, defaultScopedCacheIdentity } from './cache';
2
2
  import { laneKey } from './hash';
3
- import type { Coverage, Lane, LayerRole, Window } from './types';
3
+ import type { Coverage, Lane, LayerRole, ScopedCacheIdentity, Window } from './types';
4
4
 
5
- export function coverageFor(lane: Lane, window: Window): Coverage {
5
+ export function coverageFor(
6
+ lane: Lane,
7
+ window: Window,
8
+ cacheIdentity: ScopedCacheIdentity = defaultScopedCacheIdentity,
9
+ ): Coverage {
10
+ const coverageCache = coverageCacheFor(cacheIdentity);
6
11
  const key = laneKey(lane, window);
7
12
  const cached = coverageCache.get(key);
8
13
  if (cached) {
package/src/core/index.ts CHANGED
@@ -29,6 +29,7 @@ export type {
29
29
  LayerStyle,
30
30
  Projection,
31
31
  Rect,
32
+ ScopedCacheIdentity,
32
33
  Source,
33
34
  Transition,
34
35
  Weekday,
@@ -1,16 +1,31 @@
1
- import { counts, layoutCache } from './cache';
1
+ import { counts, defaultScopedCacheIdentity, layoutCacheFor } from './cache';
2
2
  import { coverageFor } from './coverage';
3
3
  import { flagFor } from './flag';
4
4
  import { laneKey, projectionKey } from './hash';
5
5
  import { type ScalePiece, scalePieces } from './scale';
6
6
  import { xAtTime } from './snap';
7
7
  import { sourceSpans } from './spans';
8
- import type { Interval, Lane, LaneGeometry, Layer, Projection, Rect, Window } from './types';
8
+ import type {
9
+ Interval,
10
+ Lane,
11
+ LaneGeometry,
12
+ Layer,
13
+ Projection,
14
+ Rect,
15
+ ScopedCacheIdentity,
16
+ Window,
17
+ } from './types';
9
18
 
10
- export function layoutLane(lane: Lane, window: Window, projection: Projection): LaneGeometry {
19
+ export function layoutLane(
20
+ lane: Lane,
21
+ window: Window,
22
+ projection: Projection,
23
+ cacheIdentity: ScopedCacheIdentity = defaultScopedCacheIdentity,
24
+ ): LaneGeometry {
25
+ const layoutCache = layoutCacheFor(cacheIdentity);
11
26
  const key = `${laneKey(lane, window)}|${projectionKey(projection)}`;
12
27
  let cached = layoutCache.get(key);
13
- const coverage = coverageFor(lane, window);
28
+ const coverage = coverageFor(lane, window, cacheIdentity);
14
29
  const flag = flagFor(lane, window);
15
30
  if (cached) {
16
31
  counts.layout.cacheHits++;
package/src/core/types.ts CHANGED
@@ -39,6 +39,9 @@ export type Lane = {
39
39
  meta?: unknown;
40
40
  };
41
41
 
42
+ /** A stable object reference that scopes retained geometry and coverage to one dataset. */
43
+ export type ScopedCacheIdentity = Readonly<Record<PropertyKey, never>>;
44
+
42
45
  /** A span of absolute time. No span kind, no resolution; those are axis and component concerns (#6). */
43
46
  export type Window = { start: number; end: number };
44
47
 
package/src/index.ts CHANGED
@@ -56,4 +56,5 @@ export type {
56
56
  ScheduleWindowSpec,
57
57
  } from './components/schedule/schedule.types';
58
58
  export { useSchedule } from './components/schedule/use-schedule';
59
+ export type { ScopedCacheIdentity } from './core';
59
60
  export * from './core';