signalk-livedepth-plugin 0.3.20 → 0.3.22
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/CHANGELOG.md +19 -0
- package/dist/plugin.d.ts +7 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +129 -35
- package/dist/plugin.js.map +1 -1
- package/dist/tiles/core/accumulator.d.ts +0 -6
- package/dist/tiles/core/accumulator.d.ts.map +1 -1
- package/dist/tiles/core/accumulator.js +27 -10
- package/dist/tiles/core/accumulator.js.map +1 -1
- package/dist/tiles/seed-worker.d.ts +68 -0
- package/dist/tiles/seed-worker.d.ts.map +1 -0
- package/dist/tiles/seed-worker.js +107 -0
- package/dist/tiles/seed-worker.js.map +1 -0
- package/dist/tiles/seed.d.ts +4 -0
- package/dist/tiles/seed.d.ts.map +1 -1
- package/dist/tiles/seed.js +13 -0
- package/dist/tiles/seed.js.map +1 -1
- package/dist/tiles/store.d.ts.map +1 -1
- package/dist/tiles/store.js +4 -1
- package/dist/tiles/store.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/public/js/renderer.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@ All notable changes to this project are documented here, newest first. The
|
|
|
4
4
|
format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
|
5
5
|
versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.3.22] - 2026-11-07
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **History rebuilds keep the live writer responsive.** The import now writes
|
|
12
|
+
folded tiles every 10,000 soundings instead of once per six-hour chunk, so the
|
|
13
|
+
live stream is not left waiting on a chunk-sized database transaction.
|
|
14
|
+
|
|
15
|
+
## [0.3.21] - 2026-11-07
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- **History rebuilds no longer stall the server.** The one-time import now runs
|
|
20
|
+
in a worker thread with its own SQLite connection, so folding historical rows,
|
|
21
|
+
writing tiles and rebuilding the map pyramid no longer block Signal K's event
|
|
22
|
+
loop. The History API provider stays in the main process; the worker requests
|
|
23
|
+
each window over a message port, and the live writer and import share the
|
|
24
|
+
database through WAL with a short busy timeout.
|
|
25
|
+
|
|
7
26
|
## [0.3.20] - 2026-11-07
|
|
8
27
|
|
|
9
28
|
### Fixed
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ServerAPI, Plugin } from "@signalk/server-api";
|
|
2
|
+
import { Worker } from "node:worker_threads";
|
|
2
3
|
import { TransducerOffset } from "./tiles/core/index.js";
|
|
3
4
|
import { Config } from "./config.js";
|
|
5
|
+
import type { SeedWorkerData } from "./tiles/seed-worker.js";
|
|
4
6
|
/** How a history rebuild ended. Only a completed or failed run consumes the
|
|
5
7
|
* one-time `seed.run` trigger; an interrupted run leaves it set so the next
|
|
6
8
|
* start resumes from the stored cursor. */
|
|
@@ -27,5 +29,9 @@ export declare function readVesselBeam(app: ServerAPI): number | undefined;
|
|
|
27
29
|
* offset is meaningless. We still apply what the user configured, but flag it.
|
|
28
30
|
*/
|
|
29
31
|
export declare function resolveTransducerOffset(app: ServerAPI, config: Config): TransducerOffset | undefined;
|
|
30
|
-
|
|
32
|
+
/** Overridable only so tests can run the seed without a real worker thread. */
|
|
33
|
+
export interface PluginOptions {
|
|
34
|
+
createSeedWorker?: (data: SeedWorkerData) => Worker;
|
|
35
|
+
}
|
|
36
|
+
export default function createPlugin(app: ServerAPI, options?: PluginOptions): Plugin;
|
|
31
37
|
//# sourceMappingURL=plugin.d.ts.map
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAa,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,gBAAgB,EAAa,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAwB,MAAM,EAAE,MAAM,aAAa,CAAC;AAI3D,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,wBAAwB,CAAC;AAqBhC;;2CAE2C;AAC3C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzE;;;;;;;mEAOmE;AACnE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAWpE;AAED;sEACsE;AACtE,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAOjE;AAQD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,GACb,gBAAgB,GAAG,SAAS,CA2B9B;AAOD,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,CAAC;CACrD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,GAAG,EAAE,SAAS,EACd,OAAO,GAAE,aAAkB,GAC1B,MAAM,CA2UR"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { Worker } from "node:worker_threads";
|
|
1
2
|
import { join } from "path";
|
|
3
|
+
import { Temporal } from "@js-temporal/polyfill";
|
|
2
4
|
import { schema, formUiSchema } from "./config.js";
|
|
3
5
|
import { createTileDB, createTileStore } from "./tiles/store.js";
|
|
4
6
|
import { createTileWriter } from "./tiles/writer.js";
|
|
5
|
-
import { SEED_CURSOR_KEY
|
|
7
|
+
import { SEED_CURSOR_KEY } from "./tiles/seed.js";
|
|
8
|
+
import { getHistoryAPI } from "./history.js";
|
|
6
9
|
import { TIDE_MODE_KEY, createSlackwaterTideProvider, createTideCorrection, datumLabel, shouldResetGrid, tideMode, } from "./tide.js";
|
|
7
10
|
import { registerBathymetryRoutes, registerSeedRoutes, } from "./tiles/api.js";
|
|
8
11
|
import { registerPlotterExtension } from "./plotterext/provider.js";
|
|
@@ -76,7 +79,11 @@ export function resolveTransducerOffset(app, config) {
|
|
|
76
79
|
function skipNote(skipped) {
|
|
77
80
|
return skipped > 0 ? ` (${skipped} skipped: no tide prediction)` : "";
|
|
78
81
|
}
|
|
79
|
-
export default function createPlugin(app) {
|
|
82
|
+
export default function createPlugin(app, options = {}) {
|
|
83
|
+
const createSeedWorker = options.createSeedWorker ??
|
|
84
|
+
((data) => new Worker(new URL("./tiles/seed-worker.js", import.meta.url), {
|
|
85
|
+
workerData: data,
|
|
86
|
+
}));
|
|
80
87
|
let abortController = undefined;
|
|
81
88
|
// The gridded store served to chart clients. Built in start(), read by the
|
|
82
89
|
// routes registered in registerWithRouter().
|
|
@@ -90,14 +97,15 @@ export default function createPlugin(app) {
|
|
|
90
97
|
/** Bumped on every start/stop so a seed still winding down cannot overwrite
|
|
91
98
|
* the status of the run that replaced it. */
|
|
92
99
|
let seedGeneration = 0;
|
|
100
|
+
let seedWorker;
|
|
101
|
+
let seedSettle;
|
|
93
102
|
let running = false;
|
|
94
103
|
let routesRegistered = false;
|
|
95
104
|
const runSeed = async (resolution) => {
|
|
96
105
|
if (seedStatus.running)
|
|
97
106
|
return "skipped";
|
|
98
|
-
const store = tileStore;
|
|
99
107
|
const cfg = config;
|
|
100
|
-
if (!
|
|
108
|
+
if (!tileStore || !cfg)
|
|
101
109
|
return "skipped";
|
|
102
110
|
// The store's datum is fixed once it holds cells: fold history with the
|
|
103
111
|
// same correction it was built with, and refuse rather than write raw rows
|
|
@@ -108,45 +116,122 @@ export default function createPlugin(app) {
|
|
|
108
116
|
return "failed";
|
|
109
117
|
}
|
|
110
118
|
// If the plugin is stopped and started while this run is still finishing,
|
|
111
|
-
// the run is superseded: its
|
|
119
|
+
// the run is superseded: its worker is terminated and the new run owns the
|
|
112
120
|
// status.
|
|
113
121
|
const generation = seedGeneration;
|
|
114
122
|
const current = () => generation === seedGeneration;
|
|
115
123
|
seedStatus = { running: true };
|
|
124
|
+
app.setPluginStatus("Waiting for the history provider…");
|
|
125
|
+
const api = await getHistoryAPI({ app });
|
|
126
|
+
if (!current())
|
|
127
|
+
return "aborted";
|
|
128
|
+
if (!api) {
|
|
129
|
+
seedStatus = { running: false, error: "no history provider" };
|
|
130
|
+
app.setPluginError("Cannot rebuild from history: no History API provider is available.");
|
|
131
|
+
return "failed";
|
|
132
|
+
}
|
|
116
133
|
app.setPluginStatus("Rebuilding bathymetry tiles from history…");
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
134
|
+
return new Promise((resolve) => {
|
|
135
|
+
let settled = false;
|
|
136
|
+
const settle = (outcome) => {
|
|
137
|
+
if (settled)
|
|
138
|
+
return;
|
|
139
|
+
settled = true;
|
|
140
|
+
if (seedSettle === settle)
|
|
141
|
+
seedSettle = undefined;
|
|
142
|
+
resolve(outcome);
|
|
143
|
+
};
|
|
144
|
+
seedSettle = settle;
|
|
145
|
+
// The worker owns its own SQLite connection and does the expensive
|
|
146
|
+
// folding, writing and pyramid rebuild. History requests are forwarded
|
|
147
|
+
// here because the provider lives in this process.
|
|
148
|
+
const worker = createSeedWorker({
|
|
149
|
+
dbPath: join(app.getDataDirPath(), "bathymetry-tiles.sqlite"),
|
|
121
150
|
config: cfg,
|
|
122
151
|
resolution,
|
|
123
152
|
offset: transducer,
|
|
124
|
-
tide,
|
|
125
|
-
signal: abortController?.signal,
|
|
126
|
-
onProgress: (p) => {
|
|
127
|
-
if (!current())
|
|
128
|
-
return;
|
|
129
|
-
seedStatus = { running: !p.done, progress: p };
|
|
130
|
-
app.setPluginStatus(`Rebuilding bathymetry tiles: ${p.points} points over ${p.chunks} windows${skipNote(p.skipped)}`);
|
|
131
|
-
},
|
|
153
|
+
tide: tideState === "off" ? undefined : tideState,
|
|
132
154
|
});
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
155
|
+
seedWorker = worker;
|
|
156
|
+
worker.on("message", (message) => {
|
|
157
|
+
if (!current())
|
|
158
|
+
return;
|
|
159
|
+
if (message.type === "getValues") {
|
|
160
|
+
const req = {
|
|
161
|
+
...message.req,
|
|
162
|
+
from: Temporal.Instant.from(message.req.from),
|
|
163
|
+
to: Temporal.Instant.from(message.req.to),
|
|
164
|
+
};
|
|
165
|
+
api.getValues(req).then((res) => {
|
|
166
|
+
if (!current())
|
|
167
|
+
return;
|
|
168
|
+
worker.postMessage({
|
|
169
|
+
type: "getValuesResult",
|
|
170
|
+
id: message.id,
|
|
171
|
+
res,
|
|
172
|
+
});
|
|
173
|
+
}, (err) => {
|
|
174
|
+
if (!current())
|
|
175
|
+
return;
|
|
176
|
+
worker.postMessage({
|
|
177
|
+
type: "getValuesError",
|
|
178
|
+
id: message.id,
|
|
179
|
+
message: String(err),
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
switch (message.type) {
|
|
185
|
+
case "progress": {
|
|
186
|
+
seedStatus = {
|
|
187
|
+
running: !message.progress.done,
|
|
188
|
+
progress: message.progress,
|
|
189
|
+
};
|
|
190
|
+
app.setPluginStatus(`Rebuilding bathymetry tiles: ${message.progress.points} points over ${message.progress.chunks} windows${skipNote(message.progress.skipped)}`);
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
case "result": {
|
|
194
|
+
seedStatus = { running: false, progress: message.progress };
|
|
195
|
+
if (message.progress.done) {
|
|
196
|
+
app.setPluginStatus(`Bathymetry rebuild complete: ${message.progress.points} points${skipNote(message.progress.skipped)}`);
|
|
197
|
+
settle("completed");
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
app.setPluginStatus(`Bathymetry rebuild interrupted after ${message.progress.chunks} windows; it will resume on the next start.`);
|
|
201
|
+
settle("aborted");
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
case "error": {
|
|
206
|
+
seedStatus = { running: false, error: message.message };
|
|
207
|
+
app.setPluginError(`Bathymetry rebuild failed: ${message.message}`);
|
|
208
|
+
settle("failed");
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
case "debug": {
|
|
212
|
+
app.debug("[seed worker] %s", message.message);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
worker.on("error", (err) => {
|
|
218
|
+
if (!current())
|
|
219
|
+
return settle("aborted");
|
|
220
|
+
seedStatus = { running: false, error: String(err) };
|
|
221
|
+
app.setPluginError(`Bathymetry rebuild failed: ${err}`);
|
|
222
|
+
settle("failed");
|
|
223
|
+
});
|
|
224
|
+
worker.on("exit", (code) => {
|
|
225
|
+
seedWorker = undefined;
|
|
226
|
+
if (settled)
|
|
227
|
+
return;
|
|
228
|
+
if (!current())
|
|
229
|
+
return settle("aborted");
|
|
230
|
+
seedStatus = { running: false, error: `seed worker exited (${code})` };
|
|
231
|
+
app.setPluginError(`Bathymetry rebuild worker exited with code ${code}.`);
|
|
232
|
+
settle(code === 0 ? "aborted" : "failed");
|
|
233
|
+
});
|
|
234
|
+
});
|
|
150
235
|
};
|
|
151
236
|
const seed = {
|
|
152
237
|
run: async () => {
|
|
@@ -162,7 +247,10 @@ export default function createPlugin(app) {
|
|
|
162
247
|
config = startConfig;
|
|
163
248
|
app.debug("Starting signalk-livedepth-plugin");
|
|
164
249
|
// A new start supersedes any seed still winding down from the previous
|
|
165
|
-
// one (its
|
|
250
|
+
// one (its worker is terminated and its store is closed).
|
|
251
|
+
const previous = seedWorker;
|
|
252
|
+
seedWorker = undefined;
|
|
253
|
+
void previous?.terminate();
|
|
166
254
|
seedGeneration++;
|
|
167
255
|
seedStatus = { running: false };
|
|
168
256
|
abortController = new AbortController();
|
|
@@ -253,6 +341,12 @@ export default function createPlugin(app) {
|
|
|
253
341
|
stop() {
|
|
254
342
|
running = false;
|
|
255
343
|
seedGeneration++;
|
|
344
|
+
const settle = seedSettle;
|
|
345
|
+
seedSettle = undefined;
|
|
346
|
+
settle?.("aborted");
|
|
347
|
+
const worker = seedWorker;
|
|
348
|
+
seedWorker = undefined;
|
|
349
|
+
void worker?.terminate();
|
|
256
350
|
seedStatus = { running: false };
|
|
257
351
|
abortController?.abort("Stopping signalk-livedepth-plugin");
|
|
258
352
|
tileStore?.close();
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,12 +24,6 @@ export interface AccumulatorOptions {
|
|
|
24
24
|
ancestors?: boolean;
|
|
25
25
|
}
|
|
26
26
|
export declare function createTileAccumulator(store: TileStore, { baseZoom, ancestors }?: AccumulatorOptions): TileAccumulator;
|
|
27
|
-
/**
|
|
28
|
-
* Build every level of the pyramid from the base tiles in one bottom-up pass:
|
|
29
|
-
* pool each level into the one below, reading each child once. Used after a
|
|
30
|
-
* bulk load that ran with `ancestors: false`, so the whole pyramid is built
|
|
31
|
-
* once rather than re-walked per changed tile per batch.
|
|
32
|
-
*/
|
|
33
27
|
export declare function rebuildAncestors(store: TileStore, { baseZoom, minZoom, }?: {
|
|
34
28
|
baseZoom?: number;
|
|
35
29
|
minZoom?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accumulator.d.ts","sourceRoot":"","sources":["../../../src/tiles/core/accumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;0DAGsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,EAAE,QAAoB,EAAE,SAAgB,EAAE,GAAE,kBAAuB,GAClE,eAAe,CA4CjB;
|
|
1
|
+
{"version":3,"file":"accumulator.d.ts","sourceRoot":"","sources":["../../../src/tiles/core/accumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAWtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;0DAGsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,EAAE,QAAoB,EAAE,SAAgB,EAAE,GAAE,kBAAuB,GAClE,eAAe,CA4CjB;AAaD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,EACE,QAAoB,EACpB,OAAkB,GACnB,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,IAAI,CAmCN"}
|
|
@@ -52,6 +52,10 @@ export function createTileAccumulator(store, { baseZoom = BASE_ZOOM, ancestors =
|
|
|
52
52
|
* bulk load that ran with `ancestors: false`, so the whole pyramid is built
|
|
53
53
|
* once rather than re-walked per changed tile per batch.
|
|
54
54
|
*/
|
|
55
|
+
/** Parents written per transaction. The seed worker shares the database with
|
|
56
|
+
* the live writer, so a whole pyramid level in one transaction would hold the
|
|
57
|
+
* write lock long enough to stall the live flush. */
|
|
58
|
+
const REBUILD_BATCH = 256;
|
|
55
59
|
export function rebuildAncestors(store, { baseZoom = BASE_ZOOM, minZoom = MIN_ZOOM, } = {}) {
|
|
56
60
|
for (let z = baseZoom; z > minZoom; z--) {
|
|
57
61
|
const parents = new Map();
|
|
@@ -60,16 +64,29 @@ export function rebuildAncestors(store, { baseZoom = BASE_ZOOM, minZoom = MIN_ZO
|
|
|
60
64
|
const py = y >> 1;
|
|
61
65
|
parents.set(`${px},${py}`, { x: px, y: py });
|
|
62
66
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
let batch = [];
|
|
68
|
+
const flush = () => {
|
|
69
|
+
if (batch.length === 0)
|
|
70
|
+
return;
|
|
71
|
+
const writing = batch;
|
|
72
|
+
batch = [];
|
|
73
|
+
store.transaction(() => {
|
|
74
|
+
for (const { x, y } of writing) {
|
|
75
|
+
store.write(z - 1, x, y, minPoolTile([
|
|
76
|
+
store.read(z, x * 2, y * 2),
|
|
77
|
+
store.read(z, x * 2 + 1, y * 2),
|
|
78
|
+
store.read(z, x * 2, y * 2 + 1),
|
|
79
|
+
store.read(z, x * 2 + 1, y * 2 + 1),
|
|
80
|
+
]));
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
for (const parent of parents.values()) {
|
|
85
|
+
batch.push(parent);
|
|
86
|
+
if (batch.length >= REBUILD_BATCH)
|
|
87
|
+
flush();
|
|
88
|
+
}
|
|
89
|
+
flush();
|
|
73
90
|
}
|
|
74
91
|
}
|
|
75
92
|
//# sourceMappingURL=accumulator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accumulator.js","sourceRoot":"","sources":["../../../src/tiles/core/accumulator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"accumulator.js","sourceRoot":"","sources":["../../../src/tiles/core/accumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EAET,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,MAAM,WAAW,CAAC;AAmBnB,MAAM,UAAU,qBAAqB,CACnC,KAAgB,EAChB,EAAE,QAAQ,GAAG,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE,GAAuB,EAAE;IAEnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAGlB,CAAC;IAEJ,OAAO;QACL,GAAG,CAAC,MAAgB;YAClB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC9B,MAAM,CAAC,KAAK,GAAG,CAAC,EAChB,CAAC;gBACD,OAAO;YACT,CAAC;YACD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACxE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;gBAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,GAAG,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,KAAK;YACH,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO;YAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAClC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;gBACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,SAAS,EAAE,CAAC;wBACd,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO;YACT,OAAO,KAAK,CAAC,IAAI,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH;;qDAEqD;AACrD,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,UAAU,gBAAgB,CAC9B,KAAgB,EAChB,EACE,QAAQ,GAAG,SAAS,EACpB,OAAO,GAAG,QAAQ,GACnB,GAA4C,EAAE;IAE/C,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;QAC5D,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,GAA+B,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC;YACtB,KAAK,GAAG,EAAE,CAAC;YACX,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;gBACrB,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC;oBAC/B,KAAK,CAAC,KAAK,CACT,CAAC,GAAG,CAAC,EACL,CAAC,EACD,CAAC,EACD,WAAW,CAAC;wBACV,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;wBAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;wBAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBACpC,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,IAAI,KAAK,CAAC,MAAM,IAAI,aAAa;gBAAE,KAAK,EAAE,CAAC;QAC7C,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { PathSpec, ValuesResponse } from "@signalk/server-api/history";
|
|
2
|
+
import type { Config } from "../config.js";
|
|
3
|
+
import { TideDatum } from "../tide.js";
|
|
4
|
+
import type { TransducerOffset } from "./core/index.js";
|
|
5
|
+
import { SeedProgress } from "./seed.js";
|
|
6
|
+
/** Everything the seed worker needs to rebuild the store on its own. */
|
|
7
|
+
export interface SeedWorkerData {
|
|
8
|
+
dbPath: string;
|
|
9
|
+
config: Config;
|
|
10
|
+
resolution?: number;
|
|
11
|
+
offset?: TransducerOffset;
|
|
12
|
+
/** The datum to fold history into, or undefined when correction is off. */
|
|
13
|
+
tide?: TideDatum;
|
|
14
|
+
}
|
|
15
|
+
/** A history request with the instants flattened to strings: Temporal objects
|
|
16
|
+
* do not survive `postMessage` structured cloning. */
|
|
17
|
+
export interface SeedWorkerValuesRequest {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
resolution?: number;
|
|
21
|
+
pathSpecs: PathSpec[];
|
|
22
|
+
}
|
|
23
|
+
/** Messages the worker sends to the plugin. */
|
|
24
|
+
export type SeedWorkerOut = {
|
|
25
|
+
type: "progress";
|
|
26
|
+
progress: SeedProgress;
|
|
27
|
+
} | {
|
|
28
|
+
type: "result";
|
|
29
|
+
progress: SeedProgress;
|
|
30
|
+
} | {
|
|
31
|
+
type: "error";
|
|
32
|
+
message: string;
|
|
33
|
+
} | {
|
|
34
|
+
type: "debug";
|
|
35
|
+
message: string;
|
|
36
|
+
} | {
|
|
37
|
+
type: "getValues";
|
|
38
|
+
id: number;
|
|
39
|
+
req: SeedWorkerValuesRequest;
|
|
40
|
+
};
|
|
41
|
+
/** Messages the plugin sends back to the worker. */
|
|
42
|
+
export type SeedWorkerIn = {
|
|
43
|
+
type: "getValuesResult";
|
|
44
|
+
id: number;
|
|
45
|
+
res: ValuesResponse;
|
|
46
|
+
} | {
|
|
47
|
+
type: "getValuesError";
|
|
48
|
+
id: number;
|
|
49
|
+
message: string;
|
|
50
|
+
} | {
|
|
51
|
+
type: "abort";
|
|
52
|
+
};
|
|
53
|
+
/** The slice of a worker's `parentPort` the seed needs, so tests can drive it
|
|
54
|
+
* without a real thread. */
|
|
55
|
+
export interface SeedWorkerPort {
|
|
56
|
+
post(message: SeedWorkerOut): void;
|
|
57
|
+
onMessage(handler: (message: SeedWorkerIn) => void): void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Rebuild the tile store in a worker thread.
|
|
61
|
+
*
|
|
62
|
+
* The History API provider lives in the main process, so the worker asks the
|
|
63
|
+
* plugin for each chunk over the port instead of reaching for the provider
|
|
64
|
+
* directly. Everything expensive — folding rows, the tide lookup arithmetic,
|
|
65
|
+
* the SQLite writes and the pyramid rebuild — happens here, off the event loop.
|
|
66
|
+
*/
|
|
67
|
+
export declare function runSeedWorker(data: SeedWorkerData, port: SeedWorkerPort): Promise<void>;
|
|
68
|
+
//# sourceMappingURL=seed-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-worker.d.ts","sourceRoot":"","sources":["../../src/tiles/seed-worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,QAAQ,EAER,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EACL,SAAS,EAGV,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAmB,YAAY,EAAE,MAAM,WAAW,CAAC;AAG1D,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;sDACsD;AACtD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAEpE,oDAAoD;AACpD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,cAAc,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtB;4BAC4B;AAC5B,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { parentPort, workerData } from "node:worker_threads";
|
|
2
|
+
import { createSlackwaterTideProvider, createTideCorrection, } from "../tide.js";
|
|
3
|
+
import { seedFromHistory } from "./seed.js";
|
|
4
|
+
import { createTileDB, createTileStore } from "./store.js";
|
|
5
|
+
/**
|
|
6
|
+
* Rebuild the tile store in a worker thread.
|
|
7
|
+
*
|
|
8
|
+
* The History API provider lives in the main process, so the worker asks the
|
|
9
|
+
* plugin for each chunk over the port instead of reaching for the provider
|
|
10
|
+
* directly. Everything expensive — folding rows, the tide lookup arithmetic,
|
|
11
|
+
* the SQLite writes and the pyramid rebuild — happens here, off the event loop.
|
|
12
|
+
*/
|
|
13
|
+
export async function runSeedWorker(data, port) {
|
|
14
|
+
const pending = new Map();
|
|
15
|
+
let nextId = 1;
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
const abort = () => {
|
|
18
|
+
controller.abort();
|
|
19
|
+
for (const request of pending.values()) {
|
|
20
|
+
request.reject(new Error("aborted"));
|
|
21
|
+
}
|
|
22
|
+
pending.clear();
|
|
23
|
+
};
|
|
24
|
+
port.onMessage((message) => {
|
|
25
|
+
if (message.type === "abort") {
|
|
26
|
+
abort();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const request = pending.get(message.id);
|
|
30
|
+
if (!request)
|
|
31
|
+
return;
|
|
32
|
+
pending.delete(message.id);
|
|
33
|
+
if (message.type === "getValuesResult") {
|
|
34
|
+
request.resolve(message.res);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
request.reject(new Error(message.message));
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const history = {
|
|
41
|
+
getValues(req) {
|
|
42
|
+
if (!req.from || !req.to) {
|
|
43
|
+
return Promise.reject(new Error("history request needs from and to"));
|
|
44
|
+
}
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
const id = nextId++;
|
|
47
|
+
pending.set(id, { resolve, reject });
|
|
48
|
+
port.post({
|
|
49
|
+
type: "getValues",
|
|
50
|
+
id,
|
|
51
|
+
req: {
|
|
52
|
+
from: req.from.toString(),
|
|
53
|
+
to: req.to.toString(),
|
|
54
|
+
resolution: req.resolution,
|
|
55
|
+
pathSpecs: req.pathSpecs,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
getContexts: async () => [],
|
|
61
|
+
getPaths: async () => [],
|
|
62
|
+
};
|
|
63
|
+
let store;
|
|
64
|
+
try {
|
|
65
|
+
store = createTileStore(createTileDB(data.dbPath));
|
|
66
|
+
const tide = data.tide
|
|
67
|
+
? createTideCorrection(await createSlackwaterTideProvider(), data.tide)
|
|
68
|
+
: undefined;
|
|
69
|
+
const app = {
|
|
70
|
+
debug: (format, ...args) => port.post({
|
|
71
|
+
type: "debug",
|
|
72
|
+
message: `${format} ${args.map(String).join(" ")}`,
|
|
73
|
+
}),
|
|
74
|
+
};
|
|
75
|
+
const progress = await seedFromHistory({
|
|
76
|
+
app,
|
|
77
|
+
store,
|
|
78
|
+
config: data.config,
|
|
79
|
+
resolution: data.resolution,
|
|
80
|
+
offset: data.offset,
|
|
81
|
+
tide,
|
|
82
|
+
history,
|
|
83
|
+
signal: controller.signal,
|
|
84
|
+
onProgress: (p) => port.post({ type: "progress", progress: p }),
|
|
85
|
+
});
|
|
86
|
+
port.post({ type: "result", progress });
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
port.post({ type: "error", message: String(err) });
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
store?.close();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const mainThread = parentPort;
|
|
96
|
+
if (mainThread) {
|
|
97
|
+
const port = {
|
|
98
|
+
post: (message) => mainThread.postMessage(message),
|
|
99
|
+
onMessage: (handler) => mainThread.on("message", (message) => handler(message)),
|
|
100
|
+
};
|
|
101
|
+
void runSeedWorker(workerData, port).finally(() => {
|
|
102
|
+
// The message listener itself keeps the thread alive. Close the port a
|
|
103
|
+
// turn later so the final `result` message is delivered before it exits.
|
|
104
|
+
setImmediate(() => mainThread.close());
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=seed-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-worker.js","sourceRoot":"","sources":["../../src/tiles/seed-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/tiles/seed.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ import { TileStore, TransducerOffset } from "./core/index.js";
|
|
|
8
8
|
export declare const DEFAULT_SEED_RESOLUTION = 0.1;
|
|
9
9
|
/** Hours of history fetched per request, to bound each response. */
|
|
10
10
|
export declare const DEFAULT_SEED_CHUNK_HOURS = 6;
|
|
11
|
+
/** Soundings folded between tile writes. Keeps each write transaction short
|
|
12
|
+
* enough that the live writer sharing the database is not left waiting on a
|
|
13
|
+
* whole chunk. */
|
|
14
|
+
export declare const SEED_FLUSH_ROWS = 10000;
|
|
11
15
|
/** Store key holding the instant the last successful seed reached. */
|
|
12
16
|
export declare const SEED_CURSOR_KEY = "seed.cursor";
|
|
13
17
|
export interface SeedProgress {
|
package/dist/tiles/seed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/tiles/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EAGX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,SAAS,EACT,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAEzB,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,sEAAsE;AACtE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;IACxB,kDAAkD;IAClD,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;IACtB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,uEAAuE;IACvE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,EACpC,GAAG,EACH,KAAK,EACL,MAAM,EACN,IAAI,EACJ,EAA2B,EAC3B,UAAoC,EACpC,UAAqC,EACrC,OAAO,EACP,MAAM,EACN,IAAI,EACJ,MAAM,EACN,UAAU,GACX,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/tiles/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EAGX,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAsB,MAAM,YAAY,CAAC;AAChE,OAAO,EACL,SAAS,EACT,gBAAgB,EAIjB,MAAM,iBAAiB,CAAC;AAEzB,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C;;kBAEkB;AAClB,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,sEAAsE;AACtE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;IACxB,kDAAkD;IAClD,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC;IACtB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,wEAAwE;IACxE,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,uEAAuE;IACvE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,EACpC,GAAG,EACH,KAAK,EACL,MAAM,EACN,IAAI,EACJ,EAA2B,EAC3B,UAAoC,EACpC,UAAqC,EACrC,OAAO,EACP,MAAM,EACN,IAAI,EACJ,MAAM,EACN,UAAU,GACX,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA0GrC"}
|