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

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 (65) hide show
  1. package/dist/browser/Diviner/Diviner.d.cts +1 -1
  2. package/dist/browser/Diviner/Diviner.d.cts.map +1 -1
  3. package/dist/browser/Diviner/Diviner.d.mts +1 -1
  4. package/dist/browser/Diviner/Diviner.d.mts.map +1 -1
  5. package/dist/browser/Diviner/Diviner.d.ts +1 -1
  6. package/dist/browser/Diviner/Diviner.d.ts.map +1 -1
  7. package/dist/browser/Diviner/index.d.cts +2 -2
  8. package/dist/browser/Diviner/index.d.mts +2 -2
  9. package/dist/browser/Diviner/index.d.ts +2 -2
  10. package/dist/browser/Plugin.d.cts +2 -2
  11. package/dist/browser/Plugin.d.mts +2 -2
  12. package/dist/browser/Plugin.d.ts +2 -2
  13. package/dist/browser/index.cjs +48 -31
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.d.cts +2 -2
  16. package/dist/browser/index.d.mts +2 -2
  17. package/dist/browser/index.d.ts +2 -2
  18. package/dist/browser/{index.js → index.mjs} +51 -32
  19. package/dist/browser/index.mjs.map +1 -0
  20. package/dist/neutral/Diviner/Diviner.d.cts +1 -1
  21. package/dist/neutral/Diviner/Diviner.d.cts.map +1 -1
  22. package/dist/neutral/Diviner/Diviner.d.mts +1 -1
  23. package/dist/neutral/Diviner/Diviner.d.mts.map +1 -1
  24. package/dist/neutral/Diviner/Diviner.d.ts +1 -1
  25. package/dist/neutral/Diviner/Diviner.d.ts.map +1 -1
  26. package/dist/neutral/Diviner/index.d.cts +2 -2
  27. package/dist/neutral/Diviner/index.d.mts +2 -2
  28. package/dist/neutral/Diviner/index.d.ts +2 -2
  29. package/dist/neutral/Plugin.d.cts +2 -2
  30. package/dist/neutral/Plugin.d.mts +2 -2
  31. package/dist/neutral/Plugin.d.ts +2 -2
  32. package/dist/neutral/index.cjs +48 -31
  33. package/dist/neutral/index.cjs.map +1 -1
  34. package/dist/neutral/index.d.cts +2 -2
  35. package/dist/neutral/index.d.mts +2 -2
  36. package/dist/neutral/index.d.ts +2 -2
  37. package/dist/neutral/{index.js → index.mjs} +51 -32
  38. package/dist/neutral/index.mjs.map +1 -0
  39. package/dist/node/Diviner/Diviner.d.cts +1 -1
  40. package/dist/node/Diviner/Diviner.d.cts.map +1 -1
  41. package/dist/node/Diviner/Diviner.d.mts +1 -1
  42. package/dist/node/Diviner/Diviner.d.mts.map +1 -1
  43. package/dist/node/Diviner/Diviner.d.ts +1 -1
  44. package/dist/node/Diviner/Diviner.d.ts.map +1 -1
  45. package/dist/node/Diviner/index.d.cts +2 -2
  46. package/dist/node/Diviner/index.d.mts +2 -2
  47. package/dist/node/Diviner/index.d.ts +2 -2
  48. package/dist/node/Plugin.d.cts +2 -2
  49. package/dist/node/Plugin.d.mts +2 -2
  50. package/dist/node/Plugin.d.ts +2 -2
  51. package/dist/node/index.cjs +55 -34
  52. package/dist/node/index.cjs.map +1 -1
  53. package/dist/node/index.d.cts +2 -2
  54. package/dist/node/index.d.mts +2 -2
  55. package/dist/node/index.d.ts +2 -2
  56. package/dist/node/{index.js → index.mjs} +58 -35
  57. package/dist/node/index.mjs.map +1 -0
  58. package/package.json +21 -21
  59. package/src/Diviner/Diviner.ts +13 -10
  60. package/src/Diviner/index.ts +2 -2
  61. package/src/Plugin.ts +1 -1
  62. package/src/index.ts +2 -2
  63. package/dist/browser/index.js.map +0 -1
  64. package/dist/neutral/index.js.map +0 -1
  65. package/dist/node/index.js.map +0 -1
@@ -2,7 +2,11 @@
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
5
6
  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 });
6
10
  var __export = (target, all) => {
7
11
  for (var name in all)
8
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +20,8 @@ var __copyProps = (to, from, except, desc) => {
16
20
  return to;
17
21
  };
18
22
  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);
