@memberjunction/geo-core 5.34.1 → 5.36.0

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.
Files changed (39) hide show
  1. package/dist/GeoCodeSyncService.d.ts +14 -16
  2. package/dist/GeoCodeSyncService.d.ts.map +1 -1
  3. package/dist/GeoCodeSyncService.js +47 -80
  4. package/dist/GeoCodeSyncService.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/providers/BaseGeocodingProvider.d.ts +37 -0
  10. package/dist/providers/BaseGeocodingProvider.d.ts.map +1 -0
  11. package/dist/providers/BaseGeocodingProvider.js +71 -0
  12. package/dist/providers/BaseGeocodingProvider.js.map +1 -0
  13. package/dist/providers/GeocodingProviderRegistry.d.ts +51 -0
  14. package/dist/providers/GeocodingProviderRegistry.d.ts.map +1 -0
  15. package/dist/providers/GeocodingProviderRegistry.js +125 -0
  16. package/dist/providers/GeocodingProviderRegistry.js.map +1 -0
  17. package/dist/providers/GeocodioGeocodingProvider.d.ts +17 -0
  18. package/dist/providers/GeocodioGeocodingProvider.d.ts.map +1 -0
  19. package/dist/providers/GeocodioGeocodingProvider.js +109 -0
  20. package/dist/providers/GeocodioGeocodingProvider.js.map +1 -0
  21. package/dist/providers/GoogleGeocodingProvider.d.ts +22 -0
  22. package/dist/providers/GoogleGeocodingProvider.d.ts.map +1 -0
  23. package/dist/providers/GoogleGeocodingProvider.js +110 -0
  24. package/dist/providers/GoogleGeocodingProvider.js.map +1 -0
  25. package/dist/providers/HereGeocodingProvider.d.ts +20 -0
  26. package/dist/providers/HereGeocodingProvider.d.ts.map +1 -0
  27. package/dist/providers/HereGeocodingProvider.js +107 -0
  28. package/dist/providers/HereGeocodingProvider.js.map +1 -0
  29. package/dist/providers/index.d.ts +7 -0
  30. package/dist/providers/index.d.ts.map +1 -0
  31. package/dist/providers/index.js +7 -0
  32. package/dist/providers/index.js.map +1 -0
  33. package/dist/providers/types.d.ts +76 -0
  34. package/dist/providers/types.d.ts.map +1 -0
  35. package/dist/providers/types.js +2 -0
  36. package/dist/providers/types.js.map +1 -0
  37. package/dist/types.d.ts +1 -1
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +4 -4
@@ -2,6 +2,7 @@ import { BaseSingleton } from '@memberjunction/global';
2
2
  import { BaseEntity, EntityInfo, UserInfo } from '@memberjunction/core';
3
3
  import { MJRecordGeoCodeEntity } from '@memberjunction/core-entities';
4
4
  import { GeoFieldMapping, GeocodeResult, ExistingGeoCodeInfo } from './types.js';
5
+ import { IGeocodingProvider } from './providers/index.js';
5
6
  /**
6
7
  * Singleton service that manages the geocoding lifecycle for entity records.
7
8
  * Called by CodeGen-generated AfterSave hooks on geo-enabled entities.
@@ -35,7 +36,7 @@ export declare class GeoCodeSyncService extends BaseSingleton<GeoCodeSyncService
35
36
  * The caller can use this to patch virtual lat/lng fields on the entity's
36
37
  * SP result before finalizeSave() loads it into the entity object.
37
38
  */
38
- SyncIfChanged(entity: BaseEntity, contextUser: UserInfo, mappings?: GeoFieldMapping[], existingGeoCodesMap?: Map<string, ExistingGeoCodeInfo>): Promise<GeocodeResult | null>;
39
+ SyncIfChanged(entity: BaseEntity, contextUser: UserInfo, mappings?: GeoFieldMapping[], existingGeoCodesMap?: Map<string, ExistingGeoCodeInfo>, providerName?: string | null): Promise<GeocodeResult | null>;
39
40
  /**
40
41
  * Derive geo field mappings from EntityField.ExtendedType metadata.
41
42
  * Finds all fields with Geo* ExtendedType values and groups them into
@@ -62,7 +63,7 @@ export declare class GeoCodeSyncService extends BaseSingleton<GeoCodeSyncService
62
63
  * @returns The geocode result if geocoding was performed successfully, or null if
63
64
  * no geocoding was needed (hash unchanged) or the attempt failed.
64
65
  */
