@xyo-network/location-certainty-plugin 2.99.5 → 2.99.6

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,"sources":["../../src/index.ts","../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["export * from './Diviner/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts'\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;ACKO,IAAMA,uCAA6E;;;ACL1F,8BAAgC;AAGhC,8BAA+D;AAC/D,+CAA8F;AAC9F,qCAAgD;AAEhD,6BAA+B;AAOxB,IAAMC,2BAAN,MAAMA,kCACHC,wCAAAA;EAfV,OAeUA;;;EAER,OAAyBC,gBAA0B;OAAI,MAAMA;IAAeC;;EAC5E,OAAyBC,sBAA8BD;EACvD,OAAgBE,eAAeC;;EAG/B,OAAeC,cAAcC,WAA0D;AACrF,WAAO;;MAELC,KAAKD,UAAUE,OAAe,CAACC,MAAMC,UAAAA;AACnC,eACEA,UAAU,OACND,OACAC,QAAQD,OACNC,QACAD;MAEV,GAAGE,OAAOC,iBAAiB;MAC3BC,OAAO,MAAA;AAEL,cAAMC,SAASR,UAAUE,OACvB,CAACC,MAAMC,UAAAA;AACL,iBAAOA,UAAU,OAAOD,OAAO;YAACC,QAAQD,KAAK,CAAA;YAAIA,KAAK,CAAA,IAAK;;QAC7D,GACA;UAAC;UAAG;SAAE;AAER,eAAOK,OAAO,CAAA,IAAKA,OAAO,CAAA;MAC5B,GAAA;;MAEAC,KAAKT,UAAUE,OAAe,CAACC,MAAMC,UAAAA;AACnC,eACEA,UAAU,OACND,OACAC,QAAQD,OACNC,QACAD;MAEV,GAAGE,OAAOK,iBAAiB;IAC7B;EACF;;EAGA,OAAeC,sBAAsBC,YAAgCC,WAA8B;AAEjG,UAAMC,aAAaF,WAAWV,OAC5B,CAACC,MAAMY,MAAMC,UAAAA;AACX,YAAMC,YAAYF,KAAKE;AACvB,UAAIA,cAAcC,UAAaD,cAAc,MAAM;AACjD,cAAM,IAAIE,MAAM,mBAAA;MAClB;AACA,YAAMC,WAAWP,UAAUG,KAAAA,EAAOI;AAClCjB,WAAKiB,SAASC,KAAKD,YAAY,IAAA;AAC/BjB,WAAKc,UAAUI,KAAKJ,SAAAA;AACpBd,WAAKmB,SAASD,KAAKD,aAAaF,UAAaE,aAAa,OAAOA,WAAWH,YAAY,IAAA;AACxF,aAAOd;IACT,GACF;MAAEiB,UAAU,CAAA;MAAIH,WAAW,CAAA;MAAIK,UAAU,CAAA;IAAG,CAAA;AAE5C,WAAOR;EACT;;EAGA,MAAyBS,cAAcC,UAA0C;AAC/E,UAAMX,YAAYW,UAAUC,OAAwB,CAACC,YAAwCA,SAASC,WAAWC,6CAAAA;AAEjH,QAAIf,aAAaA,WAAWgB,SAAS,GAAG;AACtC,YAAMC,mBAAmB,MAAMC,yCAAiBC,OAAO;QACrDC,SAAS,KAAKA;QACdC,QAAQ;UACNrB;UACAc,QAAQQ;QACV;MACF,CAAA;AACA,YAAMvB,aAAc,MAAMkB,iBAAiBM,QAAO;AAElD,YAAMtB,aAAatB,0BAAyBmB,sBAAsBC,YAAYC,SAAAA;AAE9E,YAAMwB,SAAS,MAAM,IAAIC,sCAAyC;QAAEX,QAAQ7B;MAAwB,CAAA,EACjGyC,OAAO;QACNnB,UAAU5B,0BAAyBO,cAAce,WAAWM,QAAQ;QACpEH,WAAWzB,0BAAyBO,cAAce,WAAWG,SAAS;QACtEK,UAAU9B,0BAAyBO,cAAce,WAAWQ,QAAQ;MACtE,CAAA,EACCkB,MAAK;AAER,WAAKC,QAAQC,IAAI,kDAAA;AACjB,aAAO;QAACL;;IACV;AACA,WAAO,CAAA;EACT;AACF;;;AC1GA,IAAAM,4CAAwC;AACxC,2BAAiC;AACjC,+BAA8C;AAIvC,IAAMC,0BAA0B,iCACrCC,wDACE;EAAEC,UAAU;IAAE,CAACC,iEAAAA,GAA0B;EAAE;EAAGC,QAAQC;AAAiB,GACvE;EACEC,SAAS,8BAAOC,WAAAA;AACd,WAAQ,MAAMC,yBAAyBC,OAAOF,MAAAA;EAChD,GAFS;AAGX,CAAA,GAPmC;","names":["LocationCertaintyDivinerConfigSchema","LocationCertaintyDiviner","AbstractDiviner","configSchemas","LocationCertaintyDivinerConfigSchema","defaultConfigSchema","targetSchema","LocationCertaintySchema","calcHeuristic","heuristic","max","reduce","prev","value","Number","NEGATIVE_INFINITY","mean","values","min","POSITIVE_INFINITY","locationsToHeuristics","elevations","locations","heuristics","elev","index","elevation","undefined","Error","altitude","push","variance","divineHandler","payloads","filter","payload","schema","LocationSchema","length","elevationWitness","ElevationWitness","create","account","config","ElevationWitnessConfigSchema","observe","result","PayloadBuilder","fields","build","logger","log","import_location_certainty_payload_plugin","LocationCertaintyPlugin","createPayloadSetDivinerPlugin","required","LocationCertaintySchema","schema","PayloadSetSchema","diviner","params","LocationCertaintyDiviner","create"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["export * from './Diviner/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts'\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":"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","names":["import_location_certainty_payload_plugin"]}
@@ -1,6 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/Diviner/Config.ts
5
2
  var LocationCertaintyDivinerConfigSchema = "network.xyo.location.elevation.diviner.config";
6
3
 
@@ -11,13 +8,7 @@ import { LocationCertaintySchema } from "@xyo-network/location-certainty-payload
11
8
  import { LocationSchema } from "@xyo-network/location-payload-plugin";
12
9
  import { PayloadBuilder } from "@xyo-network/payload-builder";
13
10
  var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractDiviner {
14
- static {
15
- __name(this, "LocationCertaintyDiviner");
16
- }
17
- static configSchemas = [
18
- ...super.configSchemas,
19
- LocationCertaintyDivinerConfigSchema
20
- ];
11
+ static configSchemas = [...super.configSchemas, LocationCertaintyDivinerConfigSchema];
21
12
  static defaultConfigSchema = LocationCertaintyDivinerConfigSchema;
22
13
  static targetSchema = LocationCertaintySchema;
23
14
  /* Given an array of numbers, find the min/max/mean */
@@ -28,15 +19,12 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
28
19
  return value === null ? prev : value > prev ? value : prev;
29
20
  }, Number.NEGATIVE_INFINITY),