19
25
 
20
26
  // src/index.ts
21
27
  var src_exports = {};
@@ -36,10 +42,7 @@ var import_elevation_plugin = require("@xyo-network/elevation-plugin");
36
42
  var import_location_certainty_payload_plugin = require("@xyo-network/location-certainty-payload-plugin");
37
43
  var import_location_payload_plugin = require("@xyo-network/location-payload-plugin");
38
44
  var import_payload_builder = require("@xyo-network/payload-builder");
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;
45
+ var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_diviner_abstract.AbstractDiviner {
43
46
  /* Given an array of numbers, find the min/max/mean */
44
47
  static calcHeuristic(heuristic) {
45
48
  return {
@@ -48,12 +51,15 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_di
48
51
  return value === null ? prev : value > prev ? value : prev;
49
52
  }, Number.NEGATIVE_INFINITY),
50
53
  mean: (() => {
51
- const values = heuristic.reduce(
52
- (prev, value) => {
53
- return value === null ? prev : [value + prev[0], prev[1] + 1];
54
- },
55
- [0, 0]
56
- );
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
+ ]);
57
63
  return values[0] / values[1];
58
64
  })(),
59
65
  // eslint-disable-next-line unicorn/no-array-reduce
@@ -64,20 +70,21 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_di
64
70
  }
65
71
  /* Given elevation and location payloads, generate heuristic arrays */
66
72
  static locationsToHeuristics(elevations, locations) {
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
- );
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
+ });
81
88
  return heuristics;
82
89
  }
83
90
  /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */
@@ -94,30 +101,44 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends import_di
94
101
  });
95
102
  const elevations = await elevationWitness.observe();
96
103
  const heuristics = _LocationCertaintyDiviner.locationsToHeuristics(elevations, locations);
97
- const result = await new import_payload_builder.PayloadBuilder({ schema: import_location_certainty_payload_plugin.LocationCertaintySchema }).fields({
104
+ const result = await new import_payload_builder.PayloadBuilder({
105
+ schema: import_location_certainty_payload_plugin.LocationCertaintySchema
106
+ }).fields({
98
107
  altitude: _LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),
99
108
  elevation: _LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),
100
109
  variance: _LocationCertaintyDiviner.calcHeuristic(heuristics.variance)
101
110
  }).build();
102
111
  (_a = this.logger) == null ? void 0 : _a.log("LocationCertaintyDiviner.Divine: Processed query");
103
- return [result];
112
+ return [
113
+ result
114
+ ];
104
115
  }
105
116
  return [];
106
117
  }
107
118
  };
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;
108
127
 
109
128
  // src/Plugin.ts
110
129
  var import_location_certainty_payload_plugin2 = require("@xyo-network/location-certainty-payload-plugin");
111
130
  var import_payload_model = require("@xyo-network/payload-model");
112
131
  var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
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
- );
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");
121
142
  // Annotate the CommonJS export names for ESM import in node:
