@fxi/zartigl 0.1.4 → 0.2.13

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/package.json CHANGED
@@ -1,15 +1,19 @@
1
1
  {
2
2
  "name": "@fxi/zartigl",
3
- "version": "0.1.4",
3
+ "version": "0.2.13",
4
4
  "description": "MapLibre GL JS plugin for animated particle flow from Zarr ocean current data",
5
5
  "type": "module",
6
6
  "main": "./dist/zartigl.js",
7
7
  "module": "./dist/zartigl.js",
8
- "types": "./dist/index.d.ts",
8
+ "types": "./dist/zartigl.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
11
  "import": "./dist/zartigl.js",
12
- "types": "./dist/index.d.ts"
12
+ "types": "./dist/zartigl.d.ts"
13
+ },
14
+ "./catalog": {
15
+ "import": "./dist/catalog.js",
16
+ "types": "./dist/catalog.d.ts"
13
17
  }
14
18
  },
15
19
  "files": [
@@ -17,12 +21,22 @@
17
21
  ],
18
22
  "scripts": {
19
23
  "dev": "vite",
20
- "dev:mapbox": "vite --config vite.config.demo-mapbox.ts",
24
+ "dev:minimal": "vite --config vite.config.minimal.ts",
25
+ "dev:prod": "npm run dev",
26
+ "test": "vitest run",
27
+ "test:unit": "vitest run",
21
28
  "build": "vite build",
22
- "build:mapbox": "vite build --config vite.config.demo-mapbox.ts",
29
+ "build:minimal": "vite build --config vite.config.minimal.ts",
30
+ "build:prod": "npm run build",
23
31
  "build:lib": "vite build --config vite.config.lib.ts",
24
32
  "preview": "vite preview",
25
- "catalog": "cd scripts && uv run build_catalog.py",
33
+ "catalog": "npm run catalog:validate",
34
+ "catalog:validate": "uv run scripts/catalog_builder/skills/validate_catalog.py",
35
+ "geovideo:dry-run": "uv run scripts/geovideo/render.py scripts/geovideo/examples/sst-anomaly.json --dry-run",
36
+ "geovideo:calibrate": "uv run scripts/geovideo/calibrate.py",
37
+ "geovideo:calibrate:browser": "uv run scripts/geovideo/browser_calibrate.py",
38
+ "smoke:sample": "npm run build:lib && node scripts/smoke-sample-point.mjs",
39
+ "release:check": "npm run test && npm run catalog:validate && npm run build && npm run build:lib && npm run smoke:sample",
26
40
  "prepublishOnly": "npm run build:lib"
27
41
  },
28
42
  "publishConfig": {
@@ -41,17 +55,21 @@
41
55
  "peerDependencies": {
42
56
  "maplibre-gl": ">=4.0.0"
43
57
  },
58
+ "dependencies": {
59
+ "numcodecs": "^0.3.2",
60
+ "pako": "^2.1.0"
61
+ },
44
62
  "devDependencies": {
45
63
  "@tweakpane/core": "^2.0.5",
64
+ "@types/d3": "^7.4.3",
46
65
  "@types/pako": "^2.0.4",
47
- "mapbox-gl": "^2.15.0",
66
+ "d3": "^7.9.0",
48
67
  "maplibre-gl": "^5.17.0",
49
- "numcodecs": "^0.3.2",
50
- "pako": "^2.1.0",
51
68
  "tweakpane": "^4.0.5",
52
69
  "typescript": "^5.9.3",
53
70
  "vite": "^7.3.1",
54
71
  "vite-plugin-dts": "^4.5.4",
55
- "vite-plugin-glsl": "^1.5.5"
72
+ "vite-plugin-glsl": "^1.5.5",
73
+ "vitest": "^4.1.7"
56
74
  }
57
75
  }
