atriusmaps-node-sdk 3.3.333 → 3.3.335
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/dist/cjs/deploy/prepareSDKConfig.js +2 -3
- package/dist/cjs/package.json.js +4 -1
- package/dist/cjs/plugins/searchService/src/searchService.js +1 -1
- package/dist/cjs/plugins/wayfinder/src/wayfinder.js +1 -1
- package/dist/cjs/src/extModules/bustle.js +19 -2
- package/dist/deploy/prepareSDKConfig.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/plugins/searchService/src/searchService.js +1 -1
- package/dist/plugins/wayfinder/src/wayfinder.js +1 -1
- package/dist/src/extModules/bustle.js +1 -1
- package/package.json +1 -1
|
@@ -90,9 +90,8 @@ function prepareSDKConfig (sc) {
|
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
92
|
config.plugins.userMenu = { noLangOptions };
|
|
93
|
-
if (pinnedLocation)
|
|
94
|
-
config.plugins['online/
|
|
95
|
-
}
|
|
93
|
+
if (pinnedLocation)
|
|
94
|
+
config.plugins['online/pinnedLocation'] = { location: pinnedLocation };
|
|
96
95
|
}
|
|
97
96
|
|
|
98
97
|
config.plugins.searchService = defaultSearchTerms
|
package/dist/cjs/package.json.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "web-engine";
|
|
6
|
-
var version = "3.3.
|
|
6
|
+
var version = "3.3.335";
|
|
7
7
|
var license = "UNLICENSED";
|
|
8
8
|
var type = "module";
|
|
9
9
|
var main = "src/main.js";
|
|
@@ -84,6 +84,7 @@ var dependencies = {
|
|
|
84
84
|
"axe-core": "^4.9.0",
|
|
85
85
|
"crypto-browserify": "^3.12.0",
|
|
86
86
|
"cypress-axe": "^1.5.0",
|
|
87
|
+
"cypress-multi-reporters": "^1.6.4",
|
|
87
88
|
"file-loader": "^6.2.0",
|
|
88
89
|
flexsearch: "^0.7.31",
|
|
89
90
|
"h3-js": "^4.1.0",
|
|
@@ -95,6 +96,8 @@ var dependencies = {
|
|
|
95
96
|
luxon: "^3.3.0",
|
|
96
97
|
"maplibre-gl": "~2.1.9",
|
|
97
98
|
"mini-css-extract-plugin": "^1.6.0",
|
|
99
|
+
"mocha-junit-reporter": "^2.2.1",
|
|
100
|
+
mochawesome: "^7.1.3",
|
|
98
101
|
"node-polyfill-webpack-plugin": "^1.1.4",
|
|
99
102
|
"path-browserify": "^1.0.1",
|
|
100
103
|
polished: "^4.0.2",
|
|
@@ -66,7 +66,7 @@ function create (app, config) {
|
|
|
66
66
|
app.bus.on('search/queryNearbyAsync', searchNearby);
|
|
67
67
|
|
|
68
68
|
async function searchNearby () {
|
|
69
|
-
const startLocation = await app.bus.
|
|
69
|
+
const startLocation = await app.bus.getFirst('user/getPhysicalLocation');
|
|
70
70
|
if (!startLocation?.floorId) return []
|
|
71
71
|
const poisSameFloor = await app.bus.get('poi/getByFloorId', { floorId: startLocation?.floorId });
|
|
72
72
|
const isNotPortal = poi => poi.category.indexOf('portal') === -1 && poi.category !== 'element.door';
|
|
@@ -148,7 +148,7 @@ function create (app, config) {
|
|
|
148
148
|
* @returns {Route}
|
|
149
149
|
*/
|
|
150
150
|
app.bus.on('wayfinder/showNavLineFromPhysicalLocation', async ({ toEndpoint, selectedSecurityLanes = null, requiresAccessibility }) => {
|
|
151
|
-
const physicalLocation = await app.bus.
|
|
151
|
+
const physicalLocation = await app.bus.getFirst('user/getPhysicalLocation');
|
|
152
152
|
return navigateFromTo(physicalLocation, toEndpoint, { selectedSecurityLanes, requiresAccessibility, primary: true })
|
|
153
153
|
});
|
|
154
154
|
|
|
@@ -12,6 +12,14 @@ var Zousan__default = /*#__PURE__*/_interopDefaultLegacy(Zousan);
|
|
|
12
12
|
* Bustle is a highly performant event bus that offers event order guarantees.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
const bustleResponseComparitor = (r1, r2) => {
|
|
16
|
+
if (r1.responseOrder == null) // null or undefined
|
|
17
|
+
return r2.responseOrder == null ? 0 : 1 // any order is higher pri than none
|
|
18
|
+
if (r2.responseOrder == null)
|
|
19
|
+
return -1
|
|
20
|
+
return r1.responseOrder - r2.responseOrder
|
|
21
|
+
};
|
|
22
|
+
|
|
15
23
|
// Remove element from array at index specified and return the removed element.
|
|
16
24
|
// Source array will then have item removed.
|
|
17
25
|
const arRmAt = (ar, index) => ar.splice(index, 1)[0]; // oh yah, thats intuitive!
|
|
@@ -113,12 +121,21 @@ function create (opts = { }) {
|
|
|
113
121
|
|
|
114
122
|
// Used when there is a single listener that provides information or a service,
|
|
115
123
|
// a get sends a message to that listener, ensures it gets exactly 1 result,
|
|
116
|
-
// and returns that result.
|
|
124
|
+
// and returns that result. If there are 0 or more than 1 listener, the returned
|
|
125
|
+
// promise is rejected
|
|
117
126
|
const get = (ev, ob) =>
|
|
118
127
|
send(ev, ob).then(res => res.length !== 1
|
|
119
128
|
? Zousan__default["default"].reject(`${ev} event did not return a single result, but ${res.length} results.`)
|
|
120
129
|
: res[0]);
|
|
121
130
|
|
|
131
|
+
// Allows for any number of listeners to exist - but extracts the first one
|
|
132
|
+
// and returns it. If there are NO listeners, undefined is returned. The promise
|
|
133
|
+
// is never rejected.
|
|
134
|
+
const getFirst = (ev, ob) =>
|
|
135
|
+
send(ev, ob).then(res => res.length >= 1
|
|
136
|
+
? res.sort(bustleResponseComparitor)[0]
|
|
137
|
+
: undefined);
|
|
138
|
+
|
|
122
139
|
function send (ev, ob) {
|
|
123
140
|
if (opts.showEvents) {
|
|
124
141
|
if (typeof opts.showEvents === 'function') {
|
|
@@ -130,7 +147,7 @@ function create (opts = { }) {
|
|
|
130
147
|
return new Zousan__default["default"](resolve => Zousan__default["default"].soon(serve(ev, ob, resolve)))
|
|
131
148
|
}
|
|
132
149
|
|
|
133
|
-
return { get, moff, monitor, off, on, send }
|
|
150
|
+
return { get, getFirst, moff, monitor, off, on, send }
|
|
134
151
|
}
|
|
135
152
|
|
|
136
153
|
exports.create = create;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{setDeepLinksForParms as e}from"../src/configs/postproc-mol-url-parms.js";import{setStateFromStateString as i}from"../src/configs/postproc-stateTracking.js";import{filterOb as n}from"../src/utils/funcs.js";function t(t){const{name:s,debug:a,headless:r,theme:l,defaultSearchTerms:c,venueId:p,accountId:u,poiCategories:d,preserveStateInURL:g,supportURLDeepLinks:h,initState:m,deepLinkParms:f,uiHide:v,renderDiv:S,parentConfig:k,desktopViewMinWidth:P,forceDesktop:L,hostAppId:V,hostAppVersion:
|
|
1
|
+
import{setDeepLinksForParms as e}from"../src/configs/postproc-mol-url-parms.js";import{setStateFromStateString as i}from"../src/configs/postproc-stateTracking.js";import{filterOb as n}from"../src/utils/funcs.js";function t(t){const{name:s,debug:a,headless:r,theme:l,defaultSearchTerms:c,venueId:p,accountId:u,poiCategories:d,preserveStateInURL:g,supportURLDeepLinks:h,initState:m,deepLinkParms:f,uiHide:v,renderDiv:S,parentConfig:k,desktopViewMinWidth:P,forceDesktop:L,hostAppId:V,hostAppVersion:w,hostAppProperties:A,logFilter:b,searchPlaceholder:y,dataFetch:D,engineName:I,dynamicPoisUrlBaseV1:j,plugins:Z,anaytics2ActiveFlag:F,enablePoiSelection:O,minZoom:T,maxZoom:x,noLangOptions:C,pinnedLocation:M}=t,R=k?[k]:r?["sdkHeadless"]:["sdkVisual"],U=(e,i)=>e&&e.length>i?e.substring(0,i):e,W={name:s,engineName:I,extends:R,debug:a,logFilter:b,theme:l,uiHide:v,renderDiv:S,configPostProc:[],plugins:{venueDataLoader:{dataFetch:D,venueId:p,accountId:u},sdkServer:{headless:r},analytics2:{hostAppId:(e=>e?U(e.toString(),128):void 0)(V),hostAppVersion:(e=>e?U(e.toString(),128):void 0)(w),hostAppProperties:(e=>{if(!e||"object"!=typeof e)return;const i={},n=Object.keys(e);return n.length>10&&(n.length=10),n.forEach((n=>{let t=U(n.toString().replaceAll(/[^a-zA-Z0-9_]/g,""),128);t.match(/^[a-zA-Z]+/)||(t="X"+t);let o=e[n];null==o&&(o=""),o=U(o.toString(),128),i[t]=o})),i})(A)}},uuid:"undefined"!=typeof document&&document&&document.location?document.location.host:"unknown"};void 0!==F&&(W.plugins.analytics2.active=F);const H=(e,i)=>void 0!==i?{[e]:i}:{};return r||(W.plugins["online/headerOnline"]={searchPlaceholder:y},W.plugins.mapRenderer={...H("enablePoiSelection",O),viewLimits:{...H("maxZoom",x),...H("minZoom",T)}},W.plugins.userMenu={noLangOptions:C},M&&(W.plugins["online/pinnedLocation"]={location:M})),W.plugins.searchService=c?{defaultSearchTerms:c}:{},o(t,"defaultSearchTerms",W.plugins.searchService),R.includes("sdkVisual")&&(W.plugins["online/homeView"]=d?{poiCategories:d}:{},o(t,"poiCategories",W.plugins["online/homeView"])),Z&&(Z.draw&&(W.plugins.draw=Z.draw),Z.flightStatus&&(W.plugins.flightStatus=Z.flightStatus,W.plugins["online/flightDetails"]={},W.plugins["online/flightDetailsSearch"]={})),g&&(W.configPostProc.push("stateTracking"),W.plugins.deepLinking={trackURL:!0}),h&&W.configPostProc.push("mol-url-parms"),m&&i(W,atob(m),!0),f&&e(W,f,!0),void 0!==P&&(W.desktopViewMinWidth=P),L&&(W.desktopViewMinWidth=0),j&&(W.plugins.dynamicPois={urlBaseV1:j}),n(((e,i)=>void 0!==i),W)}function o(e,i,n){Object.keys(e).filter((e=>e.startsWith(i+"-"))).forEach((i=>n[i]=e[i]))}export{t as default};
|
package/dist/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e="web-engine",s="3.3.
|
|
1
|
+
var e="web-engine",s="3.3.335",o="UNLICENSED",r="module",l="src/main.js",t=["demo","deploy","nodesdk","src/extModules/flexapi","services/*","libraries/*"],a={colors:"cat utils/colors1.txt && node utils/processColors.js | pbcopy && cat utils/colors2.txt","cypress:a11y":"APPLITOOLS_IS_DISABLED=true && cypress open --browser chrome --env INPUT_MODALITY='keyboard'","cypress:comp":"APPLITOOLS_IS_DISABLED=true && cypress open --component --browser chrome","cypress:e2e":"APPLITOOLS_IS_DISABLED=true && cypress open --e2e --browser chrome",e2eSDKTest:"yarn start-server-and-test 'cd ./deploy && yarn buildDev && yarn serveLocal' 8085 'cd ./cypress/e2e/sdk && npx http-server' 8080 'yarn cypress run --spec cypress/e2e/sdk/**'",demo:"cd demo/ && yarn start","e2e:comp":"cypress run --component","e2e:record":"yarn cypress run --env RECORD_MODE=true",e2eTest:"percy exec -- cypress run --browser chrome",goProd:"cd deploy && scripts/goProd.sh",goStaging:"deploy/scripts/goStaging.sh",i18nOverrides:"yarn node utils/i18nOverrideCli src/i18n src/i18n-overrides",lint:"eslint .",mod:"demo/startMod.sh",mol:"demo/startMol.sh","mol:build":"demo/startMolBuild.sh",molProd:"cd deploy && yarn buildAndRunMol",prepare:"husky install","test:vitest":"vitest",test:"jest --no-cache --verbose","test-watch":"jest --verbose --watch","test:e2e:video":"cypress run"},i=["defaults"],n={"@azure/event-hubs":"^5.6.0","@dnd-kit/core":"^6.0.8","@dnd-kit/modifiers":"^7.0.0","@dnd-kit/sortable":"^7.0.2","@dnd-kit/utilities":"^3.2.1","@john-osullivan/react-window-dynamic-fork":"^1.9.0-alpha.1","@locus-labs/mod-badge":"^0.1.102","@locus-labs/mod-default-theme":"^0.0.113","@locus-labs/mod-footer":"^0.0.111","@locus-labs/mod-header":"^0.0.105","@locus-labs/mod-location-marker":"^0.0.104","@locus-labs/mod-map-legend":"^0.0.104","@locus-labs/mod-offscreen-indicator":"^0.0.104","@locus-labs/mod-pin":"^0.0.104","@locus-labs/mod-qr-code-card":"^0.0.104","@locus-labs/mod-qr-code-window":"^0.0.105","@locus-labs/mod-walk-time-matrix":"^0.0.103","@locus-labs/mol-desktop-building-level-selector":"^0.1.119","@locus-labs/mol-desktop-compass":"^0.1.120","@locus-labs/mol-desktop-default-theme":"^0.2.105","@locus-labs/mol-desktop-icon":"^0.1.131","@locus-labs/mol-desktop-logo":"^0.1.101","@locus-labs/mol-desktop-map-nav-button":"^0.1.130","@locus-labs/mol-desktop-tooltip":"^0.3.102","@locus-labs/mol-desktop-zoom-control":"^0.1.141","@locus-labs/mol-mobile-box":"^0.1.115","@locus-labs/mol-mobile-floating-action-button":"^0.0.117","@locus-labs/mol-mobile-icon":"^0.1.118","@locus-labs/mol-mobile-text":"^0.1.116","@locus-labs/mol-mobile-toast":"^0.1.102","@mapbox/mapbox-gl-draw":"^1.3.0","@mapbox/mapbox-gl-draw-static-mode":"^1.0.1","@microsoft/applicationinsights-web":"^3.1.2","@turf/circle":"^6.5.0","@turf/helpers":"^6.5.0","@turf/point-to-line-distance":"^6.5.0","@vitejs/plugin-react":"^4.0.1",IObject:"^0.7.2","axe-core":"^4.9.0","crypto-browserify":"^3.12.0","cypress-axe":"^1.5.0","cypress-multi-reporters":"^1.6.4","file-loader":"^6.2.0",flexsearch:"^0.7.31","h3-js":"^4.1.0",i18next:"^20.3.4","i18next-browser-languagedetector":"^6.1.1","jest-transform-css":"4.0.1",jsdom:"^25.0.0",jsonschema:"^1.2.6",luxon:"^3.3.0","maplibre-gl":"~2.1.9","mini-css-extract-plugin":"^1.6.0","mocha-junit-reporter":"^2.2.1",mochawesome:"^7.1.3","node-polyfill-webpack-plugin":"^1.1.4","path-browserify":"^1.0.1",polished:"^4.0.2","prop-types":"^15.7.2","query-string":"^8.1.0",ramda:"^0.28.0",react:"^17.0.2","react-compound-slider":"^3.3.1","react-dom":"^17.0.2","react-json-editor-ajrm":"^2.5.13","react-qr-svg":"^2.2.1","react-svg":"^16.1.29","react-tageditor":"^0.2.3","react-virtualized-auto-sizer":"^1.0.2","smoothscroll-polyfill":"^0.4.4","styled-components":"5.1.0","styled-normalize":"^8.0.6","throttle-debounce":"^3.0.1",trackjs:"^3.7.4","ua-parser-js":"^0.7.23",uuid:"3.3.2",zousan:"^3.0.1","zousan-plus":"^4.0.1"},c={"@applitools/eyes-cypress":"^3.44.0","@babel/core":"^7.14.8","@babel/eslint-parser":"^7.24.7","@babel/plugin-proposal-class-properties":"^7.8.3","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-syntax-import-assertions":"^7.20.0","@babel/plugin-transform-modules-commonjs":"^7.8.3","@babel/plugin-transform-runtime":"^7.8.3","@babel/preset-env":"^7.14.8","@babel/preset-react":"^7.8.3","@percy/cli":"^1.0.0-beta.60","@percy/cypress":"^3.1.0","@testing-library/jest-dom":"^6.5.0","@typescript-eslint/eslint-plugin":"^7.13.0","@typescript-eslint/parser":"^7.13.0","babel-jest":"^27.0.6","babel-loader":"^8.2.2","babel-plugin-inline-json-import":"^0.3.2","babel-plugin-module-resolver":"^5.0.0","babel-polyfill":"^6.26.0","chai-colors":"^1.0.1","css-loader":"^5.2.4",cypress:"^12.17.2","cypress-browser-permissions":"^1.1.0","cypress-real-events":"^1.11.0","cypress-wait-until":"^1.7.1",eslint:"^8.57.0","eslint-config-standard":"^16.0.3","eslint-import-resolver-typescript":"^3.6.1","eslint-plugin-cypress":"^2.11.1","eslint-plugin-import":"^2.16.0","eslint-plugin-jest":"^28.6.0","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","eslint-plugin-react":"^7.12.4","eslint-plugin-standard":"^5.0.0","fetch-mock-jest":"^1.3.0",glob:"^10.3.3",husky:"^6.0.0",jest:"27.5.1","lint-staged":"^11.0.1","node-fetch":"^2.6.0","null-loader":"^4.0.1",nx:"19.4.2","nx-remotecache-azure":"^19.0.0","start-server-and-test":"^2.0.0",typescript:"^5.4.5",vite:"^4.3.9",vitest:"^2.0.5",webpack:"^5.84.1","webpack-merge":"^5.8.0"},p="yarn@4.3.1",d={node:">=20"},m={},u={name:e,version:s,private:!0,license:o,type:r,main:l,workspaces:t,scripts:a,"lint-staged":{"*.js":["eslint --fix"]},browserslist:i,dependencies:n,devDependencies:c,packageManager:p,engines:d,nx:m};export{i as browserslist,u as default,n as dependencies,c as devDependencies,d as engines,o as license,l as main,e as name,m as nx,p as packageManager,a as scripts,r as type,s as version,t as workspaces};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as e from"ramda";import r from"zousan";import{getLocalized as a}from"../../../src/utils/configUtils.js";import{arrayPick as s}from"../../../src/utils/rand.js";import t from"./poiSearch.js";import n from"./searchTypeahead.js";function o(o,i){const c={poiSearch:null,typeahead:null,indexesCreated:new r,defaultSearchTerms:null,specialQueryTerms:{}},u=async()=>{const e=await o.bus.get("poi/getAll");c.poiSearch=t(e,o.i18n().language),c.typeahead=n(e,c.poiSearch.search,o.i18n().language),c.defaultSearchTerms=a(i,"defaultSearchTerms",o.i18n().language),c.indexesCreated.resolve()};async function d(){const r=await o.bus.
|
|
1
|
+
import*as e from"ramda";import r from"zousan";import{getLocalized as a}from"../../../src/utils/configUtils.js";import{arrayPick as s}from"../../../src/utils/rand.js";import t from"./poiSearch.js";import n from"./searchTypeahead.js";function o(o,i){const c={poiSearch:null,typeahead:null,indexesCreated:new r,defaultSearchTerms:null,specialQueryTerms:{}},u=async()=>{const e=await o.bus.get("poi/getAll");c.poiSearch=t(e,o.i18n().language),c.typeahead=n(e,c.poiSearch.search,o.i18n().language),c.defaultSearchTerms=a(i,"defaultSearchTerms",o.i18n().language),c.indexesCreated.resolve()};async function d(){const r=await o.bus.getFirst("user/getPhysicalLocation");if(!r?.floorId)return[];const a=await o.bus.get("poi/getByFloorId",{floorId:r?.floorId}),s=Object.values(e.pickBy((e=>-1===e.category.indexOf("portal")&&"element.door"!==e.category),a)),t=await o.bus.get("wayfinder/addPathTimeMultiple",{pois:s,startLocation:r});return e.sortBy(e.prop("distance"),Object.values(t)).slice(0,50)}o.bus.on("search/queryNearby",(async()=>{const e=await d();return o.bus.send("search/showNearby",{pois:e,term:"Nearby"}),e})),o.bus.on("search/queryNearbyAsync",d),o.bus.on("search/queryCategory",(async({category:e,categoryName:r,searchTerm:a})=>{const s=await c.indexesCreated.then((()=>c.poiSearch.search({query:a||e})));return o.bus.send("search/showCategory",{pois:s,category:e,categoryName:r}),s})),o.bus.on("search/query",(({term:e})=>c.indexesCreated.then((()=>{const r=c.poiSearch.search({query:e});return o.bus.send("search/showSearchResults",{results:r,term:e}),r})))),o.bus.on("search/queryAsync",(({term:e})=>c.indexesCreated.then((()=>c.poiSearch.search({query:e}))))),o.bus.on("search/queryWithSpecial",(({term:e})=>{if(c.specialQueryTerms[e]){const{event:r,params:a}=c.specialQueryTerms[e];return o.bus.send(r,a)}return o.bus.get("search/query",{term:e})})),o.bus.on("search/getDefaultSearchTerms",(async({limit:e=5}={})=>{const r=c.defaultSearchTerms,a=r&&r.length?r:await async function(e){const r=(await o.bus.send("poi/getAllCategories"))[0],a=Array.from(new Set(r));return function(e){for(let r=e.length-1;r>0;r--){const a=Math.floor(Math.random()*(r+1));[e[r],e[a]]=[e[a],e[r]]}return e}(a).slice(0,e)}(e);return o.bus.send("search/showDefaultSearchKeywords",{keywords:a}),a})),o.bus.on("search/getDefaultSearchPois",(async({limit:r=5}={})=>{const a=await o.bus.get("poi/getAll"),t=e.pickBy(((e,r)=>e.isNavigable),a);return s(Object.values(t),r)})),o.bus.on("search/registerSpecialQuery",(({term:e,event:r,params:a,addKeyword:s=!0})=>{c.indexesCreated.then((()=>{s&&c.typeahead.addKeyword(e),c.specialQueryTerms[e]={event:r,params:a}}))})),o.bus.on("search/addKeywords",(({keywords:e})=>c.indexesCreated.then((()=>e.forEach((e=>c.typeahead.addKeyword(e))))))),o.bus.on("search/typeahead",(({term:e,limit:r})=>c.indexesCreated.then((()=>{const{keywords:a,pois:s}=c.typeahead.query(e,r);return{keywords:a,pois:s,term:e}})))),o.bus.on("venueData/loadNewVenue",(()=>{c.indexesCreated=new r,u()})),o.bus.on("poi/setDynamicData",(async({plugin:e,idValuesMap:r})=>{if("grab"!==e)return;const a=Object.keys(r).map((e=>o.bus.get("poi/getById",{id:e})));return Promise.all(a).then((e=>c.indexesCreated.then((()=>c.poiSearch.updateMultiple(e)))))}));return{init:u,runTest:async(e,r)=>(await r(),c)}}export{o as create};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as t from"ramda";import n from"zousan";import{buildStructuresLookup as o}from"../../../src/utils/buildStructureLookup.js";import{distance as e}from"../../../src/utils/geodesy.js";import{findRoute as i}from"./findRoute.js";import{createNavGraph as r}from"./navGraph.js";import{enrichDebugNavGraph as a}from"./navGraphDebug.js";import{buildSegments as s}from"./segmentBuilder.js";const u={SECURITY:"SecurityLane",IMMIGRATION:"ImmigrationLane"};function d(d,l){const p=d.log.sublog("wayfinder"),c=async()=>{d.bus.send("venueData/loadNavGraph")};let f=new n;d.bus.on("wayfinder/_getNavGraph",(()=>f)),d.bus.on("venueData/navGraphLoaded",(async({navGraphData:t,structures:n})=>{const e=o(n),i=await y(),a=r(t,e.floorIdToOrdinal,e.floorIdToStructureId,i);f.resolve(a)}));const y=async()=>{const n=await d.bus.get("poi/getByCategoryId",{categoryId:"security"});return t.pipe(t.map(m),t.filter(t.identity))(n)},m=n=>n.queue&&{type:t.path(["queue","queueType"],n),id:t.path(["queue","queueSubtype"],n)};d.bus.on("wayfinder/showNavLineFromPhysicalLocation",(async({toEndpoint:t,selectedSecurityLanes:n=null,requiresAccessibility:o})=>async function(t,n,o){const e=await T({fromEndpoint:t,toEndpoint:n,options:o});if(e){const{segments:t}=e;o.primary&&d.bus.send("map/resetNavlineFeatures"),d.bus.send("map/showNavlineFeatures",{segments:t,category:o.primary?"primary":"alternative"})}return e}(await d.bus.
|
|
1
|
+
import*as t from"ramda";import n from"zousan";import{buildStructuresLookup as o}from"../../../src/utils/buildStructureLookup.js";import{distance as e}from"../../../src/utils/geodesy.js";import{findRoute as i}from"./findRoute.js";import{createNavGraph as r}from"./navGraph.js";import{enrichDebugNavGraph as a}from"./navGraphDebug.js";import{buildSegments as s}from"./segmentBuilder.js";const u={SECURITY:"SecurityLane",IMMIGRATION:"ImmigrationLane"};function d(d,l){const p=d.log.sublog("wayfinder"),c=async()=>{d.bus.send("venueData/loadNavGraph")};let f=new n;d.bus.on("wayfinder/_getNavGraph",(()=>f)),d.bus.on("venueData/navGraphLoaded",(async({navGraphData:t,structures:n})=>{const e=o(n),i=await y(),a=r(t,e.floorIdToOrdinal,e.floorIdToStructureId,i);f.resolve(a)}));const y=async()=>{const n=await d.bus.get("poi/getByCategoryId",{categoryId:"security"});return t.pipe(t.map(m),t.filter(t.identity))(n)},m=n=>n.queue&&{type:t.path(["queue","queueType"],n),id:t.path(["queue","queueSubtype"],n)};d.bus.on("wayfinder/showNavLineFromPhysicalLocation",(async({toEndpoint:t,selectedSecurityLanes:n=null,requiresAccessibility:o})=>async function(t,n,o){const e=await T({fromEndpoint:t,toEndpoint:n,options:o});if(e){const{segments:t}=e;o.primary&&d.bus.send("map/resetNavlineFeatures"),d.bus.send("map/showNavlineFeatures",{segments:t,category:o.primary?"primary":"alternative"})}return e}(await d.bus.getFirst("user/getPhysicalLocation"),t,{selectedSecurityLanes:n,requiresAccessibility:o,primary:!0})));const h=(t,n)=>d.bus.get("poi/getById",{id:t}).then((o=>{if(o&&o.position)return w(o,n);throw Error("Unknown POI ID "+t)}));const I=["lat","lng","floorId","ordinal"],g=t.pipe(t.pick(I),t.keys,t.propEq("length",I.length),Boolean),w=(t,n)=>({lat:t.position.latitude,lng:t.position.longitude,floorId:t.position.floorId,ordinal:n(t.position.floorId),title:t.name});async function T({fromEndpoint:t,toEndpoint:n,options:o={}}){return f.then((async e=>{o.compareFindPaths=l.compareFindPaths;const r=i(e,t,n,o);if(!r)return null;t.floorId&&n.floorId&&b(t,n,r);const a=await d.bus.get("venueData/getFloorIdToNameMap"),u=await d.bus.get("venueData/getQueueTypes"),c=d.gt();o.requiresAccessibility;const{steps:f,segments:y}=s(r.waypoints,t,n,a,c,u);p.info("route",r);const m=Math.round(r.waypoints.reduce(((t,{eta:n})=>t+n),0)),h=Math.round(r.waypoints.reduce(((t,{distance:n})=>t+n),0));return{...r,segments:y,steps:f,time:m,distance:h}}))}d.bus.on("wayfinder/getNavigationEndpoint",(({ep:t})=>async function(t){return f.then((n=>{if(!t)throw Error("wayfinder: Invalid endpoint definition",t);if("number"==typeof t)return h(t,n.floorIdToOrdinal);if("string"==typeof t){if(t.match(/^\d+$/))return h(parseInt(t),n.floorIdToOrdinal);if(t.indexOf(",")>0){let[o,e,i,r]=t.split(",");if(!n.floorIdToStructureId(i))throw Error("Unknown floorId in endpoint: "+i);return r||(r="Starting Point"),{lat:parseFloat(o),lng:parseFloat(e),ordinal:n.floorIdToOrdinal(i),floorId:i,title:r}}}if(g(t))return t;if(t.latitude)return{lat:t.latitude,lng:t.longitude,floorId:t.floorId,ordinal:n.floorIdToOrdinal(t.floorId),title:t.title};if(t.position&&t.name)return w(t,n.floorIdToOrdinal);throw Error("Invalid start or end point: "+t)}))}(t))),d.bus.on("wayfinder/checkIfPathHasSecurity",(({fromEndpoint:n,toEndpoint:o,options:e={}})=>f.then((r=>{e.compareFindPaths=l.compareFindPaths;const a=i(r,n,o,e);if(!a)return{routeExists:!1};const s=n=>Boolean(a.waypoints.find(t.pathEq(["securityLane","type"],n)));return{routeExists:!0,queues:a.waypoints.filter((n=>t.pathEq(["securityLane","type"],u.SECURITY,n)||t.pathEq(["securityLane","type"],u.IMMIGRATION,n))),hasSecurity:s(u.SECURITY),hasImmigration:s(u.IMMIGRATION)}})))),d.bus.on("wayfinder/getRoute",T);const b=(t,n,o)=>d.bus.send("session/submitEvent",{type:"navigation",startPosition:{venueId:t.floorId.split("-")[0],buildingId:o.waypoints[0].position.structureId,floorId:o.waypoints[0].position.floorId,lat:o.waypoints[0].position.lat,lng:o.waypoints[0].position.lng},endPosition:{venueId:n.floorId.split("-")[0],buildingId:o.waypoints[o.waypoints.length-1].position.structureId,floorId:o.waypoints[o.waypoints.length-1].position.floorId,lat:o.waypoints[o.waypoints.length-1].position.lat,lng:o.waypoints[o.waypoints.length-1].position.lng}});function v(n,o,e,i){let r=t.clone(n);return r=E(r,e,i),o&&o.length?{...r,transitTime:S(o,"transitTime"),distance:S(o,"distance")}:(r.distance="start"===i?P(r,e):P(e,r),r.transitTime=L(r.distance),r)}function S(n,o){return t.aperture(2,n).map((([n,o])=>{return(e=o.id,n=>t.find((t=>t.dst===e),n.edges))(n);var e})).map(t.prop(o)).reduce(((t,n)=>t+n),0)}function E(t,n,o){return{...t,[o+"Information"]:{lat:n?.lat||n?.position?.latitude,lng:n?.lng||n?.position?.longitude,floorId:n?.floorId||n?.position?.floorId}}}function P(t,n){return e(n?.lat||n?.position?.latitude,n?.lng||n?.position?.longitude,t?.lat||t?.position?.latitude,t?.lng||t?.position?.longitude)}function L(t){return t/60}function O(n){const o=n.filter((t=>null!==t));return t.sortBy(t.propOr(1/0,"transitTime"),o)}function q(n,o,e,i,r){const a=F(o,i,n),s=F(e,n,r);if(!a||!s)return null;const u=N(o,a),d=N(e,s);let l=t.clone(n);return l=E(l,i,"start"),l=E(l,r,"end"),{...l,transitTime:u+d,distance:a+s,startInformation:{...l.startInformation,transitTime:u,distance:a},endInformation:{...l.endInformation,transitTime:d,distance:s}}}function N(t,n){return t&&t.length?S(t,"transitTime"):L(n)}function F(t,n,o){return t&&t.length?S(t,"distance"):P(o,n)}return d.bus.on("wayfinder/addPathTimeSingle",(async({poi:t,startLocation:n,options:o={}})=>n?f.then((e=>function(t,n,o,e){const i=w(o,t.floorIdToOrdinal),r=t.findShortestPath(e,i,n);return v(o,r,e,"start")}(e,o,t,n))):t)),d.bus.on("wayfinder/addPathTimeMultiple",(async({pois:n,startLocation:o,options:e={}})=>o?f.then((i=>function(n,o,e,i){try{const r=t.clone(e),a=r.map((t=>w(t,n.floorIdToOrdinal))),s=n.findAllShortestPaths(i,a,o);return O(r.map(((t,n)=>v(t,s[n],i,"start"))))}catch(t){return p.error(t),e}}(i,e,n,o))):n)),d.bus.on("wayfinder/multipointAddPathTimeMultiple",(async({pois:n,startLocation:o,endLocation:e,options:i={}})=>o||e?f.then((r=>function(n,o,e,i,r){try{const a=t.clone(e),s=a.map((t=>w(t,n.floorIdToOrdinal)));let u,d,l;return i&&(u=n.findAllShortestPaths(i,s,o)),r&&(d=function(t,n,o,e){const i=[];for(const r of n)i.push(t.findShortestPath(r,o,e));return i}(n,s,r,o)),l=i&&r?a.map(((t,n)=>q(t,u[n],d[n],i,r))):i?a.map(((t,n)=>v(t,u[n],i,"start"))):a.map(((t,n)=>v(t,d[n],r,"end"))),O(l)}catch(t){return p.error(t),e}}(r,i,n,o,e))):n)),d.bus.on("wayfinder/multipointAddPathTimeSingle",(async({poi:t,startLocation:n,endLocation:o,options:e={}})=>n||o?f.then((i=>function(t,n,o,e,i){const r=w(o,t.floorIdToOrdinal);let a,s;e&&(a=t.findShortestPath(e,r,n));i&&(s=t.findShortestPath(r,i,n));return e&&i?q(o,a,s,e,i):e?v(o,a,e,"start"):i?v(o,s,i,"end"):o}(i,e,t,n,o))):t)),d.bus.on("venueData/loadNewVenue",(()=>{f=new n,c()})),d.bus.on("poi/setDynamicData",(({plugin:t,idValuesMap:n})=>{"security"===t&&f.then((t=>t.updateWithSecurityWaitTime(n)))})),d.bus.on("wayfinder/getNavGraphFeatures",(()=>f.then((({_nodes:t})=>a(t))))),{init:c,internal:{resolveNavGraph:t=>f.resolve(t),prepareSecurityLanes:y}}}export{u as SecurityLaneType,d as create};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import r from"zousan";const n=(r,n)=>null==r.responseOrder?null==n.responseOrder?0:1:null==n.responseOrder?-1:r.responseOrder-n.responseOrder,o=(r,n)=>r.splice(n,1)[0],e=(r,n)=>{let e=0;do{e=r.indexOf(n,e),e>=0&&o(r,e)}while(e>=0);return r};function t(o={}){const t=o.log?o.log.sublog?o.log.sublog("bustle",{color:"pink"}):o.log:console,s={},l={};function u(r,n){s[r]&&e(s[r],n)}function c(r,n){l[r]&&e(l[r],n)}function i(n,e){return o.showEvents&&("function"==typeof o.showEvents?o.showEvents(n,e)&&t.info("send with",n," and ",e):t.info("send with",n," and ",e)),new r((u=>r.soon(((n,e,u)=>()=>{const c=s[n],i=l[n],f=[];if(c)for(const n of c)try{f.push(n(e))}catch(n){o.reportAllErrors&&t.error(n),o.rejectOnError?f.push(r.reject(n)):f.push(n)}const h=r.all(f);if(i)for(const r of i)try{r(e,h)}catch(r){o.reportAllErrors&&t.error(r)}u(h)})(n,e,u))))}return{get:(n,o)=>i(n,o).then((o=>1!==o.length?r.reject(`${n} event did not return a single result, but ${o.length} results.`):o[0])),getFirst:(r,o)=>i(r,o).then((r=>r.length>=1?r.sort(n)[0]:void 0)),moff:c,monitor:function(r,n){return l[r]||(l[r]=[]),l[r].push(n),()=>c(r,n)},off:u,on:function(r,n){return s[r]||(s[r]=[]),s[r].push(n),()=>u(r,n)},send:i}}export{t as create};
|
package/package.json
CHANGED