122
143
  0 && (module.exports = {
123
144
  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.js'\n// eslint-disable-next-line import/no-default-export\nexport { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.js'\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.js'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule\n{\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 ? prev\n : value > prev ? 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 ? prev\n : value < prev ? 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.js'\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
+ {"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,3 +1,3 @@
1
- export * from './Diviner/index.js';
2
- export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.js';
1
+ export * from './Diviner/index.ts';
2
+ export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './Diviner/index.js';
2
- export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.js';
1
+ export * from './Diviner/index.ts';
2
+ export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './Diviner/index.js';
2
- export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.js';
1
+ export * from './Diviner/index.ts';
2
+ export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,11 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getProtoOf = Object.getPrototypeOf;
3
+ var __reflectGet = Reflect.get;
4
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
8
+
1
9
  // src/Diviner/Config.ts
2
10
  var LocationCertaintyDivinerConfigSchema = "network.xyo.location.elevation.diviner.config";
3
11
 
@@ -7,10 +15,7 @@ import { ElevationWitness, ElevationWitnessConfigSchema } from "@xyo-network/ele
7
15
  import { LocationCertaintySchema } from "@xyo-network/location-certainty-payload-plugin";
8
16
  import { LocationSchema } from "@xyo-network/location-payload-plugin";
9
17
  import { PayloadBuilder } from "@xyo-network/payload-builder";
10
- var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractDiviner {
11
- static configSchemas = [...super.configSchemas, LocationCertaintyDivinerConfigSchema];
12
- static defaultConfigSchema = LocationCertaintyDivinerConfigSchema;
13
- static targetSchema = LocationCertaintySchema;
18
+ var _LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractDiviner {
14
19
  /* Given an array of numbers, find the min/max/mean */
15
20
  static calcHeuristic(heuristic) {
16
21
  return {
@@ -19,12 +24,15 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
19
24
  return value === null ? prev : value > prev ? value : prev;
20
25
  }, Number.NEGATIVE_INFINITY),
21
26
  mean: (() => {
22
- const values = heuristic.reduce(
23
- (prev, value) => {
24
- return value === null ? prev : [value + prev[0], prev[1] + 1];
25
- },
26
- [0, 0]
27
- );
27
+ const values = heuristic.reduce((prev, value) => {
28
+ return value === null ? prev : [
29
+ value + prev[0],
30
+ prev[1] + 1
31
+ ];
32
+ }, [
33
+ 0,
34
+ 0
35
+ ]);
28
36
  return values[0] / values[1];
29
37
  })(),
30
38
  // eslint-disable-next-line unicorn/no-array-reduce
@@ -35,20 +43,21 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
35
43
  }
36
44
  /* Given elevation and location payloads, generate heuristic arrays */
37
45
  static locationsToHeuristics(elevations, locations) {
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
- );
46
+ const heuristics = elevations.reduce((prev, elev, index) => {
47
+ const elevation = elev.elevation;
48
+ if (elevation === void 0 || elevation === null) {
49
+ throw new Error("Invalid Elevation");
50
+ }
51
+ const altitude = locations[index].altitude;
52
+ prev.altitude.push(altitude ?? null);
53
+ prev.elevation.push(elevation);
54
+ prev.variance.push(altitude !== void 0 && altitude !== null ? altitude - elevation : null);
55
+ return prev;
56
+ }, {
57
+ altitude: [],
58
+ elevation: [],
59
+ variance: []
60
+ });
52
61
  return heuristics;
53
62
  }
54
63
  /** @description Given a set of locations, get the expected elevations (witness if needed), and return score/variance */
@@ -65,34 +74,48 @@ var LocationCertaintyDiviner = class _LocationCertaintyDiviner extends AbstractD
65
74
  });
66
75
  const elevations = await elevationWitness.observe();
67
76
  const heuristics = _LocationCertaintyDiviner.locationsToHeuristics(elevations, locations);
68
- const result = await new PayloadBuilder({ schema: LocationCertaintySchema }).fields({
77
+ const result = await new PayloadBuilder({
78
+ schema: LocationCertaintySchema
79
+ }).fields({
69
80
  altitude: _LocationCertaintyDiviner.calcHeuristic(heuristics.altitude),
70
81
  elevation: _LocationCertaintyDiviner.calcHeuristic(heuristics.elevation),
71
82
  variance: _LocationCertaintyDiviner.calcHeuristic(heuristics.variance)
72
83
  }).build();
73
84
  (_a = this.logger) == null ? void 0 : _a.log("LocationCertaintyDiviner.Divine: Processed query");
74
- return [result];
85
+ return [
86
+ result
87
+ ];
75
88
  }
76
89
  return [];
77
90
  }
78
91
  };
92
+ __name(_LocationCertaintyDiviner, "LocationCertaintyDiviner");
93
+ __publicField(_LocationCertaintyDiviner, "configSchemas", [
94
+ ...__superGet(_LocationCertaintyDiviner, _LocationCertaintyDiviner, "configSchemas"),
95
+ LocationCertaintyDivinerConfigSchema
96
+ ]);
97
+ __publicField(_LocationCertaintyDiviner, "defaultConfigSchema", LocationCertaintyDivinerConfigSchema);
98
+ __publicField(_LocationCertaintyDiviner, "targetSchema", LocationCertaintySchema);
99
+ var LocationCertaintyDiviner = _LocationCertaintyDiviner;
79
100
 
80
101
  // src/Plugin.ts
81
102
  import { LocationCertaintySchema as LocationCertaintySchema2 } from "@xyo-network/location-certainty-payload-plugin";
82
103
  import { PayloadSetSchema } from "@xyo-network/payload-model";
83
104
  import { createPayloadSetDivinerPlugin } from "@xyo-network/payloadset-plugin";