30
21
  mean: (() => {
31
- const values = heuristic.reduce((prev, value) => {
32
- return value === null ? prev : [
33
- value + prev[0],
34
- prev[1] + 1
35
- ];
36
- }, [
37
- 0,
38
- 0
39
- ]);
22
+ const values = heuristic.reduce(
23
+ (prev, value) => {
24
+ return value === null ? prev : [value + prev[0], prev[1] + 1];
25
+ },
26
+ [0, 0]
27
+ );
40
28
  return values[0] / values[1];
41
29
  })(),
42
30
  // eslint-disable-next-line unicorn/no-array-reduce
@@ -47,21 +35,20 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
47
35
  }
48
36
  /* Given elevation and location payloads, generate heuristic arrays */
49
37
  static locationsToHeuristics(elevations, locations) {
50
- const heuristics = elevations.reduce((prev, elev, index) => {
51
- const elevation = elev.elevation;
52
- if (elevation === void 0 || elevation === null) {
53
- throw new Error("Invalid Elevation");
54
- }
55
- const altitude = locations[index].altitude;
56
- prev.altitude.push(altitude ?? null);
57
- prev.elevation.push(elevation);
58
- prev.variance.push(altitude !== void 0 && altitude !== null ? altitude - elevation : null);
59
- return prev;
60
- }, {
61
- altitude: [],
62
- elevation: [],
63
- variance: []
64
- });
38
+ const heuristics = elevations.reduce(
39
+ (prev, elev, index) => {
40
+ const elevation = elev.elevation;
41
+ if (elevation === void 0 || elevation === null) {
42
+ throw new Error("Invalid Elevation");
43
+ }
44
+ const altitude = locations[index].altitude;
45
+ prev.altitude.push(altitude ?? null);
46
+ prev.elevation.push(elevation);
47
+ prev.variance.push(altitude !== void 0 && altitude !== null ? altitude - elevation : null);
48
+ return prev;
49
+ },
50
+ { altitude: [], elevation: [], variance: [] }
51
+ );
65
52
  return heuristics;
66
53
  }
