atriusmaps-node-sdk 3.3.363 → 3.3.365

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.
@@ -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.363";
6
+ var version = "3.3.365";
7
7
  var license = "UNLICENSED";
8
8
  var type = "module";
9
9
  var main = "src/main.js";
@@ -35,40 +35,34 @@ const V1_URL_BASE = 'https://rest.locuslabs.com/v1';
35
35
 
36
36
  function create (app) {
37
37
  const state = {
38
- dataLoadedProm: new Zousan(),
39
38
  dynamicDataNotPending: new Zousan()
40
39
  };
41
40
  const T = app.gt();
42
41
 
43
- const init = async () => {
44
- const accountId = app.config.plugins.venueDataLoader.accountId;
42
+ // by returning this dynamicDataLoaded promise, we hold sdkReady event until this is resolved
43
+ app.bus.on('system/readywhenyouare', () => state.dynamicDataNotPending);
45
44
 
46
- async function getURL () {
47
- return state.dataLoadedProm
48
- .then(venueData => `${V1_URL_BASE}/venue/${venueData.id}/account/${accountId}/get-all-dynamic-pois/`)
49
- }
45
+ const init = async () => {
46
+ const [accountId, venueId] = await Promise.all([
47
+ app.bus.get('venueData/getAccountId'),
48
+ app.bus.get('venueData/getVenueId')
49
+ ]);
50
50
 
51
- /*
52
- API URL: https://gitlab.com/locuslabs/core-data-team/rest-api/-/blob/develop/v3/docs/REST%20API%20v3.postman_collection.json
53
- */
54
- const getWaitTimesUrl = async () => state.dataLoadedProm.then(venueData => `${V3_URL_BASE}/venueId/${venueData.id}/accountId/${accountId}/get-dynamic-queue-times/`);
51
+ const dynamicPoisUrl = `${V1_URL_BASE}/venue/${venueId}/account/${accountId}/get-all-dynamic-pois/`;
52
+ const waitTimesUrl = `${V3_URL_BASE}/venueId/${venueId}/accountId/${accountId}/get-dynamic-queue-times/`;
55
53
 
56
- const updateFromAPI = async () => {
54
+ const updateFromAPI = async () =>
57
55
  Promise.all([
58
- getURL()
59
- .then(fetch)
56
+ fetch(dynamicPoisUrl)
60
57
  .then(r => r.json())
61
- .then(poiMap => processDynamicPois(Date.now(), poiMap)),
62
- getWaitTimesUrl()
63
- .then(fetch)
58
+ .then(poiMap => processDynamicPois(poiMap)),
59
+ fetch(waitTimesUrl)
64
60
  .then(r => r.json())
65
- .then(waitTimes => processSecurityWaitTimes(Date.now(), waitTimes))
66
- ]).then(() => state.dynamicDataNotPending.resolve(true))
61
+ .then(waitTimes => processSecurityWaitTimes(waitTimes))
62
+ ])
67
63
  .catch(err => {
68
64
  console.error(err);
69
- state.dynamicDataNotPending.resolve(true);
70
- });
71
- };
65
+ }).finally(() => state.dynamicDataNotPending.resolve(true));
72
66
 
73
67
  // Currently, the only way to know if a venue has dynamic POIs is if they have security wait times
74
68
  // and the only way we know that is if they have queueTypes.
@@ -76,20 +70,19 @@ function create (app) {
76
70
  // This will certainly need to change at some point.
77
71
  const queueTypes = await app.bus.get('venueData/getQueueTypes');
78
72
  if (queueTypes.SecurityLane && queueTypes.SecurityLane.length) {
79
- state.dataLoadedProm
80
- .then(updateFromAPI)
81
- .then(() => setInterval(updateFromAPI, REFRESH_FREQUENCY));
73
+ return updateFromAPI()
74
+ .then(() => setInterval(updateFromAPI, REFRESH_FREQUENCY))
82
75
  } else
83
- state.dynamicDataNotPending.resolve(true); // no need to wait for this since there is no dynamic data
76
+ return state.dynamicDataNotPending.resolve(true) // no need to wait for this since there is no dynamic data
84
77
  };
85
78
 