65
- protected ProcessMapping(entity: BaseEntity, mapping: GeoFieldMapping, contextUser: UserInfo, existingGeoCodesMap?: Map<string, ExistingGeoCodeInfo>): Promise<GeocodeResult | null>;
66
+ protected ProcessMapping(entity: BaseEntity, mapping: GeoFieldMapping, contextUser: UserInfo, existingGeoCodesMap?: Map<string, ExistingGeoCodeInfo>, provider?: IGeocodingProvider | null): Promise<GeocodeResult | null>;
66
67
  /**
67
68
  * Find an existing RecordGeoCode row for a given entity/record/location type.
68
69
  *
@@ -97,10 +98,19 @@ export declare class GeoCodeSyncService extends BaseSingleton<GeoCodeSyncService
97
98
  * Perform the actual geocoding using a priority-based strategy:
98
99
  *
99
100
  * 1. Native lat/lng fields → copy directly (GeocodingSource = 'native')
100
- * 2. Address-level fields → external geocoding API (GeocodingSource = 'google')
101
+ * 2. Address-level fields → configured external geocoding provider
102
+ * (GeocodingSource = provider.Name — 'google' | 'geocodio' | 'here' | ...)
101
103
  * 3. Country/state only → reference table centroid lookup (GeocodingSource = 'reference_data')
104
+ *
105
+ * @param provider The resolved geocoding provider to use for strategy 2.
106
+ * When null, strategy 2 is skipped and we fall through to reference data.
107
+ */
108
+ protected Geocode(entity: BaseEntity, _mapping: GeoFieldMapping, provider?: IGeocodingProvider | null): Promise<GeocodeResult | null>;
109
+ /**
110
+ * Convert a provider-agnostic result into the persistence-layer shape.
111
+ * Country/state resolution to MJ IDs happens in resolveReferenceIDs().
102
112
  */
103
- protected Geocode(entity: BaseEntity, _mapping: GeoFieldMapping): Promise<GeocodeResult | null>;
113
+ private mapProviderResult;
104
114
  /**
105
115
  * Extract geo field values organized by their ExtendedType role.
106
116
  */
@@ -110,14 +120,6 @@ export declare class GeoCodeSyncService extends BaseSingleton<GeoCodeSyncService
110
120
  * Orders components logically: Address, City, StateProvince, PostalCode, Country.
111
121
  */
112
122
  private buildAddressString;
113
- /**
114
- * Call the Google Geocoding API to convert an address string to coordinates.
115
- */
116
- private geocodeViaGoogle;
117
- /**
118
- * Resolve CountryID and StateProvinceID from entity geo field values
119
- * against the reference Country/StateProvince tables.
120
- */
121
123
  /**
122
124
  * Resolve CountryID and StateProvinceID from entity geo field values
123
125
  * using the in-memory GeoDataEngine (O(1) lookups, no DB queries).
@@ -128,9 +130,5 @@ export declare class GeoCodeSyncService extends BaseSingleton<GeoCodeSyncService
128
130
  * All lookups are O(1) in-memory — no DB queries.
129
131
  */
130
132
  private geocodeViaReferenceData;
131
- /**
132
- * Get the Google Geocoding API key from config or environment.
133
- */
134
- private getGoogleApiKey;
135
133
  }
