styled-map-package-api 5.0.0-pre.2 → 5.0.0-pre.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +94 -0
  2. package/dist/download.d.ts +11 -21
  3. package/dist/fallbacks.d.ts +32 -0
  4. package/dist/from-mbtiles.d.ts +1 -3
  5. package/dist/index.d.ts +11 -24
  6. package/dist/reader.d.ts +28 -12
  7. package/dist/server.d.ts +23 -14
  8. package/dist/style-downloader.d.ts +13 -19
  9. package/dist/tile-downloader.d.ts +13 -23
  10. package/dist/types.d.ts +61 -0
  11. package/dist/utils/errors.d.ts +2 -4
  12. package/dist/utils/fetch.d.ts +3 -8
  13. package/dist/utils/file-formats.d.ts +3 -10
  14. package/dist/utils/geo.d.ts +17 -9
  15. package/dist/utils/mapbox.d.ts +8 -10
  16. package/dist/utils/misc.d.ts +3 -5
  17. package/dist/utils/streams.d.ts +6 -10
  18. package/dist/utils/style.d.ts +27 -16
  19. package/dist/utils/templates.d.ts +30 -25
  20. package/dist/validator.d.ts +66 -0
  21. package/dist/writer.d.ts +157 -4
  22. package/lib/download.js +125 -0
  23. package/lib/fallbacks.js +157 -0
  24. package/lib/from-mbtiles.js +131 -0
  25. package/lib/index.js +12 -0
  26. package/lib/reader.js +360 -0
  27. package/lib/server.js +222 -0
  28. package/lib/style-downloader.js +369 -0
  29. package/lib/tile-downloader.js +189 -0
  30. package/lib/types.ts +99 -0
  31. package/lib/utils/errors.js +24 -0
  32. package/lib/utils/fetch.js +104 -0
  33. package/lib/utils/file-formats.js +92 -0
  34. package/lib/utils/geo.js +97 -0
  35. package/lib/utils/mapbox.js +155 -0
  36. package/{dist/utils/misc.d.cts → lib/utils/misc.js} +9 -5
  37. package/lib/utils/streams.js +101 -0
  38. package/lib/utils/style.js +206 -0
  39. package/lib/utils/templates.js +165 -0
  40. package/lib/validator.js +789 -0
  41. package/lib/writer.js +652 -0
  42. package/package.json +30 -78
  43. package/dist/download.cjs +0 -100
  44. package/dist/download.d.cts +0 -63
  45. package/dist/download.js +0 -76
  46. package/dist/from-mbtiles.cjs +0 -108
  47. package/dist/from-mbtiles.d.cts +0 -14
  48. package/dist/from-mbtiles.js +0 -84
  49. package/dist/index.cjs +0 -46
  50. package/dist/index.d.cts +0 -24
  51. package/dist/index.js +0 -16
  52. package/dist/reader.cjs +0 -287
  53. package/dist/reader.d.cts +0 -67
  54. package/dist/reader.js +0 -259
  55. package/dist/server.cjs +0 -73
  56. package/dist/server.d.cts +0 -45
  57. package/dist/server.js +0 -49
  58. package/dist/style-downloader.cjs +0 -314
  59. package/dist/style-downloader.d.cts +0 -118
  60. package/dist/style-downloader.js +0 -290
  61. package/dist/tile-downloader.cjs +0 -156
  62. package/dist/tile-downloader.d.cts +0 -82
  63. package/dist/tile-downloader.js +0 -124
  64. package/dist/types-qfyJk4ot.d.cts +0 -200
  65. package/dist/types-qfyJk4ot.d.ts +0 -200
  66. package/dist/utils/errors.cjs +0 -41
  67. package/dist/utils/errors.d.cts +0 -18
  68. package/dist/utils/errors.js +0 -16
  69. package/dist/utils/fetch.cjs +0 -97
  70. package/dist/utils/fetch.d.cts +0 -50
  71. package/dist/utils/fetch.js +0 -63
  72. package/dist/utils/file-formats.cjs +0 -96
  73. package/dist/utils/file-formats.d.cts +0 -32
  74. package/dist/utils/file-formats.js +0 -70
  75. package/dist/utils/geo.cjs +0 -84
  76. package/dist/utils/geo.d.cts +0 -46
  77. package/dist/utils/geo.js +0 -56
  78. package/dist/utils/mapbox.cjs +0 -121
  79. package/dist/utils/mapbox.d.cts +0 -43
  80. package/dist/utils/mapbox.js +0 -91
  81. package/dist/utils/misc.cjs +0 -39
  82. package/dist/utils/misc.js +0 -13
  83. package/dist/utils/streams.cjs +0 -99
  84. package/dist/utils/streams.d.cts +0 -49
  85. package/dist/utils/streams.js +0 -73
  86. package/dist/utils/style.cjs +0 -126
  87. package/dist/utils/style.d.cts +0 -66
  88. package/dist/utils/style.js +0 -98
  89. package/dist/utils/templates.cjs +0 -124
  90. package/dist/utils/templates.d.cts +0 -79
  91. package/dist/utils/templates.js +0 -85
  92. package/dist/writer.cjs +0 -539
  93. package/dist/writer.d.cts +0 -4
  94. package/dist/writer.js +0 -516
