styled-map-package 4.1.0 → 5.0.0-pre.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.
Files changed (238) hide show
  1. package/README.md +47 -7
  2. package/bin/smp-download.js +27 -151
  3. package/bin/smp-mbtiles.js +12 -7
  4. package/bin/smp-view.js +32 -54
  5. package/lib/commands/download.js +188 -0
  6. package/lib/commands/mbtiles.js +21 -0
  7. package/lib/commands/view.js +57 -0
  8. package/lib/reporters.js +92 -0
  9. package/package.json +9 -181
  10. package/LICENSE.md +0 -7
  11. package/dist/download.cjs +0 -101
  12. package/dist/download.d.cts +0 -65
  13. package/dist/download.d.ts +0 -65
  14. package/dist/download.js +0 -77
  15. package/dist/from-mbtiles.cjs +0 -91
  16. package/dist/from-mbtiles.d.cts +0 -17
  17. package/dist/from-mbtiles.d.ts +0 -17
  18. package/dist/from-mbtiles.js +0 -57
  19. package/dist/index.cjs +0 -49
  20. package/dist/index.d.cts +0 -27
  21. package/dist/index.d.ts +0 -27
  22. package/dist/index.js +0 -18
  23. package/dist/reader-watch.cjs +0 -135
  24. package/dist/reader-watch.d.cts +0 -24
  25. package/dist/reader-watch.d.ts +0 -24
  26. package/dist/reader-watch.js +0 -101
  27. package/dist/reader.cjs +0 -168
  28. package/dist/reader.d.cts +0 -62
  29. package/dist/reader.d.ts +0 -62
  30. package/dist/reader.js +0 -139
  31. package/dist/reporters.cjs +0 -122
  32. package/dist/reporters.d.cts +0 -10
  33. package/dist/reporters.d.ts +0 -10
  34. package/dist/reporters.js +0 -88
  35. package/dist/server.cjs +0 -78
  36. package/dist/server.d.cts +0 -48
  37. package/dist/server.d.ts +0 -48
  38. package/dist/server.js +0 -54
  39. package/dist/style-downloader.cjs +0 -312
  40. package/dist/style-downloader.d.cts +0 -120
  41. package/dist/style-downloader.d.ts +0 -120
  42. package/dist/style-downloader.js +0 -288
  43. package/dist/tile-downloader.cjs +0 -158
  44. package/dist/tile-downloader.d.cts +0 -84
  45. package/dist/tile-downloader.d.ts +0 -84
  46. package/dist/tile-downloader.js +0 -126
  47. package/dist/types-yLQy3AKR.d.cts +0 -192
  48. package/dist/types-yLQy3AKR.d.ts +0 -192
  49. package/dist/utils/errors.cjs +0 -41
  50. package/dist/utils/errors.d.cts +0 -18
  51. package/dist/utils/errors.d.ts +0 -18
  52. package/dist/utils/errors.js +0 -16
  53. package/dist/utils/fetch.cjs +0 -96
  54. package/dist/utils/fetch.d.cts +0 -51
  55. package/dist/utils/fetch.d.ts +0 -51
  56. package/dist/utils/fetch.js +0 -62
  57. package/dist/utils/file-formats.cjs +0 -98
  58. package/dist/utils/file-formats.d.cts +0 -35
  59. package/dist/utils/file-formats.d.ts +0 -35
  60. package/dist/utils/file-formats.js +0 -62
  61. package/dist/utils/geo.cjs +0 -84
  62. package/dist/utils/geo.d.cts +0 -46
  63. package/dist/utils/geo.d.ts +0 -46
  64. package/dist/utils/geo.js +0 -56
  65. package/dist/utils/mapbox.cjs +0 -121
  66. package/dist/utils/mapbox.d.cts +0 -43
  67. package/dist/utils/mapbox.d.ts +0 -43
  68. package/dist/utils/mapbox.js +0 -91
  69. package/dist/utils/misc.cjs +0 -39
  70. package/dist/utils/misc.d.cts +0 -22
  71. package/dist/utils/misc.d.ts +0 -22
  72. package/dist/utils/misc.js +0 -13
  73. package/dist/utils/streams.cjs +0 -130
  74. package/dist/utils/streams.d.cts +0 -73
  75. package/dist/utils/streams.d.ts +0 -73
  76. package/dist/utils/streams.js +0 -103
  77. package/dist/utils/style.cjs +0 -126
  78. package/dist/utils/style.d.cts +0 -69
  79. package/dist/utils/style.d.ts +0 -69
  80. package/dist/utils/style.js +0 -98
  81. package/dist/utils/templates.cjs +0 -118
  82. package/dist/utils/templates.d.cts +0 -80
  83. package/dist/utils/templates.d.ts +0 -80
  84. package/dist/utils/templates.js +0 -81
  85. package/dist/writer.cjs +0 -449
  86. package/dist/writer.d.cts +0 -7
  87. package/dist/writer.d.ts +0 -7
  88. package/dist/writer.js +0 -424
  89. package/node_modules/@node-rs/crc32/LICENSE +0 -21
  90. package/node_modules/@node-rs/crc32/README.md +0 -61
  91. package/node_modules/@node-rs/crc32/browser.js +0 -1
  92. package/node_modules/@node-rs/crc32/index.d.ts +0 -5
  93. package/node_modules/@node-rs/crc32/index.js +0 -368
  94. package/node_modules/@node-rs/crc32/package.json +0 -97
  95. package/node_modules/@node-rs/crc32-linux-x64-gnu/README.md +0 -3
  96. package/node_modules/@node-rs/crc32-linux-x64-gnu/crc32.linux-x64-gnu.node +0 -0
  97. package/node_modules/@node-rs/crc32-linux-x64-gnu/package.json +0 -43
  98. package/node_modules/@node-rs/crc32-linux-x64-musl/README.md +0 -3
  99. package/node_modules/@node-rs/crc32-linux-x64-musl/crc32.linux-x64-musl.node +0 -0
  100. package/node_modules/@node-rs/crc32-linux-x64-musl/package.json +0 -43
  101. package/node_modules/define-data-property/.eslintrc +0 -24
  102. package/node_modules/define-data-property/.github/FUNDING.yml +0 -12
  103. package/node_modules/define-data-property/.nycrc +0 -13
  104. package/node_modules/define-data-property/CHANGELOG.md +0 -70
  105. package/node_modules/define-data-property/LICENSE +0 -21
  106. package/node_modules/define-data-property/README.md +0 -67
  107. package/node_modules/define-data-property/index.d.ts +0 -12
  108. package/node_modules/define-data-property/index.js +0 -56
  109. package/node_modules/define-data-property/package.json +0 -106
  110. package/node_modules/define-data-property/test/index.js +0 -392
  111. package/node_modules/define-data-property/tsconfig.json +0 -59
  112. package/node_modules/define-properties/.editorconfig +0 -13
  113. package/node_modules/define-properties/.eslintrc +0 -19
  114. package/node_modules/define-properties/.github/FUNDING.yml +0 -12
  115. package/node_modules/define-properties/.nycrc +0 -9
  116. package/node_modules/define-properties/CHANGELOG.md +0 -91
  117. package/node_modules/define-properties/LICENSE +0 -21
  118. package/node_modules/define-properties/README.md +0 -84
  119. package/node_modules/define-properties/index.js +0 -47
  120. package/node_modules/define-properties/package.json +0 -88
  121. package/node_modules/es-define-property/.eslintrc +0 -13
  122. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  123. package/node_modules/es-define-property/.nycrc +0 -9
  124. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  125. package/node_modules/es-define-property/LICENSE +0 -21
  126. package/node_modules/es-define-property/README.md +0 -49
  127. package/node_modules/es-define-property/index.d.ts +0 -3
  128. package/node_modules/es-define-property/index.js +0 -14
  129. package/node_modules/es-define-property/package.json +0 -81
  130. package/node_modules/es-define-property/test/index.js +0 -56
  131. package/node_modules/es-define-property/tsconfig.json +0 -10
  132. package/node_modules/es-errors/.eslintrc +0 -5
  133. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  134. package/node_modules/es-errors/CHANGELOG.md +0 -40
  135. package/node_modules/es-errors/LICENSE +0 -21
  136. package/node_modules/es-errors/README.md +0 -55
  137. package/node_modules/es-errors/eval.d.ts +0 -3
  138. package/node_modules/es-errors/eval.js +0 -4
  139. package/node_modules/es-errors/index.d.ts +0 -3
  140. package/node_modules/es-errors/index.js +0 -4
  141. package/node_modules/es-errors/package.json +0 -80
  142. package/node_modules/es-errors/range.d.ts +0 -3
  143. package/node_modules/es-errors/range.js +0 -4
  144. package/node_modules/es-errors/ref.d.ts +0 -3
  145. package/node_modules/es-errors/ref.js +0 -4
  146. package/node_modules/es-errors/syntax.d.ts +0 -3
  147. package/node_modules/es-errors/syntax.js +0 -4
  148. package/node_modules/es-errors/test/index.js +0 -19
  149. package/node_modules/es-errors/tsconfig.json +0 -49
  150. package/node_modules/es-errors/type.d.ts +0 -3
  151. package/node_modules/es-errors/type.js +0 -4
  152. package/node_modules/es-errors/uri.d.ts +0 -3
  153. package/node_modules/es-errors/uri.js +0 -4
  154. package/node_modules/globalthis/.eslintrc +0 -18
  155. package/node_modules/globalthis/.nycrc +0 -10
  156. package/node_modules/globalthis/CHANGELOG.md +0 -109
  157. package/node_modules/globalthis/LICENSE +0 -21
  158. package/node_modules/globalthis/README.md +0 -70
  159. package/node_modules/globalthis/auto.js +0 -3
  160. package/node_modules/globalthis/implementation.browser.js +0 -11
  161. package/node_modules/globalthis/implementation.js +0 -3
  162. package/node_modules/globalthis/index.js +0 -19
  163. package/node_modules/globalthis/package.json +0 -99
  164. package/node_modules/globalthis/polyfill.js +0 -10
  165. package/node_modules/globalthis/shim.js +0 -29
  166. package/node_modules/globalthis/test/implementation.js +0 -11
  167. package/node_modules/globalthis/test/index.js +0 -11
  168. package/node_modules/globalthis/test/native.js +0 -26
  169. package/node_modules/globalthis/test/shimmed.js +0 -29
  170. package/node_modules/globalthis/test/tests.js +0 -36
  171. package/node_modules/gopd/.eslintrc +0 -16
  172. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  173. package/node_modules/gopd/CHANGELOG.md +0 -45
  174. package/node_modules/gopd/LICENSE +0 -21
  175. package/node_modules/gopd/README.md +0 -40
  176. package/node_modules/gopd/gOPD.d.ts +0 -1
  177. package/node_modules/gopd/gOPD.js +0 -4
  178. package/node_modules/gopd/index.d.ts +0 -5
  179. package/node_modules/gopd/index.js +0 -15
  180. package/node_modules/gopd/package.json +0 -77
  181. package/node_modules/gopd/test/index.js +0 -36
  182. package/node_modules/gopd/tsconfig.json +0 -9
  183. package/node_modules/has-property-descriptors/.eslintrc +0 -13
  184. package/node_modules/has-property-descriptors/.github/FUNDING.yml +0 -12
  185. package/node_modules/has-property-descriptors/.nycrc +0 -9
  186. package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
  187. package/node_modules/has-property-descriptors/LICENSE +0 -21
  188. package/node_modules/has-property-descriptors/README.md +0 -43
  189. package/node_modules/has-property-descriptors/index.js +0 -22
  190. package/node_modules/has-property-descriptors/package.json +0 -77
  191. package/node_modules/has-property-descriptors/test/index.js +0 -57
  192. package/node_modules/is-it-type/License +0 -19
  193. package/node_modules/is-it-type/README.md +0 -102
  194. package/node_modules/is-it-type/changelog.md +0 -239
  195. package/node_modules/is-it-type/dist/cjs/is-it-type.js +0 -173
  196. package/node_modules/is-it-type/dist/cjs/is-it-type.js.map +0 -1
  197. package/node_modules/is-it-type/dist/cjs/is-it-type.min.js +0 -2
  198. package/node_modules/is-it-type/dist/cjs/is-it-type.min.js.map +0 -1
  199. package/node_modules/is-it-type/dist/esm/is-it-type.js +0 -143
  200. package/node_modules/is-it-type/dist/esm/is-it-type.js.map +0 -1
  201. package/node_modules/is-it-type/dist/esm/is-it-type.min.js +0 -2
  202. package/node_modules/is-it-type/dist/esm/is-it-type.min.js.map +0 -1
  203. package/node_modules/is-it-type/dist/esm/package.json +0 -3
  204. package/node_modules/is-it-type/dist/umd/is-it-type.js +0 -450
  205. package/node_modules/is-it-type/dist/umd/is-it-type.js.map +0 -1
  206. package/node_modules/is-it-type/dist/umd/is-it-type.min.js +0 -2
  207. package/node_modules/is-it-type/dist/umd/is-it-type.min.js.map +0 -1
  208. package/node_modules/is-it-type/es/index.js +0 -8
  209. package/node_modules/is-it-type/es/package.json +0 -3
  210. package/node_modules/is-it-type/index.js +0 -10
  211. package/node_modules/is-it-type/package.json +0 -87
  212. package/node_modules/is-it-type/src/index.js +0 -169
  213. package/node_modules/object-keys/.editorconfig +0 -13
  214. package/node_modules/object-keys/.eslintrc +0 -17
  215. package/node_modules/object-keys/.travis.yml +0 -277
  216. package/node_modules/object-keys/CHANGELOG.md +0 -232
  217. package/node_modules/object-keys/LICENSE +0 -21
  218. package/node_modules/object-keys/README.md +0 -76
  219. package/node_modules/object-keys/implementation.js +0 -122
  220. package/node_modules/object-keys/index.js +0 -32
  221. package/node_modules/object-keys/isArguments.js +0 -17
  222. package/node_modules/object-keys/package.json +0 -88
  223. package/node_modules/object-keys/test/index.js +0 -5
  224. package/node_modules/simple-invariant/License +0 -19
  225. package/node_modules/simple-invariant/README.md +0 -64
  226. package/node_modules/simple-invariant/changelog.md +0 -31
  227. package/node_modules/simple-invariant/index.js +0 -19
  228. package/node_modules/simple-invariant/package.json +0 -50
  229. package/node_modules/yauzl-promise/License +0 -19
  230. package/node_modules/yauzl-promise/README.md +0 -440
  231. package/node_modules/yauzl-promise/index.js +0 -10
  232. package/node_modules/yauzl-promise/lib/entry.js +0 -312
  233. package/node_modules/yauzl-promise/lib/index.js +0 -160
  234. package/node_modules/yauzl-promise/lib/reader.js +0 -289
  235. package/node_modules/yauzl-promise/lib/shared.js +0 -20
  236. package/node_modules/yauzl-promise/lib/utils.js +0 -105
  237. package/node_modules/yauzl-promise/lib/zip.js +0 -1224
  238. package/node_modules/yauzl-promise/package.json +0 -56