136
134
  //# sourceMappingURL=GeoCodeSyncService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeoCodeSyncService.d.ts","sourceRoot":"","sources":["../src/GeoCodeSyncService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAmB,UAAU,EAAqB,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;AACjI,OAAO,EAAE,qBAAqB,EAAiB,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAmC,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAuB/G;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,kBAAkB,CAAC;;IAKrE,WAAkB,QAAQ,IAAI,kBAAkB,CAE/C;IAED;;;;;;;;;;;;;;;;OAgBG;IACU,aAAa,CACtB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,QAAQ,EACrB,QAAQ,CAAC,EAAE,eAAe,EAAE,EAC5B,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GACvD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsBhC;;;;;;;OAOG;WACW,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,EAAE;IAgBlF;;;;OAIG;WACW,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAI3D;;;OAGG;WACW,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAIhF;;;;;OAKG;cACa,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,QAAQ,EACrB,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GACvD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmEhC;;;;;;;OAOG;cACa,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,EACrB,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GACvD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA8BxC;;;;OAIG;cACa,gBAAgB,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAuBxC;;OAEG;cACa,aAAa,CACzB,GAAG,EAAE,qBAAqB,EAC1B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;;;OAKG;cACa,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9F;;OAEG;cACa,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9F;;;;;;OAMG;cACa,OAAO,CACnB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,eAAe,GAC1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA4ChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;YACW,gBAAgB;IAwC9B;;;OAGG;IACH;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA6C/B;;OAEG;IACH,OAAO,CAAC,eAAe;CAc1B"}
