@earthyscience/netcdf4-wasm 0.1.3 → 0.2.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/CONTRIBUTING.md CHANGED
@@ -50,6 +50,12 @@ To start developing `netcdf4-wasm`:
50
50
  npm test
51
51
  ```
52
52
 
53
+ and to build and synchronize with the **demo** do
54
+
55
+ ```bash
56
+ npm run build-and-sync
57
+ ```
58
+
53
59
  ### Project Structure
54
60
 
55
61
  Understanding the project structure will help you navigate the codebase:
@@ -119,6 +125,9 @@ npm install
119
125
  # Build the entire project (WASM + TypeScript)
120
126
  npm run build
121
127
 
128
+ # Build and synchronize the demo
129
+ npm run build-and-sync
130
+
122
131
  # Build only the WASM module
123
132
  npm run build:wasm
124
133
 
package/README.md CHANGED
@@ -37,46 +37,19 @@ npm install @earthyscience/netcdf4-wasm
37
37
 
38
38
  ## Quick Start
39
39
 
40
- ### Reading Files
41
40
  ```typescript
42
- import { NetCDF4 } from '@earthyscience/netcdf4-wasm';
41
+ import { NetCDF4, DataTree } from '@earthyscience/netcdf4-wasm';
43
42
 
44
43
  // Open existing file
45
44
  const ds = await NetCDF4.fromBlobLazy(file);
