@xyo-network/location-certainty-plugin 2.99.3 → 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.
- package/dist/browser/Diviner/Diviner.d.cts +1 -1
- package/dist/browser/Diviner/Diviner.d.cts.map +1 -1
- package/dist/browser/Diviner/Diviner.d.mts +1 -1
- package/dist/browser/Diviner/Diviner.d.mts.map +1 -1
- package/dist/browser/Diviner/Diviner.d.ts +1 -1
- package/dist/browser/Diviner/Diviner.d.ts.map +1 -1
- package/dist/browser/Diviner/index.d.cts +2 -2
- package/dist/browser/Diviner/index.d.mts +2 -2
- package/dist/browser/Diviner/index.d.ts +2 -2
- package/dist/browser/Plugin.d.cts +2 -2
- package/dist/browser/Plugin.d.mts +2 -2
- package/dist/browser/Plugin.d.ts +2 -2
- package/dist/browser/index.cjs +48 -31
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +2 -2
- package/dist/browser/index.d.mts +2 -2
- package/dist/browser/index.d.ts +2 -2
- package/dist/browser/{index.js → index.mjs} +51 -32
- package/dist/browser/index.mjs.map +1 -0
- package/dist/neutral/Diviner/Diviner.d.cts +1 -1
- package/dist/neutral/Diviner/Diviner.d.cts.map +1 -1
- package/dist/neutral/Diviner/Diviner.d.mts +1 -1
- package/dist/neutral/Diviner/Diviner.d.mts.map +1 -1
- package/dist/neutral/Diviner/Diviner.d.ts +1 -1
- package/dist/neutral/Diviner/Diviner.d.ts.map +1 -1
- package/dist/neutral/Diviner/index.d.cts +2 -2
- package/dist/neutral/Diviner/index.d.mts +2 -2
- package/dist/neutral/Diviner/index.d.ts +2 -2
- package/dist/neutral/Plugin.d.cts +2 -2
- package/dist/neutral/Plugin.d.mts +2 -2
- package/dist/neutral/Plugin.d.ts +2 -2
- package/dist/neutral/index.cjs +48 -31
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.d.cts +2 -2
- package/dist/neutral/index.d.mts +2 -2
- package/dist/neutral/index.d.ts +2 -2
- package/dist/neutral/{index.js → index.mjs} +51 -32
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/node/Diviner/Diviner.d.cts +1 -1
- package/dist/node/Diviner/Diviner.d.cts.map +1 -1
- package/dist/node/Diviner/Diviner.d.mts +1 -1
- package/dist/node/Diviner/Diviner.d.mts.map +1 -1
- package/dist/node/Diviner/Diviner.d.ts +1 -1
- package/dist/node/Diviner/Diviner.d.ts.map +1 -1
- package/dist/node/Diviner/index.d.cts +2 -2
- package/dist/node/Diviner/index.d.mts +2 -2
- package/dist/node/Diviner/index.d.ts +2 -2
- package/dist/node/Plugin.d.cts +2 -2
- package/dist/node/Plugin.d.mts +2 -2
- package/dist/node/Plugin.d.ts +2 -2
- package/dist/node/index.cjs +55 -34
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +2 -2
- package/dist/node/index.d.mts +2 -2
- package/dist/node/index.d.ts +2 -2
- package/dist/node/{index.js → index.mjs} +58 -35
- package/dist/node/index.mjs.map +1 -0
- package/package.json +21 -21
- package/src/Diviner/Diviner.ts +13 -10
- package/src/Diviner/index.ts +2 -2
- package/src/Plugin.ts +1 -1
- package/src/index.ts +2 -2
- package/dist/browser/index.js.map +0 -1
- package/dist/neutral/index.js.map +0 -1
- package/dist/node/index.js.map +0 -1
package/dist/node/index.cjs
CHANGED
|
@@ -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
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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({
|
|
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 [
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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,
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -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.
|
|
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"]}
|
package/dist/node/index.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Diviner/index.
|
|
2
|
-
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.
|
|
1
|
+
export * from './Diviner/index.ts';
|
|
2
|
+
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Diviner/index.
|
|
2
|
-
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.
|
|
1
|
+
export * from './Diviner/index.ts';
|
|
2
|
+
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './Diviner/index.
|
|
2
|
-
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.
|
|
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
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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({
|
|
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 [
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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.
|
|
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":";;;;;;;;;AAKO,IAAMA,uCAA6E;;;ACL1F,SAASC,uBAAuB;AAGhC,SAASC,kBAAkBC,oCAAoC;AAC/D,SAA+DC,+BAA+B;AAC9F,SAA0BC,sBAAsB;AAEhD,SAASC,sBAAsB;AAOxB,IAAMC,4BAAN,MAAMA,kCACHC,gBAAAA;;EAOR,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;AA9EnF;AA+EI,UAAMX,YAAYW,qCAAUC,OAAwB,CAACC,aAAwCA,mCAASC,YAAWC;AAEjH,QAAIf,cAAaA,uCAAWgB,UAAS,GAAG;AACtC,YAAMC,mBAAmB,MAAMC,iBAAiBC,OAAO;QACrDC,SAAS,KAAKA;QACdC,QAAQ;UACNrB;UACAc,QAAQQ;QACV;MACF,CAAA;AACA,YAAMvB,aAAc,MAAMkB,iBAAiBM,QAAO;AAElD,YAAMtB,aAAajB,0BAAyBc,sBAAsBC,YAAYC,SAAAA;AAE9E,YAAMwB,SAAS,MAAM,IAAIC,eAAyC;QAAEX,QAAQY;MAAwB,CAAA,EACjGC,OAAO;QACNpB,UAAUvB,0BAAyBE,cAAce,WAAWM,QAAQ;QACpEH,WAAWpB,0BAAyBE,cAAce,WAAWG,SAAS;QACtEK,UAAUzB,0BAAyBE,cAAce,WAAWQ,QAAQ;MACtE,CAAA,EACCmB,MAAK;AAER,iBAAKC,WAAL,mBAAaC,IAAI;AACjB,aAAO;QAACN;;IACV;AACA,WAAO,CAAA;EACT;AACF;AA3FUvC;AAER,cAHWD,2BAGc+C,iBAA0B;KAAI,iEAAMA;EAAeC;;AAC5E,cAJWhD,2BAIciD,uBAA8BD;AACvD,cALWhD,2BAKKkD,gBAAeR;AAL1B,IAAM1C,2BAAN;;;ACdP,SAASmD,2BAAAA,gCAA+B;AACxC,SAASC,wBAAwB;AACjC,SAASC,qCAAqC;AAIvC,IAAMC,0BAA0B,6BACrCC,8BACE;EAAEC,UAAU;IAAE,CAACC,wBAAAA,GAA0B;EAAE;EAAGC,QAAQC;AAAiB,GACvE;EACEC,SAAS,8BAAOC,WAAAA;AACd,WAAQ,MAAMC,yBAAyBC,OAAOF,MAAAA;EAChD,GAFS;AAGX,CAAA,GAPmC;","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.
|
|
14
|
-
"@xyo-network/diviner-model": "^2.
|
|
15
|
-
"@xyo-network/elevation-payload-plugin": "^2.99.
|
|
16
|
-
"@xyo-network/elevation-plugin": "^2.99.
|
|
17
|
-
"@xyo-network/location-certainty-payload-plugin": "^2.99.
|
|
18
|
-
"@xyo-network/location-payload-plugin": "^2.99.
|
|
19
|
-
"@xyo-network/module-model": "^2.
|
|
20
|
-
"@xyo-network/payload-builder": "^2.
|
|
21
|
-
"@xyo-network/payload-model": "^2.
|
|
22
|
-
"@xyo-network/payloadset-plugin": "^2.
|
|
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.
|
|
26
|
-
"@xylabs/tsconfig": "^3.
|
|
27
|
-
"@xylabs/tsconfig-jest": "^3.
|
|
28
|
-
"@xyo-network/archivist-abstract": "^2.
|
|
29
|
-
"@xyo-network/archivist-memory": "^2.
|
|
30
|
-
"@xyo-network/module-resolver": "^2.
|
|
31
|
-
"typescript": "^5.5.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
72
|
+
"version": "2.99.5",
|
|
73
73
|
"type": "module"
|
|
74
74
|
}
|
package/src/Diviner/Diviner.ts
CHANGED
|
@@ -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.
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
73
|
+
{ altitude: [], elevation: [], variance: [] },
|
|
71
74
|
)
|
|
72
75
|
return heuristics
|
|
73
76
|
}
|
package/src/Diviner/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './Config.
|
|
2
|
-
export * from './Diviner.
|
|
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.
|
|
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.
|
|
1
|
+
export * from './Diviner/index.ts'
|
|
2
2
|
// eslint-disable-next-line import/no-default-export
|
|
3
|
-
export { LocationCertaintyPlugin as default, LocationCertaintyPlugin } from './Plugin.
|
|
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"]}
|
package/dist/node/index.js.map
DELETED
|
@@ -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"]}
|