@wemap/core 14.6.0-beta.0 → 14.6.0-beta.2

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.
@@ -1,4 +1,5 @@
1
1
  import { BoundingBox } from '../../geo';
2
+ import { PinpointManager } from './services/PinpointManager';
2
3
  import { SnippetParser } from './helpers/SnippetParser';
3
4
  import { Building } from './types/indoor';
4
5
  /**
@@ -143,6 +144,20 @@ export declare class CoreConfig {
143
144
  * @returns A `(bbox) => Promise<Building[]>` bound to this livemap.
144
145
  */
145
146
  createBuildingProvider(): (bbox: BoundingBox) => Promise<Building[]>;
147
+ /**
148
+ * Build a pinpoint manager bound to the initialized livemap.
149
+ *
150
+ * ```typescript
151
+ * await core.init({ emmid, token });
152
+ * const pinpoints = core.createPinpointManager();
153
+ * const { items } = await pinpoints.search({
154
+ * query: 'café',
155
+ * ...boundsToDelta(map.getBounds()),
156
+ * level: map.getLevel() ?? undefined,
157
+ * });
158
+ * ```
159
+ */
160
+ createPinpointManager(): PinpointManager;
146
161
  }
147
162
  /**
148
163
  * Default instance of CoreConfig for convenience
@@ -1 +1 @@
1
- {"version":3,"file":"CoreConfig.d.ts","sourceRoot":"","sources":["../../src/CoreConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;CACpC;AAED,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAEtD,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAU;IAChC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,GAAG,CAA8C;IAGzD;;;;OAIG;;IAKH,OAAO,CAAC,UAAU;IAIlB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IAI3B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,gBAAgB,IAAI,aAAa;IAUxC,MAAM,CAAC,aAAa;;;;;;;;;;;;;;IAmBpB;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;CAKrE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,YAAmB,CAAC"}
1
+ {"version":3,"file":"CoreConfig.d.ts","sourceRoot":"","sources":["../../src/CoreConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;CACpC;AAED,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAEtD,oFAAoF;AACpF,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAU;IAChC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,GAAG,CAA8C;IAGzD;;;;OAIG;;IAKH,OAAO,CAAC,UAAU;IAIlB;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IAI3B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,gBAAgB,IAAI,aAAa;IAUxC,MAAM,CAAC,aAAa;;;;;;;;;;;;;;IAmBpB;;;;;;;;;;;;;;;OAeG;IACH,sBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;IAMpE;;;;;;;;;;;;OAYG;IACH,qBAAqB,IAAI,eAAe;CAGzC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,YAAmB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { BoundingBox } from '../../../geo';
2
+ import { Pinpoint, PinpointSearchQuery } from '../types/pinpoint';
3
+ /**
4
+ * In-memory pinpoint store with expanded-bbox viewport preload.
5
+ * One instance per livemap; shared by search and map click resolution.
6
+ *
7
+ * @internal Used by {@link PinpointManager} and `@wemap/map`.
8
+ */
9
+ export declare class PinpointCache {
10
+ /** Minimum bbox size (meters) the cache is expanded to, to limit API calls. */
11
+ static MIN_BBOX_SIZE: number;
12
+ private static PAGE_SIZE;
13
+ private static instances;
14
+ private static refCounts;
15
+ private readonly service;
16
+ private readonly pinpoints;
17
+ private cachedBboxByLevel;
18
+ private constructor();
19
+ static forLivemap(baseUrl: string, emmid: string | number): PinpointCache;
20
+ /** Drop the shared cache when the last {@link PinpointManager} is released. */
21
+ static release(baseUrl: string, emmid: string | number): void;
22
+ upsert(items: readonly Pinpoint[]): void;
23
+ search(query: PinpointSearchQuery): Promise<import('../..').PinpointSearchResponse>;
24
+ getAll(): Promise<Pinpoint[]>;
25
+ getCachedById(id: number): Pinpoint | undefined;
26
+ getLoaded(): Pinpoint[];
27
+ getCachedBbox(): BoundingBox | null;
28
+ getById(id: number): Promise<Pinpoint | null>;
29
+ /**
30
+ * Preload pinpoints for the viewport when it leaves the cached area.
31
+ * Multi-page fetch within an expanded bbox; invisible to integrators.
32
+ */
33
+ preloadViewport(bbox: BoundingBox, level?: number | null): Promise<void>;
34
+ }
35
+ //# sourceMappingURL=PinpointCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinpointCache.d.ts","sourceRoot":"","sources":["../../../src/services/PinpointCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,+EAA+E;IAC/E,MAAM,CAAC,aAAa,SAAQ;IAC5B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAO;IAE/B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoC;IAC5D,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6B;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,iBAAiB,CAAyC;IAElE,OAAO;IAIP,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa;IAazE,+EAA+E;IAC/E,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAY7D,MAAM,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI;IAMxC,MAAM,CAAC,KAAK,EAAE,mBAAmB;IAI3B,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAOnC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI/C,SAAS,IAAI,QAAQ,EAAE;IAIvB,aAAa,IAAI,WAAW,GAAG,IAAI;IAU7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiBnD;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAyC/E"}
@@ -0,0 +1,28 @@
1
+ import { BoundingBox } from '../../../geo';
2
+ import { Pinpoint, PinpointResolver, PinpointSearchQuery, PinpointSearchResponse } from '../types/pinpoint';
3
+ /**
4
+ * Public façade for pinpoint retrieval/search operations bound to a livemap.
5
+ *
6
+ * Internally uses the shared pinpoint store so map preload, click resolution,
7
+ * and integrator searches all benefit from the same data.
8
+ */
9
+ export declare class PinpointManager implements PinpointResolver {
10
+ private readonly cache;
11
+ private readonly baseUrl;
12
+ private readonly emmid;
13
+ constructor(baseUrl: string, emmid: string | number);
14
+ search(query: PinpointSearchQuery): Promise<PinpointSearchResponse>;
15
+ /**
16
+ * Fetch all pinpoints of the current livemap from API (paginated, no bounds).
17
+ */
18
+ getAll(): Promise<Pinpoint[]>;
19
+ getById(id: number): Promise<Pinpoint | null>;
20
+ preloadViewport(bbox: BoundingBox, level?: number | null): Promise<void>;
21
+ /** Already loaded pinpoints (search + preload + click fallback). */
22
+ getLoadedPinpoints(): Pinpoint[];
23
+ /** Cached preload bbox, or null when no preload happened yet. */
24
+ getCachedBbox(): BoundingBox | null;
25
+ /** Release the shared cache when this manager is no longer needed. */
26
+ release(): void;
27
+ }
28
+ //# sourceMappingURL=PinpointManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinpointManager.d.ts","sourceRoot":"","sources":["../../../src/services/PinpointManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAG3B;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAE5B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAM7C,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOzE;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI7B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI7C,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxE,oEAAoE;IACpE,kBAAkB,IAAI,QAAQ,EAAE;IAIhC,iEAAiE;IACjE,aAAa,IAAI,WAAW,GAAG,IAAI;IAInC,sEAAsE;IACtE,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,20 @@
1
+ import { Pinpoint, PinpointSearchQuery, PinpointSearchResponse } from '../types/pinpoint';
2
+ /**
3
+ * Fetches pinpoints from the Wemap API. Internal — use
4
+ * {@link CoreConfig.createPinpointManager} instead.
5
+ */
6
+ export declare class PinpointService {
7
+ private static PAGE_SIZE;
8
+ private readonly http;
9
+ private readonly emmid;
10
+ constructor(baseUrl: string, emmid: string | number);
11
+ search(query: PinpointSearchQuery): Promise<PinpointSearchResponse>;
12
+ getById(id: number): Promise<Pinpoint>;
13
+ /**
14
+ * Fetch all pinpoints of the current livemap (paginated), without bounds.
15
+ */
16
+ getAll(): Promise<Pinpoint[]>;
17
+ /** @internal Exported for unit tests. */
18
+ buildSearchParams(query: PinpointSearchQuery): Record<string, string | number>;
19
+ }
20
+ //# sourceMappingURL=PinpointService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PinpointService.d.ts","sourceRoot":"","sources":["../../../src/services/PinpointService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAuB3B;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAO;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAK7C,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAenE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM5C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBnC,yCAAyC;IACzC,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAkC/E"}
@@ -0,0 +1,49 @@
1
+ /** Minimal read model for a Wemap pinpoint (not a full livemap `PinpointObject` port). */
2
+ export interface Pinpoint {
3
+ id: number;
4
+ name: string;
5
+ description?: string;
6
+ latitude: number;
7
+ longitude: number;
8
+ level?: number | null;
9
+ altitude?: number | null;
10
+ tags?: string[];
11
+ category?: number;
12
+ image_url?: string;
13
+ address?: string;
14
+ }
15
+ /** Bounds params returned by {@link boundsToDelta}. */
16
+ export interface PinpointBoundsParams {
17
+ center_latitude: number;
18
+ center_longitude: number;
19
+ latitude_delta: number;
20
+ longitude_delta: number;
21
+ }
22
+ /** Query for {@link CoreConfig.createPinpointManager}. Bounds are required. */
23
+ export interface PinpointSearchQuery extends PinpointBoundsParams {
24
+ query?: string;
25
+ tags?: string | string[];
26
+ level?: number;
27
+ levels?: string;
28
+ limit?: number;
29
+ offset?: number;
30
+ }
31
+ /** Single-page pinpoint search response. */
32
+ export interface PinpointSearchResponse {
33
+ count: number;
34
+ items: Pinpoint[];
35
+ next: string | null;
36
+ previous: string | null;
37
+ query: Record<string, unknown>;
38
+ }
39
+ /**
40
+ * Viewport preload and click resolution surface used by `@wemap/map`.
41
+ *
42
+ * @internal
43
+ */
44
+ export interface PinpointResolver {
45
+ getById(id: number): Promise<Pinpoint | null>;
46
+ getLoadedPinpoints(): Pinpoint[];
47
+ preloadViewport(bounds: import('../../../geo').BoundingBox, level?: number | null): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=pinpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pinpoint.d.ts","sourceRoot":"","sources":["../../../src/types/pinpoint.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,uDAAuD;AACvD,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4CAA4C;AAC5C,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC9C,kBAAkB,IAAI,QAAQ,EAAE,CAAC;IACjC,eAAe,CACb,MAAM,EAAE,OAAO,YAAY,EAAE,WAAW,EACxC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wemap/core",
3
- "version": "14.6.0-beta.0",
3
+ "version": "14.6.0-beta.2",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -18,7 +18,7 @@
18
18
  "dist"
19
19
  ],
20
20
  "dependencies": {
21
- "@wemap/geo": "14.6.0-beta.0",
21
+ "@wemap/geo": "14.6.0-beta.2",
22
22
  "@types/geojson": "^7946.0.16"
23
23
  }
24
24
  }