package/package.json CHANGED
@@ -1,112 +1,66 @@
1
1
  {
2
2
  "name": "styled-map-package-api",
3
- "version": "5.0.0-pre.2",
3
+ "version": "5.0.0-pre.4",
4
4
  "description": "JavaScript API for reading, writing, and serving Styled Map Package (.smp) files",
5
5
  "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
6
+ "main": "./lib/index.js",
8
7
  "types": "./dist/index.d.ts",
9
8
  "exports": {
10
9
  ".": {
11
- "import": {
12
- "types": "./dist/index.d.ts",
13
- "default": "./dist/index.js"
14
- },
15
- "require": {
16
- "types": "./dist/index.d.cts",
17
- "default": "./dist/index.cjs"
18
- }
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./lib/index.js"
19
12
  },
20
13
  "./reader": {
21
- "import": {
22
- "types": "./dist/reader.d.ts",
23
- "default": "./dist/reader.js"
24
- },
25
- "require": {
26
- "types": "./dist/reader.d.cts",
27
- "default": "./dist/reader.cjs"
28
- }
14
+ "types": "./dist/reader.d.ts",
15
+ "default": "./lib/reader.js"
29
16
  },
30
17
  "./writer": {
31
- "import": {
32
- "types": "./dist/writer.d.ts",
33
- "default": "./dist/writer.js"
34
- },
35
- "require": {
36
- "types": "./dist/writer.d.cts",
37
- "default": "./dist/writer.cjs"
38
- }
18
+ "types": "./dist/writer.d.ts",
19
+ "default": "./lib/writer.js"
39
20
  },
40
21
  "./server": {
41
- "import": {
42
- "types": "./dist/server.d.ts",
43
- "default": "./dist/server.js"
44
- },
45
- "require": {
46
- "types": "./dist/server.d.cts",
47
- "default": "./dist/server.cjs"
48
- }
22
+ "types": "./dist/server.d.ts",
23
+ "default": "./lib/server.js"
49
24
  },
50
25
  "./style-downloader": {
51
- "import": {
52
- "types": "./dist/style-downloader.d.ts",
53
- "default": "./dist/style-downloader.js"
54
- },
55
- "require": {
56
- "types": "./dist/style-downloader.d.cts",
57
- "default": "./dist/style-downloader.cjs"
58
- }
26
+ "types": "./dist/style-downloader.d.ts",
27
+ "default": "./lib/style-downloader.js"
59
28
  },
60
29
  "./tile-downloader": {
61
- "import": {
62
- "types": "./dist/tile-downloader.d.ts",
63
- "default": "./dist/tile-downloader.js"
64
- },
65
- "require": {
66
- "types": "./dist/tile-downloader.d.cts",
67
- "default": "./dist/tile-downloader.cjs"
68
- }
30
+ "types": "./dist/tile-downloader.d.ts",
31
+ "default": "./lib/tile-downloader.js"
69
32
  },
70
33
  "./download": {
71
- "import": {
72
- "types": "./dist/download.d.ts",
73
- "default": "./dist/download.js"
74
- },
75
- "require": {
76
- "types": "./dist/download.d.cts",
77
- "default": "./dist/download.cjs"
78
- }
34
+ "types": "./dist/download.d.ts",
35
+ "default": "./lib/download.js"
79
36
  },
80
37
  "./from-mbtiles": {
81
- "import": {
82
- "types": "./dist/from-mbtiles.d.ts",
83
- "default": "./dist/from-mbtiles.js"
84
- },
85
- "require": {
86
- "types": "./dist/from-mbtiles.d.cts",
87
- "default": "./dist/from-mbtiles.cjs"
88
- }
38
+ "types": "./dist/from-mbtiles.d.ts",
39
+ "default": "./lib/from-mbtiles.js"
40
+ },
41
+ "./fallbacks": {
42
+ "types": "./dist/fallbacks.d.ts",
43
+ "default": "./lib/fallbacks.js"
44
+ },
45
+ "./validator": {
46
+ "types": "./dist/validator.d.ts",
47
+ "default": "./lib/validator.js"
89
48
  },
90
49
  "./utils/mapbox": {
91
- "import": {
92
- "types": "./dist/utils/mapbox.d.ts",
93
- "default": "./dist/utils/mapbox.js"
94
- },
95
- "require": {
96
- "types": "./dist/utils/mapbox.d.cts",
97
- "default": "./dist/utils/mapbox.cjs"
98
- }
50
+ "types": "./dist/utils/mapbox.d.ts",
51
+ "default": "./lib/utils/mapbox.js"
99
52
  },
100
53
  "./package.json": "./package.json"
101
54
  },
102
55
  "files": [
56
+ "lib",
103
57
  "dist"
104
58
  ],
105
59
  "scripts": {
106
60
  "test": "npm run build && npm run types && vitest run",
107
61
  "test:watch": "vitest",
108
62
  "test:coverage": "vitest run --coverage",
109
- "build": "tsup",
63
+ "build": "tsc -p tsconfig.build.json",
110
64
  "types": "tsc",
111
65
  "bench": "vitest bench --project node",
112
66
  "prepack": "npm run build"
@@ -143,14 +97,12 @@
143
97
  "@vitest/browser": "^3.2.4",
144
98
  "@vitest/coverage-v8": "^3.2.4",
145
99
  "@whatwg-node/server": "^0.10.17",
146
- "esbuild-fix-imports-plugin": "^1.0.20",
147
100
  "execa": "^9.4.0",
148
101
  "fast-png": "^6.3.0",
149
102
  "pixel-stream": "^1.0.3",
150
103
  "playwright": "^1.50.1",
151
104
  "sharp": "^0.33.5",
152
105
  "tempy": "^3.1.0",
153
- "tsup": "^8.4.0",
154
106
  "type-fest": "^4.35.0",
155
107
  "typescript": "^5.9.3",
156
108
  "vite": "^6.4.1",
package/dist/download.cjs DELETED
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var download_exports = {};
20
- __export(download_exports, {
21
- download: () => download
22
- });
23
- module.exports = __toCommonJS(download_exports);
24
- var import_style_downloader = require('./style-downloader.cjs');
25
- var import_streams = require('./utils/streams.cjs');
26
- var import_writer = require('./writer.cjs');
27
- function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }) {
28
- const downloader = new import_style_downloader.StyleDownloader(styleUrl, {
29
- concurrency: 24,
30
- mapboxAccessToken: accessToken
31
- });
32
- let start = Date.now();
33
- let progress = {
34
- tiles: { downloaded: 0, totalBytes: 0, total: 0, skipped: 0, done: false },
35
- style: { done: false },
36
- sprites: { downloaded: 0, done: false },
37
- glyphs: { downloaded: 0, total: 0, totalBytes: 0, done: false },
38
- output: { totalBytes: 0, done: false },
39
- elapsedMs: 0
40
- };
41
- function handleProgress(update) {
42
- progress = { ...progress, ...update, elapsedMs: Date.now() - start };
43
- onprogress?.(progress);
44
- }
45
- const sizeCounter = new TransformStream({
46
- transform(chunk, controller) {
47
- handleProgress({
48
- output: {
49
- totalBytes: progress.output.totalBytes + chunk.byteLength,
50
- done: false
51
- }
52
- });
53
- controller.enqueue(chunk);
54
- },
55
- flush() {
56
- handleProgress({ output: { ...progress.output, done: true } });
57
- }
58
- });
59
- (async () => {
60
- const style = await downloader.getStyle();
61
- const writer = new import_writer.Writer(style);
62
- handleProgress({ style: { done: true } });
63
- writer.outputStream.pipeTo(sizeCounter.writable).catch(() => {
64
- });
65
- try {
66
- for await (const spriteInfo of downloader.getSprites()) {
67
- await writer.addSprite(spriteInfo);
68
- handleProgress({
69
- sprites: { downloaded: progress.sprites.downloaded + 1, done: false }
70
- });
71
- }
72
- handleProgress({ sprites: { ...progress.sprites, done: true } });
73
- const tiles = downloader.getTiles({
74
- bounds: bbox,
75
- maxzoom,
76
- onprogress: (tileStats) => handleProgress({ tiles: { ...tileStats, done: false } })
77
- });
78
- await (0, import_streams.readableFromAsync)(tiles).pipeTo(
79
- writer.createTileWriteStream({ concurrency: 24 })
80
- );
81
- handleProgress({ tiles: { ...progress.tiles, done: true } });
82
- const glyphs = downloader.getGlyphs({
83
- onprogress: (glyphStats) => handleProgress({ glyphs: { ...glyphStats, done: false } })
84
- });
85
- await (0, import_streams.readableFromAsync)(glyphs).pipeTo(writer.createGlyphWriteStream());
86
- handleProgress({ glyphs: { ...progress.glyphs, done: true } });
87
- writer.finish();
88
- } catch (err) {
89
- writer.abort(
90
- /** @type {Error} */
91
- err
92
- );
93
- }
94
- })();
95
- return sizeCounter.readable;
96
- }
97
- // Annotate the CommonJS export names for ESM import in node:
98
- 0 && (module.exports = {
99
- download
100
- });
@@ -1,63 +0,0 @@
1
- import { GlyphDownloadStats } from './style-downloader.cjs';
2
- import { TileDownloadStats } from './tile-downloader.cjs';
3
- import { D as DownloadStream } from './types-qfyJk4ot.cjs';
4
- import { BBox } from './utils/geo.cjs';
5
- import 'ky';
6
- import '@maplibre/maplibre-gl-style-spec';
7
- import './utils/fetch.cjs';
8
- import './utils/streams.cjs';
9
- import 'stream/web';
10
- import 'geojson';
11
- import 'type-fest';
12
-
13
- /**
14
- * @typedef {object} DownloadProgress
15
- * @property {import('./tile-downloader.js').TileDownloadStats & { done: boolean }} tiles
16
- * @property {{ done: boolean }} style
17
- * @property {{ downloaded: number, done: boolean }} sprites
18
- * @property {import('./style-downloader.js').GlyphDownloadStats & { done: boolean }} glyphs
19
- * @property {{ totalBytes: number, done: boolean }} output
20
- * @property {number} elapsedMs
21
- */
22
- /**
23
- * Download a map style and its resources for a given bounding box and max zoom
24
- * level. Returns a readable stream of a "styled map package", a zip file
25
- * containing all the resources needed to serve the style offline.
26
- *
27
- * @param {object} opts
28
- * @param {import("./utils/geo.js").BBox} opts.bbox Bounding box to download tiles for
29
- * @param {number} opts.maxzoom Max zoom level to download tiles for
30
- * @param {string} opts.styleUrl URL of the style to download
31
- * @param { (progress: DownloadProgress) => void } [opts.onprogress] Optional callback for reporting progress
32
- * @param {string} [opts.accessToken]
33
- * @returns {import('./types.js').DownloadStream} Readable stream of the output styled map file
34
- */
35
- declare function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }: {
36
- bbox: BBox;
37
- maxzoom: number;
38
- styleUrl: string;
39
- onprogress?: ((progress: DownloadProgress) => void) | undefined;
40
- accessToken?: string | undefined;
41
- }): DownloadStream;
42
- type DownloadProgress = {
43
- tiles: TileDownloadStats & {
44
- done: boolean;
45
- };
46
- style: {
47
- done: boolean;
48
- };
49
- sprites: {
50
- downloaded: number;
51
- done: boolean;
52
- };
53
- glyphs: GlyphDownloadStats & {
54
- done: boolean;
55
- };
56
- output: {
57
- totalBytes: number;
58
- done: boolean;
59
- };
60
- elapsedMs: number;
61
- };
62
-
63
- export { type DownloadProgress, download };
package/dist/download.js DELETED
@@ -1,76 +0,0 @@
1
- import { StyleDownloader } from "./style-downloader.js";
2
- import { readableFromAsync } from "./utils/streams.js";
3
- import { Writer } from "./writer.js";
4
- function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }) {
5
- const downloader = new StyleDownloader(styleUrl, {
6
- concurrency: 24,
7
- mapboxAccessToken: accessToken
8
- });
9
- let start = Date.now();
10
- let progress = {
11
- tiles: { downloaded: 0, totalBytes: 0, total: 0, skipped: 0, done: false },
12
- style: { done: false },
13
- sprites: { downloaded: 0, done: false },
14
- glyphs: { downloaded: 0, total: 0, totalBytes: 0, done: false },
15
- output: { totalBytes: 0, done: false },
16
- elapsedMs: 0
17
- };
18
- function handleProgress(update) {
19
- progress = { ...progress, ...update, elapsedMs: Date.now() - start };
20
- onprogress?.(progress);
21
- }
22
- const sizeCounter = new TransformStream({
23
- transform(chunk, controller) {
24
- handleProgress({
25
- output: {
26
- totalBytes: progress.output.totalBytes + chunk.byteLength,
27
- done: false
28
- }
29
- });
30
- controller.enqueue(chunk);
31
- },
32
- flush() {
33
- handleProgress({ output: { ...progress.output, done: true } });
34
- }
35
- });
36
- (async () => {
37
- const style = await downloader.getStyle();
38
- const writer = new Writer(style);
39
- handleProgress({ style: { done: true } });
40
- writer.outputStream.pipeTo(sizeCounter.writable).catch(() => {
41
- });
42
- try {
43
- for await (const spriteInfo of downloader.getSprites()) {
44
- await writer.addSprite(spriteInfo);
45
- handleProgress({
46
- sprites: { downloaded: progress.sprites.downloaded + 1, done: false }
47
- });
48
- }
49
- handleProgress({ sprites: { ...progress.sprites, done: true } });
50
- const tiles = downloader.getTiles({
51
- bounds: bbox,
52
- maxzoom,
53
- onprogress: (tileStats) => handleProgress({ tiles: { ...tileStats, done: false } })
54
- });
55
- await readableFromAsync(tiles).pipeTo(
56
- writer.createTileWriteStream({ concurrency: 24 })
57
- );
58
- handleProgress({ tiles: { ...progress.tiles, done: true } });
59
- const glyphs = downloader.getGlyphs({
60
- onprogress: (glyphStats) => handleProgress({ glyphs: { ...glyphStats, done: false } })
61
- });
62
- await readableFromAsync(glyphs).pipeTo(writer.createGlyphWriteStream());
63
- handleProgress({ glyphs: { ...progress.glyphs, done: true } });
64
- writer.finish();
65
- } catch (err) {
66
- writer.abort(
67
- /** @type {Error} */
68
- err
69
- );
70
- }
71
- })();
72
- return sizeCounter.readable;
73
- }
74
- export {
75
- download
76
- };
@@ -1,108 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var from_mbtiles_exports = {};
20
- __export(from_mbtiles_exports, {
21
- fromMBTiles: () => fromMBTiles
22
- });
23
- module.exports = __toCommonJS(from_mbtiles_exports);
24
- var import_mbtiles_reader = require("mbtiles-reader");
25
- var import_streams = require('./utils/streams.cjs');
26
- var import_writer = require('./writer.cjs');
27
- const SOURCE_ID = "mbtiles-source";
28
- function fromMBTiles(source) {
29
- let outputReader;
30
- let conversionDone;
31
- const pipeAbort = new AbortController();
32
- return new ReadableStream({
33
- async start() {
34
- const reader = await import_mbtiles_reader.MBTiles.open(source);
35
- if (reader.metadata.format === "pbf") {
36
- throw new Error("Vector MBTiles are not yet supported");
37
- }
38
- const style = {
39
- version: 8,
40
- name: reader.metadata.name,
41
- sources: {
42
- [SOURCE_ID]: {
43
- ...reader.metadata,
44
- type: "raster"
45
- }
46
- },
47
- layers: [
48
- {
49
- id: "background",
50
- type: "background",
51
- paint: {
52
- "background-color": "white"
53
- }
54
- },
55
- {
56
- id: "raster",
57
- type: "raster",
58
- source: SOURCE_ID,
59
- paint: {
60
- "raster-opacity": 1
61
- }
62
- }
63
- ]
64
- };
65
- const writer = new import_writer.Writer(style);
66
- outputReader = writer.outputStream.getReader();
67
- conversionDone = (async () => {
68
- try {
69
- await (0, import_streams.readableFromAsync)(mbtilesToTileArgs(reader)).pipeTo(
70
- writer.createTileWriteStream(),
71
- { signal: pipeAbort.signal }
72
- );
73
- writer.finish();
74
- } catch (err) {
75
- try {
76
- writer.abort(err instanceof Error ? err : new Error(String(err)));
77
- } catch {
78
- }
79
- }
80
- })();
81
- },
82
- async pull(controller) {
83
- const { done, value } = await /** @type {ReadableStreamDefaultReader<Uint8Array>} */
84
- outputReader.read();
85
- if (done) {
86
- controller.close();
87
- } else {
88
- controller.enqueue(value);
89
- }
90
- },
91
- async cancel(reason) {
92
- pipeAbort.abort(reason);
93
- await conversionDone;
94
- await /** @type {ReadableStreamDefaultReader<Uint8Array>} */
95
- outputReader.cancel(reason).catch(() => {
96
- });
97
- }
98
- });
99
- }
100
- async function* mbtilesToTileArgs(mbtiles) {
101
- for (const { z, x, y, data, format } of mbtiles) {
102
- yield [data, { z, x, y, format, sourceId: SOURCE_ID }];
103
- }
104
- }
105
- // Annotate the CommonJS export names for ESM import in node:
106
- 0 && (module.exports = {
107
- fromMBTiles
108
- });
@@ -1,14 +0,0 @@
1
- /**
2
- * Convert a MBTiles file to a styled map package, returned as a web
3
- * ReadableStream. The async MBTiles.open() happens lazily inside the
4
- * stream's start(), so this function is synchronous.
5
- *
6
- * Requires Node >= 20 (uses better-sqlite3 which dropped Node 18 support).
7
- *
8
- * @param {string | ArrayBuffer | Uint8Array} source MBTiles source — file path
9
- * (Node), OPFS path (browser Worker), or in-memory buffer.
10
- * @returns {ReadableStream<Uint8Array>}
11
- */
12
- declare function fromMBTiles(source: string | ArrayBuffer | Uint8Array): ReadableStream<Uint8Array>;
13
-
14
- export { fromMBTiles };
@@ -1,84 +0,0 @@
1
- import { MBTiles } from "mbtiles-reader";
2
- import { readableFromAsync } from "./utils/streams.js";
3
- import { Writer } from "./writer.js";
4
- const SOURCE_ID = "mbtiles-source";
5
- function fromMBTiles(source) {
6
- let outputReader;
7
- let conversionDone;
8
- const pipeAbort = new AbortController();
9
- return new ReadableStream({
10
- async start() {
11
- const reader = await MBTiles.open(source);
12
- if (reader.metadata.format === "pbf") {
13
- throw new Error("Vector MBTiles are not yet supported");
14
- }
15
- const style = {
16
- version: 8,
17
- name: reader.metadata.name,
18
- sources: {
19
- [SOURCE_ID]: {
20
- ...reader.metadata,
21
- type: "raster"
22
- }
23
- },
24
- layers: [
25
- {
26
- id: "background",
27
- type: "background",
28
- paint: {
29
- "background-color": "white"
30
- }
31
- },
32
- {
33
- id: "raster",
34
- type: "raster",
35
- source: SOURCE_ID,
36
- paint: {
37
- "raster-opacity": 1
38
- }
39
- }
40
- ]
41
- };
42
- const writer = new Writer(style);
43
- outputReader = writer.outputStream.getReader();
44
- conversionDone = (async () => {
45
- try {
46
- await readableFromAsync(mbtilesToTileArgs(reader)).pipeTo(
47
- writer.createTileWriteStream(),
48
- { signal: pipeAbort.signal }
49
- );
50
- writer.finish();
51
- } catch (err) {
52
- try {
53
- writer.abort(err instanceof Error ? err : new Error(String(err)));
54
- } catch {
55
- }
56
- }
57
- })();
58
- },
59
- async pull(controller) {
60
- const { done, value } = await /** @type {ReadableStreamDefaultReader<Uint8Array>} */
61
- outputReader.read();
62
- if (done) {
63
- controller.close();
64
- } else {
65
- controller.enqueue(value);
66
- }
67
- },
68
- async cancel(reason) {
69
- pipeAbort.abort(reason);
70
- await conversionDone;
71
- await /** @type {ReadableStreamDefaultReader<Uint8Array>} */
72
- outputReader.cancel(reason).catch(() => {
73
- });
74
- }
75
- });
76
- }
77
- async function* mbtilesToTileArgs(mbtiles) {
78
- for (const { z, x, y, data, format } of mbtiles) {
79
- yield [data, { z, x, y, format, sourceId: SOURCE_ID }];
80
- }
81
- }
82
- export {
83
- fromMBTiles
84
- };
package/dist/index.cjs DELETED
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var index_exports = {};
20
- __export(index_exports, {
21
- Reader: () => import_reader.Reader,
22
- StyleDownloader: () => import_style_downloader.StyleDownloader,
23
- Writer: () => import_writer.Writer,
24
- createServer: () => import_server.createServer,
25
- download: () => import_download.download,
26
- downloadTiles: () => import_tile_downloader.downloadTiles,
27
- fromMBTiles: () => import_from_mbtiles.fromMBTiles
28
- });
29
- module.exports = __toCommonJS(index_exports);
30
- var import_reader = require('./reader.cjs');
31
- var import_writer = require('./writer.cjs');
32
- var import_server = require('./server.cjs');
33
- var import_style_downloader = require('./style-downloader.cjs');
34
- var import_tile_downloader = require('./tile-downloader.cjs');
35
- var import_download = require('./download.cjs');
36
- var import_from_mbtiles = require('./from-mbtiles.cjs');
37
- // Annotate the CommonJS export names for ESM import in node:
38
- 0 && (module.exports = {
39
- Reader,
40
- StyleDownloader,
41
- Writer,
42
- createServer,
43
- download,
44
- downloadTiles,
45
- fromMBTiles
46
- });
package/dist/index.d.cts DELETED
@@ -1,24 +0,0 @@
1
- import { S as SMPSource$1, a as SMPStyle$1 } from './types-qfyJk4ot.cjs';
2
- export { W as Writer } from './types-qfyJk4ot.cjs';
3
- export { Reader } from './reader.cjs';
4
- export { createServer } from './server.cjs';
5
- export { StyleDownloader } from './style-downloader.cjs';
6
- export { downloadTiles } from './tile-downloader.cjs';
7
- export { download } from './download.cjs';
8
- export { fromMBTiles } from './from-mbtiles.cjs';
9
- import '@maplibre/maplibre-gl-style-spec';
10
- import 'geojson';
11
- import 'type-fest';
12
- import '@gmaclennan/zip-reader';
13
- import 'itty-router';
14
- import 'itty-router/IttyRouter';
15
- import 'ky';
16
- import './utils/geo.cjs';
17
- import './utils/fetch.cjs';
18
- import './utils/streams.cjs';
19
- import 'stream/web';
20
-
21
- type SMPSource = SMPSource$1;
22
- type SMPStyle = SMPStyle$1;
23
-
24
- export type { SMPSource, SMPStyle };