1
+ {"version":3,"file":"GeoCodeSyncService.d.ts","sourceRoot":"","sources":["../src/GeoCodeSyncService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAmB,UAAU,EAAqB,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,qBAAqB,EAAiB,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAkC,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9G,OAAO,EAA6C,kBAAkB,EAAyB,MAAM,aAAa,CAAC;AAEnH;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,SAAQ,aAAa,CAAC,kBAAkB,CAAC;;IAKrE,WAAkB,QAAQ,IAAI,kBAAkB,CAE/C;IAED;;;;;;;;;;;;;;;;OAgBG;IACU,aAAa,CACtB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,QAAQ,EACrB,QAAQ,CAAC,EAAE,eAAe,EAAE,EAC5B,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACtD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAwBhC;;;;;;;OAOG;WACW,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,EAAE;IAgBlF;;;;OAIG;WACW,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAI3D;;;OAGG;WACW,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAIhF;;;;;OAKG;cACa,cAAc,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,QAAQ,EACrB,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACtD,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAmEhC;;;;;;;OAOG;cACa,mBAAmB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,EACrB,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GACvD,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IA8BxC;;;;OAIG;cACa,gBAAgB,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAuBxC;;OAEG;cACa,aAAa,CACzB,GAAG,EAAE,qBAAqB,EAC1B,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;;;OAKG;cACa,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9F;;OAEG;cACa,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9F;;;;;;;;;;OAUG;cACa,OAAO,CACnB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,eAAe,EACzB,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAoDhC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CA6ClC"}
@@ -1,7 +1,8 @@
1
1
  import { BaseSingleton } from '@memberjunction/global';
2
- import { Metadata, RunView, LogError, LogStatus } from '@memberjunction/core';
2
+ import { Metadata, RunView, LogError } from '@memberjunction/core';
3
3
  import { GeoDataEngine } from '@memberjunction/core-entities';
4
4
  import { ComputeGeoSourceHash } from './hash.js';
5
+ import { GeocodingProviderRegistry } from './providers/index.js';
5
6
  /**
6
7
  * Singleton service that manages the geocoding lifecycle for entity records.
7
8
  * Called by CodeGen-generated AfterSave hooks on geo-enabled entities.
@@ -39,7 +40,7 @@ export class GeoCodeSyncService extends BaseSingleton {
39
40
  * The caller can use this to patch virtual lat/lng fields on the entity's
40
41
  * SP result before finalizeSave() loads it into the entity object.
41
42
  */
42
- async SyncIfChanged(entity, contextUser, mappings, existingGeoCodesMap) {
43
+ async SyncIfChanged(entity, contextUser, mappings, existingGeoCodesMap, providerName) {
43
44
  const resolvedMappings = mappings ?? GeoCodeSyncService.BuildMappingsFromMetadata(entity.EntityInfo);
44
45
  if (resolvedMappings.length === 0)
45
46
  return null;
@@ -48,9 +49,10 @@ export class GeoCodeSyncService extends BaseSingleton {
48
49
  // resolveReferenceIDs() and geocodeViaReferenceData() rely on the in-memory maps
49
50
  // populated by this load, so await it before any per-mapping processing.
50
51
  await GeoDataEngine.Instance.Config(false, contextUser);
52
+ const provider = GeocodingProviderRegistry.Instance.Resolve(providerName);
51
53
  for (const mapping of resolvedMappings) {
52
54
  try {
53
- const result = await this.ProcessMapping(entity, mapping, contextUser, existingGeoCodesMap);
55
+ const result = await this.ProcessMapping(entity, mapping, contextUser, existingGeoCodesMap, provider);
54
56
  if (result)
55
57
  return result;
56
58
  }
@@ -103,7 +105,7 @@ export class GeoCodeSyncService extends BaseSingleton {
103
105
  * @returns The geocode result if geocoding was performed successfully, or null if
104
106
  * no geocoding was needed (hash unchanged) or the attempt failed.
105
107
  */
106
- async ProcessMapping(entity, mapping, contextUser, existingGeoCodesMap) {
108
+ async ProcessMapping(entity, mapping, contextUser, existingGeoCodesMap, provider) {
107
109
  const hash = ComputeGeoSourceHash(entity, mapping.Fields);
108
110
  // Build RecordID matching the format used in the view's LEFT JOIN to vwRecordGeoCodes:
109
111
  // - Single PK: bare value as string (e.g., "38CB433E-F36B-1410-84B4-00BD01F02867")
@@ -134,7 +136,7 @@ export class GeoCodeSyncService extends BaseSingleton {
134
136
  }
135
137
  // Attempt geocoding
136
138
  try {
137
- const result = await this.Geocode(entity, mapping);
139
+ const result = await this.Geocode(entity, mapping, provider);
138
140
  if (result) {
139
141
  await this.UpdateSuccess(row, result, hash);
140
142
  return result;
@@ -226,6 +228,10 @@ export class GeoCodeSyncService extends BaseSingleton {
226
228
  row.CountryID = result.CountryID ?? null;
227
229
  row.StateProvinceID = result.StateProvinceID ?? null;
228
230
  row.Status = 'success';
231
+ // The entity's GeocodingSource setter literal type is generated from the DB CHECK
232
+ // constraint. Migration V202605141800 widens that constraint to include 'geocodio'
233
+ // and 'here'; once CodeGen re-runs against the post-migration schema, the cast
234
+ // below becomes unnecessary and should be removed.
229
235
  row.GeocodingSource = result.Source;
230
236
  row.SourceFieldHash = hash;
231
237
  row.GeocodedAt = new Date();
@@ -268,10 +274,14 @@ export class GeoCodeSyncService extends BaseSingleton {
268
274
  * Perform the actual geocoding using a priority-based strategy:
269
275
  *
270
276
  * 1. Native lat/lng fields → copy directly (GeocodingSource = 'native')
271
- * 2. Address-level fields → external geocoding API (GeocodingSource = 'google')
277
+ * 2. Address-level fields → configured external geocoding provider
278
+ * (GeocodingSource = provider.Name — 'google' | 'geocodio' | 'here' | ...)
272
279
  * 3. Country/state only → reference table centroid lookup (GeocodingSource = 'reference_data')
280
+ *
281
+ * @param provider The resolved geocoding provider to use for strategy 2.
282
+ * When null, strategy 2 is skipped and we fall through to reference data.
273
283
  */
274
- async Geocode(entity, _mapping) {
284
+ async Geocode(entity, _mapping, provider) {
275
285
  // Strategy 1: Check for native (non-virtual) lat/lng fields.
276
286
  // Virtual fields like __mj_Latitude/__mj_Longitude come from the RecordGeoCode JOIN
277
287
  // and would create circular logic — reading old geocoded values instead of re-geocoding.
@@ -295,22 +305,44 @@ export class GeoCodeSyncService extends BaseSingleton {
295
305
  }
296
306
  // Collect address field values organized by their geo role
297
307
  const geoValues = this.extractGeoFieldValues(entity);
298
- // Strategy 2: Google Geocoding API (if API key is available)
299
- const apiKey = this.getGoogleApiKey();
300
- if (apiKey) {
308
+ // Strategy 2: Configured external provider (if one is resolvable)
309
+ const activeProvider = provider ?? GeocodingProviderRegistry.Instance.Resolve();
310
+ if (activeProvider) {
301
311
  const addressString = this.buildAddressString(geoValues);
302
312
  if (addressString) {
303
- const googleResult = await this.geocodeViaGoogle(addressString, apiKey);
304
- if (googleResult) {
305
- // Resolve country/state IDs from Google's response
306
- this.resolveReferenceIDs(googleResult, entity);
307
- return googleResult;
313
+ const request = {
314
+ AddressString: addressString,
315
+ Address: geoValues['GeoAddress'],
316
+ City: geoValues['GeoCity'],
317
+ StateProvince: geoValues['GeoStateProvince'],
318
+ PostalCode: geoValues['GeoPostalCode'],
319
+ Country: geoValues['GeoCountry']
320
+ };
321
+ const providerResult = await activeProvider.Geocode(request);
322
+ if (providerResult) {
323
+ const result = this.mapProviderResult(providerResult, activeProvider.Name);
324
+ this.resolveReferenceIDs(result, entity);
325
+ return result;
308
326
  }
309
327
  }
310
328
  }
311
329
  // Strategy 3: Reference data centroid lookup (country/state → approximate lat/lng)
312
330
  return this.geocodeViaReferenceData(geoValues);
313
331
  }
332
+ /**
333
+ * Convert a provider-agnostic result into the persistence-layer shape.
334
+ * Country/state resolution to MJ IDs happens in resolveReferenceIDs().
335
+ */
336
+ mapProviderResult(r, source) {
337
+ return {
338
+ Latitude: r.Latitude,
339
+ Longitude: r.Longitude,
340
+ Precision: r.Precision,
341
+ CountryID: null,
342
+ StateProvinceID: null,
343
+ Source: source
344
+ };
345
+ }
314
346
  /**
315
347
  * Extract geo field values organized by their ExtendedType role.
316
348
  */
@@ -346,53 +378,6 @@ export class GeoCodeSyncService extends BaseSingleton {
346
378
  parts.push(geoValues['Geo']); // generic location field
347
379
  return parts.length > 0 ? parts.join(', ') : null;
348
380
  }
349
- /**
350
- * Call the Google Geocoding API to convert an address string to coordinates.
351
- */
352
- async geocodeViaGoogle(address, apiKey) {
353
- try {
354
- const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(address)}&key=${apiKey}`;
355
- const response = await fetch(url);
356
- if (!response.ok) {
357
- LogError(`GeoCodeSyncService: Google API HTTP error: ${response.status}`);
358
- return null;
359
- }
360
- const data = await response.json();
361
- if (data.status !== 'OK' || !data.results?.length) {
362
- LogStatus(`GeoCodeSyncService: Google returned status "${data.status}" for "${address}"`);
363
- return null;
364
- }
365
- const result = data.results[0];
366
- const locationType = result.geometry.location_type;
367
- // Map Google's location_type to our precision enum
368
- let precision = 'city';
369
- if (locationType === 'ROOFTOP')
370
- precision = 'exact';
371
- else if (locationType === 'RANGE_INTERPOLATED')
372
- precision = 'exact';
373
- else if (locationType === 'GEOMETRIC_CENTER')
374
- precision = 'city';
375
- else if (locationType === 'APPROXIMATE')
376
- precision = 'state_province';
377
- return {
378
- Latitude: result.geometry.location.lat,
379
- Longitude: result.geometry.location.lng,
380
- Precision: precision,
381
- CountryID: null, // resolved in resolveReferenceIDs
382
- StateProvinceID: null, // resolved in resolveReferenceIDs
383
- Source: 'google'
384
- };
385
- }
386
- catch (e) {
387
- const msg = e instanceof Error ? e.message : String(e);
388
- LogError(`GeoCodeSyncService: Google geocoding error: ${msg}`);
389
- return null;
390
- }
391
- }
392
- /**
393
- * Resolve CountryID and StateProvinceID from entity geo field values
394
- * against the reference Country/StateProvince tables.
395
- */
396
381
  /**
397
382
  * Resolve CountryID and StateProvinceID from entity geo field values
398
383
  * using the in-memory GeoDataEngine (O(1) lookups, no DB queries).
@@ -459,23 +444,5 @@ export class GeoCodeSyncService extends BaseSingleton {
459
444
  }
460
445
  return null;
461
446
  }
462
- /**
463
- * Get the Google Geocoding API key from config or environment.
464
- */
465
- getGoogleApiKey() {
466
- // Check environment variables
467
- const envKey = process.env.GOOGLE_GEOCODING_API_KEY || process.env.GOOGLE_MAPS_API_KEY;
468
- if (envKey)
469
- return envKey;
470
- // Try mj.config.cjs via cosmiconfig pattern
471
- try {
472
- // Dynamic import to avoid hard dependency on cosmiconfig
473
- const configVal = globalThis['__mj_config_apiIntegrations'];
474
- return configVal?.google?.geocoding?.apiKey ?? null;
475
- }
476
- catch {
477
- return null;
478
- }
479
- }
480
447
  }
481
448
  //# sourceMappingURL=GeoCodeSyncService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeoCodeSyncService.js","sourceRoot":"","sources":["../src/GeoCodeSyncService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GeoCodeSyncService.js","sourceRoot":"","sources":["../src/GeoCodeSyncService.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './types.js';
2
2
  export * from './hash.js';
3
3
  export * from './GeoCodeSyncService.js';
4
+ export * from './providers/index.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './types.js';
2
2
  export * from './hash.js';
3
3
  export * from './GeoCodeSyncService.js';
4
+ export * from './providers/index.js';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { GeocodeRequest, IGeocodingProvider, ProviderGeocodeResult, ReverseGeocodeRequest } from './types.js';
2
+ /**
3
+ * Abstract base class for geocoding providers. Holds shared HTTP and
4
+ * config-lookup helpers so concrete providers only implement the API-specific
5
+ * request/response mapping.
6
+ */
7
+ export declare abstract class BaseGeocodingProvider implements IGeocodingProvider {
8
+ abstract readonly Name: string;
9
+ abstract readonly SupportedCountries: 'global' | readonly string[];
10
+ abstract readonly AllowsPersistentStorage: boolean;
11
+ abstract IsConfigured(): boolean;
12
+ abstract Geocode(req: GeocodeRequest): Promise<ProviderGeocodeResult | null>;
13
+ abstract ReverseGeocode(req: ReverseGeocodeRequest): Promise<ProviderGeocodeResult | null>;
14
+ /**
15
+ * Resolve a credential from env vars first, then mj.config.cjs.
16
+ * Mirrors the existing GeoCodeSyncService.getGoogleApiKey() pattern but
17
+ * generalized so each provider can declare its own env/config keys.
18
+ *
19
+ * @param envKeys Ordered list of env var names to try (e.g. ['GEOCODIO_API_KEY']).
20
+ * @param configPath Dotted path within __mj_config_apiIntegrations
21
+ * (e.g. 'geocodio.apiKey' or 'google.geocoding.apiKey').
22
+ */
23
+ protected resolveCredential(envKeys: string[], configPath: string): string | null;
24
+ /**
25
+ * Fetch JSON from a provider API with consistent error logging. Returns
26
+ * null on non-2xx responses (so callers treat HTTP errors as "no result"
27
+ * rather than throwing); throws on network/parse errors so the scheduled
28
+ * job can mark the row as 'failed' and retry later.
29
+ */
30
+ protected fetchJson<T>(url: string, init?: RequestInit): Promise<T | null>;
31
+ /**
32
+ * Helper for subclasses: clamp a numeric confidence to 0.0–1.0,
33
+ * returning null if the input is null/undefined/NaN.
34
+ */
35
+ protected normalizeConfidence(raw: number | null | undefined): number | null;
36
+ }
37
+ //# sourceMappingURL=BaseGeocodingProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseGeocodingProvider.d.ts","sourceRoot":"","sources":["../../src/providers/BaseGeocodingProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE3G;;;;GAIG;AACH,8BAAsB,qBAAsB,YAAW,kBAAkB;IACrE,kBAAyB,IAAI,EAAE,MAAM,CAAC;IACtC,kBAAyB,kBAAkB,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;IAC1E,kBAAyB,uBAAuB,EAAE,OAAO,CAAC;aAE1C,YAAY,IAAI,OAAO;aACvB,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACnE,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAEjG;;;;;;;;OAQG;IACH,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAuBjF;;;;;OAKG;cACa,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAShF;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;CAM/E"}
@@ -0,0 +1,71 @@
1
+ import { LogError } from '@memberjunction/core';
2
+ /**
3
+ * Abstract base class for geocoding providers. Holds shared HTTP and
4
+ * config-lookup helpers so concrete providers only implement the API-specific
5
+ * request/response mapping.
6
+ */
7
+ export class BaseGeocodingProvider {
8
+ /**
9
+ * Resolve a credential from env vars first, then mj.config.cjs.
10
+ * Mirrors the existing GeoCodeSyncService.getGoogleApiKey() pattern but
11
+ * generalized so each provider can declare its own env/config keys.
12
+ *
13
+ * @param envKeys Ordered list of env var names to try (e.g. ['GEOCODIO_API_KEY']).
14
+ * @param configPath Dotted path within __mj_config_apiIntegrations
15
+ * (e.g. 'geocodio.apiKey' or 'google.geocoding.apiKey').
16
+ */
17
+ resolveCredential(envKeys, configPath) {
18
+ for (const key of envKeys) {
19
+ const v = process.env[key];
20
+ if (v && v.trim().length > 0)
21
+ return v.trim();
22
+ }
23
+ try {
24
+ const cfg = globalThis['__mj_config_apiIntegrations'];
25
+ if (!cfg)
26
+ return null;
27
+ const segments = configPath.split('.');
28
+ let cursor = cfg;
29
+ for (const seg of segments) {
30
+ if (cursor && typeof cursor === 'object' && seg in cursor) {
31
+ cursor = cursor[seg];
32
+ }
33
+ else {
34
+ return null;
35
+ }
36
+ }
37
+ return typeof cursor === 'string' && cursor.length > 0 ? cursor : null;
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
43
+ /**
44
+ * Fetch JSON from a provider API with consistent error logging. Returns
45
+ * null on non-2xx responses (so callers treat HTTP errors as "no result"
46
+ * rather than throwing); throws on network/parse errors so the scheduled
47
+ * job can mark the row as 'failed' and retry later.
48
+ */
49
+ async fetchJson(url, init) {
50
+ const response = await fetch(url, init);
51
+ if (!response.ok) {
52
+ LogError(`${this.Name} geocoder HTTP ${response.status}: ${response.statusText}`);
53
+ return null;
54
+ }
55
+ return await response.json();
56
+ }
57
+ /**
58
+ * Helper for subclasses: clamp a numeric confidence to 0.0–1.0,
59
+ * returning null if the input is null/undefined/NaN.
60
+ */
61
+ normalizeConfidence(raw) {
62
+ if (raw == null || isNaN(raw))
63
+ return null;
64
+ if (raw < 0)
65
+ return 0;
66
+ if (raw > 1)
67
+ return 1;
68
+ return raw;
69
+ }
70
+ }
71
+ //# sourceMappingURL=BaseGeocodingProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseGeocodingProvider.js","sourceRoot":"","sources":["../../src/providers/BaseGeocodingProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD;;;;GAIG;AACH,MAAM,OAAgB,qBAAqB;IASvC;;;;;;;;OAQG;IACO,iBAAiB,CAAC,OAAiB,EAAE,UAAkB;QAC7D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,CAAC;YACD,MAAM,GAAG,GAAI,UAAsC,CAAC,6BAA6B,CAAwC,CAAC;YAC1H,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,GAAY,GAAG,CAAC;YAC1B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,GAAG,IAAK,MAAkC,EAAE,CAAC;oBACrF,MAAM,GAAI,MAAkC,CAAC,GAAG,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;YACD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,SAAS,CAAI,GAAW,EAAE,IAAkB;QACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,kBAAkB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAO,CAAC;IACtC,CAAC;IAED;;;OAGG;IACO,mBAAmB,CAAC,GAA8B;QACxD,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACtB,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,CAAC;IACf,CAAC;CACJ"}
@@ -0,0 +1,51 @@
1
+ import { BaseSingleton } from '@memberjunction/global';
2
+ import { IGeocodingProvider } from './types.js';
3
+ /**
4
+ * Singleton registry of geocoding providers. Resolves the configured provider
5
+ * by name and gracefully falls back when the requested one isn't configured.
6
+ *
7
+ * Built-in providers (Google, Geocod.io, HERE) are auto-registered on first
8
+ * access. Custom providers can be registered via Register() — they should
9
+ * extend BaseGeocodingProvider and be decorated with @RegisterClass for the
10
+ * MJ class factory if you want them resolvable by name across packages.
11
+ */
12
+ export declare class GeocodingProviderRegistry extends BaseSingleton<GeocodingProviderRegistry> {
13
+ private providers;
14
+ private builtInsRegistered;
15
+ constructor();
16
+ static get Instance(): GeocodingProviderRegistry;
17
+ /** Register a provider instance under its Name. */
18
+ Register(provider: IGeocodingProvider): void;
19
+ /**
20
+ * Look up a provider by name. Returns null if no provider is registered
21
+ * under that name or the provider isn't configured (no API key).
22
+ */
23
+ Get(name: string): IGeocodingProvider | null;
24
+ /** All registered providers regardless of configuration state. */
25
+ All(): IGeocodingProvider[];
26
+ /** All providers that have credentials configured. */
27
+ AllConfigured(): IGeocodingProvider[];
28
+ /**
29
+ * Resolve the provider to use given an optional explicit name. Resolution order:
30
+ *
31
+ * 1. If `requestedName` is supplied → return it if configured; if not, log a
32
+ * warning and continue.
33
+ * 2. The configured default from `__mj_config_apiIntegrations.geocoding.defaultProvider`.
34
+ * 3. The first configured provider in priority order: geocodio → here → google.
35
+ * (Geocod.io first because it has the most generous free tier for US data;
36
+ * HERE second for global; Google last because of ToS storage restrictions.)
37
+ * 4. null if nothing is configured.
38
+ */
39
+ Resolve(requestedName?: string | null): IGeocodingProvider | null;
40
+ private readDefaultFromConfig;
41
+ /**
42
+ * Register the three built-in providers on first access. We do this lazily
43
+ * (rather than at module load) so consumers who only want one provider
44
+ * don't pay for class instantiation of the others until needed.
45
+ *
46
+ * Uses MJGlobal.ClassFactory to honor any @RegisterClass overrides, so
47
+ * downstream packages can substitute their own implementations.
48
+ */
49
+ private ensureBuiltInsRegistered;
50
+ }
51
+ //# sourceMappingURL=GeocodingProviderRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeocodingProviderRegistry.d.ts","sourceRoot":"","sources":["../../src/providers/GeocodingProviderRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAY,MAAM,wBAAwB,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7C;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IACnF,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAS;;IAMnC,WAAkB,QAAQ,IAAI,yBAAyB,CAEtD;IAED,mDAAmD;IAC5C,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAInD;;;OAGG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAQnD,kEAAkE;IAC3D,GAAG,IAAI,kBAAkB,EAAE;IAKlC,sDAAsD;IAC/C,aAAa,IAAI,kBAAkB,EAAE;IAI5C;;;;;;;;;;OAUG;IACI,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,GAAG,IAAI;IAoBxE,OAAO,CAAC,qBAAqB;IAW7B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;CAmBnC"}