84
- var LocationCertaintyPlugin = () => createPayloadSetDivinerPlugin(
85
- { required: { [LocationCertaintySchema2]: 1 }, schema: PayloadSetSchema },
86
- {
87
- diviner: async (params) => {
88
- return await LocationCertaintyDiviner.create(params);
89
- }
90
- }
91
- );
105
+ var LocationCertaintyPlugin = /* @__PURE__ */ __name(() => createPayloadSetDivinerPlugin({
106
+ required: {
107
+ [LocationCertaintySchema2]: 1
108
+ },
109
+ schema: PayloadSetSchema
110
+ }, {
111
+ diviner: /* @__PURE__ */ __name(async (params) => {
112
+ return await LocationCertaintyDiviner.create(params);
113
+ }, "diviner")
114
+ }), "LocationCertaintyPlugin");
92
115
  export {
93
116
  LocationCertaintyDiviner,
94
117
  LocationCertaintyDivinerConfigSchema,
95
118
  LocationCertaintyPlugin,
96
119
  LocationCertaintyPlugin as default
97
120
  };
98
- //# sourceMappingURL=index.js.map
121
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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","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","LocationCertaintySchema","PayloadSetSchema","createPayloadSetDivinerPlugin","LocationCertaintyPlugin","createPayloadSetDivinerPlugin","required","LocationCertaintySchema","schema","PayloadSetSchema","diviner","params","LocationCertaintyDiviner","create"]}
package/package.json CHANGED
@@ -10,25 +10,25 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/diviner-abstract": "^2.110.6",
14
- "@xyo-network/diviner-model": "^2.110.6",
15
- "@xyo-network/elevation-payload-plugin": "^2.99.4",
16
- "@xyo-network/elevation-plugin": "^2.99.4",
17
- "@xyo-network/location-certainty-payload-plugin": "^2.99.4",
18
- "@xyo-network/location-payload-plugin": "^2.99.4",
19
- "@xyo-network/module-model": "^2.110.6",
20
- "@xyo-network/payload-builder": "^2.110.6",
21
- "@xyo-network/payload-model": "^2.110.6",
22
- "@xyo-network/payloadset-plugin": "^2.110.6"
13
+ "@xyo-network/diviner-abstract": "^2.111.2",
14
+ "@xyo-network/diviner-model": "^2.111.2",
15
+ "@xyo-network/elevation-payload-plugin": "^2.99.5",
16
+ "@xyo-network/elevation-plugin": "^2.99.5",
17
+ "@xyo-network/location-certainty-payload-plugin": "^2.99.5",
18
+ "@xyo-network/location-payload-plugin": "^2.99.5",
19
+ "@xyo-network/module-model": "^2.111.2",
20
+ "@xyo-network/payload-builder": "^2.111.2",
21
+ "@xyo-network/payload-model": "^2.111.2",
22
+ "@xyo-network/payloadset-plugin": "^2.111.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@xylabs/ts-scripts-yarn3": "^3.12.2",
26
- "@xylabs/tsconfig": "^3.12.2",
27
- "@xylabs/tsconfig-jest": "^3.12.2",
28
- "@xyo-network/archivist-abstract": "^2.110.6",
29
- "@xyo-network/archivist-memory": "^2.110.6",
30
- "@xyo-network/module-resolver": "^2.110.6",
31
- "typescript": "^5.5.3"
25
+ "@xylabs/ts-scripts-yarn3": "^3.15.13",
26
+ "@xylabs/tsconfig": "^3.15.13",
27
+ "@xylabs/tsconfig-jest": "^3.15.13",
28
+ "@xyo-network/archivist-abstract": "^2.111.2",
29
+ "@xyo-network/archivist-memory": "^2.111.2",
30
+ "@xyo-network/module-resolver": "^2.111.2",
31
+ "typescript": "^5.5.4"
32
32
  },
33
33
  "description": "Typescript/Javascript Plugins for XYO Platform",
34
34
  "exports": {
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "import": {
42
42
  "types": "./dist/browser/index.d.mts",
43
- "default": "./dist/browser/index.js"
43
+ "default": "./dist/browser/index.mjs"
44
44
  }
45
45
  },
46
46
  "node": {
@@ -50,14 +50,14 @@
50
50
  },
51
51
  "import": {
52
52
  "types": "./dist/node/index.d.mts",
53
- "default": "./dist/node/index.js"
53
+ "default": "./dist/node/index.mjs"
54
54
  }
55
55
  }
56
56
  },
57
57
  "./package.json": "./package.json"
58
58
  },
59
59
  "main": "dist/node/index.cjs",
60
- "module": "dist/node/index.js",
60
+ "module": "dist/node/index.mjs",
61
61
  "types": "dist/node/index.d.mts",