@@ -0,0 +1,92 @@
1
+ import chalk, { chalkStderr } from 'chalk'
2
+ import logSymbols from 'log-symbols'
3
+ import ora from 'ora'
4
+ import prettyBytes from 'pretty-bytes'
5
+ import prettyMilliseconds from 'pretty-ms'
6
+ import { Writable } from 'readable-stream'
7
+
8
+ chalk.level = chalkStderr.level
9
+
10
+ const TASKS = /** @type {const} */ ([
11
+ 'style',
12
+ 'sprites',
13
+ 'tiles',
14
+ 'glyphs',
15
+ 'output',
16
+ ])
17
+
18
+ const TASK_LABEL = /** @type {const} */ ({
19
+ style: 'Downloading Map Style',
20
+ sprites: 'Downloading Sprites',
21
+ tiles: 'Downloading Tiles',
22
+ glyphs: 'Downloading Glyphs',
23
+ output: 'Writing Styled Map Package',
24
+ })
25
+
26
+ const TASK_SUFFIX =
27
+ /** @type {{ [K in (typeof TASKS)[number]]: (progress: import('styled-map-package-api/download').DownloadProgress[K]) => string }} */ ({
28
+ style: () => '',
29
+ sprites: ({ downloaded }) => `${downloaded}`,
30
+ tiles: ({ total, skipped, totalBytes, downloaded }) => {
31
+ const formattedTotal = total.toLocaleString()
32
+ const formattedCompleted = (downloaded + skipped)
33
+ .toLocaleString()
34
+ .padStart(formattedTotal.length)
35
+ return `${formattedCompleted}/${formattedTotal} (${prettyBytes(totalBytes)})`
36
+ },
37
+ glyphs: ({ total, downloaded, totalBytes }) =>
38
+ `${downloaded}/${total} (${prettyBytes(totalBytes)})`,
39
+ output: ({ totalBytes }) => `${prettyBytes(totalBytes)}`,
40
+ })
41
+
42
+ /**
43
+ * A writable stream to reporting download progress to a TTY terminal. Write
44
+ * progress messages to this stream for a pretty-printed progress task-list in
45
+ * the terminal.
46
+ */
47
+ export function ttyReporter() {
48
+ /** @type {import('styled-map-package-api/download').DownloadProgress | undefined} */
49
+ let stats
50
+ let current = 0
51
+ /** @type {import('ora').Ora} */
52
+ let spinner
53
+ return new Writable({
54
+ objectMode: true,
55
+ // @ts-ignore - missing type def
56
+ construct(cb) {
57
+ process.stderr.write('\n')
58
+ spinner = ora(TASK_LABEL[TASKS[current]]).start()
59
+ cb()
60
+ },
61
+ /** @param {ArrayLike<{ chunk: import('styled-map-package-api/download').DownloadProgress, encoding: string }>} chunks */
62
+ writev(chunks, cb) {
63
+ stats = chunks[chunks.length - 1].chunk
64
+ while (current < TASKS.length && stats[TASKS[current]].done) {
65
+ spinner.suffixText = chalk.dim(
66
+ TASK_SUFFIX[TASKS[current]](
67
+ // @ts-ignore - too complicated for TS
68
+ stats[TASKS[current]],
69
+ ),
70
+ )
71
+ spinner.succeed()
72
+ if (++current < TASKS.length) {
73
+ spinner = ora(TASK_LABEL[TASKS[current]]).start()
74
+ }
75
+ }
76
+ if (current < TASKS.length) {
77
+ spinner.suffixText = chalk.dim(
78
+ TASK_SUFFIX[TASKS[current]](
79
+ // @ts-ignore - too complicated for TS
80
+ stats[TASKS[current]],
81
+ ),
82
+ )
83
+ } else {
84
+ process.stderr.write(
85
+ `${chalk.green(logSymbols.success)} Completed in ${prettyMilliseconds(stats.elapsedMs)}\n`,
86
+ )
87
+ }
88
+
89
+ cb()
90
+ },
91
+ })
92
+ }
package/package.json CHANGED
@@ -1,216 +1,44 @@
1
1
  {
2
2
  "name": "styled-map-package",
3
- "version": "4.1.0",
4
- "description": "A Styled Map Package (`.smp`) file is a Zip archive containing all the resources needed to serve a Maplibre vector styled map offline. This includes the style JSON, vector and raster tiles, glyphs (fonts), the sprite image, and the sprite metadata.",
3
+ "version": "5.0.0-pre.1",
4
+ "description": "CLI for creating, viewing, and converting Styled Map Package (.smp) files",
5
5
  "type": "module",
6
- "main": "./dist/index.cjs",
7
- "module": "./dist/index.js",
8
- "types": "./dist/index.d.ts",
9
- "exports": {
10
- ".": {
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
- }
19
- },
20
- "./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
- }
29
- },
30
- "./reader-watch": {
31
- "import": {
32
- "types": "./dist/reader-watch.d.ts",
33
- "default": "./dist/reader-watch.js"
34
- },
35
- "require": {
36
- "types": "./dist/reader-watch.d.cts",
37
- "default": "./dist/reader-watch.cjs"
38
- }
39
- },
40
- "./writer": {
41
- "import": {
42
- "types": "./dist/writer.d.ts",
43
- "default": "./dist/writer.js"
44
- },
45
- "require": {
46
- "types": "./dist/writer.d.cts",
47
- "default": "./dist/writer.cjs"
48
- }
49
- },
50
- "./server": {
51
- "import": {
52
- "types": "./dist/server.d.ts",
53
- "default": "./dist/server.js"
54
- },
55
- "require": {
56
- "types": "./dist/server.d.cts",
57
- "default": "./dist/server.cjs"
58
- }
59
- },
60
- "./style-downloader": {
61
- "import": {
62
- "types": "./dist/style-downloader.d.ts",
63
- "default": "./dist/style-downloader.js"
64
- },
65
- "require": {
66
- "types": "./dist/style-downloader.d.cts",
67
- "default": "./dist/style-downloader.cjs"
68
- }
69
- },
70
- "./tile-downloader": {
71
- "import": {
72
- "types": "./dist/tile-downloader.d.ts",
73
- "default": "./dist/tile-downloader.js"
74
- },
75
- "require": {
76
- "types": "./dist/tile-downloader.d.cts",
77
- "default": "./dist/tile-downloader.cjs"
78
- }
79
- },
80
- "./download": {
81
- "import": {
82
- "types": "./dist/download.d.ts",
83
- "default": "./dist/download.js"
84
- },
85
- "require": {
86
- "types": "./dist/download.d.cts",
87
- "default": "./dist/download.cjs"
88
- }
89
- },
90
- "./from-mbtiles": {
91
- "import": {
92
- "types": "./dist/from-mbtiles.d.ts",
93
- "default": "./dist/from-mbtiles.js"
94
- },
95
- "require": {
96
- "types": "./dist/from-mbtiles.d.cts",
97
- "default": "./dist/from-mbtiles.cjs"
98
- }
99
- },
100
- "./package.json": "./package.json"
101
- },
102
6
  "bin": {
103
7
  "styled-map-package": "bin/smp.js",
104
8
  "smp": "bin/smp.js"
105
9
  },