46
-
47
- // Access dimensions
48
- // TODO: Add example
49
-
50
- // Read variables
51
- // TODO: Add example
52
-
53
- // Close when done
54
- ds.close();
55
- ```
56
-
57
- ### Working with Groups
58
- ```typescript
59
- // Access groups
60
- // TODO: Add example
61
- ```
62
-
63
- ### Writing Files
64
- ```typescript
65
- import { NetCDF4 } from '@earthyscience/netcdf4-wasm';
66
-
67
- // Create a new NetCDF file
68
- // TODO: Add example
45
+ const dt = new DataTree(ds);
46
+ await dt.buildTree();
69
47
  ```
70
48
 
71
49
  ## API Reference
72
50
 
73
51
  The API closely follows [netcdf4-python](https://unidata.github.io/netcdf4-python) conventions, making it intuitive for scientists familiar with Python.
74
52
 
75
- **Core Classes:**
76
- - `NetCDF4` - Main file interface
77
- -
78
-
79
-
80
53
  ## Advanced Usage
81
54
 
82
55
  <details>
@@ -1,22 +1,147 @@
1
1
  export declare const NC_CONSTANTS: {
2
2
  NC_NOERR: number;
3
+ NC_EBADID: number;
4
+ NC_ENFILE: number;
5
+ NC_EEXIST: number;
6
+ NC_EINVAL: number;
7
+ NC_EPERM: number;
8
+ NC_ENOTINDEFINE: number;
9
+ NC_EINDEFINE: number;
10
+ NC_EINVALCOORDS: number;
11
+ NC_EMAXDIMS: number;
12
+ NC_ENAMEINUSE: number;
13
+ NC_ENOTATT: number;
14
+ NC_EMAXATTS: number;
15
+ NC_EBADTYPE: number;
16
+ NC_EBADDIM: number;
17
+ NC_EUNLIMPOS: number;
18
+ NC_EMAXVARS: number;
19
+ NC_ENOTVAR: number;
20
+ NC_EGLOBAL: number;
21
+ NC_ENOTNC: number;
22
+ NC_ESTS: number;
23
+ NC_EMAXNAME: number;
24
+ NC_EUNLIMIT: number;
25
+ NC_ENORECVARS: number;
26
+ NC_ECHAR: number;
27
+ NC_EEDGE: number;
28
+ NC_ESTRIDE: number;
29
+ NC_EBADNAME: number;
30
+ NC_ERANGE: number;
31
+ NC_ENOMEM: number;
32
+ NC_EVARSIZE: number;
33
+ NC_EDIMSIZE: number;
34
+ NC_ETRUNC: number;
35
+ NC_EAXISTYPE: number;
36
+ NC_EDAP: number;
37
+ NC_ECURL: number;
38
+ NC_EIO: number;
39
+ NC_ENODATA: number;
40
+ NC_EDAPSVC: number;
41
+ NC_EDAS: number;
42
+ NC_EDDS: number;
43
+ NC_EDATADDS: number;
44
+ NC_EDAPURL: number;
45
+ NC_EDAPCONSTRAINT: number;
46
+ NC_ETRANSLATION: number;
47
+ NC_EACCESS: number;
48
+ NC_EAUTH: number;
49
+ NC_ENOTFOUND: number;
50
+ NC_ECANTREMOVE: number;
51
+ NC_EINTERNAL: number;
52
+ NC_EPNETCDF: number;
53
+ NC_EHDFERR: number;
54
+ NC_ECANTREAD: number;
55
+ NC_ECANTWRITE: number;
56
+ NC_ECANTCREATE: number;
57
+ NC_EFILEMETA: number;
58
+ NC_EDIMMETA: number;
59
+ NC_EATTMETA: number;
60
+ NC_EVARMETA: number;
61
+ NC_ENOCOMPOUND: number;
62
+ NC_EATTEXISTS: number;
63
+ NC_ENOTNC4: number;
64
+ NC_ESTRICTNC3: number;
65
+ NC_ENOTNC3: number;
66
+ NC_ENOPAR: number;
67
+ NC_EPARINIT: number;
68
+ NC_EBADGRPID: number;
69
+ NC_EBADTYPID: number;
70
+ NC_ETYPDEFINED: number;
71
+ NC_EBADFIELD: number;
72
+ NC_EBADCLASS: number;
73
+ NC_EMAPTYPE: number;
74
+ NC_ELATEFILL: number;
75
+ NC_ELATEDEF: number;
76
+ NC_EDIMSCALE: number;
77
+ NC_ENOGRP: number;
78
+ NC_ESTORAGE: number;
79
+ NC_EBADCHUNK: number;
80
+ NC_ENOTBUILT: number;
81
+ NC_EDISKLESS: number;
82
+ NC_ECANTEXTEND: number;
83
+ NC_EMPI: number;
3
84
  NC_NOWRITE: number;
4
85
  NC_WRITE: number;
5
86
  NC_CLOBBER: number;
6
87
  NC_NOCLOBBER: number;
88
+ NC_DISKLESS: number;
89
+ NC_MMAP: number;
90
+ NC_64BIT_DATA: number;
91
+ NC_CDF5: number;
92
+ NC_CLASSIC_MODEL: number;
93
+ NC_64BIT_OFFSET: number;
7
94
  NC_NETCDF4: number;
95
+ NC_SHARE: number;
96
+ NC_INMEMORY: number;
97
+ NC_FORMAT_CLASSIC: number;
98
+ NC_FORMAT_64BIT_OFFSET: number;
99
+ NC_FORMAT_64BIT: number;
100
+ NC_FORMAT_NETCDF4: number;
101
+ NC_FORMAT_NETCDF4_CLASSIC: number;
102
+ NC_FORMAT_64BIT_DATA: number;
103
+ NC_FORMAT_CDF5: number;
104
+ NC_NAT: number;
8
105
  NC_BYTE: number;
9
106
  NC_CHAR: number;
10
107
  NC_SHORT: number;
11
108
  NC_INT: number;
109
+ NC_LONG: number;
12
110
  NC_FLOAT: number;
13
111
  NC_DOUBLE: number;
112
+ NC_UBYTE: number;
113
+ NC_USHORT: number;
114
+ NC_UINT: number;
115
+ NC_INT64: number;
116
+ NC_UINT64: number;
117
+ NC_STRING: number;
14
118
  NC_LONGLONG: number;
119
+ NC_ULONGLONG: number;
120
+ NC_VLEN: number;
121
+ NC_OPAQUE: number;
122
+ NC_ENUM: number;
123
+ NC_COMPOUND: number;
124
+ NC_FIRSTUSERTYPEID: number;
125
+ NC_FILL: number;
126
+ NC_NOFILL: number;
15
127
  NC_CHUNKED: number;
16
128
  NC_CONTIGUOUS: number;
17
129
  NC_COMPACT: number;
130
+ NC_VIRTUAL: number;
131
+ NC_ENDIAN_NATIVE: number;
132
+ NC_ENDIAN_LITTLE: number;
133
+ NC_ENDIAN_BIG: number;
18
134
  NC_UNLIMITED: number;
19
135
  NC_GLOBAL: number;
136
+ NC_MAX_DIMS: number;
137
+ NC_MAX_ATTRS: number;
138
+ NC_MAX_VARS: number;
139
+ NC_MAX_NAME: number;
140
+ NC_MAX_VAR_DIMS: number;
141
+ NC_NOCHECKSUM: number;
142
+ NC_FLETCHER32: number;
143
+ NC_NOSHUFFLE: number;
144
+ NC_SHUFFLE: number;
20
145
  };
21
146
  export declare const DATA_TYPE_MAP: {
22
147
  [key: string]: number;
@@ -27,4 +152,7 @@ export declare const CONSTANT_DTYPE_MAP: {
27
152
  export declare const DATA_TYPE_SIZE: {
28
153
  [key: number]: number;
29
154
  };
155
+ export declare const TYPE_NAMES: {
156
+ [key: number]: string;
157
+ };
30
158
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;CA2BxB,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAelD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAQvD,CAAA;AAED,eAAO,MAAM,cAAc,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAQnD,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KxB,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAiClD,CAAC;AAGF,eAAO,MAAM,kBAAkB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAcvD,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAcnD,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAkB/C,CAAC"}
package/dist/constants.js CHANGED
@@ -1,62 +1,249 @@
1
1
  // NetCDF4 constants (populated from NetCDF4 headers)
2
+ // see: https://github.com/Unidata/netcdf-c/blob/main/include/netcdf.h
3
+ // https://docs.unidata.ucar.edu/netcdf-c/current/nc-error-codes.html
2
4
  export const NC_CONSTANTS = {
3
5
  // Error codes
4
6
  NC_NOERR: 0,
7
+ NC_EBADID: -33,
8
+ NC_ENFILE: -34,
9
+ NC_EEXIST: -35,
10
+ NC_EINVAL: -36,
11
+ NC_EPERM: -37,
12
+ NC_ENOTINDEFINE: -38,
13
+ NC_EINDEFINE: -39,
14
+ NC_EINVALCOORDS: -40,
15
+ NC_EMAXDIMS: -41,
16
+ NC_ENAMEINUSE: -42,
17
+ NC_ENOTATT: -43,
18
+ NC_EMAXATTS: -44,
19
+ NC_EBADTYPE: -45,
20
+ NC_EBADDIM: -46,
21
+ NC_EUNLIMPOS: -47,
22
+ NC_EMAXVARS: -48,
23
+ NC_ENOTVAR: -49,
24
+ NC_EGLOBAL: -50,
25
+ NC_ENOTNC: -51,
26
+ NC_ESTS: -52,
27
+ NC_EMAXNAME: -53,
28
+ NC_EUNLIMIT: -54,
29
+ NC_ENORECVARS: -55,
30
+ NC_ECHAR: -56,
31
+ NC_EEDGE: -57,
32
+ NC_ESTRIDE: -58,
33
+ NC_EBADNAME: -59,
34
+ NC_ERANGE: -60,
35
+ NC_ENOMEM: -61,
36
+ NC_EVARSIZE: -62,
37
+ NC_EDIMSIZE: -63,
38
+ NC_ETRUNC: -64,
39
+ NC_EAXISTYPE: -65,
40
+ // NetCDF-4 error codes
41
+ NC_EDAP: -66,
42
+ NC_ECURL: -67,
43
+ NC_EIO: -68,
44
+ NC_ENODATA: -69,
45
+ NC_EDAPSVC: -70,
46
+ NC_EDAS: -71,
47
+ NC_EDDS: -72,
48
+ NC_EDATADDS: -73,
49
+ NC_EDAPURL: -74,
50
+ NC_EDAPCONSTRAINT: -75,
51
+ NC_ETRANSLATION: -76,
52
+ NC_EACCESS: -77,
53
+ NC_EAUTH: -78,
54
+ NC_ENOTFOUND: -90,
55
+ NC_ECANTREMOVE: -91,
56
+ NC_EINTERNAL: -92, // internal library error
57
+ NC_EPNETCDF: -93, // PnetCDF error
58
+ NC_EHDFERR: -101,
59
+ NC_ECANTREAD: -102,
60
+ NC_ECANTWRITE: -103,
61
+ NC_ECANTCREATE: -104,
62
+ NC_EFILEMETA: -105,
63
+ NC_EDIMMETA: -106,
64
+ NC_EATTMETA: -107,
65
+ NC_EVARMETA: -108,
66
+ NC_ENOCOMPOUND: -109,
67
+ NC_EATTEXISTS: -110,
68
+ NC_ENOTNC4: -111,
69
+ NC_ESTRICTNC3: -112,
70
+ NC_ENOTNC3: -113,
71
+ NC_ENOPAR: -114,
72
+ NC_EPARINIT: -115,
73
+ NC_EBADGRPID: -116,
74
+ NC_EBADTYPID: -117,
75
+ NC_ETYPDEFINED: -118,
76
+ NC_EBADFIELD: -119,
77
+ NC_EBADCLASS: -120,
78
+ NC_EMAPTYPE: -121,
79
+ NC_ELATEFILL: -122,
80
+ NC_ELATEDEF: -123,
81
+ NC_EDIMSCALE: -124,
82
+ NC_ENOGRP: -125,
83
+ NC_ESTORAGE: -126,
84
+ NC_EBADCHUNK: -127,
85
+ NC_ENOTBUILT: -128,
86
+ NC_EDISKLESS: -129,
87
+ NC_ECANTEXTEND: -130,
88
+ NC_EMPI: -131,
5
89
  // File modes
6
- NC_NOWRITE: 0,
7
- NC_WRITE: 1,
8
- NC_CLOBBER: 0,
9
- NC_NOCLOBBER: 4,
10
- NC_NETCDF4: 4096,
11
- // Data types
12
- NC_BYTE: 1,
13
- NC_CHAR: 2,
14
- NC_SHORT: 3,
15
- NC_INT: 4,
16
- NC_FLOAT: 5,
17
- NC_DOUBLE: 6,
18
- NC_LONGLONG: 10,
90
+ NC_NOWRITE: 0x0000,
91
+ NC_WRITE: 0x0001,
92
+ NC_CLOBBER: 0x0000,
93
+ NC_NOCLOBBER: 0x0004,
94
+ NC_DISKLESS: 0x0008,
95
+ NC_MMAP: 0x0010, // deprecated
96
+ NC_64BIT_DATA: 0x0020,
97
+ NC_CDF5: 0x0020,
98
+ NC_CLASSIC_MODEL: 0x0100,
99
+ NC_64BIT_OFFSET: 0x0200,
100
+ NC_NETCDF4: 0x1000,
101
+ NC_SHARE: 0x0800,
102
+ NC_INMEMORY: 0x8000,
103
+ // Format versions
104
+ NC_FORMAT_CLASSIC: 1,
105
+ NC_FORMAT_64BIT_OFFSET: 2,
106
+ NC_FORMAT_64BIT: 2,
107
+ NC_FORMAT_NETCDF4: 3,
108
+ NC_FORMAT_NETCDF4_CLASSIC: 4,
109
+ NC_FORMAT_64BIT_DATA: 5,
110
+ NC_FORMAT_CDF5: 5,
111
+ // Data types (atomic types)
112
+ NC_NAT: 0, // Not A Type
113
+ NC_BYTE: 1, // signed 1-byte integer
114
+ NC_CHAR: 2, // text character
115
+ NC_SHORT: 3, // signed 2-byte integer
116
+ NC_INT: 4, // signed 4-byte integer
117
+ NC_LONG: 4, // deprecated, same as NC_INT
118
+ NC_FLOAT: 5, // single precision float
119
+ NC_DOUBLE: 6, // double precision float
120
+ NC_UBYTE: 7, // unsigned 1-byte integer
121
+ NC_USHORT: 8, // unsigned 2-byte integer
122
+ NC_UINT: 9, // unsigned 4-byte integer
123
+ NC_INT64: 10, // signed 8-byte integer
124
+ NC_UINT64: 11, // unsigned 8-byte integer
125
+ NC_STRING: 12, // variable-length string
126
+ // Aliases for 64-bit integers
127
+ NC_LONGLONG: 10, // alias for NC_INT64
128
+ NC_ULONGLONG: 11, // alias for NC_UINT64
129
+ // User-defined types (NetCDF-4)
130
+ NC_VLEN: 13, // variable-length type
131
+ NC_OPAQUE: 14, // opaque type
132
+ NC_ENUM: 15, // enumeration type
133
+ NC_COMPOUND: 16, // compound type
134
+ // First user-defined type ID
135
+ NC_FIRSTUSERTYPEID: 32,
136
+ // Fill modes
137
+ NC_FILL: 0,
138
+ NC_NOFILL: 0x100,
19
139
  // Storage types
20
140
  NC_CHUNKED: 0,
21
141
  NC_CONTIGUOUS: 1,
22
142
  NC_COMPACT: 2,
143
+ NC_VIRTUAL: 3,
144
+ // Endianness
145
+ NC_ENDIAN_NATIVE: 0,
146
+ NC_ENDIAN_LITTLE: 1,
147
+ NC_ENDIAN_BIG: 2,
148
+ // Unlimited dimension
149
+ NC_UNLIMITED: 0,
23
150
  // Special values
24
- NC_UNLIMITED: -1000, // Use special value to distinguish from 0
25
- NC_GLOBAL: -1,
151
+ NC_GLOBAL: -1, // Global attribute
152
+ NC_MAX_DIMS: 1024,
153
+ NC_MAX_ATTRS: 8192,
154
+ NC_MAX_VARS: 8192,
155
+ NC_MAX_NAME: 256,
156
+ NC_MAX_VAR_DIMS: 1024,
157
+ // Compression
158
+ NC_NOCHECKSUM: 0,
159
+ NC_FLETCHER32: 1,
160
+ // Shuffle filter
161
+ NC_NOSHUFFLE: 0,
162
+ NC_SHUFFLE: 1,
26
163
  };
27
164
  // Data type mapping from string names to NetCDF constants
28
165
  export const DATA_TYPE_MAP = {
166
+ // Short names
29
167
  'f8': NC_CONSTANTS.NC_DOUBLE,
30
168
  'f4': NC_CONSTANTS.NC_FLOAT,
169
+ 'i8': NC_CONSTANTS.NC_INT64,
31
170
  'i4': NC_CONSTANTS.NC_INT,
32
171
  'i2': NC_CONSTANTS.NC_SHORT,
33
172
  'i1': NC_CONSTANTS.NC_BYTE,
173
+ 'u8': NC_CONSTANTS.NC_UINT64,
174
+ 'u4': NC_CONSTANTS.NC_UINT,
175
+ 'u2': NC_CONSTANTS.NC_USHORT,
176
+ 'u1': NC_CONSTANTS.NC_UBYTE,
34
177
  'S1': NC_CONSTANTS.NC_CHAR,
35
- 'i8': NC_CONSTANTS.NC_LONGLONG,
178
+ // Long names
36
179
  'double': NC_CONSTANTS.NC_DOUBLE,
37
180
  'float': NC_CONSTANTS.NC_FLOAT,
181
+ 'int64': NC_CONSTANTS.NC_INT64,
38
182
  'int': NC_CONSTANTS.NC_INT,
39
183
  'short': NC_CONSTANTS.NC_SHORT,
40
184
  'byte': NC_CONSTANTS.NC_BYTE,
185
+ 'uint64': NC_CONSTANTS.NC_UINT64,
186
+ 'uint': NC_CONSTANTS.NC_UINT,
187
+ 'ushort': NC_CONSTANTS.NC_USHORT,
188
+ 'ubyte': NC_CONSTANTS.NC_UBYTE,
41
189
  'char': NC_CONSTANTS.NC_CHAR,
42
- 'longlong': NC_CONSTANTS.NC_LONGLONG
190
+ 'string': NC_CONSTANTS.NC_STRING,
191
+ 'str': NC_CONSTANTS.NC_STRING,
192
+ // Aliases
193
+ 'longlong': NC_CONSTANTS.NC_LONGLONG,
194
+ 'ulonglong': NC_CONSTANTS.NC_ULONGLONG,
195
+ 'long': NC_CONSTANTS.NC_INT,
43
196
  };
197
+ // Reverse mapping: NetCDF type ID to dtype string
44
198
  export const CONSTANT_DTYPE_MAP = {
45
- 1: 'i1',
46
- 2: 'S1',
47
- 3: 'i2',
48
- 4: 'i4',
49
- 5: 'f4',
50
- 6: 'f8',
51
- 10: 'i8'
199
+ 0: 'NAT', // NC_NAT
200
+ 1: 'i1', // NC_BYTE
201
+ 2: 'S1', // NC_CHAR
202
+ 3: 'i2', // NC_SHORT
203
+ 4: 'i4', // NC_INT
204
+ 5: 'f4', // NC_FLOAT
205
+ 6: 'f8', // NC_DOUBLE
206
+ 7: 'u1', // NC_UBYTE
207
+ 8: 'u2', // NC_USHORT
208
+ 9: 'u4', // NC_UINT
209
+ 10: 'i8', // NC_INT64
210
+ 11: 'u8', // NC_UINT64
211
+ 12: 'str', // NC_STRING
52
212
  };
213
+ // Data type sizes in bytes
53
214
  export const DATA_TYPE_SIZE = {
54
- 1: 1,
55
- 2: 1,
56
- 3: 2,
57
- 4: 4,
58
- 5: 4,
59
- 6: 8,
60
- 10: 8
215
+ 0: 0, // NC_NAT
216
+ 1: 1, // NC_BYTE
217
+ 2: 1, // NC_CHAR
218
+ 3: 2, // NC_SHORT
219
+ 4: 4, // NC_INT
220
+ 5: 4, // NC_FLOAT
221
+ 6: 8, // NC_DOUBLE
222
+ 7: 1, // NC_UBYTE
223
+ 8: 2, // NC_USHORT
224
+ 9: 4, // NC_UINT
225
+ 10: 8, // NC_INT64
226
+ 11: 8, // NC_UINT64
227
+ 12: 0, // NC_STRING (variable length)
228
+ };
229
+ // Human-readable type names
230
+ export const TYPE_NAMES = {
231
+ 0: 'NAT',
232
+ 1: 'byte',
233
+ 2: 'char',
234
+ 3: 'short',
235
+ 4: 'int',
236
+ 5: 'float',
237
+ 6: 'double',
238
+ 7: 'ubyte',
239
+ 8: 'ushort',
240
+ 9: 'uint',
241
+ 10: 'int64',
242
+ 11: 'uint64',
243
+ 12: 'string',
244
+ 13: 'vlen',
245
+ 14: 'opaque',
246
+ 15: 'enum',
247
+ 16: 'compound',
61
248
  };
62
249
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,cAAc;IACd,QAAQ,EAAE,CAAC;IAEX,aAAa;IACb,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,IAAI;IAEhB,aAAa;IACb,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,EAAE;IAEf,gBAAgB;IAChB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,iBAAiB;IACjB,YAAY,EAAE,CAAC,IAAI,EAAE,0CAA0C;IAC/D,SAAS,EAAE,CAAC,CAAC;CAChB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAA8B;IACpD,IAAI,EAAE,YAAY,CAAC,SAAS;IAC5B,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,MAAM;IACzB,IAAI,EAAE,YAAY,CAAC,QAAQ;IAC3B,IAAI,EAAE,YAAY,CAAC,OAAO;IAC1B,IAAI,EAAE,YAAY,CAAC,OAAO;IAC1B,IAAI,EAAE,YAAY,CAAC,WAAW;IAC9B,QAAQ,EAAE,YAAY,CAAC,SAAS;IAChC,OAAO,EAAE,YAAY,CAAC,QAAQ;IAC9B,KAAK,EAAE,YAAY,CAAC,MAAM;IAC1B,OAAO,EAAE,YAAY,CAAC,QAAQ;IAC9B,MAAM,EAAE,YAAY,CAAC,OAAO;IAC5B,MAAM,EAAE,YAAY,CAAC,OAAO;IAC5B,UAAU,EAAE,YAAY,CAAC,WAAW;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAA8B;IACzD,CAAC,EAAG,IAAI;IACR,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,EAAE,EAAE,IAAI;CACX,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAA8B;IACrD,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,EAAE,EAAE,CAAC;CACR,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/group.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare class Group {
6
6
  protected netcdf: NetCDF4;
7
7
  readonly name: string;
8
8
  protected groupId: number;
9
+ protected parent?: Group | undefined;
9
10
  readonly dimensions: {
10
11
  [name: string]: Dimension;
11
12
  };
@@ -16,7 +17,7 @@ export declare class Group {
16
17
  [name: string]: Group;
17
18
  };
18
19
  private _attributes;
19
- constructor(netcdf: NetCDF4, name: string, groupId: number);
20
+ constructor(netcdf: NetCDF4, name: string, groupId: number, parent?: Group | undefined);
20
21
  setAttr(name: string, value: any): void;
21
22
  getAttr(name: string): any;
22
23
  attrs(): string[];
@@ -28,6 +29,7 @@ export declare class Group {
28
29
  [name: string]: Group;
29
30
  };
30
31
  get path(): string;
32
+ load(): Promise<void>;
31
33
  toString(): string;
32
34
  }
33
35
  //# sourceMappingURL=group.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,KAAK;IAOV,SAAS,CAAC,MAAM,EAAE,OAAO;aACT,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM;IAR7B,SAAgB,UAAU,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAM;IAC/D,SAAgB,SAAS,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAM;IAC7D,SAAgB,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAM;IACvD,OAAO,CAAC,WAAW,CAA8B;gBAGnC,MAAM,EAAE,OAAO,EACT,IAAI,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM;IAI7B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAcvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAgB1B,KAAK,IAAI,MAAM,EAAE;IAIX,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBrE,kBAAkB,IAAI,IAAI;IA8B3B,cAAc,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAAM,EAAO,EACzB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAqCpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAQhC,QAAQ,IAAI;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE;IAKrC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,QAAQ,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,KAAK;IAOV,SAAS,CAAC,MAAM,EAAE,OAAO;aACT,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK;IAT5B,SAAgB,UAAU,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAM;IAC/D,SAAgB,SAAS,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAM;IAC7D,SAAgB,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE,CAAM;IACvD,OAAO,CAAC,WAAW,CAA8B;gBAGnC,MAAM,EAAE,OAAO,EACT,IAAI,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,YAAA;IAI5B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAcvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;IAgB1B,KAAK,IAAI,MAAM,EAAE;IAIX,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBrE,kBAAkB,IAAI,IAAI;IA8B3B,cAAc,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAAM,EAAO,EACzB,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAqCpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAQhC,QAAQ,IAAI;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAA;KAAE;IAKrC,IAAI,IAAI,IAAI,MAAM,CAIjB;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD3B,QAAQ,IAAI,MAAM;CAGrB"}
package/dist/group.js CHANGED
@@ -6,14 +6,16 @@ export class Group {
6
6
  netcdf;
7
7
  name;
8
8
  groupId;
9
+ parent;
9
10
  dimensions = {};
10
11
  variables = {};
11
12
  groups = {};
12
13
  _attributes = {};
13
- constructor(netcdf, name, groupId) {
14
+ constructor(netcdf, name, groupId, parent) {
14
15
  this.netcdf = netcdf;
15
16
  this.name = name;
16
17
  this.groupId = groupId;
18
+ this.parent = parent;
17
19
  }
18
20
  // Attribute methods
19
21
  setAttr(name, value) {
@@ -52,11 +54,11 @@ export class Group {
52
54
  throw new Error(`Dimension '${name}' already exists`);
53
55
  }
54
56
  // Check for invalid size values
55
- if (size !== null && size < 0 && size !== NC_CONSTANTS.NC_UNLIMITED) {
57
+ if (size !== null && size < 0) {
56
58
  throw new Error(`Invalid dimension size: ${size}. Size must be non-negative or null for unlimited.`);
57
59
  }
58
- // Handle unlimited dimension (null or NC_UNLIMITED constant)
59
- const isUnlimited = size === null || size === NC_CONSTANTS.NC_UNLIMITED;
60
+ // Handle unlimited dimension (null only size=0 is a valid finite dimension)
61
+ const isUnlimited = size === null;
60
62
  const ncSize = isUnlimited ? 0 : size; // Use 0 for unlimited in the actual NetCDF API
61
63
  const dimid = await this.netcdf.defineDimension(this.groupId, name, ncSize);
62
64
  const actualSize = isUnlimited ? NC_CONSTANTS.NC_UNLIMITED : size;
@@ -127,7 +129,7 @@ export class Group {
127
129
  }
128
130
  createGroup(name) {
129
131
  // For simplicity, groups use the same ncid for now
130
- const group = new Group(this.netcdf, name, this.groupId);
132
+ const group = new Group(this.netcdf, name, this.groupId, this);
131
133
  this.groups[name] = group;
132
134
  return group;
133
135
  }
@@ -137,9 +139,48 @@ export class Group {
137
139
  }
138
140
  // Get group path (Python-like)
139
141
  get path() {
140
- if (this.name === '')
142
+ if (!this.parent)
141
143
  return '/';
142
- return `/${this.name}`;
144
+ const parentPath = this.parent.path;
145
+ return parentPath === '/' ? `/${this.name}` : `${parentPath}/${this.name}`;
146
+ }
147
+ async load() {
148
+ // 1. Dimensions
149
+ const dims = await this.netcdf.getDims(this.path);
150
+ for (const key in this.dimensions)
151
+ delete this.dimensions[key];
152
+ for (const [name, d] of Object.entries(dims)) {
153
+ this.dimensions[name] = new Dimension(name, d.size, false);
154
+ }
155
+ // 2. Variables
156
+ const vars = await this.netcdf.getGroupVariables(this.path);
157
+ for (const key in this.variables)
158
+ delete this.variables[key];
159
+ for (const [name, v] of Object.entries(vars)) {
160
+ const info = await this.netcdf.getVariableInfo(v.id, this.path);
161
+ const dimNames = info.dims.map((d) => d.name);
162
+ const variable = new Variable(this.netcdf, name, info.dtype, dimNames, v.id, this.groupId);
163
+ if (info.attributes) {
164
+ for (const [k, val] of Object.entries(info.attributes)) {
165
+ variable.setAttr(k, val);
166
+ }
167
+ }
168
+ this.variables[name] = variable;
169
+ }
170
+ // 3. Subgroups
171
+ const groups = await this.netcdf.getGroups(this.groupId);
172
+ for (const key in this.groups)
173
+ delete this.groups[key];
174
+ for (const [name, grpid] of Object.entries(groups)) {
175
+ const group = new Group(this.netcdf, name, grpid, this);
176
+ await group.load();
177
+ this.groups[name] = group;
178
+ }
179
+ // 4. Attributes
180
+ const attrs = await this.netcdf.getGlobalAttributes(this.path);
181
+ for (const [k, v] of Object.entries(attrs)) {
182
+ this.setAttr(k, v);
183
+ }
143
184
  }
144
185
  toString() {
145
186
  return `<netCDF4.Group '${this.path}'>`;