86
- function processDynamicPois (...args) {
87
- processParkingPOIS(...args);
88
- processOpenClosedPois(...args);
79
+ function processDynamicPois (pois) {
80
+ processParkingPOIS(pois);
81
+ processOpenClosedPois(pois);
89
82
  }
90
83
 
91
- function processParkingPOIS (timeNowMs, poiMap) {
92
- const idValuesMap = processors.processParkingPOIS(timeNowMs, poiMap);
84
+ function processParkingPOIS (poiMap) {
85
+ const idValuesMap = processors.processParkingPOIS(poiMap);
93
86
  app.bus.send('poi/setDynamicData', { plugin: 'parking', idValuesMap });
94
87
  }
95
88
 
@@ -106,8 +99,8 @@ function create (app) {
106
99
  /*
107
100
  API response: https://gitlab.com/locuslabs/core-data-team/json-schemas/-/blob/develop/src/api-marketplace/dynamic-queue-data.json
108
101
  */
109
- async function processSecurityWaitTimes (timeNowMs, waitTimes) {
110
- const idValuesMap = processors.processSecurityWaitTimes(timeNowMs, waitTimes);
102
+ async function processSecurityWaitTimes (waitTimes) {
103
+ const idValuesMap = processors.processSecurityWaitTimes(waitTimes);
111
104
 
112
105
  app.bus.send('poi/setDynamicData', { plugin: 'security', idValuesMap });
113
106
 
@@ -118,27 +111,13 @@ function create (app) {
118
111
  });
119
112
  }
120
113
 
121
- function processOpenClosedPois (timeNowMs, poiMap) {
122
- const idValuesMap = processors.processOpenClosedPois(timeNowMs, poiMap);
114
+ function processOpenClosedPois (poiMap) {
115
+ const idValuesMap = processors.processOpenClosedPois(poiMap);
123
116
  app.bus.send('poi/setDynamicData', { plugin: 'open-closed-status', idValuesMap });
124
117
  }
125
118
 
126
- app.bus.on('venueData/venueDataLoaded', ({ venueData }) => {
127
- if (state.dataLoadedProm.v) // non-standard - indicates promise has been resolved...
128
- state.dataLoadedProm = Zousan.resolve(venueData);
129
- else
130
- state.dataLoadedProm.resolve(venueData);
131
- });
132
-
133
- // by returning this dynamicDataLoaded promise, we hold sdkReady event until this is resolved
134
- app.bus.on('system/readywhenyouare', () => state.dynamicDataNotPending);
135
-
136
119
  return {
137
- init,
138
- internal: {
139
- processSecurityWaitTimes,
140
- processDynamicPois
141
- }
120
+ init
142
121
  }
143
122
  }
144
123
 
@@ -40,7 +40,8 @@ const mutateSecurityCheckpointLabel = (T, queueTimes, labels) => feature => {
40
40
  return feature
41
41
  };
42
42
 
43
- const processParkingPOIS = (timeNowMs, poiMap) => {
43
+ const processParkingPOIS = (poiMap) => {
44
+ console.log({ poiMap });
44
45
  const idValuesMap =
45
46
  R__namespace.pipe(
46
47
  R__namespace.filter(poi => poi.category === 'parking'),
@@ -48,7 +49,7 @@ const processParkingPOIS = (timeNowMs, poiMap) => {
48
49
  const da = poi.dynamicAttributes;
49
50
  if (!da)
50
51
  throw Error(`No dynamicAttributes defined for parking POI ${poi.poiId}`)
51
- const age = (timeNowMs - poi.timestamp) / 1000; // how long ago this was updated by backend (in seconds)
52
+ const age = (Date.now() - poi.timestamp) / 1000; // how long ago this was updated by backend (in seconds)
52
53
  const props = (age < da['parking.timeToLive']) // if this update is recent enough, consider it "valid"
53
54
  ? R__namespace.pick(['lotStatus', 'rateDay', 'rateHour', 'timeIsReal', 'timeToTerminal1', 'timeToTerminal2'], poi)
54
55
  : { lotStatus: da['parking.default'], rateDay: '$ -', rateHour: '$ -', timeIsReal: false };
@@ -58,13 +59,13 @@ const processParkingPOIS = (timeNowMs, poiMap) => {
58
59
  return idValuesMap
59
60
  };
60
61
 
61
- const processOpenClosedPois = (timeNowMs, poiMap) => {
62
+ const processOpenClosedPois = (poiMap) => {
62
63
  const pathToOpenClosedData = ['dynamicData', 'openClosed'];
63
64
  const openClosedPois = R__namespace.filter(R__namespace.hasPath(pathToOpenClosedData), poiMap);
64
65
  const openClosedStatuses = R__namespace.map(R__namespace.path(pathToOpenClosedData), openClosedPois);
65
66
 
66
67
  if (R__namespace.all(R__namespace.both(R__namespace.has('isOpen'), R__namespace.has('expiration')), R__namespace.values(openClosedStatuses))) {
67
- const isExpired = R__namespace.pipe(R__namespace.prop('expiration'), R__namespace.lt(timeNowMs));
68
+ const isExpired = R__namespace.pipe(R__namespace.prop('expiration'), R__namespace.lt(Date.now()));
68
69
  const idValuesMap = R__namespace.filter(isExpired, openClosedStatuses);
69
70
 
70
71
  return idValuesMap
@@ -73,19 +74,19 @@ const processOpenClosedPois = (timeNowMs, poiMap) => {
73
74
  }
74
75
  };
75
76
 
76
- const toDynamicWaitTime = (timeNowMs, waitTime) => ({
77
+ const toDynamicWaitTime = (waitTime) => ({
77
78
  queueTime: waitTime.queueTime,
78
79
  isTemporarilyClosed: waitTime.isTemporarilyClosed,
79
- timeIsReal: !waitTime.isQueueTimeDefault && waitTime.expiration > timeNowMs,
80
- lastUpdated: timeNowMs
80
+ timeIsReal: !waitTime.isQueueTimeDefault && waitTime.expiration > Date.now(),
81
+ lastUpdated: Date.now()
81
82
  });
82
83
 
83
84
  /*
84
85
  API response: https://gitlab.com/locuslabs/core-data-team/json-schemas/-/blob/develop/src/api-marketplace/dynamic-queue-data.json
85
86
  */
86
- const processSecurityWaitTimes = (timeNowMs, waitTimes) => {
87
+ const processSecurityWaitTimes = (waitTimes) => {
87
88
  const idValuesMap = R__namespace.pipe(
88
- R__namespace.map(waitTime => [waitTime.poiId, toDynamicWaitTime(timeNowMs, waitTime)]),
89
+ R__namespace.map(waitTime => [waitTime.poiId, toDynamicWaitTime(waitTime)]),
89
90
  R__namespace.fromPairs
90
91
  )(waitTimes);
91
92
 
@@ -364,9 +364,7 @@ async function create (app, config) {
364
364
 
365
365
  // returns a full URL to an image hosted on img.locuslabs.com, size has to be a string of format ${width}x${height}
366
366
  app.bus.on('venueData/getPoiImageUrl', ({ imageName, size }) => {
367
- if (config.shouldUseContainImageStrategy)
368
- return `https://img.locuslabs.com/resize/${config.accountId}/png/transparent/${size}contain/poi/${imageName}`
369
- return `https://img.locuslabs.com/resize/${config.accountId}/${size}cc/poi/${imageName}`
367
+ return `https://img.locuslabs.com/resize/${config.accountId}/png/transparent/${size}contain/poi/${imageName}`
370
368
  });
371
369
 
372
370
  // This is an utility function that returns a unique ID used to distinguish certain, installation/deployment specific parts
@@ -1 +1 @@
1
- var e="web-engine",s="3.3.363",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",demo:"cd demo/ && yarn start","e2e:comp":"cypress run --component","e2e:record":"yarn cypress run --env RECORD_MODE=true",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/**'",e2eTest:"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:"jest --no-cache --verbose","test-watch":"jest --verbose --watch","test:e2e:video":"cypress run","test:vitest":"vitest"},i=["defaults"],n={"@azure/event-hubs":"^5.12.2","@dnd-kit/core":"^6.1.0","@dnd-kit/modifiers":"^7.0.0","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@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.4.3","@mapbox/mapbox-gl-draw-static-mode":"^1.0.1","@microsoft/applicationinsights-web":"^3.3.4","@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",browserslist:"^4.24.2","crypto-browserify":"^3.12.0","cypress-axe":"^1.5.0","cypress-multi-reporters":"^1.6.4","file-loader":"^6.2.0",flexsearch:"^0.7.43","h3-js":"^4.1.0",i18next:"^20.3.4","i18next-browser-languagedetector":"^6.1.1","jest-transform-css":"6.0.1",jsdom:"^25.0.1",jsonschema:"^1.2.6",luxon:"^3.3.0","maplibre-gl":"^4.7.1","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.30.1",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.47.0","@babel/core":"^7.26.0","@babel/eslint-parser":"^7.25.9","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-syntax-import-assertions":"^7.26.0","@babel/plugin-transform-modules-commonjs":"^7.25.9","@babel/plugin-transform-runtime":"^7.25.9","@babel/preset-env":"^7.26.0","@babel/preset-react":"^7.25.9","@testing-library/jest-dom":"^6.6.3","@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:"29.7.0","jest-environment-jsdom":"^29.7.0","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.1.5",webpack:"^5.96.1","webpack-merge":"^6.0.1"},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
+ var e="web-engine",s="3.3.365",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",demo:"cd demo/ && yarn start","e2e:comp":"cypress run --component","e2e:record":"yarn cypress run --env RECORD_MODE=true",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/**'",e2eTest:"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:"jest --no-cache --verbose","test-watch":"jest --verbose --watch","test:e2e:video":"cypress run","test:vitest":"vitest"},i=["defaults"],n={"@azure/event-hubs":"^5.12.2","@dnd-kit/core":"^6.1.0","@dnd-kit/modifiers":"^7.0.0","@dnd-kit/sortable":"^8.0.0","@dnd-kit/utilities":"^3.2.2","@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.4.3","@mapbox/mapbox-gl-draw-static-mode":"^1.0.1","@microsoft/applicationinsights-web":"^3.3.4","@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",browserslist:"^4.24.2","crypto-browserify":"^3.12.0","cypress-axe":"^1.5.0","cypress-multi-reporters":"^1.6.4","file-loader":"^6.2.0",flexsearch:"^0.7.43","h3-js":"^4.1.0",i18next:"^20.3.4","i18next-browser-languagedetector":"^6.1.1","jest-transform-css":"6.0.1",jsdom:"^25.0.1",jsonschema:"^1.2.6",luxon:"^3.3.0","maplibre-gl":"^4.7.1","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.30.1",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.47.0","@babel/core":"^7.26.0","@babel/eslint-parser":"^7.25.9","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-syntax-import-assertions":"^7.26.0","@babel/plugin-transform-modules-commonjs":"^7.25.9","@babel/plugin-transform-runtime":"^7.25.9","@babel/preset-env":"^7.26.0","@babel/preset-react":"^7.25.9","@testing-library/jest-dom":"^6.6.3","@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:"29.7.0","jest-environment-jsdom":"^29.7.0","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.1.5",webpack:"^5.96.1","webpack-merge":"^6.0.1"},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 e from"zousan";import{processParkingPOIS as n,processSecurityWaitTimes as t,mutateSecurityCheckpointLabel as a,processOpenClosedPois as o}from"./processors.js";function s(s){const c={dataLoadedProm:new e,dynamicDataNotPending:new e},i=s.gt();function d(...e){!function(e,t){const a=n(e,t);s.bus.send("poi/setDynamicData",{plugin:"parking",idValuesMap:a})}(...e),function(e,n){const t=o(e,n);s.bus.send("poi/setDynamicData",{plugin:"open-closed-status",idValuesMap:t})}(...e)}const u=async e=>{const n={};for(const t of e){const e=await s.bus.get("poi/getById",{id:t});e&&(n[t]=e.name)}return n};async function r(e,n){const o=t(e,n);s.bus.send("poi/setDynamicData",{plugin:"security",idValuesMap:o});const c=await u(Object.keys(o));s.bus.send("map/mutateFeature",{functor:a(i,o,c)})}return s.bus.on("venueData/venueDataLoaded",(({venueData:n})=>{c.dataLoadedProm.v?c.dataLoadedProm=e.resolve(n):c.dataLoadedProm.resolve(n)})),s.bus.on("system/readywhenyouare",(()=>c.dynamicDataNotPending)),{init:async()=>{const e=s.config.plugins.venueDataLoader.accountId;async function n(){return c.dataLoadedProm.then((n=>`https://rest.locuslabs.com/v1/venue/${n.id}/account/${e}/get-all-dynamic-pois/`))}const t=async()=>c.dataLoadedProm.then((n=>`https://rest.locuslabs.com/v3/venueId/${n.id}/accountId/${e}/get-dynamic-queue-times/`)),a=async()=>{Promise.all([n().then(fetch).then((e=>e.json())).then((e=>d(Date.now(),e))),t().then(fetch).then((e=>e.json())).then((e=>r(Date.now(),e)))]).then((()=>c.dynamicDataNotPending.resolve(!0))).catch((e=>{console.error(e),c.dynamicDataNotPending.resolve(!0)}))},o=await s.bus.get("venueData/getQueueTypes");o.SecurityLane&&o.SecurityLane.length?c.dataLoadedProm.then(a).then((()=>setInterval(a,3e4))):c.dynamicDataNotPending.resolve(!0)},internal:{processSecurityWaitTimes:r,processDynamicPois:d}}}export{s as create};
1
+ import e from"zousan";import{processParkingPOIS as t,processSecurityWaitTimes as n,mutateSecurityCheckpointLabel as a,processOpenClosedPois as s}from"./processors.js";function o(o){const c={dynamicDataNotPending:new e},u=o.gt();o.bus.on("system/readywhenyouare",(()=>c.dynamicDataNotPending));const i=async e=>{const t={};for(const n of e){const e=await o.bus.get("poi/getById",{id:n});e&&(t[n]=e.name)}return t};return{init:async()=>{const[e,r]=await Promise.all([o.bus.get("venueData/getAccountId"),o.bus.get("venueData/getVenueId")]),d=`https://rest.locuslabs.com/v1/venue/${r}/account/${e}/get-all-dynamic-pois/`,l=`https://rest.locuslabs.com/v3/venueId/${r}/accountId/${e}/get-dynamic-queue-times/`,y=async()=>Promise.all([fetch(d).then((e=>e.json())).then((e=>{return function(e){const n=t(e);o.bus.send("poi/setDynamicData",{plugin:"parking",idValuesMap:n})}(n=e),void function(e){const t=s(e);o.bus.send("poi/setDynamicData",{plugin:"open-closed-status",idValuesMap:t})}(n);var n})),fetch(l).then((e=>e.json())).then((e=>async function(e){const t=n(e);o.bus.send("poi/setDynamicData",{plugin:"security",idValuesMap:t});const s=await i(Object.keys(t));o.bus.send("map/mutateFeature",{functor:a(u,t,s)})}(e)))]).catch((e=>{console.error(e)})).finally((()=>c.dynamicDataNotPending.resolve(!0))),m=await o.bus.get("venueData/getQueueTypes");return m.SecurityLane&&m.SecurityLane.length?y().then((()=>setInterval(y,3e4))):c.dynamicDataNotPending.resolve(!0)}}}export{o as create};
@@ -1 +1 @@
1
- import*as e from"ramda";const t=(e,t,i)=>a=>{const r=a.properties.id,o=t[r],p=i[r];if(o){const{queueTime:t,isTemporarilyClosed:i}=o,r=i?e("ui:Closed"):e("ui:_xx_ minute wait",{count:t});a.properties.text=`${p}\n${r}`}return a},i=(t,i)=>e.pipe(e.filter((e=>"parking"===e.category)),e.map((i=>{const a=i.dynamicAttributes;if(!a)throw Error(`No dynamicAttributes defined for parking POI ${i.poiId}`);return{...(t-i.timestamp)/1e3<a["parking.timeToLive"]?e.pick(["lotStatus","rateDay","rateHour","timeIsReal","timeToTerminal1","timeToTerminal2"],i):{lotStatus:a["parking.default"],rateDay:"$ -",rateHour:"$ -",timeIsReal:!1},lastUpdated:i.timestamp,lotName:i.lotName}})))(i),a=(t,i)=>{const a=["dynamicData","openClosed"],r=e.filter(e.hasPath(a),i),o=e.map(e.path(a),r);if(e.all(e.both(e.has("isOpen"),e.has("expiration")),e.values(o))){const i=e.pipe(e.prop("expiration"),e.lt(t));return e.filter(i,o)}throw Error("Open Closed poi status is malformed.")},r=(e,t)=>({queueTime:t.queueTime,isTemporarilyClosed:t.isTemporarilyClosed,timeIsReal:!t.isQueueTimeDefault&&t.expiration>e,lastUpdated:e}),o=(t,i)=>e.pipe(e.map((e=>[e.poiId,r(t,e)])),e.fromPairs)(i);export{t as mutateSecurityCheckpointLabel,a as processOpenClosedPois,i as processParkingPOIS,o as processSecurityWaitTimes};
1
+ import*as e from"ramda";const t=(e,t,i)=>a=>{const o=a.properties.id,r=t[o],p=i[o];if(r){const{queueTime:t,isTemporarilyClosed:i}=r,o=i?e("ui:Closed"):e("ui:_xx_ minute wait",{count:t});a.properties.text=`${p}\n${o}`}return a},i=t=>{console.log({poiMap:t});return e.pipe(e.filter((e=>"parking"===e.category)),e.map((t=>{const i=t.dynamicAttributes;if(!i)throw Error(`No dynamicAttributes defined for parking POI ${t.poiId}`);return{...(Date.now()-t.timestamp)/1e3<i["parking.timeToLive"]?e.pick(["lotStatus","rateDay","rateHour","timeIsReal","timeToTerminal1","timeToTerminal2"],t):{lotStatus:i["parking.default"],rateDay:"$ -",rateHour:"$ -",timeIsReal:!1},lastUpdated:t.timestamp,lotName:t.lotName}})))(t)},a=t=>{const i=["dynamicData","openClosed"],a=e.filter(e.hasPath(i),t),o=e.map(e.path(i),a);if(e.all(e.both(e.has("isOpen"),e.has("expiration")),e.values(o))){const t=e.pipe(e.prop("expiration"),e.lt(Date.now()));return e.filter(t,o)}throw Error("Open Closed poi status is malformed.")},o=e=>({queueTime:e.queueTime,isTemporarilyClosed:e.isTemporarilyClosed,timeIsReal:!e.isQueueTimeDefault&&e.expiration>Date.now(),lastUpdated:Date.now()}),r=t=>e.pipe(e.map((e=>[e.poiId,o(e)])),e.fromPairs)(t);export{t as mutateSecurityCheckpointLabel,a as processOpenClosedPois,i as processParkingPOIS,r as processSecurityWaitTimes};
@@ -1 +1 @@
1
- import*as e from"ramda";import a from"zousan";import{normalizeCoords as t,getVenueDataFromUrls as n,buildStructures as s,createFetchJson as u,createFetchText as o}from"./venueLoadingUtils.js";async function r(r,i){const d=r.log.sublog("venueDataLoader");let l=new a,c=new a;const p=a=>a.defaultStructureId||e.path(["structureOrder",0],a)||e.path(["selectorOrder",0],a)||e.pipe(e.prop("structures"),Object.values,e.path([0,"id"]))(a),g=e=>{const a=i.availableLanguages.find((a=>a.langCode===e));return a||{langCode:e,assetSuffix:""}};async function v(a,t){a.assetStage&&"prod"!==a.assetStage&&location.hostname;const i=u(),c=o(),v=await n(a,i,t),{accountId:f,venueId:m}=a;v.assetStage=a.assetStage,v.defaultOrdinal=v.defaultOrdinal||function(a){const t=p(a),n=Object.values(a.structures).find(e.propEq(t,"id"));return n.levels[n.defaultLevelId].ordinal}(v),v.structures=s(v);const b=r.i18n().language,h=g(b);return v.bareVenueId=m.slice(0,m.length-h.assetSuffix.length),v.getTranslatedContentPath=e=>`https://content.locuslabs.com/${v.category}/${e}/${m}/${f}`,v.fetchJson=i,v.fetchText=c,d.info("venueData ",v,h,b),r.config.debug&&r.env.isBrowser&&(window._venueData=v),v.queueTypes&&(v.securityQueueTypes=(()=>{const e=v.queueTypes.find((e=>"SecurityLane"===e.id));return e?e.subtypes.map((e=>e.id)):[]})()),r.bus.send("venueData/venueDataLoaded",{venueData:v}),l.resolve(v),l}function f(e){const a={id:"venueDataLoader"};return e.id!==i.venueId&&(a.vid=e.id),a.lang=r.i18n().language,"prod"!==e.assetStage&&(a.stage=e.assetStage),r.bus.send("deepLinking/notifyState",a),e}r.bus.on("debugTools/fileDrop",(async({file:e,content:a})=>{if("application/json"===e.type){const e=JSON.parse(a);if(e.basemap&&e["basemap.venue"])return n=JSON.parse(a),void r.bus.send("map/replaceTheme",{theme:n});if(e.metadata&&e.metadata["mapbox:type"])return t=a,void r.bus.send("map/replaceStyle",{styleSrc:t})}var t,n}));async function m(e){const a={...e},t=await r.bus.get("poi/getAll");return Object.values(a).forEach((e=>e.filter((e=>"poi"===e.properties.aiLayer&&"Point"===e.geometry.type)).forEach((e=>{const a=t[e.properties.id];a?a.mapLabel?e.properties.text=a.mapLabel:!1!==i.copyPOINamesToMap&&(e.properties.text=function(e){let a=e.name;return i.poiMapNameXForm?(Object.keys(i.poiMapNameXForm).filter((a=>((e,a)=>e===a||0===e.indexOf(a+"."))(e.category,a))).forEach((e=>{i.poiMapNameXForm[e].forEach((e=>a=a.replace(new RegExp(e.replace),e.with)))})),a):a}(a)):d.warn(`Unknown poi in style: ${e.properties.id}`)})))),a}const b=(a,t,n,s)=>{const u=a.replace(/-[^-]*$/,""),o=u===n?"landscape-background":`ordinal: ${s.find(e.hasPath(["levels",a])).levels[a].ordinal}`;return t.map((t=>{var s,r,i;return s="properties",r={venueId:n,structureId:u,ordinalId:o,levelId:a},i=t,t=e.over(e.lensProp(s),(a=>e.mergeRight(a||{},r)),i),t=e.assoc("id",t.properties.subid,t)}))};r.bus.on("venueData/loadMap",(async()=>{l.then((async t=>{const n=await t.fetchText(t.files.style),s=await t.fetchJson(t.files.theme),u=t.files.spritesheet,o=t.files.glyphs,{id:d,bounds:l,structures:p,venueCenter:g,venueRadius:v,defaultOrdinal:f}=t,h=t.venueList[d].mapTokens?{[d]:[]}:await async function(t){return e.pipe(e.prop("structures"),e.map(e.prop("levels")),e.chain(e.keys),e.prepend(t.id),e.map((e=>t.files.geoJson.replace("${geoJsonId}",e))),e.map(t.fetchJson),e.map(e.andThen((e=>[e.id,b(e.id,e.features,t.id,t.structures)]))),(e=>a.all(e)),e.andThen(e.fromPairs))(t)}(t).then(m),y={mapFeatures:h,mapStyleSource:n,mapTheme:s,badgesSpriteUrl:u,mapGlyphsUrl:o,structures:p,defaultOrdinal:f,venueBounds:{n:l.ne.lat,s:l.sw.lat,e:l.ne.lng,w:l.sw.lng},venueId:d,venueCenter:g,venueRadius:v,accountId:i.accountId,secure:void 0!==i.auth,tileServerAuthInfo:t.tileServerAuthInfo};c.resolve(y),r.bus.send("venueData/mapDataLoaded",y)}))}));const h=e=>null==e.shouldDisplay||e.shouldDisplay;r.bus.on("venueData/loadBuildingSelectorData",(()=>l.then((async a=>{const t={buildings:a.structures.filter(h).map(e.evolve({levels:e.pipe(e.values,e.sortWith([e.descend(e.prop("ordinal"))]))})),structureOrder:a.structureOrder,selectorOrder:a.selectorOrder};return r.bus.send("venueData/buildingSelectorDataLoaded",t),t})))),r.bus.on("venueData/normalizeCoords",(({coords:e})=>l.then((a=>t(e,a.bounds)))));const y={edges:[],nodes:[]};r.bus.on("venueData/loadNavGraph",(async()=>l.then((async e=>{const a={navGraphData:e.files.nav?await e.fetchJson(e.files.nav):y,structures:e.structures};return r.bus.send("venueData/navGraphLoaded",a),a})))),r.bus.on("venueData/loadPoiData",(async()=>l.then((async e=>{const a=i.useOldDataModel?e.files.poisOld||e.files.pois:e.files.pois||e.files.poisOld;if(a){const t=await e.fetchJson(a);r.bus.send("venueData/poiDataLoaded",{pois:t,structures:e.structures})}})))),r.bus.on("venueData/getVenueCenter",(async()=>l.then((async e=>({lat:e.venueCenter[0],lng:e.venueCenter[1],ordinal:0}))))),r.bus.on("venueData/getContentUrl",(({type:e,name:a=""})=>l.then((t=>t.files[e]+a)))),r.bus.on("venueData/getFloorIdToNameMap",(()=>l.then(e.pipe(e.prop("structures"),e.map(e.prop("levels")),e.chain(e.values),e.map(e.props(["id","name"])),e.fromPairs)))),r.bus.on("venueData/getFloorIdName",(({floorId:a})=>l.then((async t=>{const n=e.pipe(e.values,e.find(e.hasPath(["levels",a])))(t.structures);return n?{structureId:n.id,structureName:n.name,floorName:n.levels[a].name}:null}))));const D=(a,t)=>()=>l.then(e.pipe(e.prop(a),e.defaultTo(t)));r.bus.on("venueData/getVenueData",(()=>l)),r.bus.on("venueData/getVenueName",D("name")),r.bus.on("venueData/getVenueCategory",D("category")),r.bus.on("venueData/getVenueTimezone",D("tz")),r.bus.on("venueData/getAccountId",(()=>i.accountId)),r.bus.on("venueData/getVenueId",D("id")),r.bus.on("venueData/getPositioningSupported",D("positioningSupported")),r.bus.on("venueData/getStructures",D("structures")),r.bus.on("venueData/loadNewVenue",(async({venueId:e,accountId:t,assetStage:n=i.assetStage})=>{l.reject(new Error("loadNewVenue called - previous loading ignored")),c.reject(new Error("loadNewVenue called - previous loading ignored")),l=new a,c=new a,v({...i,venueId:e,accountId:t,assetStage:n},[]).then(f)})),r.bus.on("venueData/changeVenueLanguage",(async({lang:e})=>l.then((async a=>{const t=g(e),n=`${a.bareVenueId}${t.assetSuffix}`;r.bus.send("venueData/loadNewVenue",{accountId:i.accountId,venueId:n})})))),r.bus.on("venueData/getPoiImageUrl",(({imageName:e,size:a})=>i.shouldUseContainImageStrategy?`https://img.locuslabs.com/resize/${i.accountId}/png/transparent/${a}contain/poi/${e}`:`https://img.locuslabs.com/resize/${i.accountId}/${a}cc/poi/${e}`)),r.bus.on("venueData/getDistributionId",(()=>l.then((e=>`${e.bareVenueId}-${i.accountId}`)))),r.bus.on("venueData/getCustomKeywords",(()=>l.then((e=>{const a=i.useOldDataModel&&e.files.searchOld||e.files.search;return e.fetchJson(a)})))),r.bus.on("venueData/isGrabEnabled",D("enableGrab")),r.bus.on("venueData/getGrabPoiIds",D("grabPoiIds",[])),r.bus.on("venueData/getAssetsTimestamp",D("version")),r.bus.on("venueData/getTranslatedFloorId",(async({floorId:e})=>l.then((a=>{const t=r.i18n().language,n=g(t);return`${a.bareVenueId}${n.assetSuffix}-${e.split("-").slice(1).join("-")}`})))),r.bus.on("venueData/getQueueTypes",(()=>l.then((e=>{const a=["tsapre","clear","globalEntry"];return e.queueTypes?e.queueTypes.reduce(((e,t)=>{const{id:n,subtypes:s}=t,u=s.map((e=>{const t=a.includes(e.id)&&`security-logo-${e.id.toLowerCase()}`;return{...e,imageId:t}}));return e[n]=u,e}),{}):{}}))));return{init:async()=>{let e=[];null===new URLSearchParams("undefined"==typeof window?"":window.location.search).get("lang")&&(e="undefined"==typeof window?[]:navigator.languages);const a=i.deepLinkProps||{};a.lang&&e.unshift(a.lang);const t=a.vid||i.venueId,n=i.useDynamicUrlParams&&a.stage?a.stage:i.assetStage,s=a.accountId||("alpha"===n?"A1VPTJKREFJWX5":i.accountId);v({...i,venueId:t,accountId:s,assetStage:n},e).then(f)},runTest:async({testRoutine:e,reset:t=!1,venueData:n=null})=>{let s,u;return(t||n)&&(l=new a,c=new a),n&&(l=a.resolve(n)),await e(),l.v&&(s=await l),c.v&&(u=await c),{venueDataObj:s,mapDataObj:u}},internal:{getDefaultStructureId:p,setConfigProperty:(e,a)=>{i[e]=a}}}}export{r as create};
1
+ import*as e from"ramda";import a from"zousan";import{normalizeCoords as t,getVenueDataFromUrls as n,buildStructures as s,createFetchJson as u,createFetchText as o}from"./venueLoadingUtils.js";async function r(r,i){const d=r.log.sublog("venueDataLoader");let l=new a,c=new a;const p=a=>a.defaultStructureId||e.path(["structureOrder",0],a)||e.path(["selectorOrder",0],a)||e.pipe(e.prop("structures"),Object.values,e.path([0,"id"]))(a),v=e=>{const a=i.availableLanguages.find((a=>a.langCode===e));return a||{langCode:e,assetSuffix:""}};async function g(a,t){a.assetStage&&"prod"!==a.assetStage&&location.hostname;const i=u(),c=o(),g=await n(a,i,t),{accountId:f,venueId:b}=a;g.assetStage=a.assetStage,g.defaultOrdinal=g.defaultOrdinal||function(a){const t=p(a),n=Object.values(a.structures).find(e.propEq(t,"id"));return n.levels[n.defaultLevelId].ordinal}(g),g.structures=s(g);const m=r.i18n().language,h=v(m);return g.bareVenueId=b.slice(0,b.length-h.assetSuffix.length),g.getTranslatedContentPath=e=>`https://content.locuslabs.com/${g.category}/${e}/${b}/${f}`,g.fetchJson=i,g.fetchText=c,d.info("venueData ",g,h,m),r.config.debug&&r.env.isBrowser&&(window._venueData=g),g.queueTypes&&(g.securityQueueTypes=(()=>{const e=g.queueTypes.find((e=>"SecurityLane"===e.id));return e?e.subtypes.map((e=>e.id)):[]})()),r.bus.send("venueData/venueDataLoaded",{venueData:g}),l.resolve(g),l}function f(e){const a={id:"venueDataLoader"};return e.id!==i.venueId&&(a.vid=e.id),a.lang=r.i18n().language,"prod"!==e.assetStage&&(a.stage=e.assetStage),r.bus.send("deepLinking/notifyState",a),e}r.bus.on("debugTools/fileDrop",(async({file:e,content:a})=>{if("application/json"===e.type){const e=JSON.parse(a);if(e.basemap&&e["basemap.venue"])return n=JSON.parse(a),void r.bus.send("map/replaceTheme",{theme:n});if(e.metadata&&e.metadata["mapbox:type"])return t=a,void r.bus.send("map/replaceStyle",{styleSrc:t})}var t,n}));async function b(e){const a={...e},t=await r.bus.get("poi/getAll");return Object.values(a).forEach((e=>e.filter((e=>"poi"===e.properties.aiLayer&&"Point"===e.geometry.type)).forEach((e=>{const a=t[e.properties.id];a?a.mapLabel?e.properties.text=a.mapLabel:!1!==i.copyPOINamesToMap&&(e.properties.text=function(e){let a=e.name;return i.poiMapNameXForm?(Object.keys(i.poiMapNameXForm).filter((a=>((e,a)=>e===a||0===e.indexOf(a+"."))(e.category,a))).forEach((e=>{i.poiMapNameXForm[e].forEach((e=>a=a.replace(new RegExp(e.replace),e.with)))})),a):a}(a)):d.warn(`Unknown poi in style: ${e.properties.id}`)})))),a}const m=(a,t,n,s)=>{const u=a.replace(/-[^-]*$/,""),o=u===n?"landscape-background":`ordinal: ${s.find(e.hasPath(["levels",a])).levels[a].ordinal}`;return t.map((t=>{var s,r,i;return s="properties",r={venueId:n,structureId:u,ordinalId:o,levelId:a},i=t,t=e.over(e.lensProp(s),(a=>e.mergeRight(a||{},r)),i),t=e.assoc("id",t.properties.subid,t)}))};r.bus.on("venueData/loadMap",(async()=>{l.then((async t=>{const n=await t.fetchText(t.files.style),s=await t.fetchJson(t.files.theme),u=t.files.spritesheet,o=t.files.glyphs,{id:d,bounds:l,structures:p,venueCenter:v,venueRadius:g,defaultOrdinal:f}=t,h=t.venueList[d].mapTokens?{[d]:[]}:await async function(t){return e.pipe(e.prop("structures"),e.map(e.prop("levels")),e.chain(e.keys),e.prepend(t.id),e.map((e=>t.files.geoJson.replace("${geoJsonId}",e))),e.map(t.fetchJson),e.map(e.andThen((e=>[e.id,m(e.id,e.features,t.id,t.structures)]))),(e=>a.all(e)),e.andThen(e.fromPairs))(t)}(t).then(b),y={mapFeatures:h,mapStyleSource:n,mapTheme:s,badgesSpriteUrl:u,mapGlyphsUrl:o,structures:p,defaultOrdinal:f,venueBounds:{n:l.ne.lat,s:l.sw.lat,e:l.ne.lng,w:l.sw.lng},venueId:d,venueCenter:v,venueRadius:g,accountId:i.accountId,secure:void 0!==i.auth,tileServerAuthInfo:t.tileServerAuthInfo};c.resolve(y),r.bus.send("venueData/mapDataLoaded",y)}))}));const h=e=>null==e.shouldDisplay||e.shouldDisplay;r.bus.on("venueData/loadBuildingSelectorData",(()=>l.then((async a=>{const t={buildings:a.structures.filter(h).map(e.evolve({levels:e.pipe(e.values,e.sortWith([e.descend(e.prop("ordinal"))]))})),structureOrder:a.structureOrder,selectorOrder:a.selectorOrder};return r.bus.send("venueData/buildingSelectorDataLoaded",t),t})))),r.bus.on("venueData/normalizeCoords",(({coords:e})=>l.then((a=>t(e,a.bounds)))));const y={edges:[],nodes:[]};r.bus.on("venueData/loadNavGraph",(async()=>l.then((async e=>{const a={navGraphData:e.files.nav?await e.fetchJson(e.files.nav):y,structures:e.structures};return r.bus.send("venueData/navGraphLoaded",a),a})))),r.bus.on("venueData/loadPoiData",(async()=>l.then((async e=>{const a=i.useOldDataModel?e.files.poisOld||e.files.pois:e.files.pois||e.files.poisOld;if(a){const t=await e.fetchJson(a);r.bus.send("venueData/poiDataLoaded",{pois:t,structures:e.structures})}})))),r.bus.on("venueData/getVenueCenter",(async()=>l.then((async e=>({lat:e.venueCenter[0],lng:e.venueCenter[1],ordinal:0}))))),r.bus.on("venueData/getContentUrl",(({type:e,name:a=""})=>l.then((t=>t.files[e]+a)))),r.bus.on("venueData/getFloorIdToNameMap",(()=>l.then(e.pipe(e.prop("structures"),e.map(e.prop("levels")),e.chain(e.values),e.map(e.props(["id","name"])),e.fromPairs)))),r.bus.on("venueData/getFloorIdName",(({floorId:a})=>l.then((async t=>{const n=e.pipe(e.values,e.find(e.hasPath(["levels",a])))(t.structures);return n?{structureId:n.id,structureName:n.name,floorName:n.levels[a].name}:null}))));const D=(a,t)=>()=>l.then(e.pipe(e.prop(a),e.defaultTo(t)));r.bus.on("venueData/getVenueData",(()=>l)),r.bus.on("venueData/getVenueName",D("name")),r.bus.on("venueData/getVenueCategory",D("category")),r.bus.on("venueData/getVenueTimezone",D("tz")),r.bus.on("venueData/getAccountId",(()=>i.accountId)),r.bus.on("venueData/getVenueId",D("id")),r.bus.on("venueData/getPositioningSupported",D("positioningSupported")),r.bus.on("venueData/getStructures",D("structures")),r.bus.on("venueData/loadNewVenue",(async({venueId:e,accountId:t,assetStage:n=i.assetStage})=>{l.reject(new Error("loadNewVenue called - previous loading ignored")),c.reject(new Error("loadNewVenue called - previous loading ignored")),l=new a,c=new a,g({...i,venueId:e,accountId:t,assetStage:n},[]).then(f)})),r.bus.on("venueData/changeVenueLanguage",(async({lang:e})=>l.then((async a=>{const t=v(e),n=`${a.bareVenueId}${t.assetSuffix}`;r.bus.send("venueData/loadNewVenue",{accountId:i.accountId,venueId:n})})))),r.bus.on("venueData/getPoiImageUrl",(({imageName:e,size:a})=>`https://img.locuslabs.com/resize/${i.accountId}/png/transparent/${a}contain/poi/${e}`)),r.bus.on("venueData/getDistributionId",(()=>l.then((e=>`${e.bareVenueId}-${i.accountId}`)))),r.bus.on("venueData/getCustomKeywords",(()=>l.then((e=>{const a=i.useOldDataModel&&e.files.searchOld||e.files.search;return e.fetchJson(a)})))),r.bus.on("venueData/isGrabEnabled",D("enableGrab")),r.bus.on("venueData/getGrabPoiIds",D("grabPoiIds",[])),r.bus.on("venueData/getAssetsTimestamp",D("version")),r.bus.on("venueData/getTranslatedFloorId",(async({floorId:e})=>l.then((a=>{const t=r.i18n().language,n=v(t);return`${a.bareVenueId}${n.assetSuffix}-${e.split("-").slice(1).join("-")}`})))),r.bus.on("venueData/getQueueTypes",(()=>l.then((e=>{const a=["tsapre","clear","globalEntry"];return e.queueTypes?e.queueTypes.reduce(((e,t)=>{const{id:n,subtypes:s}=t,u=s.map((e=>{const t=a.includes(e.id)&&`security-logo-${e.id.toLowerCase()}`;return{...e,imageId:t}}));return e[n]=u,e}),{}):{}}))));return{init:async()=>{let e=[];null===new URLSearchParams("undefined"==typeof window?"":window.location.search).get("lang")&&(e="undefined"==typeof window?[]:navigator.languages);const a=i.deepLinkProps||{};a.lang&&e.unshift(a.lang);const t=a.vid||i.venueId,n=i.useDynamicUrlParams&&a.stage?a.stage:i.assetStage,s=a.accountId||("alpha"===n?"A1VPTJKREFJWX5":i.accountId);g({...i,venueId:t,accountId:s,assetStage:n},e).then(f)},runTest:async({testRoutine:e,reset:t=!1,venueData:n=null})=>{let s,u;return(t||n)&&(l=new a,c=new a),n&&(l=a.resolve(n)),await e(),l.v&&(s=await l),c.v&&(u=await c),{venueDataObj:s,mapDataObj:u}},internal:{getDefaultStructureId:p,setConfigProperty:(e,a)=>{i[e]=a}}}}export{r as create};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atriusmaps-node-sdk",
3
- "version": "3.3.363",
3
+ "version": "3.3.365",
4
4
  "description": "This project provides an API to Atrius Personal Wayfinder maps within a Node environment. See the README.md for more information",
5
5
  "keywords": [
6
6
  "map",