106
10
  "files": [
107
11
  "bin",
108
- "dist",
12
+ "lib",
109
13
  "map-viewer"
110
14
  ],
111
15
  "scripts": {
112
- "test": "npm run lint && npm run build && npm run types && node --test",
113
- "prepare": "husky && patch-package",
114
- "lint": "eslint .",
115
- "types": "tsc",
116
- "build": "tsup",
117
- "prepack": "npm run build"
16
+ "test": "vitest run"
118
17
  },
119
18
  "keywords": [],
120
- "author": "",
121
19
  "license": "MIT",
122
20
  "dependencies": {
21
+ "styled-map-package-api": "^5.0.0-pre.1",
123
22
  "@inquirer/prompts": "^6.0.1",
124
- "@mapbox/sphericalmercator": "^1.2.0",
125
- "@maplibre/maplibre-gl-style-spec": "^20.3.1",
126
- "@placemarkio/check-geojson": "^0.1.12",
127
- "@turf/bbox": "^7.2.0",
128
- "@turf/helpers": "^7.2.0",
129
23
  "@whatwg-node/server": "^0.10.17",
130
- "ansi-diff": "^1.2.0",
131
- "archiver": "^7.0.1",
132
- "buffer-peek-stream": "^1.1.0",
133
24
  "chalk": "^5.4.1",
134
25
  "commander": "^12.1.0",
135
- "filter-obj": "^6.1.0",
136
- "into-stream": "^8.0.1",
137
- "is-stream": "^4.0.1",
138
26
  "itty-router": "^5.0.22",
139
- "ky": "^1.7.5",
140
27
  "log-symbols": "^7.0.0",
141
- "map-obj": "^5.0.2",
142
- "mbtiles-reader": "^1.0.0",
143
28
  "open": "^10.1.0",
144
29
  "ora": "^8.2.0",
145
- "p-event": "^6.0.1",
146
- "p-limit": "^6.2.0",
147
30
  "pretty-bytes": "^6.1.1",
148
31
  "pretty-ms": "^9.2.0",
149
- "readable-stream": "^4.7.0",
150
- "temp-dir": "^3.0.0",
151
- "yauzl-promise": "^4.0.0",
152
- "yocto-queue": "^1.1.1"
32
+ "readable-stream": "^4.7.0"
153
33
  },