67
54
  /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */
@@ -77,17 +64,13 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
77
64
  });
78
65
  const elevations = await elevationWitness.observe();
79
66
  const heuristics = _LocationCertaintyDiviner.locationsToHeuristics(elevations, locations);
80
- const result = await new PayloadBuilder({
81
- schema: LocationCertaintySchema
82
- }).fields({
67
+ const result = await new PayloadBuilder({ schema: LocationCertaintySchema }).fields({
83
68
  altitude: _LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),
84
69
  elevation: _LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),
85
70
  variance: _LocationCertaintyDiviner.calcHeuristic(heuristics.variance)
86
71
  }).build();
87
72
  this.logger?.log("LocationCertaintyDiviner.Divine: Processed query");
88
- return [
89
- result
90
- ];
73
+ return [result];
91
74
  }
92
75
  return [];
93
76
  }
@@ -97,16 +80,14 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
97
80
  import { LocationCertaintySchema as LocationCertaintySchema2 } from "@xyo-network/location-certainty-payload-plugin";
98
81
  import { PayloadSetSchema } from "@xyo-network/payload-model";
99
82
  import { createPayloadSetDivinerPlugin } from "@xyo-network/payloadset-plugin";
100
- var LocationCertaintyPlugin = /* @__PURE__ */ __name(() => createPayloadSetDivinerPlugin({
101
- required: {
102
- [LocationCertaintySchema2]: 1
103
- },
104
- schema: PayloadSetSchema
105
- }, {
106
- diviner: /* @__PURE__ */ __name(async (params) => {
107
- return await LocationCertaintyDiviner.create(params);
108
- }, "diviner")
109
- }), "LocationCertaintyPlugin");
83
+ var LocationCertaintyPlugin = () => createPayloadSetDivinerPlugin(
84
+ { required: { [LocationCertaintySchema2]: 1 }, schema: PayloadSetSchema },
85
+ {
86
+ diviner: async (params) => {
87
+ return await LocationCertaintyDiviner.create(params);
88
+ }
89
+ }
90
+ );
110
91
  export {
111
92
  LocationCertaintyDiviner,
112
93
  LocationCertaintyDivinerConfigSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":"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","names":["LocationCertaintyDivinerConfigSchema","AbstractDiviner","ElevationWitness","ElevationWitnessConfigSchema","LocationCertaintySchema","LocationSchema","PayloadBuilder","LocationCertaintyDiviner","AbstractDiviner","configSchemas","LocationCertaintyDivinerConfigSchema","defaultConfigSchema","targetSchema","LocationCertaintySchema","calcHeuristic","heuristic","max","reduce","prev","value","Number","NEGATIVE_INFINITY","mean","values","min","POSITIVE_INFINITY","locationsToHeuristics","elevations","locations","heuristics","elev","index","elevation","undefined","Error","altitude","push","variance","divineHandler","payloads","filter","payload","schema","LocationSchema","length","elevationWitness","ElevationWitness","create","account","config","ElevationWitnessConfigSchema","observe","result","PayloadBuilder","fields","build","logger","log","LocationCertaintySchema","PayloadSetSchema","createPayloadSetDivinerPlugin","LocationCertaintyPlugin","createPayloadSetDivinerPlugin","required","LocationCertaintySchema","schema","PayloadSetSchema","diviner","params","LocationCertaintyDiviner","create"]}
1
+ {"version":3,"sources":["../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":"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","names":["LocationCertaintySchema","LocationCertaintySchema"]}
@@ -1,9 +1,9 @@
1
1
  import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin';
2
2
  import { LocationCertaintyDiviner } from './Diviner/index.ts';
3
- export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import("@xylabs/object").BaseParamsFields & {
4
- account?: import("@xyo-network/account-model").AccountInstance | "random";
3
+ export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
4
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
5
5
  addToResolvers?: boolean;
6
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
6
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
7
7
  allowNameResolution?: boolean;
8
8
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
9
9
  schema: "network.xyo.location.elevation.diviner.config";
@@ -1,9 +1,9 @@
1
1
  import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin';
2
2
  import { LocationCertaintyDiviner } from './Diviner/index.ts';
3
- export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import("@xylabs/object").BaseParamsFields & {
4
- account?: import("@xyo-network/account-model").AccountInstance | "random";
3
+ export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
4
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
5
5
  addToResolvers?: boolean;
6
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
6
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
7
7
  allowNameResolution?: boolean;
8
8
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
9
9
  schema: "network.xyo.location.elevation.diviner.config";
@@ -1,9 +1,9 @@
1
1
  import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin';
2
2
  import { LocationCertaintyDiviner } from './Diviner/index.ts';
3
- export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import("@xylabs/object").BaseParamsFields & {
4
- account?: import("@xyo-network/account-model").AccountInstance | "random";
3
+ export declare const LocationCertaintyPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<LocationCertaintyDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
4
+ account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
5
5
  addToResolvers?: boolean;
6
- additionalSigners?: import("@xyo-network/account-model").AccountInstance[];
6
+ additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
7
7
  allowNameResolution?: boolean;
8
8
  config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
9
9
  schema: "network.xyo.location.elevation.diviner.config";
@@ -2,11 +2,7 @@
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __reflectGet = Reflect.get;
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
6
  var __export = (target, all) => {
11
7
  for (var name in all)
12
8
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -20,8 +16,6 @@ var __copyProps = (to, from, except, desc) => {
20
16
  return to;
21
17
  };
22
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
24
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
25
19
 
26
20
  // src/index.ts
27
21
  var src_exports = {};
@@ -42,7 +36,10 @@ var import_elevation_plugin = require("@xyo-network/elevation-plugin");
42
36
  var import_location_certainty_payload_plugin = require("@xyo-network/location-certainty-payload-plugin");
43
37
  var import_location_payload_plugin = require("@xyo-network/location-payload-plugin");
44
38
  var import_payload_builder = require("@xyo-network/payload-builder");
45
- var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_diviner_abstract.AbstractDiviner {
39
+ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_diviner_abstract.AbstractDiviner {
40
+ static configSchemas = [...super.configSchemas, LocationCertaintyDivinerConfigSchema];
41
+ static defaultConfigSchema = LocationCertaintyDivinerConfigSchema;
42
+ static targetSchema = import_location_certainty_payload_plugin.LocationCertaintySchema;
46
43
  /* Given an array of numbers, find the min/max/mean */
47
44
  static calcHeuristic(heuristic) {
48
45
  return {
@@ -51,15 +48,12 @@ var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_d
51
48
  return value === null ? prev : value > prev ? value : prev;
52
49
  }, Number.NEGATIVE_INFINITY),
53
50
  mean: (() => {
54
- const values = heuristic.reduce((prev, value) => {
55
- return value === null ? prev : [
56
- value + prev[0],
57
- prev[1] + 1
58
- ];
59
- }, [
60
- 0,
61
- 0
62
- ]);
51
+ const values = heuristic.reduce(
52
+ (prev, value) => {
53
+ return value === null ? prev : [value + prev[0], prev[1] + 1];
54
+ },
55
+ [0, 0]
56
+ );
63
57
  return values[0] / values[1];
64
58
  })(),
65
59
  // eslint-disable-next-line unicorn/no-array-reduce
@@ -70,21 +64,20 @@ var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_d
70
64
  }
71
65
  /* Given elevation and location payloads, generate heuristic arrays */
72
66
  static locationsToHeuristics(elevations, locations) {
73
- const heuristics = elevations.reduce((prev, elev, index) => {
74
- const elevation = elev.elevation;
75
- if (elevation === void 0 || elevation === null) {
76
- throw new Error("Invalid Elevation");
77
- }
78
- const altitude = locations[index].altitude;
79
- prev.altitude.push(altitude ?? null);
80
- prev.elevation.push(elevation);
81
- prev.variance.push(altitude !== void 0 && altitude !== null ? altitude - elevation : null);
82
- return prev;
83
- }, {
84
- altitude: [],
85
- elevation: [],
86
- variance: []
87
- });
67
+ const heuristics = elevations.reduce(
68
+ (prev, elev, index) => {
69
+ const elevation = elev.elevation;
70
+ if (elevation === void 0 || elevation === null) {
71
+ throw new Error("Invalid Elevation");
72
+ }
73
+ const altitude = locations[index].altitude;
74
+ prev.altitude.push(altitude ?? null);
75
+ prev.elevation.push(elevation);
76
+ prev.variance.push(altitude !== void 0 && altitude !== null ? altitude - elevation : null);
77
+ return prev;
78
+ },
79
+ { altitude: [], elevation: [], variance: [] }
80
+ );
88
81
  return heuristics;
89
82
  }
90
83
  /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */
@@ -101,44 +94,30 @@ var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_d
101
94
  });
102
95
  const elevations = await elevationWitness.observe();
103
96
  const heuristics = _LocationCertaintyDiviner.locationsToHeuristics(elevations, locations);
104
- const result = await new import_payload_builder.PayloadBuilder({
105
- schema: import_location_certainty_payload_plugin.LocationCertaintySchema
106
- }).fields({
97
+ const result = await new import_payload_builder.PayloadBuilder({ schema: import_location_certainty_payload_plugin.LocationCertaintySchema }).fields({
107
98
  altitude: _LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),
108
99
  elevation: _LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),
109
100
  variance: _LocationCertaintyDiviner.calcHeuristic(heuristics.variance)
110
101
  }).build();
111
102
  (_a = this.logger) == null ? void 0 : _a.log("LocationCertaintyDiviner.Divine: Processed query");
112
- return [
113
- result
114
- ];
103
+ return [result];
115
104
  }
116
105
  return [];
117
106
  }
118
107
  };
119
- __name(_LocationCertaintyDiviner, "LocationCertaintyDiviner");
120
- __publicField(_LocationCertaintyDiviner, "configSchemas", [
121
- ...__superGet(_LocationCertaintyDiviner, _LocationCertaintyDiviner, "configSchemas"),
122
- LocationCertaintyDivinerConfigSchema
123
- ]);
124
- __publicField(_LocationCertaintyDiviner, "defaultConfigSchema", LocationCertaintyDivinerConfigSchema);
125
- __publicField(_LocationCertaintyDiviner, "targetSchema", import_location_certainty_payload_plugin.LocationCertaintySchema);
126
- var LocationCertaintyDiviner = _LocationCertaintyDiviner;
127
108
 
128
109
  // src/Plugin.ts
129
110
  var import_location_certainty_payload_plugin2 = require("@xyo-network/location-certainty-payload-plugin");
130
111
  var import_payload_model = require("@xyo-network/payload-model");
131
112
  var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
132
- var LocationCertaintyPlugin = /* @__PURE__ */ __name(() => (0, import_payloadset_plugin.createPayloadSetDivinerPlugin)({
133
- required: {
134
- [import_location_certainty_payload_plugin2.LocationCertaintySchema]: 1
135
- },
136
- schema: import_payload_model.PayloadSetSchema
137
- }, {
138
- diviner: /* @__PURE__ */ __name(async (params) => {
139
- return await LocationCertaintyDiviner.create(params);
140
- }, "diviner")
141
- }), "LocationCertaintyPlugin");
113
+ var LocationCertaintyPlugin = () => (0, import_payloadset_plugin.createPayloadSetDivinerPlugin)(
114
+ { required: { [import_location_certainty_payload_plugin2.LocationCertaintySchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
115
+ {
116
+ diviner: async (params) => {
117
+ return await LocationCertaintyDiviner.create(params);
118
+ }
119
+ }
120
+ );
142
121
  // Annotate the CommonJS export names for ESM import in node:
143
122
  0 && (module.exports = {
144
123
  LocationCertaintyDiviner,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["export * from './Diviner/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts'\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":"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","names":["LocationCertaintyDivinerConfigSchema","LocationCertaintyDiviner","AbstractDiviner","calcHeuristic","heuristic","max","reduce","prev","value","Number","NEGATIVE_INFINITY","mean","values","min","POSITIVE_INFINITY","locationsToHeuristics","elevations","locations","heuristics","elev","index","elevation","undefined","Error","altitude","push","variance","divineHandler","payloads","filter","payload","schema","LocationSchema","length","elevationWitness","ElevationWitness","create","account","config","ElevationWitnessConfigSchema","observe","result","PayloadBuilder","LocationCertaintySchema","fields","build","logger","log","configSchemas","LocationCertaintyDivinerConfigSchema","defaultConfigSchema","targetSchema","import_location_certainty_payload_plugin","LocationCertaintyPlugin","createPayloadSetDivinerPlugin","required","LocationCertaintySchema","schema","PayloadSetSchema","diviner","params","LocationCertaintyDiviner","create"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Diviner/Config.ts","../../src/Diviner/Diviner.ts","../../src/Plugin.ts"],"sourcesContent":["export * from './Diviner/index.ts'\n// eslint-disable-next-line import/no-default-export\nexport { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts'\n","import { DivinerConfig } from '@xyo-network/diviner-model'\nimport { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport type LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\nexport const LocationCertaintyDivinerConfigSchema: LocationCertaintyDivinerConfigSchema = 'network.xyo.location.elevation.diviner.config'\n\nexport type LocationCertaintyDivinerConfig<TConfig extends Payload = Payload> = DivinerConfig<\n TConfig & {\n schema: LocationCertaintyDivinerConfigSchema\n targetSchema?: LocationCertaintySchema\n }\n>\n","import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { ElevationPayload } from '@xyo-network/elevation-payload-plugin'\nimport { ElevationWitness, ElevationWitnessConfigSchema } from '@xyo-network/elevation-plugin'\nimport { LocationCertaintyHeuristic, LocationCertaintyPayload, LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { LocationPayload, LocationSchema } from '@xyo-network/location-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema\n static override targetSchema = LocationCertaintySchema\n\n /* Given an array of numbers, find the min/max/mean */\n private static calcHeuristic(heuristic: (number | null)[]): LocationCertaintyHeuristic {\n return {\n // eslint-disable-next-line unicorn/no-array-reduce\n max: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value > prev\n ? value\n : prev\n )\n }, Number.NEGATIVE_INFINITY),\n mean: (() => {\n // eslint-disable-next-line unicorn/no-array-reduce\n const values = heuristic.reduce<number[]>(\n (prev, value) => {\n return value === null ? prev : [value + prev[0], prev[1] + 1]\n },\n [0, 0],\n )\n return values[0] / values[1]\n })(),\n // eslint-disable-next-line unicorn/no-array-reduce\n min: heuristic.reduce<number>((prev, value) => {\n return (\n value === null\n ? prev\n : value < prev\n ? value\n : prev\n )\n }, Number.POSITIVE_INFINITY),\n }\n }\n\n /* Given elevation and location payloads, generate heuristic arrays */\n private static locationsToHeuristics(elevations: ElevationPayload[], locations: LocationPayload[]) {\n // eslint-disable-next-line unicorn/no-array-reduce\n const heuristics = elevations.reduce<{ altitude: (number | null)[]; elevation: number[]; variance: (number | null)[] }>(\n (prev, elev, index) => {\n const elevation = elev.elevation\n if (elevation === undefined || elevation === null) {\n throw new Error('Invalid Elevation')\n }\n const altitude = locations[index].altitude\n prev.altitude.push(altitude ?? null)\n prev.elevation.push(elevation)\n prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)\n return prev\n },\n { altitude: [], elevation: [], variance: [] },\n )\n return heuristics\n }\n\n /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const locations = payloads?.filter<LocationPayload>((payload): payload is LocationPayload => payload?.schema === LocationSchema)\n // If this is a query we support\n if (locations && locations?.length > 0) {\n const elevationWitness = await ElevationWitness.create({\n account: this.account,\n config: {\n locations,\n schema: ElevationWitnessConfigSchema,\n },\n })\n const elevations = (await elevationWitness.observe()) as ElevationPayload[]\n\n const heuristics = LocationCertaintyDiviner.locationsToHeuristics(elevations, locations)\n\n const result = await new PayloadBuilder<LocationCertaintyPayload>({ schema: LocationCertaintySchema })\n .fields({\n altitude: LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),\n elevation: LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),\n variance: LocationCertaintyDiviner.calcHeuristic(heuristics.variance),\n })\n .build()\n\n this.logger?.log('LocationCertaintyDiviner.Divine: Processed query')\n return [result]\n }\n return []\n }\n}\n","import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { LocationCertaintyDiviner } from './Diviner/index.ts'\n\nexport const LocationCertaintyPlugin = () =>\n createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(\n { required: { [LocationCertaintySchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await LocationCertaintyDiviner.create(params)) as LocationCertaintyDiviner\n },\n },\n )\n"],"mappings":"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","names":["import_location_certainty_payload_plugin"]}