@reearth/ezu 0.4.0 → 0.4.1
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/README.md +14 -3
- package/bundler/ezu.d.ts +38 -0
- package/bundler/ezu_bg.js +58 -0
- package/bundler/ezu_bg.wasm +0 -0
- package/bundler/ezu_bg.wasm.d.ts +2 -0
- package/nodejs/ezu.d.ts +38 -0
- package/nodejs/ezu.js +58 -0
- package/nodejs/ezu_bg.wasm +0 -0
- package/nodejs/ezu_bg.wasm.d.ts +2 -0
- package/package.json +16 -5
- package/web/ezu.d.ts +40 -0
- package/web/ezu.js +58 -0
- package/web/ezu_bg.wasm +0 -0
- package/web/ezu_bg.wasm.d.ts +2 -0
- package/workerd/ezu.d.ts +3 -0
- package/workerd/ezu.js +13 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ npm install @reearth/ezu
|
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
|
-
The package ships
|
|
17
|
+
The package ships four builds and picks one automatically via the
|
|
18
18
|
`exports` map:
|
|
19
19
|
|
|
20
20
|
| Runtime | Build used |
|
|
@@ -22,7 +22,7 @@ The package ships three builds and picks one automatically via the
|
|
|
22
22
|
| Vite / Webpack / Rollup | `bundler` |
|
|
23
23
|
| Browser (native ESM) | `web` |
|
|
24
24
|
| Node.js | `nodejs` |
|
|
25
|
-
| Cloudflare Workers | `
|
|
25
|
+
| Cloudflare Workers | `workerd` (via the `workerd` condition) |
|
|
26
26
|
|
|
27
27
|
### Bundler / Cloudflare Workers / Node.js
|
|
28
28
|
|
|
@@ -47,7 +47,18 @@ const renderer = new Renderer(styleJson);
|
|
|
47
47
|
### Explicit build selection
|
|
48
48
|
|
|
49
49
|
If the auto-resolved entry doesn't fit your toolchain, import a build
|
|
50
|
-
directly: `@reearth/ezu/web`, `@reearth/ezu/bundler`,
|
|
50
|
+
directly: `@reearth/ezu/web`, `@reearth/ezu/bundler`, `@reearth/ezu/nodejs`,
|
|
51
|
+
or `@reearth/ezu/workerd`.
|
|
52
|
+
|
|
53
|
+
`workerd` reuses the `bundler` glue but instantiates the wasm itself,
|
|
54
|
+
because Cloudflare Workers resolve a `.wasm` import to an uninstantiated
|
|
55
|
+
`WebAssembly.Module` rather than to live exports. Importing
|
|
56
|
+
`@reearth/ezu/bundler` on Workers therefore fails with
|
|
57
|
+
`__wbindgen_start is not a function`.
|
|
58
|
+
|
|
59
|
+
The raw artifacts are exported too, for hosts that need to wire up
|
|
60
|
+
instantiation themselves: `@reearth/ezu/bundler/ezu_bg.js`,
|
|
61
|
+
`@reearth/ezu/bundler/ezu_bg.wasm`, and `@reearth/ezu/web/ezu_bg.wasm`.
|
|
51
62
|
|
|
52
63
|
## API
|
|
53
64
|
|
package/bundler/ezu.d.ts
CHANGED
|
@@ -92,6 +92,28 @@ export class Renderer {
|
|
|
92
92
|
* Drop every pending source binding. Call between tile renders.
|
|
93
93
|
*/
|
|
94
94
|
clearSources(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Glyph ranges the currently bound features can require, as
|
|
97
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
98
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
99
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
100
|
+
*
|
|
101
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
102
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
103
|
+
* scraping every string in the MVT, call this after binding the
|
|
104
|
+
* vector sources and bind exactly the listed ranges.
|
|
105
|
+
*
|
|
106
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
107
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
108
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
109
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
110
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
111
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
112
|
+
* layers that build their string from something other than a `get`
|
|
113
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
114
|
+
* contribute their literal text where it is a plain string.
|
|
115
|
+
*/
|
|
116
|
+
neededGlyphRanges(): object;
|
|
95
117
|
/**
|
|
96
118
|
* Build a renderer from a style JSON document.
|
|
97
119
|
*/
|
|
@@ -106,6 +128,22 @@ export class Renderer {
|
|
|
106
128
|
* - `png`: `{ compression?: "fast" | "default" | "best" }`
|
|
107
129
|
*/
|
|
108
130
|
renderTile(z: number, x: number, y: number, opts?: object | null): Uint8Array;
|
|
131
|
+
/**
|
|
132
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
133
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
134
|
+
* centre `[0, 0]`).
|
|
135
|
+
*
|
|
136
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
137
|
+
* only things that read neighbours, and only for the sources they
|
|
138
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
139
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
140
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
141
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
142
|
+
* centre tile is enough.
|
|
143
|
+
*
|
|
144
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
145
|
+
*/
|
|
146
|
+
requestedNeighborOffsets(name: string): Array<any>;
|
|
109
147
|
/**
|
|
110
148
|
* Replace the active style. Returns the new node count. Invalidates
|
|
111
149
|
* the intermediate cache and drops any pending source bindings.
|
package/bundler/ezu_bg.js
CHANGED
|
@@ -178,6 +178,35 @@ export class Renderer {
|
|
|
178
178
|
clearSources() {
|
|
179
179
|
wasm.renderer_clearSources(this.__wbg_ptr);
|
|
180
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Glyph ranges the currently bound features can require, as
|
|
183
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
184
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
185
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
186
|
+
*
|
|
187
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
188
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
189
|
+
* scraping every string in the MVT, call this after binding the
|
|
190
|
+
* vector sources and bind exactly the listed ranges.
|
|
191
|
+
*
|
|
192
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
193
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
194
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
195
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
196
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
197
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
198
|
+
* layers that build their string from something other than a `get`
|
|
199
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
200
|
+
* contribute their literal text where it is a plain string.
|
|
201
|
+
* @returns {object}
|
|
202
|
+
*/
|
|
203
|
+
neededGlyphRanges() {
|
|
204
|
+
const ret = wasm.renderer_neededGlyphRanges(this.__wbg_ptr);
|
|
205
|
+
if (ret[2]) {
|
|
206
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
207
|
+
}
|
|
208
|
+
return takeFromExternrefTable0(ret[0]);
|
|
209
|
+
}
|
|
181
210
|
/**
|
|
182
211
|
* Build a renderer from a style JSON document.
|
|
183
212
|
* @param {string} style_json
|
|
@@ -216,6 +245,32 @@ export class Renderer {
|
|
|
216
245
|
wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
|
|
217
246
|
return v1;
|
|
218
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
250
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
251
|
+
* centre `[0, 0]`).
|
|
252
|
+
*
|
|
253
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
254
|
+
* only things that read neighbours, and only for the sources they
|
|
255
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
256
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
257
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
258
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
259
|
+
* centre tile is enough.
|
|
260
|
+
*
|
|
261
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
262
|
+
* @param {string} name
|
|
263
|
+
* @returns {Array<any>}
|
|
264
|
+
*/
|
|
265
|
+
requestedNeighborOffsets(name) {
|
|
266
|
+
const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
|
|
267
|
+
const len0 = WASM_VECTOR_LEN;
|
|
268
|
+
const ret = wasm.renderer_requestedNeighborOffsets(this.__wbg_ptr, ptr0, len0);
|
|
269
|
+
if (ret[2]) {
|
|
270
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
271
|
+
}
|
|
272
|
+
return takeFromExternrefTable0(ret[0]);
|
|
273
|
+
}
|
|
219
274
|
/**
|
|
220
275
|
* Replace the active style. Returns the new node count. Invalidates
|
|
221
276
|
* the intermediate cache and drops any pending source bindings.
|
|
@@ -282,6 +337,9 @@ export function __wbg___wbindgen_number_get_f73a1244370fcc2c(arg0, arg1) {
|
|
|
282
337
|
getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
|
|
283
338
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
|
|
284
339
|
}
|
|
340
|
+
export function __wbg___wbindgen_rethrow_2b7cc655458909c2(arg0) {
|
|
341
|
+
throw arg0;
|
|
342
|
+
}
|
|
285
343
|
export function __wbg___wbindgen_string_get_d109740c0d18f4d7(arg0, arg1) {
|
|
286
344
|
const obj = arg1;
|
|
287
345
|
const ret = typeof(obj) === 'string' ? obj : undefined;
|
package/bundler/ezu_bg.wasm
CHANGED
|
Binary file
|
package/bundler/ezu_bg.wasm.d.ts
CHANGED
|
@@ -15,8 +15,10 @@ export const renderer_attribution: (a: number) => [number, number];
|
|
|
15
15
|
export const renderer_bindSource: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
16
16
|
export const renderer_boundSources: (a: number) => [number, number];
|
|
17
17
|
export const renderer_clearSources: (a: number) => void;
|
|
18
|
+
export const renderer_neededGlyphRanges: (a: number) => [number, number, number];
|
|
18
19
|
export const renderer_new: (a: number, b: number) => [number, number, number];
|
|
19
20
|
export const renderer_renderTile: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
21
|
+
export const renderer_requestedNeighborOffsets: (a: number, b: number, c: number) => [number, number, number];
|
|
20
22
|
export const renderer_setStyle: (a: number, b: number, c: number) => [number, number, number];
|
|
21
23
|
export const renderer_tileSize: (a: number) => number;
|
|
22
24
|
export const simdEnabled: () => number;
|
package/nodejs/ezu.d.ts
CHANGED
|
@@ -92,6 +92,28 @@ export class Renderer {
|
|
|
92
92
|
* Drop every pending source binding. Call between tile renders.
|
|
93
93
|
*/
|
|
94
94
|
clearSources(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Glyph ranges the currently bound features can require, as
|
|
97
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
98
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
99
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
100
|
+
*
|
|
101
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
102
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
103
|
+
* scraping every string in the MVT, call this after binding the
|
|
104
|
+
* vector sources and bind exactly the listed ranges.
|
|
105
|
+
*
|
|
106
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
107
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
108
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
109
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
110
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
111
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
112
|
+
* layers that build their string from something other than a `get`
|
|
113
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
114
|
+
* contribute their literal text where it is a plain string.
|
|
115
|
+
*/
|
|
116
|
+
neededGlyphRanges(): object;
|
|
95
117
|
/**
|
|
96
118
|
* Build a renderer from a style JSON document.
|
|
97
119
|
*/
|
|
@@ -106,6 +128,22 @@ export class Renderer {
|
|
|
106
128
|
* - `png`: `{ compression?: "fast" | "default" | "best" }`
|
|
107
129
|
*/
|
|
108
130
|
renderTile(z: number, x: number, y: number, opts?: object | null): Uint8Array;
|
|
131
|
+
/**
|
|
132
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
133
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
134
|
+
* centre `[0, 0]`).
|
|
135
|
+
*
|
|
136
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
137
|
+
* only things that read neighbours, and only for the sources they
|
|
138
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
139
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
140
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
141
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
142
|
+
* centre tile is enough.
|
|
143
|
+
*
|
|
144
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
145
|
+
*/
|
|
146
|
+
requestedNeighborOffsets(name: string): Array<any>;
|
|
109
147
|
/**
|
|
110
148
|
* Replace the active style. Returns the new node count. Invalidates
|
|
111
149
|
* the intermediate cache and drops any pending source bindings.
|
package/nodejs/ezu.js
CHANGED
|
@@ -181,6 +181,35 @@ class Renderer {
|
|
|
181
181
|
clearSources() {
|
|
182
182
|
wasm.renderer_clearSources(this.__wbg_ptr);
|
|
183
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Glyph ranges the currently bound features can require, as
|
|
186
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
187
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
188
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
189
|
+
*
|
|
190
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
191
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
192
|
+
* scraping every string in the MVT, call this after binding the
|
|
193
|
+
* vector sources and bind exactly the listed ranges.
|
|
194
|
+
*
|
|
195
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
196
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
197
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
198
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
199
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
200
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
201
|
+
* layers that build their string from something other than a `get`
|
|
202
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
203
|
+
* contribute their literal text where it is a plain string.
|
|
204
|
+
* @returns {object}
|
|
205
|
+
*/
|
|
206
|
+
neededGlyphRanges() {
|
|
207
|
+
const ret = wasm.renderer_neededGlyphRanges(this.__wbg_ptr);
|
|
208
|
+
if (ret[2]) {
|
|
209
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
210
|
+
}
|
|
211
|
+
return takeFromExternrefTable0(ret[0]);
|
|
212
|
+
}
|
|
184
213
|
/**
|
|
185
214
|
* Build a renderer from a style JSON document.
|
|
186
215
|
* @param {string} style_json
|
|
@@ -219,6 +248,32 @@ class Renderer {
|
|
|
219
248
|
wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
|
|
220
249
|
return v1;
|
|
221
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
253
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
254
|
+
* centre `[0, 0]`).
|
|
255
|
+
*
|
|
256
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
257
|
+
* only things that read neighbours, and only for the sources they
|
|
258
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
259
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
260
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
261
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
262
|
+
* centre tile is enough.
|
|
263
|
+
*
|
|
264
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
265
|
+
* @param {string} name
|
|
266
|
+
* @returns {Array<any>}
|
|
267
|
+
*/
|
|
268
|
+
requestedNeighborOffsets(name) {
|
|
269
|
+
const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
|
|
270
|
+
const len0 = WASM_VECTOR_LEN;
|
|
271
|
+
const ret = wasm.renderer_requestedNeighborOffsets(this.__wbg_ptr, ptr0, len0);
|
|
272
|
+
if (ret[2]) {
|
|
273
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
274
|
+
}
|
|
275
|
+
return takeFromExternrefTable0(ret[0]);
|
|
276
|
+
}
|
|
222
277
|
/**
|
|
223
278
|
* Replace the active style. Returns the new node count. Invalidates
|
|
224
279
|
* the intermediate cache and drops any pending source bindings.
|
|
@@ -291,6 +346,9 @@ function __wbg_get_imports() {
|
|
|
291
346
|
getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
|
|
292
347
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
|
|
293
348
|
},
|
|
349
|
+
__wbg___wbindgen_rethrow_2b7cc655458909c2: function(arg0) {
|
|
350
|
+
throw arg0;
|
|
351
|
+
},
|
|
294
352
|
__wbg___wbindgen_string_get_d109740c0d18f4d7: function(arg0, arg1) {
|
|
295
353
|
const obj = arg1;
|
|
296
354
|
const ret = typeof(obj) === 'string' ? obj : undefined;
|
package/nodejs/ezu_bg.wasm
CHANGED
|
Binary file
|
package/nodejs/ezu_bg.wasm.d.ts
CHANGED
|
@@ -15,8 +15,10 @@ export const renderer_attribution: (a: number) => [number, number];
|
|
|
15
15
|
export const renderer_bindSource: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
16
16
|
export const renderer_boundSources: (a: number) => [number, number];
|
|
17
17
|
export const renderer_clearSources: (a: number) => void;
|
|
18
|
+
export const renderer_neededGlyphRanges: (a: number) => [number, number, number];
|
|
18
19
|
export const renderer_new: (a: number, b: number) => [number, number, number];
|
|
19
20
|
export const renderer_renderTile: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
21
|
+
export const renderer_requestedNeighborOffsets: (a: number, b: number, c: number) => [number, number, number];
|
|
20
22
|
export const renderer_setStyle: (a: number, b: number, c: number) => [number, number, number];
|
|
21
23
|
export const renderer_tileSize: (a: number) => number;
|
|
22
24
|
export const simdEnabled: () => number;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reearth/ezu",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Painterly map renderer — WebAssembly bindings",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"exports": {
|
|
25
25
|
".": {
|
|
26
26
|
"workerd": {
|
|
27
|
-
"types": "./
|
|
28
|
-
"default": "./
|
|
27
|
+
"types": "./workerd/ezu.d.ts",
|
|
28
|
+
"default": "./workerd/ezu.js"
|
|
29
29
|
},
|
|
30
30
|
"browser": {
|
|
31
31
|
"types": "./web/ezu.d.ts",
|
|
@@ -51,12 +51,22 @@
|
|
|
51
51
|
"./nodejs": {
|
|
52
52
|
"types": "./nodejs/ezu.d.ts",
|
|
53
53
|
"default": "./nodejs/ezu.js"
|
|
54
|
-
}
|
|
54
|
+
},
|
|
55
|
+
"./workerd": {
|
|
56
|
+
"types": "./workerd/ezu.d.ts",
|
|
57
|
+
"default": "./workerd/ezu.js"
|
|
58
|
+
},
|
|
59
|
+
"./workerd/ezu.js": "./workerd/ezu.js",
|
|
60
|
+
"./bundler/ezu_bg.js": "./bundler/ezu_bg.js",
|
|
61
|
+
"./bundler/ezu_bg.wasm": "./bundler/ezu_bg.wasm",
|
|
62
|
+
"./web/ezu_bg.wasm": "./web/ezu_bg.wasm",
|
|
63
|
+
"./package.json": "./package.json"
|
|
55
64
|
},
|
|
56
65
|
"files": [
|
|
57
66
|
"web",
|
|
58
67
|
"bundler",
|
|
59
68
|
"nodejs",
|
|
69
|
+
"workerd",
|
|
60
70
|
"README.md",
|
|
61
71
|
"LICENSE-MIT",
|
|
62
72
|
"LICENSE-APACHE"
|
|
@@ -65,6 +75,7 @@
|
|
|
65
75
|
"*.wasm",
|
|
66
76
|
"./web/ezu.js",
|
|
67
77
|
"./bundler/ezu.js",
|
|
68
|
-
"./nodejs/ezu.js"
|
|
78
|
+
"./nodejs/ezu.js",
|
|
79
|
+
"./workerd/ezu.js"
|
|
69
80
|
]
|
|
70
81
|
}
|
package/web/ezu.d.ts
CHANGED
|
@@ -92,6 +92,28 @@ export class Renderer {
|
|
|
92
92
|
* Drop every pending source binding. Call between tile renders.
|
|
93
93
|
*/
|
|
94
94
|
clearSources(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Glyph ranges the currently bound features can require, as
|
|
97
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
98
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
99
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
100
|
+
*
|
|
101
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
102
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
103
|
+
* scraping every string in the MVT, call this after binding the
|
|
104
|
+
* vector sources and bind exactly the listed ranges.
|
|
105
|
+
*
|
|
106
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
107
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
108
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
109
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
110
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
111
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
112
|
+
* layers that build their string from something other than a `get`
|
|
113
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
114
|
+
* contribute their literal text where it is a plain string.
|
|
115
|
+
*/
|
|
116
|
+
neededGlyphRanges(): object;
|
|
95
117
|
/**
|
|
96
118
|
* Build a renderer from a style JSON document.
|
|
97
119
|
*/
|
|
@@ -106,6 +128,22 @@ export class Renderer {
|
|
|
106
128
|
* - `png`: `{ compression?: "fast" | "default" | "best" }`
|
|
107
129
|
*/
|
|
108
130
|
renderTile(z: number, x: number, y: number, opts?: object | null): Uint8Array;
|
|
131
|
+
/**
|
|
132
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
133
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
134
|
+
* centre `[0, 0]`).
|
|
135
|
+
*
|
|
136
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
137
|
+
* only things that read neighbours, and only for the sources they
|
|
138
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
139
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
140
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
141
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
142
|
+
* centre tile is enough.
|
|
143
|
+
*
|
|
144
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
145
|
+
*/
|
|
146
|
+
requestedNeighborOffsets(name: string): Array<any>;
|
|
109
147
|
/**
|
|
110
148
|
* Replace the active style. Returns the new node count. Invalidates
|
|
111
149
|
* the intermediate cache and drops any pending source bindings.
|
|
@@ -155,8 +193,10 @@ export interface InitOutput {
|
|
|
155
193
|
readonly renderer_bindSource: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
156
194
|
readonly renderer_boundSources: (a: number) => [number, number];
|
|
157
195
|
readonly renderer_clearSources: (a: number) => void;
|
|
196
|
+
readonly renderer_neededGlyphRanges: (a: number) => [number, number, number];
|
|
158
197
|
readonly renderer_new: (a: number, b: number) => [number, number, number];
|
|
159
198
|
readonly renderer_renderTile: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
199
|
+
readonly renderer_requestedNeighborOffsets: (a: number, b: number, c: number) => [number, number, number];
|
|
160
200
|
readonly renderer_setStyle: (a: number, b: number, c: number) => [number, number, number];
|
|
161
201
|
readonly renderer_tileSize: (a: number) => number;
|
|
162
202
|
readonly simdEnabled: () => number;
|
package/web/ezu.js
CHANGED
|
@@ -180,6 +180,35 @@ export class Renderer {
|
|
|
180
180
|
clearSources() {
|
|
181
181
|
wasm.renderer_clearSources(this.__wbg_ptr);
|
|
182
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Glyph ranges the currently bound features can require, as
|
|
185
|
+
* `{ [glyphsSourceName]: number[] }` where each number is a range
|
|
186
|
+
* start (`0`, `256`, `512`, …) — i.e. the `{range}` in a
|
|
187
|
+
* `…/{fontstack}/{range}.pbf` URL is `<start>-<start + 255>`.
|
|
188
|
+
*
|
|
189
|
+
* This host cannot fetch glyph ranges lazily, so every range a
|
|
190
|
+
* tile's labels touch must be bound before `renderTile`. Rather than
|
|
191
|
+
* scraping every string in the MVT, call this after binding the
|
|
192
|
+
* vector sources and bind exactly the listed ranges.
|
|
193
|
+
*
|
|
194
|
+
* It is an over-approximation, deliberately: a range is listed if
|
|
195
|
+
* *any* feature in a text layer carries the codepoint in a property
|
|
196
|
+
* the layer's `text` expression reads, without evaluating filters,
|
|
197
|
+
* zoom ranges, or the expression itself, and it is listed for every
|
|
198
|
+
* fontstack in that layer's fallback chain. So it never omits a
|
|
199
|
+
* range a label needs, and it may name a few that go unused. Text
|
|
200
|
+
* layers that build their string from something other than a `get`
|
|
201
|
+
* of a feature property (a literal, a `concat` of formatted values)
|
|
202
|
+
* contribute their literal text where it is a plain string.
|
|
203
|
+
* @returns {object}
|
|
204
|
+
*/
|
|
205
|
+
neededGlyphRanges() {
|
|
206
|
+
const ret = wasm.renderer_neededGlyphRanges(this.__wbg_ptr);
|
|
207
|
+
if (ret[2]) {
|
|
208
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
209
|
+
}
|
|
210
|
+
return takeFromExternrefTable0(ret[0]);
|
|
211
|
+
}
|
|
183
212
|
/**
|
|
184
213
|
* Build a renderer from a style JSON document.
|
|
185
214
|
* @param {string} style_json
|
|
@@ -218,6 +247,32 @@ export class Renderer {
|
|
|
218
247
|
wasm.__wbindgen_free_command_export(ret[0], ret[1] * 1, 1);
|
|
219
248
|
return v1;
|
|
220
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Neighbour tile offsets the active style actually asks for from
|
|
252
|
+
* `source`, as an array of `[dx, dy]` pairs (never including the
|
|
253
|
+
* centre `[0, 0]`).
|
|
254
|
+
*
|
|
255
|
+
* Cross-tile label collision and edge-continuous DEM shading are the
|
|
256
|
+
* only things that read neighbours, and only for the sources they
|
|
257
|
+
* name. A host that fetches the full 3×3 window unconditionally
|
|
258
|
+
* therefore pays for up to eight tiles it will not look at; passing
|
|
259
|
+
* each offset from this list to `bindSource(name, bytes, { coord })`
|
|
260
|
+
* fetches exactly what the recipe needs. An empty array means the
|
|
261
|
+
* centre tile is enough.
|
|
262
|
+
*
|
|
263
|
+
* Throws `UnknownSource` if `name` is not declared in the style.
|
|
264
|
+
* @param {string} name
|
|
265
|
+
* @returns {Array<any>}
|
|
266
|
+
*/
|
|
267
|
+
requestedNeighborOffsets(name) {
|
|
268
|
+
const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc_command_export, wasm.__wbindgen_realloc_command_export);
|
|
269
|
+
const len0 = WASM_VECTOR_LEN;
|
|
270
|
+
const ret = wasm.renderer_requestedNeighborOffsets(this.__wbg_ptr, ptr0, len0);
|
|
271
|
+
if (ret[2]) {
|
|
272
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
273
|
+
}
|
|
274
|
+
return takeFromExternrefTable0(ret[0]);
|
|
275
|
+
}
|
|
221
276
|
/**
|
|
222
277
|
* Replace the active style. Returns the new node count. Invalidates
|
|
223
278
|
* the intermediate cache and drops any pending source bindings.
|
|
@@ -287,6 +342,9 @@ function __wbg_get_imports() {
|
|
|
287
342
|
getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);
|
|
288
343
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);
|
|
289
344
|
},
|
|
345
|
+
__wbg___wbindgen_rethrow_2b7cc655458909c2: function(arg0) {
|
|
346
|
+
throw arg0;
|
|
347
|
+
},
|
|
290
348
|
__wbg___wbindgen_string_get_d109740c0d18f4d7: function(arg0, arg1) {
|
|
291
349
|
const obj = arg1;
|
|
292
350
|
const ret = typeof(obj) === 'string' ? obj : undefined;
|
package/web/ezu_bg.wasm
CHANGED
|
Binary file
|
package/web/ezu_bg.wasm.d.ts
CHANGED
|
@@ -15,8 +15,10 @@ export const renderer_attribution: (a: number) => [number, number];
|
|
|
15
15
|
export const renderer_bindSource: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
16
16
|
export const renderer_boundSources: (a: number) => [number, number];
|
|
17
17
|
export const renderer_clearSources: (a: number) => void;
|
|
18
|
+
export const renderer_neededGlyphRanges: (a: number) => [number, number, number];
|
|
18
19
|
export const renderer_new: (a: number, b: number) => [number, number, number];
|
|
19
20
|
export const renderer_renderTile: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
21
|
+
export const renderer_requestedNeighborOffsets: (a: number, b: number, c: number) => [number, number, number];
|
|
20
22
|
export const renderer_setStyle: (a: number, b: number, c: number) => [number, number, number];
|
|
21
23
|
export const renderer_tileSize: (a: number) => number;
|
|
22
24
|
export const simdEnabled: () => number;
|
package/workerd/ezu.d.ts
ADDED
package/workerd/ezu.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* @ts-self-types="./ezu.d.ts" */
|
|
2
|
+
import * as glue from "../bundler/ezu_bg.js";
|
|
3
|
+
import wasmModule from "../bundler/ezu_bg.wasm";
|
|
4
|
+
|
|
5
|
+
// Synchronous instantiation is allowed at module scope on workerd; it
|
|
6
|
+
// would be rejected inside a request handler.
|
|
7
|
+
const instance = new WebAssembly.Instance(wasmModule, { "./ezu_bg.js": glue });
|
|
8
|
+
glue.__wbg_set_wasm(instance.exports);
|
|
9
|
+
instance.exports.__wbindgen_start();
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
LogSink, Renderer, simdEnabled, threadsEnabled
|
|
13
|
+
} from "../bundler/ezu_bg.js";
|