154
34
  "devDependencies": {
155
- "@commander-js/extra-typings": "^12.1.0",
156
- "@eslint/js": "^9.25.1",
157
- "@trivago/prettier-plugin-sort-imports": "^4.3.0",
158
- "@types/archiver": "^6.0.3",
159
- "@types/geojson": "^7946.0.16",
160
- "@types/http-errors": "^2.0.4",
161
- "@types/mapbox__sphericalmercator": "^1.2.3",
162
- "@types/node": "^18.19.130",
163
- "@types/readable-stream": "^4.0.18",
164
- "@types/yauzl-promise": "^4.0.1",
165
- "ava": "^6.2.0",
166
- "esbuild-fix-imports-plugin": "^1.0.20",
167
- "eslint": "^9.25.1",
168
35
  "execa": "^9.4.0",
169
- "fast-png": "^6.3.0",
170
- "globals": "^16.0.0",
171
- "husky": "^9.1.7",
172
- "lint-staged": "^15.4.3",
173
- "patch-package": "^8.0.1",
174
- "pixel-stream": "^1.0.3",
175
- "playwright": "^1.50.1",
176
- "prettier": "^3.5.2",
177
- "random-bytes-readable-stream": "^3.0.0",
178
- "sharp": "^0.33.5",
179
36
  "tempy": "^3.1.0",
180
- "tsup": "^8.4.0",
181
- "type-fest": "^4.35.0",
182
- "typescript": "^5.9.3"
183
- },
184
- "bundleDependencies": [
185
- "yauzl-promise"
186
- ],
187
- "prettier": {
188
- "semi": false,
189
- "singleQuote": true,
190
- "importOrder": [
191
- "^node:",
192
- "^[./]"
193
- ],
194
- "importOrderSeparation": true,
195
- "plugins": [
196
- "@trivago/prettier-plugin-sort-imports"
197
- ]
198
- },
199
- "lint-staged": {
200
- "*.js": [
201
- "eslint --cache --fix"
202
- ],
203
- "*.{js,css,md}": "prettier --write"
204
- },
205
- "directories": {
206
- "lib": "lib",
207
- "test": "test"
37
+ "vitest": "^3.2.4"
208
38
  },