62
62
  "homepage": "https://xyo.network",
63
63
  "license": "LGPL-3.0-only",
@@ -69,6 +69,6 @@
69
69
  "url": "https://github.com/XYOracleNetwork/plugins.git"
70
70
  },
71
71
  "sideEffects": false,
72
- "version": "2.99.4",
72
+ "version": "2.99.5",
73
73
  "type": "module"
74
74
  }
@@ -8,14 +8,13 @@ import { AnyConfigSchema } from '@xyo-network/module-model'
8
8
  import { PayloadBuilder } from '@xyo-network/payload-builder'
9
9
  import { Payload, Schema } from '@xyo-network/payload-model'
10
10
 
11
- import { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.js'
11
+ import { LocationCertaintyDivinerConfig, LocationCertaintyDivinerConfigSchema } from './Config.ts'
12
12
 
13
13
  export type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>
14
14
 
15
15
  export class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>
16
16
  extends AbstractDiviner<TParam>
17
- implements DivinerModule
18
- {
17
+ implements DivinerModule {
19
18
  static override readonly configSchemas: Schema[] = [...super.configSchemas, LocationCertaintyDivinerConfigSchema]
20
19
  static override readonly defaultConfigSchema: Schema = LocationCertaintyDivinerConfigSchema
21
20
  static override targetSchema = LocationCertaintySchema
@@ -26,9 +25,11 @@ export class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerPar
26
25
  // eslint-disable-next-line unicorn/no-array-reduce
27
26
  max: heuristic.reduce<number>((prev, value) => {
28
27
  return (
29
- value === null ? prev
30
- : value > prev ? value
31
- : prev
28
+ value === null
29
+ ? prev
30
+ : value > prev
31
+ ? value
32
+ : prev
32
33
  )
33
34
  }, Number.NEGATIVE_INFINITY),
34
35
  mean: (() => {
@@ -44,9 +45,11 @@ export class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerPar
44
45
  // eslint-disable-next-line unicorn/no-array-reduce
45
46
  min: heuristic.reduce<number>((prev, value) => {
46
47
  return (
47
- value === null ? prev
48
- : value < prev ? value
49
- : prev
48
+ value === null
49
+ ? prev
50
+ : value < prev
51
+ ? value
52
+ : prev
50
53
  )
51
54
  }, Number.POSITIVE_INFINITY),
52
55
  }
@@ -67,7 +70,7 @@ export class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerPar
67
70
  prev.variance.push(altitude !== undefined && altitude !== null ? altitude - elevation : null)
68
71
  return prev
69
72
  },
70
- { altitude: [], elevation: [], variance: [] },
73
+ { altitude: [], elevation: [], variance: [] },
71
74
  )
72
75
  return heuristics
73
76
  }
@@ -1,2 +1,2 @@
1
- export * from './Config.js'
2
- export * from './Diviner.js'
1
+ export * from './Config.ts'
2
+ export * from './Diviner.ts'
package/src/Plugin.ts CHANGED
@@ -2,7 +2,7 @@ import { LocationCertaintySchema } from '@xyo-network/location-certainty-payload
2
2
  import { PayloadSetSchema } from '@xyo-network/payload-model'
3
3
  import { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'
4
4
 
5
- import { LocationCertaintyDiviner } from './Diviner/index.js'
5
+ import { LocationCertaintyDiviner } from './Diviner/index.ts'
6
6
 
7
7
  export const LocationCertaintyPlugin = () =>
8
8
  createPayloadSetDivinerPlugin<LocationCertaintyDiviner>(
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './Diviner/index.js'
1
+ export * from './Diviner/index.ts'
2
2
  // eslint-disable-next-line import/no-default-export
3
- export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.js'
3
+ export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts'
@@ -1 +0,0 @@
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.js'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule\n{\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 ? prev\n : value > prev ? 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 ? prev\n : value < prev ? 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.js'\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 +0,0 @@
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.js'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule\n{\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 ? prev\n : value > prev ? 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 ? prev\n : value < prev ? 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.js'\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 +0,0 @@
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.js'\n\nexport type LocationCertaintyDivinerParams = DivinerParams<AnyConfigSchema<LocationCertaintyDivinerConfig>>\n\nexport class LocationCertaintyDiviner<TParam extends LocationCertaintyDivinerParams = LocationCertaintyDivinerParams>\n extends AbstractDiviner<TParam>\n implements DivinerModule\n{\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 ? prev\n : value > prev ? 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 ? prev\n : value < prev ? 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.js'\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":";AAKO,IAAM,uCAA6E;;;ACL1F,SAAS,uBAAuB;AAGhC,SAAS,kBAAkB,oCAAoC;AAC/D,SAA+D,+BAA+B;AAC9F,SAA0B,sBAAsB;AAEhD,SAAS,sBAAsB;AAOxB,IAAM,2BAAN,MAAM,kCACH,gBAEV;AAAA,EACE,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,oCAAoC;AAAA,EAChH,OAAyB,sBAA8B;AAAA,EACvD,OAAgB,eAAe;AAAA;AAAA,EAG/B,OAAe,cAAc,WAA0D;AACrF,WAAO;AAAA;AAAA,MAEL,KAAK,UAAU,OAAe,CAAC,MAAM,UAAU;AAC7C,eACE,UAAU,OAAO,OACf,QAAQ,OAAO,QACf;AAAA,MAEN,GAAG,OAAO,iBAAiB;AAAA,MAC3B,OAAO,MAAM;AAEX,cAAM,SAAS,UAAU;AAAA,UACvB,CAAC,MAAM,UAAU;AACf,mBAAO,UAAU,OAAO,OAAO,CAAC,QAAQ,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AAAA,UAC9D;AAAA,UACA,CAAC,GAAG,CAAC;AAAA,QACP;AACA,eAAO,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,MAC7B,GAAG;AAAA;AAAA,MAEH,KAAK,UAAU,OAAe,CAAC,MAAM,UAAU;AAC7C,eACE,UAAU,OAAO,OACf,QAAQ,OAAO,QACf;AAAA,MAEN,GAAG,OAAO,iBAAiB;AAAA,IAC7B;AAAA,EACF;AAAA;AAAA,EAGA,OAAe,sBAAsB,YAAgC,WAA8B;AAEjG,UAAM,aAAa,WAAW;AAAA,MAC5B,CAAC,MAAM,MAAM,UAAU;AACrB,cAAM,YAAY,KAAK;AACvB,YAAI,cAAc,UAAa,cAAc,MAAM;AACjD,gBAAM,IAAI,MAAM,mBAAmB;AAAA,QACrC;AACA,cAAM,WAAW,UAAU,KAAK,EAAE;AAClC,aAAK,SAAS,KAAK,YAAY,IAAI;AACnC,aAAK,UAAU,KAAK,SAAS;AAC7B,aAAK,SAAS,KAAK,aAAa,UAAa,aAAa,OAAO,WAAW,YAAY,IAAI;AAC5F,eAAO;AAAA,MACT;AAAA,MACA,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC,EAAE;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAyB,cAAc,UAA0C;AA3EnF;AA4EI,UAAM,YAAY,qCAAU,OAAwB,CAAC,aAAwC,mCAAS,YAAW;AAEjH,QAAI,cAAa,uCAAW,UAAS,GAAG;AACtC,YAAM,mBAAmB,MAAM,iBAAiB,OAAO;AAAA,QACrD,SAAS,KAAK;AAAA,QACd,QAAQ;AAAA,UACN;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AACD,YAAM,aAAc,MAAM,iBAAiB,QAAQ;AAEnD,YAAM,aAAa,0BAAyB,sBAAsB,YAAY,SAAS;AAEvF,YAAM,SAAS,MAAM,IAAI,eAAyC,EAAE,QAAQ,wBAAwB,CAAC,EAClG,OAAO;AAAA,QACN,UAAU,0BAAyB,cAAc,WAAW,QAAQ;AAAA,QACpE,WAAW,0BAAyB,cAAc,WAAW,SAAS;AAAA,QACtE,UAAU,0BAAyB,cAAc,WAAW,QAAQ;AAAA,MACtE,CAAC,EACA,MAAM;AAET,iBAAK,WAAL,mBAAa,IAAI;AACjB,aAAO,CAAC,MAAM;AAAA,IAChB;AACA,WAAO,CAAC;AAAA,EACV;AACF;;;ACvGA,SAAS,2BAAAA,gCAA+B;AACxC,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAIvC,IAAM,0BAA0B,MACrC;AAAA,EACE,EAAE,UAAU,EAAE,CAACC,wBAAuB,GAAG,EAAE,GAAG,QAAQ,iBAAiB;AAAA,EACvE;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,aAAQ,MAAM,yBAAyB,OAAO,MAAM;AAAA,IACtD;AAAA,EACF;AACF;","names":["LocationCertaintySchema","LocationCertaintySchema"]}