sgerp-frontend-lib 0.2.0 → 0.2.1

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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../sgerplib/sgerp/routing/index.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,qBAAa,IAAI;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;gBAEL,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CASrF;AAED,qBAAa,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;gBAGnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAoBnB;AAED,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAUpE;AAED,qBAAa,KAAK;IAChB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;gBAET,IAAI,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;CAYjD;AAmKD,UAAU,eAAe;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,aAAa,GAAG,CACnB,MAAM,EAAE;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAAG,SAAS,EACxC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAC;AAEV,qBAAa,aAAa;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGpC,mBAAmB,EAAE,MAAM,EAC3B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,eAAe,GAAE,MAAqB,EACtC,QAAQ,GAAE,eAAe,GAAG,IAAW;IAoDzC,MAAM,IAAI,MAAM;IAiBV,KAAK,CACT,MAAM,EAAE,MAAM,EAAE,EAAE,EAClB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,aAAa,EACvB,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC,IAAI,CAAC;IAqHhB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;CAgBhE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../sgerplib/sgerp/routing/index.ts"],"names":[],"mappings":"AA6EA,UAAU,WAAW;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,qBAAa,IAAI;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;gBAEL,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CASrF;AAED,qBAAa,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;gBAGnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAoBnB;AAED,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,CAUpE;AAED,qBAAa,KAAK;IAChB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;gBAET,IAAI,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;CAYjD;AAmKD,UAAU,eAAe;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,aAAa,GAAG,CACnB,MAAM,EAAE;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAAG,SAAS,EACxC,MAAM,EAAE,IAAI,GAAG,OAAO,EACtB,OAAO,CAAC,EAAE,MAAM,KACb,IAAI,CAAC;AAEV,qBAAa,aAAa;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGpC,mBAAmB,EAAE,MAAM,EAC3B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,eAAe,GAAE,MAAsC,EACvD,QAAQ,GAAE,eAAe,GAAG,IAAW;IAoDzC,MAAM,IAAI,MAAM;IAwBV,KAAK,CACT,MAAM,EAAE,MAAM,EAAE,EAAE,EAClB,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,aAAa,EACvB,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC,IAAI,CAAC;IAqHhB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;CAgBhE"}
@@ -7,6 +7,70 @@ exports.RoutingEngine = exports.Route = exports.Leg = exports.Step = void 0;
7
7
  exports.airLeg = airLeg;
8
8
  const polyline_1 = __importDefault(require("@mapbox/polyline"));
9
9
  const domains_1 = require("../domains");
10
+ /**
11
+ * Get OSRM proxy URL from environment variable mapping
12
+ * Expects NEXT_PUBLIC_OSRM_PROXY_URL_MAPPING env var with JSON format:
13
+ * {
14
+ * "vrptoolbox.d.gcdev.swatrider.com": "https://osrm-proxy-gcdev.swatrider.com",
15
+ * "vrptoolbox.d.gcprod.swatrider.com": "https://osrm-proxy-gcprod.swatrider.com",
16
+ * "vrptoolbox-ppe-tms-planning.lotuss.com": "https://osrm-proxy-ppe-tms-planning.lotuss.com",
17
+ * "vrptoolbox-tms-planning.lotuss.com": "https://osrm-proxy-tms-planning.lotuss.com"
18
+ * }
19
+ * @returns OSRM proxy URL or null if not found in mapping
20
+ */
21
+ function getOSRMProxyFromEnvMapping() {
22
+ if (typeof window === 'undefined')
23
+ return null;
24
+ const mappingJson = process.env.NEXT_PUBLIC_OSRM_PROXY_URL_MAPPING;
25
+ if (!mappingJson)
26
+ return null;
27
+ try {
28
+ const mapping = JSON.parse(mappingJson);
29
+ const hostname = window.location.hostname;
30
+ // Direct hostname match
31
+ if (mapping[hostname]) {
32
+ return mapping[hostname];
33
+ }
34
+ // Pattern matching - check if any key is contained in hostname
35
+ for (const [pattern, url] of Object.entries(mapping)) {
36
+ if (hostname.includes(pattern) || pattern.includes(hostname)) {
37
+ return url;
38
+ }
39
+ }
40
+ return null;
41
+ }
42
+ catch (error) {
43
+ console.error('Error parsing OSRM proxy URL mapping:', error);
44
+ return null;
45
+ }
46
+ }
47
+ /**
48
+ * Auto-detect backend from deployment URL
49
+ * Falls back to standard detection if env mapping is not available
50
+ */
51
+ function detectBackendFromDeployment() {
52
+ if (typeof window === 'undefined')
53
+ return 'production';
54
+ const hostname = window.location.hostname;
55
+ // Development/staging environments
56
+ if (hostname.includes('gcdev.swatrider.com') || hostname.includes('localhost')) {
57
+ return 'development';
58
+ }
59
+ // Production environment
60
+ if (hostname.includes('gcprod.swatrider.com')) {
61
+ return 'production';
62
+ }
63
+ // PPE environment (Lotus)
64
+ if (hostname.includes('ppe-tms-planning.lotuss.com')) {
65
+ return 'ppe';
66
+ }
67
+ // TCP environment (Lotus production)
68
+ if (hostname.includes('tms-planning.lotuss.com') && !hostname.includes('ppe')) {
69
+ return 'tcp';
70
+ }
71
+ // Default to production
72
+ return 'production';
73
+ }
10
74
  class Step {
11
75
  constructor(key, coordinates, duration, distance) {
12
76
  this.key = key;
@@ -211,7 +275,7 @@ const fetchData = async (url) => {
211
275
  }
212
276
  };
213
277
  class RoutingEngine {
214
- constructor(routing_engine_name, url, road_network, key, default_backend = 'production', settings = null) {
278
+ constructor(routing_engine_name, url, road_network, key, default_backend = detectBackendFromDeployment(), settings = null) {
215
279
  this.routing_engine_name = routing_engine_name;
216
280
  this.default_backend = default_backend;
217
281
  console.log(`default backend in routing engine ${default_backend}`);
@@ -253,6 +317,12 @@ class RoutingEngine {
253
317
  }
254
318
  getUrl() {
255
319
  if (this.url === 'http://mapbox-osrm-proxy') {
320
+ // First, check if there's an env-based mapping
321
+ const envMappedUrl = getOSRMProxyFromEnvMapping();
322
+ if (envMappedUrl) {
323
+ return envMappedUrl;
324
+ }
325
+ // Fall back to SGERP_DOMAINS based on detected backend
256
326
  if (this.default_backend === 'production') {
257
327
  return domains_1.SGERP_DOMAINS.osrm.production;
258
328
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sgerp-frontend-lib",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "TypeScript/React library for interacting with the SGERP API, providing client SDK, Backbone.js-style Collections, and pre-built React components",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",