209
39
  "repository": {
210
40
  "type": "git",
211
- "url": "git+https://github.com/digidem/styled-map-package.git"
212
- },
213
- "bugs": {
214
- "url": "https://github.com/digidem/styled-map-package/issues"
41
+ "url": "git+https://github.com/digidem/styled-map-package.git",
42
+ "directory": "packages/cli"
215
43
  }
216
44
  }
package/LICENSE.md DELETED
@@ -1,7 +0,0 @@
1
- Copyright (c) 2024 Awana Digital
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
-
5
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/dist/download.cjs DELETED
@@ -1,101 +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_readable_stream = require("readable-stream");
25
- var import_promises = require("stream/promises");
26
- var import_style_downloader = require('./style-downloader.cjs');
27
- var import_writer = require('./writer.cjs');
28
- function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }) {
29
- const downloader = new import_style_downloader.StyleDownloader(styleUrl, {
30
- concurrency: 24,
31
- mapboxAccessToken: accessToken
32
- });
33
- let start = Date.now();
34
- let progress = {
35
- tiles: { downloaded: 0, totalBytes: 0, total: 0, skipped: 0, done: false },
36
- style: { done: false },
37
- sprites: { downloaded: 0, done: false },
38
- glyphs: { downloaded: 0, total: 0, totalBytes: 0, done: false },
39
- output: { totalBytes: 0, done: false },
40
- elapsedMs: 0
41
- };
42
- const sizeCounter = new import_readable_stream.Transform({
43
- transform(chunk, encoding, cb) {
44
- handleProgress({
45
- output: {
46
- totalBytes: progress.output.totalBytes + chunk.length,
47
- done: false
48
- }
49
- });
50
- cb(null, chunk);
51
- },
52
- final(cb) {
53
- handleProgress({ output: { ...progress.output, done: true } });
54
- cb();
55
- }
56
- });
57
- function handleProgress(update) {
58
- progress = { ...progress, ...update, elapsedMs: Date.now() - start };
59
- onprogress?.(progress);
60
- }
61
- ;
62
- (async () => {
63
- const style = await downloader.getStyle();
64
- const writer = new import_writer.Writer(style);
65
- handleProgress({ style: { done: true } });
66
- writer.outputStream.pipe(sizeCounter);
67
- writer.on("error", (err) => sizeCounter.destroy(err));
68
- try {
69
- for await (const spriteInfo of downloader.getSprites()) {
70
- await writer.addSprite(spriteInfo);
71
- handleProgress({
72
- sprites: { downloaded: progress.sprites.downloaded + 1, done: false }
73
- });
74
- }
75
- handleProgress({ sprites: { ...progress.sprites, done: true } });
76
- const tiles = downloader.getTiles({
77
- bounds: bbox,
78
- maxzoom,
79
- onprogress: (tileStats) => handleProgress({ tiles: { ...tileStats, done: false } })
80
- });
81
- await (0, import_promises.pipeline)(tiles, writer.createTileWriteStream({ concurrency: 24 }));
82
- handleProgress({ tiles: { ...progress.tiles, done: true } });
83
- const glyphs = downloader.getGlyphs({
84
- onprogress: (glyphStats) => handleProgress({ glyphs: { ...glyphStats, done: false } })
85
- });
86
- await (0, import_promises.pipeline)(glyphs, writer.createGlyphWriteStream());
87
- handleProgress({ glyphs: { ...progress.glyphs, done: true } });
88
- writer.finish();
89
- } catch (err) {
90
- writer.outputStream.destroy(
91
- /** @type {Error} */
92
- err
93
- );
94
- }
95
- })();
96
- return sizeCounter;
97
- }
98
- // Annotate the CommonJS export names for ESM import in node:
99
- 0 && (module.exports = {
100
- download
101
- });
@@ -1,65 +0,0 @@
1
- import { GlyphDownloadStats } from './style-downloader.cjs';
2
- import { TileDownloadStats } from './tile-downloader.cjs';
3
- import { D as DownloadStream } from './types-yLQy3AKR.cjs';
4
- import { BBox } from './utils/geo.cjs';
5
- import 'ky';
6
- import 'stream';
7
- import '@maplibre/maplibre-gl-style-spec';
8
- import './utils/fetch.cjs';
9
- import './utils/streams.cjs';
10
- import 'readable-stream';
11
- import 'geojson';
12
- import 'type-fest';
13
- import 'events';
14
-
15
- /**
16
- * @typedef {object} DownloadProgress
17
- * @property {import('./tile-downloader.js').TileDownloadStats & { done: boolean }} tiles
18
- * @property {{ done: boolean }} style
19
- * @property {{ downloaded: number, done: boolean }} sprites
20
- * @property {import('./style-downloader.js').GlyphDownloadStats & { done: boolean }} glyphs
21
- * @property {{ totalBytes: number, done: boolean }} output
22
- * @property {number} elapsedMs
23
- */
24
- /**
25
- * Download a map style and its resources for a given bounding box and max zoom
26
- * level. Returns a readable stream of a "styled map package", a zip file
27
- * containing all the resources needed to serve the style offline.
28
- *
29
- * @param {object} opts
30
- * @param {import("./utils/geo.js").BBox} opts.bbox Bounding box to download tiles for
31
- * @param {number} opts.maxzoom Max zoom level to download tiles for
32
- * @param {string} opts.styleUrl URL of the style to download
33
- * @param { (progress: DownloadProgress) => void } [opts.onprogress] Optional callback for reporting progress
34
- * @param {string} [opts.accessToken]
35
- * @returns {import('./types.js').DownloadStream} Readable stream of the output styled map file
36
- */
37
- declare function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }: {
38
- bbox: BBox;
39
- maxzoom: number;
40
- styleUrl: string;
41
- onprogress?: ((progress: DownloadProgress) => void) | undefined;
42
- accessToken?: string | undefined;
43
- }): DownloadStream;
44
- type DownloadProgress = {
45
- tiles: TileDownloadStats & {
46
- done: boolean;
47
- };
48
- style: {
49
- done: boolean;
50
- };
51
- sprites: {
52
- downloaded: number;
53
- done: boolean;
54
- };
55
- glyphs: GlyphDownloadStats & {
56
- done: boolean;
57
- };
58
- output: {
59
- totalBytes: number;
60
- done: boolean;
61
- };
62
- elapsedMs: number;
63
- };
64
-
65
- export { type DownloadProgress, download };
@@ -1,65 +0,0 @@
1
- import { GlyphDownloadStats } from './style-downloader.js';
2
- import { TileDownloadStats } from './tile-downloader.js';
3
- import { D as DownloadStream } from './types-yLQy3AKR.js';
4
- import { BBox } from './utils/geo.js';
5
- import 'ky';
6
- import 'stream';
7
- import '@maplibre/maplibre-gl-style-spec';
8
- import './utils/fetch.js';
9
- import './utils/streams.js';
10
- import 'readable-stream';
11
- import 'geojson';
12
- import 'type-fest';
13
- import 'events';
14
-
15
- /**
16
- * @typedef {object} DownloadProgress
17
- * @property {import('./tile-downloader.js').TileDownloadStats & { done: boolean }} tiles
18
- * @property {{ done: boolean }} style
19
- * @property {{ downloaded: number, done: boolean }} sprites
20
- * @property {import('./style-downloader.js').GlyphDownloadStats & { done: boolean }} glyphs
21
- * @property {{ totalBytes: number, done: boolean }} output
22
- * @property {number} elapsedMs
23
- */
24
- /**
25
- * Download a map style and its resources for a given bounding box and max zoom
26
- * level. Returns a readable stream of a "styled map package", a zip file
27
- * containing all the resources needed to serve the style offline.
28
- *
29
- * @param {object} opts
30
- * @param {import("./utils/geo.js").BBox} opts.bbox Bounding box to download tiles for
31
- * @param {number} opts.maxzoom Max zoom level to download tiles for
32
- * @param {string} opts.styleUrl URL of the style to download
33
- * @param { (progress: DownloadProgress) => void } [opts.onprogress] Optional callback for reporting progress
34
- * @param {string} [opts.accessToken]
35
- * @returns {import('./types.js').DownloadStream} Readable stream of the output styled map file
36
- */
37
- declare function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }: {
38
- bbox: BBox;
39
- maxzoom: number;
40
- styleUrl: string;
41
- onprogress?: ((progress: DownloadProgress) => void) | undefined;
42
- accessToken?: string | undefined;
43
- }): DownloadStream;
44
- type DownloadProgress = {
45
- tiles: TileDownloadStats & {
46
- done: boolean;
47
- };
48
- style: {
49
- done: boolean;
50
- };
51
- sprites: {
52
- downloaded: number;
53
- done: boolean;
54
- };
55
- glyphs: GlyphDownloadStats & {
56
- done: boolean;
57
- };
58
- output: {
59
- totalBytes: number;
60
- done: boolean;
61
- };
62
- elapsedMs: number;
63
- };
64
-
65
- export { type DownloadProgress, download };
package/dist/download.js DELETED
@@ -1,77 +0,0 @@
1
- import { Transform } from "readable-stream";
2
- import { pipeline } from "stream/promises";
3
- import { StyleDownloader } from "./style-downloader.js";
4
- import { Writer } from "./writer.js";
5
- function download({ bbox, maxzoom, styleUrl, onprogress, accessToken }) {
6
- const downloader = new StyleDownloader(styleUrl, {
7
- concurrency: 24,
8
- mapboxAccessToken: accessToken
9
- });
10
- let start = Date.now();
11
- let progress = {
12
- tiles: { downloaded: 0, totalBytes: 0, total: 0, skipped: 0, done: false },
13
- style: { done: false },
14
- sprites: { downloaded: 0, done: false },
15
- glyphs: { downloaded: 0, total: 0, totalBytes: 0, done: false },
16
- output: { totalBytes: 0, done: false },
17
- elapsedMs: 0
18
- };
19
- const sizeCounter = new Transform({
20
- transform(chunk, encoding, cb) {
21
- handleProgress({
22
- output: {
23
- totalBytes: progress.output.totalBytes + chunk.length,
24
- done: false
25
- }
26
- });
27
- cb(null, chunk);
28
- },
29
- final(cb) {
30
- handleProgress({ output: { ...progress.output, done: true } });
31
- cb();
32
- }
33
- });
34
- function handleProgress(update) {
35
- progress = { ...progress, ...update, elapsedMs: Date.now() - start };
36
- onprogress?.(progress);
37
- }
38
- ;
39
- (async () => {
40
- const style = await downloader.getStyle();
41
- const writer = new Writer(style);
42
- handleProgress({ style: { done: true } });
43
- writer.outputStream.pipe(sizeCounter);
44
- writer.on("error", (err) => sizeCounter.destroy(err));
45
- try {
46
- for await (const spriteInfo of downloader.getSprites()) {
47
- await writer.addSprite(spriteInfo);
48
- handleProgress({
49
- sprites: { downloaded: progress.sprites.downloaded + 1, done: false }
50
- });
51
- }
52
- handleProgress({ sprites: { ...progress.sprites, done: true } });
53
- const tiles = downloader.getTiles({
54
- bounds: bbox,
55
- maxzoom,
56
- onprogress: (tileStats) => handleProgress({ tiles: { ...tileStats, done: false } })
57
- });
58
- await pipeline(tiles, writer.createTileWriteStream({ concurrency: 24 }));
59
- handleProgress({ tiles: { ...progress.tiles, done: true } });
60
- const glyphs = downloader.getGlyphs({
61
- onprogress: (glyphStats) => handleProgress({ glyphs: { ...glyphStats, done: false } })
62
- });
63
- await pipeline(glyphs, writer.createGlyphWriteStream());
64
- handleProgress({ glyphs: { ...progress.glyphs, done: true } });
65
- writer.finish();
66
- } catch (err) {
67
- writer.outputStream.destroy(
68
- /** @type {Error} */
69
- err
70
- );
71
- }
72
- })();
73
- return sizeCounter;
74
- }
75
- export {
76
- download
77
- };