@@ -1,351 +0,0 @@
1
- {
2
- "generated": "2026-03-18T12:00:00.000000+00:00",
3
- "views": [
4
- {
5
- "id": "ocean-current-velocity",
6
- "label": "Ocean Current Velocity",
7
- "description": "Surface ocean currents — global analysis/forecast, 6-hourly",
8
- "category": "Ocean",
9
- "type": "vector",
10
- "source_dataset": "cmems_mod_glo_phy-cur_anfc_0.083deg_PT6H-i",
11
- "zarr_url_geo": "https://s3.waw3-1.cloudferro.com/mdl-arco-time-009/arco/GLOBAL_ANALYSISFORECAST_PHY_001_024/cmems_mod_glo_phy-cur_anfc_0.083deg_PT6H-i_202406/timeChunked.zarr",
12
- "zarr_url_time": "https://s3.waw3-1.cloudferro.com/mdl-arco-geo-009/arco/GLOBAL_ANALYSISFORECAST_PHY_001_024/cmems_mod_glo_phy-cur_anfc_0.083deg_PT6H-i_202406/geoChunked.zarr",
13
- "variable_u": "uo",
14
- "variable_v": "vo",
15
- "variable_meta": {
16
- "standard_name": "sea_water_velocity",
17
- "units": "m s-1"
18
- },
19
- "dimensions": {
20
- "depth": {
21
- "axis": "z",
22
- "values": [
23
- 5727.9169921875,
24
- 5274.7841796875,
25
- 4833.291015625,
26
- 4405.22412109375,
27
- 3992.48388671875,
28
- 3597.031982421875,
29
- 3220.820068359375,
30
- 2865.702880859375,
31
- 2533.3359375,
32
- 2225.077880859375,
33
- 1941.8929443359375,
34
- 1684.2840576171875,
35
- 1452.2509765625,
36
- 1245.291015625,
37
- 1062.43994140625,
38
- 902.3392944335938,
39
- 763.3331298828125,
40
- 643.5667724609375,
41
- 541.0889282226562,
42
- 453.9377136230469,
43
- 380.2130126953125,
44
- 318.1274108886719,
45
- 266.0403137207031,
46
- 222.47520446777344,
47
- 186.12559509277344,
48
- 155.85069274902344,
49
- 130.66600036621094,
50
- 109.72930145263672,
51
- 92.3260726928711,
52
- 77.85385131835938,
53
- 65.80726623535156,
54
- 55.76428985595703,
55
- 47.37369155883789,
56
- 40.344051361083984,
57
- 34.43415069580078,
58
- 29.444730758666992,
59
- 25.211410522460938,
60
- 21.598819732666016,
61
- 18.495559692382812,
62
- 15.810070037841797,
63
- 13.467140197753906,
64
- 11.404999732971191,
65
- 9.572997093200684,
66
- 7.92956018447876,
67
- 6.440614223480225,
68
- 5.078224182128906,
69
- 3.8194949626922607,
70
- 2.6456689834594727,
71
- 1.5413750410079956,
72
- 0.49402499198913574
73
- ],
74
- "size": 50,
75
- "chunk_size": 1,
76
- "units": "m"
77
- },
78
- "latitude": {
79
- "axis": "y",
80
- "size": 2041,
81
- "min": -80.0,
82
- "max": 90.0,
83
- "step": 0.08333333333333333,
84
- "chunk_size": 512,
85
- "units": "degrees_north"
86
- },
87
- "longitude": {
88
- "axis": "x",
89
- "size": 4320,
90
- "min": -180.0,
91
- "max": 179.91668701171875,
92
- "step": 0.08333333804392655,
93
- "chunk_size": 2048,
94
- "units": "degrees_east"
95
- },
96
- "time": {
97
- "axis": "t",
98
- "size": 5585,
99
- "min": 1654041600000.0,
100
- "max": 1774656000000.0,
101
- "step": 21600000.0,
102
- "chunk_size": 1,
103
- "units": "milliseconds since 1970-01-01 00:00:00Z (no leap seconds)"
104
- }
105
- },
106
- "vertical_label": "depth",
107
- "defaults": {
108
- "palette": "rdylbu",
109
- "renderMode": "particles",
110
- "particleDensity": 0.033,
111
- "speedMin": 0.14,
112
- "speedMax": 1.11,
113
- "fadeMin": 0.9,
114
- "fadeMax": 0.9913000000000001,
115
- "dropRate": 0.003,
116
- "dropRateBump": 0,
117
- "opacity": 1,
118
- "logScale": true,
119
- "vibrance": 0.39
120
- }
121
- },
122
- {
123
- "id": "surface-wind",
124
- "label": "Surface Wind",
125
- "description": "Global hourly sea surface wind from scatterometer and model",
126
- "category": "Atmosphere",
127
- "type": "vector",
128
- "source_dataset": "cmems_obs-wind_glo_phy_nrt_l4_0.125deg_PT1H",
129
- "zarr_url_geo": "https://s3.waw3-1.cloudferro.com/mdl-arco-time-050/arco/WIND_GLO_PHY_L4_NRT_012_004/cmems_obs-wind_glo_phy_nrt_l4_0.125deg_PT1H_202207/timeChunked.zarr",
130
- "zarr_url_time": "https://s3.waw3-1.cloudferro.com/mdl-arco-geo-050/arco/WIND_GLO_PHY_L4_NRT_012_004/cmems_obs-wind_glo_phy_nrt_l4_0.125deg_PT1H_202207/geoChunked.zarr",
131
- "variable_u": "eastward_wind",
132
- "variable_v": "northward_wind",
133
- "variable_meta": {
134
- "standard_name": "wind_velocity",
135
- "units": "m s-1"
136
- },
137
- "dimensions": {
138
- "time": {
139
- "axis": "t",
140
- "size": 20352,
141
- "min": 1700438400000.0,
142
- "max": 1773702000000.0,
143
- "step": 3600000.0,
144
- "chunk_size": 1,
145
- "units": "milliseconds since 1970-01-01 00:00:00Z (no leap seconds)"
146
- },
147
- "latitude": {
148
- "axis": "y",
149
- "size": 1440,
150
- "min": -89.9375,
151
- "max": 89.9375,
152
- "step": 0.125,
153
- "chunk_size": 512,
154
- "units": "degrees_north"
155
- },
156
- "longitude": {
157
- "axis": "x",
158
- "size": 2880,
159
- "min": -179.9375,
160
- "max": 179.9375,
161
- "step": 0.125,
162
- "chunk_size": 1024,
163
- "units": "degrees_east"
164
- }
165
- },
166
- "defaults": {
167
- "palette": "rdylbu",
168
- "renderMode": "particles",
169
- "particleDensity": 0.004000000000000002,
170
- "speedMin": 0.010000000000000005,
171
- "speedMax": 0.07000000000000002,
172
- "fadeMin": 0.9174,
173
- "fadeMax": 0.9793000000000001,
174
- "dropRate": 0.005,
175
- "dropRateBump": 0,
176
- "opacity": 0.9,
177
- "logScale": true,
178
- "vibrance": 1
179
- }
180
- },
181
- {
182
- "id": "phytoplankton-chlorophyll",
183
- "label": "Phytoplankton (Chlorophyll-a)",
184
- "description": "Daily surface chlorophyll-a concentration",
185
- "category": "Biology",
186
- "type": "scalar",
187
- "source_dataset": "cmems_mod_glo_bgc-pft_anfc_0.25deg_P1D-m",
188
- "zarr_url_geo": "https://s3.waw3-1.cloudferro.com/mdl-arco-time-006/arco/GLOBAL_ANALYSISFORECAST_BGC_001_028/cmems_mod_glo_bgc-pft_anfc_0.25deg_P1D-m_202311/timeChunked.zarr",
189
- "zarr_url_time": "https://s3.waw3-1.cloudferro.com/mdl-arco-geo-006/arco/GLOBAL_ANALYSISFORECAST_BGC_001_028/cmems_mod_glo_bgc-pft_anfc_0.25deg_P1D-m_202311/geoChunked.zarr",
190
- "variable": "chl",
191
- "variable_meta": {
192
- "standard_name": "mass_concentration_of_chlorophyll_a_in_sea_water",
193
- "units": "mg m-3"
194
- },
195
- "dimensions": {
196
- "time": {
197
- "axis": "t",
198
- "size": 1608,
199
- "min": 1635724800000.0,
200
- "max": 1774569600000.0,
201
- "step": 86400000.0,
202
- "chunk_size": 1,
203
- "units": "milliseconds since 1970-01-01 00:00:00Z (no leap seconds)"
204
- },
205
- "depth": {
206
- "axis": "z",
207
- "values": [
208
- 5727.91650390625,
209
- 5274.7841796875,
210
- 4833.29052734375,
211
- 4405.22412109375,
212
- 3992.48388671875,
213
- 3597.031982421875,
214
- 3220.8203125,
215
- 2865.70263671875,
216
- 2533.336181640625,
217
- 2225.077880859375,
218
- 1941.8934326171875,
219
- 1684.284423828125,
220
- 1452.2509765625,
221
- 1245.2911376953125,
222
- 1062.439697265625,
223
- 902.3392944335938,
224
- 763.3330688476562,
225
- 643.5668334960938,
226
- 541.0889282226562,
227
- 453.937744140625,
228
- 380.2130126953125,
229
- 318.12744140625,
230
- 266.0402526855469,
231
- 222.4751739501953,
232
- 186.1255645751953,
233
- 155.85072326660156,
234
- 130.66598510742188,
235
- 109.72927856445312,
236
- 92.3260726928711,
237
- 77.85385131835938,
238
- 65.8072738647461,
239
- 55.76428985595703,
240
- 47.373687744140625,
241
- 40.344051361083984,
242
- 34.43415451049805,
243
- 29.44472885131836,
244
- 25.211408615112305,
245
- 21.59881591796875,
246
- 18.495559692382812,
247
- 15.810072898864746,
248
- 13.467138290405273,
249
- 11.40500259399414,
250
- 9.572997093200684,
251
- 7.92956018447876,
252
- 6.440614223480225,
253
- 5.078223705291748,
254
- 3.8194947242736816,
255
- 2.6456685066223145,
256
- 1.5413753986358643,
257
- 0.4940253794193268
258
- ],
259
- "size": 50,
260
- "chunk_size": 1,
261
- "units": "m"
262
- },
263
- "latitude": {
264
- "axis": "y",
265
- "size": 681,
266
- "min": -80.0,
267
- "max": 90.0,
268
- "step": 0.25,
269
- "chunk_size": 681,
270
- "units": "degrees_north"
271
- },
272
- "longitude": {
273
- "axis": "x",
274
- "size": 1440,
275
- "min": -180.0,
276
- "max": 179.75,
277
- "step": 0.25,
278
- "chunk_size": 1440,
279
- "units": "degrees_east"
280
- }
281
- },
282
- "vertical_label": "depth",
283
- "defaults": {
284
- "palette": "matter",
285
- "renderMode": "raster",
286
- "opacity": 0.9,
287
- "logScale": true,
288
- "vibrance": 0.2
289
- }
290
- }
291
- ,{
292
- "id": "wave-stokes-drift",
293
- "label": "Wave Stokes Drift",
294
- "description": "Net horizontal wave-driven transport (Stokes drift) from global 3-hourly wave analysis — visualises wave energy propagation direction.",
295
- "category": "Ocean",
296
- "type": "vector",
297
- "source_dataset": "cmems_mod_glo_wav_anfc_0.083deg_PT3H-i",
298
- "zarr_url_geo": "https://s3.waw3-1.cloudferro.com/mdl-arco-time-015/arco/GLOBAL_ANALYSISFORECAST_WAV_001_027/cmems_mod_glo_wav_anfc_0.083deg_PT3H-i_202411/timeChunked.zarr",
299
- "zarr_url_time": "https://s3.waw3-1.cloudferro.com/mdl-arco-geo-015/arco/GLOBAL_ANALYSISFORECAST_WAV_001_027/cmems_mod_glo_wav_anfc_0.083deg_PT3H-i_202411/geoChunked.zarr",
300
- "variable_u": "VSDX",
301
- "variable_v": "VSDY",
302
- "variable_meta": {
303
- "standard_name": "sea_surface_wave_stokes_drift_velocity",
304
- "units": "m s-1"
305
- },
306
- "dimensions": {
307
- "time": {
308
- "axis": "t",
309
- "size": 9944,
310
- "min": 1667271600000,
311
- "max": 1774656000000,
312
- "step": 10800000,
313
- "chunk_size": 1,
314
- "units": "milliseconds since 1970-01-01 00:00:00Z (no leap seconds)"
315
- },
316
- "latitude": {
317
- "axis": "y",
318
- "size": 2041,
319
- "min": -80.0,
320
- "max": 90.0,
321
- "step": 0.08333333333333333,
322
- "chunk_size": 512,
323
- "units": "degrees_north"
324
- },
325
- "longitude": {
326
- "axis": "x",
327
- "size": 4320,
328
- "min": -180.0,
329
- "max": 179.91666666666663,
330
- "step": 0.08333333333333333,
331
- "chunk_size": 2048,
332
- "units": "degrees_east"
333
- }
334
- },
335
- "defaults": {
336
- "palette": "rdylbu",
337
- "renderMode": "particles",
338
- "particleDensity": 0.024,
339
- "speedMin": 0.010000000000000005,
340
- "speedMax": 1.59,
341
- "fadeMin": 0.975,
342
- "fadeMax": 0.9935,
343
- "dropRate": 0.003,
344
- "dropRateBump": 0,
345
- "opacity": 1,
346
- "logScale": true,
347
- "vibrance": 1
348
- }
349
- }
350
- ]
351
- }