xm-netcdf-loader 1.0.0

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 (130) hide show
  1. package/dist/component/colorLegend.d.ts +25 -0
  2. package/dist/component/loadFile.d.ts +43 -0
  3. package/dist/component/loadonMap.d.ts +46 -0
  4. package/dist/component/statusInfo.d.ts +41 -0
  5. package/dist/composables/useGridLabels.d.ts +13 -0
  6. package/dist/composables/useLeafletMap.d.ts +56 -0
  7. package/dist/composables/useMapRendering.d.ts +38 -0
  8. package/dist/composables/useNetCdf.d.ts +49 -0
  9. package/dist/index.d.ts +9 -0
  10. package/dist/netcdf4-wasm/CONTRIBUTING.md +160 -0
  11. package/dist/netcdf4-wasm/LICENSE +22 -0
  12. package/dist/netcdf4-wasm/README.md +81 -0
  13. package/dist/netcdf4-wasm/dist/constants.d.ts +158 -0
  14. package/dist/netcdf4-wasm/dist/constants.d.ts.map +1 -0
  15. package/dist/netcdf4-wasm/dist/constants.js +249 -0
  16. package/dist/netcdf4-wasm/dist/constants.js.map +1 -0
  17. package/dist/netcdf4-wasm/dist/dimension.d.ts +9 -0
  18. package/dist/netcdf4-wasm/dist/dimension.d.ts.map +1 -0
  19. package/dist/netcdf4-wasm/dist/dimension.js +19 -0
  20. package/dist/netcdf4-wasm/dist/dimension.js.map +1 -0
  21. package/dist/netcdf4-wasm/dist/group.d.ts +35 -0
  22. package/dist/netcdf4-wasm/dist/group.d.ts.map +1 -0
  23. package/dist/netcdf4-wasm/dist/group.js +189 -0
  24. package/dist/netcdf4-wasm/dist/group.js.map +1 -0
  25. package/dist/netcdf4-wasm/dist/index.d.ts +17 -0
  26. package/dist/netcdf4-wasm/dist/index.d.ts.map +1 -0
  27. package/dist/netcdf4-wasm/dist/index.js +49 -0
  28. package/dist/netcdf4-wasm/dist/index.js.map +1 -0
  29. package/dist/netcdf4-wasm/dist/netcdf-getters.d.ts +120 -0
  30. package/dist/netcdf4-wasm/dist/netcdf-getters.d.ts.map +1 -0
  31. package/dist/netcdf4-wasm/dist/netcdf-getters.js +816 -0
  32. package/dist/netcdf4-wasm/dist/netcdf-getters.js.map +1 -0
  33. package/dist/netcdf4-wasm/dist/netcdf-worker.d.ts +2 -0
  34. package/dist/netcdf4-wasm/dist/netcdf-worker.d.ts.map +1 -0
  35. package/dist/netcdf4-wasm/dist/netcdf-worker.js +154 -0
  36. package/dist/netcdf4-wasm/dist/netcdf-worker.js.map +1 -0
  37. package/dist/netcdf4-wasm/dist/netcdf4-wasm.js +2 -0
  38. package/dist/netcdf4-wasm/dist/netcdf4-wasm.wasm +0 -0
  39. package/dist/netcdf4-wasm/dist/netcdf4.d.ts +218 -0
  40. package/dist/netcdf4-wasm/dist/netcdf4.d.ts.map +1 -0
  41. package/dist/netcdf4-wasm/dist/netcdf4.js +1049 -0
  42. package/dist/netcdf4-wasm/dist/netcdf4.js.map +1 -0
  43. package/dist/netcdf4-wasm/dist/slice.d.ts +57 -0
  44. package/dist/netcdf4-wasm/dist/slice.d.ts.map +1 -0
  45. package/dist/netcdf4-wasm/dist/slice.js +60 -0
  46. package/dist/netcdf4-wasm/dist/slice.js.map +1 -0
  47. package/dist/netcdf4-wasm/dist/test-setup.d.ts +13 -0
  48. package/dist/netcdf4-wasm/dist/test-setup.d.ts.map +1 -0
  49. package/dist/netcdf4-wasm/dist/test-setup.js +78 -0
  50. package/dist/netcdf4-wasm/dist/test-setup.js.map +1 -0
  51. package/dist/netcdf4-wasm/dist/types.d.ts +444 -0
  52. package/dist/netcdf4-wasm/dist/types.d.ts.map +1 -0
  53. package/dist/netcdf4-wasm/dist/types.js +3 -0
  54. package/dist/netcdf4-wasm/dist/types.js.map +1 -0
  55. package/dist/netcdf4-wasm/dist/variable.d.ts +36 -0
  56. package/dist/netcdf4-wasm/dist/variable.d.ts.map +1 -0
  57. package/dist/netcdf4-wasm/dist/variable.js +152 -0
  58. package/dist/netcdf4-wasm/dist/variable.js.map +1 -0
  59. package/dist/netcdf4-wasm/dist/wasm-module.d.ts +6 -0
  60. package/dist/netcdf4-wasm/dist/wasm-module.d.ts.map +1 -0
  61. package/dist/netcdf4-wasm/dist/wasm-module.js +1502 -0
  62. package/dist/netcdf4-wasm/dist/wasm-module.js.map +1 -0
  63. package/dist/netcdf4-wasm/package.json +78 -0
  64. package/dist/netcdf4-wasm.wasm +0 -0
  65. package/dist/types/colorsJson.d.ts +36 -0
  66. package/dist/types/netcdf.d.ts +70 -0
  67. package/dist/utils/color.d.ts +277 -0
  68. package/dist/utils/colorScales.d.ts +28 -0
  69. package/dist/utils/colorsJsonService.d.ts +24 -0
  70. package/dist/utils/dataProcessing.d.ts +64 -0
  71. package/dist/utils/errorHandling.d.ts +69 -0
  72. package/dist/utils/imageUtils.d.ts +29 -0
  73. package/dist/utils/performance.d.ts +75 -0
  74. package/dist/wasm/constants.d.ts +158 -0
  75. package/dist/wasm/constants.d.ts.map +1 -0
  76. package/dist/wasm/constants.js +249 -0
  77. package/dist/wasm/constants.js.map +1 -0
  78. package/dist/wasm/dimension.d.ts +9 -0
  79. package/dist/wasm/dimension.d.ts.map +1 -0
  80. package/dist/wasm/dimension.js +19 -0
  81. package/dist/wasm/dimension.js.map +1 -0
  82. package/dist/wasm/group.d.ts +35 -0
  83. package/dist/wasm/group.d.ts.map +1 -0
  84. package/dist/wasm/group.js +189 -0
  85. package/dist/wasm/group.js.map +1 -0
  86. package/dist/wasm/index.d.ts +17 -0
  87. package/dist/wasm/index.d.ts.map +1 -0
  88. package/dist/wasm/index.js +49 -0
  89. package/dist/wasm/index.js.map +1 -0
  90. package/dist/wasm/netcdf-getters.d.ts +120 -0
  91. package/dist/wasm/netcdf-getters.d.ts.map +1 -0
  92. package/dist/wasm/netcdf-getters.js +816 -0
  93. package/dist/wasm/netcdf-getters.js.map +1 -0
  94. package/dist/wasm/netcdf-worker.d.ts +2 -0
  95. package/dist/wasm/netcdf-worker.d.ts.map +1 -0
  96. package/dist/wasm/netcdf-worker.js +154 -0
  97. package/dist/wasm/netcdf-worker.js.map +1 -0
  98. package/dist/wasm/netcdf4-wasm.js +2 -0
  99. package/dist/wasm/netcdf4-wasm.wasm +0 -0
  100. package/dist/wasm/netcdf4.d.ts +218 -0
  101. package/dist/wasm/netcdf4.d.ts.map +1 -0
  102. package/dist/wasm/netcdf4.js +1049 -0
  103. package/dist/wasm/netcdf4.js.map +1 -0
  104. package/dist/wasm/slice.d.ts +57 -0
  105. package/dist/wasm/slice.d.ts.map +1 -0
  106. package/dist/wasm/slice.js +60 -0
  107. package/dist/wasm/slice.js.map +1 -0
  108. package/dist/wasm/test-setup.d.ts +13 -0
  109. package/dist/wasm/test-setup.d.ts.map +1 -0
  110. package/dist/wasm/test-setup.js +78 -0
  111. package/dist/wasm/test-setup.js.map +1 -0
  112. package/dist/wasm/types.d.ts +444 -0
  113. package/dist/wasm/types.d.ts.map +1 -0
  114. package/dist/wasm/types.js +3 -0
  115. package/dist/wasm/types.js.map +1 -0
  116. package/dist/wasm/variable.d.ts +36 -0
  117. package/dist/wasm/variable.d.ts.map +1 -0
  118. package/dist/wasm/variable.js +152 -0
  119. package/dist/wasm/variable.js.map +1 -0
  120. package/dist/wasm/wasm-module.d.ts +6 -0
  121. package/dist/wasm/wasm-module.d.ts.map +1 -0
  122. package/dist/wasm/wasm-module.js +1502 -0
  123. package/dist/wasm/wasm-module.js.map +1 -0
  124. package/dist/xm-netcdf-loader.cjs.js +2 -0
  125. package/dist/xm-netcdf-loader.cjs.js.map +1 -0
  126. package/dist/xm-netcdf-loader.es.js +18532 -0
  127. package/dist/xm-netcdf-loader.es.js.map +1 -0
  128. package/dist/xm-netcdf-loader.umd.js +2 -0
  129. package/dist/xm-netcdf-loader.umd.js.map +1 -0
  130. package/package.json +45 -0
@@ -0,0 +1,158 @@
1
+ export declare const NC_CONSTANTS: {
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;
84
+ NC_NOWRITE: number;
85
+ NC_WRITE: number;
86
+ NC_CLOBBER: number;
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;
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;
105
+ NC_BYTE: number;
106
+ NC_CHAR: number;
107
+ NC_SHORT: number;
108
+ NC_INT: number;
109
+ NC_LONG: number;
110
+ NC_FLOAT: number;
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;
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;
127
+ NC_CHUNKED: number;
128
+ NC_CONTIGUOUS: number;
129
+ NC_COMPACT: number;
130
+ NC_VIRTUAL: number;
131
+ NC_ENDIAN_NATIVE: number;
132
+ NC_ENDIAN_LITTLE: number;
133
+ NC_ENDIAN_BIG: number;
134
+ NC_UNLIMITED: number;
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;
145
+ };
146
+ export declare const DATA_TYPE_MAP: {
147
+ [key: string]: number;
148
+ };
149
+ export declare const CONSTANT_DTYPE_MAP: {
150
+ [key: number]: string;
151
+ };
152
+ export declare const DATA_TYPE_SIZE: {
153
+ [key: number]: number;
154
+ };
155
+ export declare const TYPE_NAMES: {
156
+ [key: number]: string;
157
+ };
158
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,249 @@
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
4
+ export const NC_CONSTANTS = {
5
+ // Error codes
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,
89
+ // File modes
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,
139
+ // Storage types
140
+ NC_CHUNKED: 0,
141
+ NC_CONTIGUOUS: 1,
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,
150
+ // Special values
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,
163
+ };
164
+ // Data type mapping from string names to NetCDF constants
165
+ export const DATA_TYPE_MAP = {
166
+ // Short names
167
+ 'f8': NC_CONSTANTS.NC_DOUBLE,
168
+ 'f4': NC_CONSTANTS.NC_FLOAT,
169
+ 'i8': NC_CONSTANTS.NC_INT64,
170
+ 'i4': NC_CONSTANTS.NC_INT,
171
+ 'i2': NC_CONSTANTS.NC_SHORT,
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,
177
+ 'S1': NC_CONSTANTS.NC_CHAR,
178
+ // Long names
179
+ 'double': NC_CONSTANTS.NC_DOUBLE,
180
+ 'float': NC_CONSTANTS.NC_FLOAT,
181
+ 'int64': NC_CONSTANTS.NC_INT64,
182
+ 'int': NC_CONSTANTS.NC_INT,
183
+ 'short': NC_CONSTANTS.NC_SHORT,
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,
189
+ 'char': NC_CONSTANTS.NC_CHAR,
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,
196
+ };
197
+ // Reverse mapping: NetCDF type ID to dtype string
198
+ export const CONSTANT_DTYPE_MAP = {
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
212
+ };
213
+ // Data type sizes in bytes
214
+ export const DATA_TYPE_SIZE = {
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',
248
+ };
249
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class Dimension {
2
+ readonly name: string;
3
+ readonly size: number;
4
+ readonly isUnlimited: boolean;
5
+ constructor(name: string, size: number, isUnlimited?: boolean);
6
+ __len__(): number;
7
+ toString(): string;
8
+ }
9
+ //# sourceMappingURL=dimension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension.d.ts","sourceRoot":"","sources":["../src/dimension.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAS;aAEE,IAAI,EAAE,MAAM;aACZ,IAAI,EAAE,MAAM;aACZ,WAAW,EAAE,OAAO;gBAFpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,OAAe;IAGhD,OAAO,IAAI,MAAM;IAIjB,QAAQ,IAAI,MAAM;CAIrB"}
@@ -0,0 +1,19 @@
1
+ // Dimension class similar to netcdf4-python
2
+ export class Dimension {
3
+ name;
4
+ size;
5
+ isUnlimited;
6
+ constructor(name, size, isUnlimited = false) {
7
+ this.name = name;
8
+ this.size = size;
9
+ this.isUnlimited = isUnlimited;
10
+ }
11
+ __len__() {
12
+ return this.size;
13
+ }
14
+ toString() {
15
+ const sizeStr = this.isUnlimited ? 'unlimited' : this.size.toString();
16
+ return `<netCDF4.Dimension '${this.name}': size = ${sizeStr}>`;
17
+ }
18
+ }
19
+ //# sourceMappingURL=dimension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dimension.js","sourceRoot":"","sources":["../src/dimension.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,MAAM,OAAO,SAAS;IAEE;IACA;IACA;IAHpB,YACoB,IAAY,EACZ,IAAY,EACZ,cAAuB,KAAK;QAF5B,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAiB;IAC7C,CAAC;IAEJ,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtE,OAAO,uBAAuB,IAAI,CAAC,IAAI,aAAa,OAAO,GAAG,CAAC;IACnE,CAAC;CACJ"}
@@ -0,0 +1,35 @@
1
+ import type { NetCDF4 } from './netcdf4.js';
2
+ import { Dimension } from './dimension.js';
3
+ import { Variable } from './variable.js';
4
+ import type { VariableOptions } from './types.js';
5
+ export declare class Group {
6
+ protected netcdf: NetCDF4;
7
+ readonly name: string;
8
+ protected groupId: number;
9
+ protected parent?: Group | undefined;
10
+ readonly dimensions: {
11
+ [name: string]: Dimension;
12
+ };
13
+ readonly variables: {
14
+ [name: string]: Variable;
15
+ };
16
+ readonly groups: {
17
+ [name: string]: Group;
18
+ };
19
+ private _attributes;
20
+ constructor(netcdf: NetCDF4, name: string, groupId: number, parent?: Group | undefined);
21
+ setAttr(name: string, value: any): void;
22
+ getAttr(name: string): any;
23
+ attrs(): string[];
24
+ createDimension(name: string, size: number | null): Promise<Dimension>;
25
+ loadMockDimensions(): void;
26
+ createVariable(name: string, datatype: string, dimensions?: string[], options?: VariableOptions): Promise<Variable>;
27
+ createGroup(name: string): Group;
28
+ children(): {
29
+ [name: string]: Group;
30
+ };
31
+ get path(): string;
32
+ load(): Promise<void>;
33
+ toString(): string;
34
+ }
35
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +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;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"}
@@ -0,0 +1,189 @@
1
+ // Group class for hierarchical data organization
2
+ import { Dimension } from './dimension.js';
3
+ import { Variable } from './variable.js';
4
+ import { NC_CONSTANTS, DATA_TYPE_MAP } from './constants.js';
5
+ export class Group {
6
+ netcdf;
7
+ name;
8
+ groupId;
9
+ parent;
10
+ dimensions = {};
11
+ variables = {};
12
+ groups = {};
13
+ _attributes = {};
14
+ constructor(netcdf, name, groupId, parent) {
15
+ this.netcdf = netcdf;
16
+ this.name = name;
17
+ this.groupId = groupId;
18
+ this.parent = parent;
19
+ }
20
+ // Attribute methods
21
+ setAttr(name, value) {
22
+ this._attributes[name] = value;
23
+ // Store in mock file system if in test mode
24
+ if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
25
+ const mockFiles = global.__netcdf4_mock_files;
26
+ const dataset = this.netcdf;
27
+ if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
28
+ mockFiles[dataset.filename].attributes[name] = value;
29
+ }
30
+ }
31
+ // TODO: Implement actual NetCDF global attribute setting
32
+ }
33
+ getAttr(name) {
34
+ // Check mock file system first if in test mode
35
+ if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
36
+ const mockFiles = global.__netcdf4_mock_files;
37
+ const dataset = this.netcdf;
38
+ if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
39
+ const value = mockFiles[dataset.filename].attributes[name];
40
+ if (value !== undefined) {
41
+ this._attributes[name] = value; // Sync local cache
42
+ return value;
43
+ }
44
+ }
45
+ }
46
+ return this._attributes[name];
47
+ }
48
+ attrs() {
49
+ return Object.keys(this._attributes);
50
+ }
51
+ async createDimension(name, size) {
52
+ // Check for duplicate dimension name
53
+ if (this.dimensions[name]) {
54
+ throw new Error(`Dimension '${name}' already exists`);
55
+ }
56
+ // Check for invalid size values
57
+ if (size !== null && size < 0) {
58
+ throw new Error(`Invalid dimension size: ${size}. Size must be non-negative or null for unlimited.`);
59
+ }
60
+ // Handle unlimited dimension (null only — size=0 is a valid finite dimension)
61
+ const isUnlimited = size === null;
62
+ const ncSize = isUnlimited ? 0 : size; // Use 0 for unlimited in the actual NetCDF API
63
+ const dimid = await this.netcdf.defineDimension(this.groupId, name, ncSize);
64
+ const actualSize = isUnlimited ? NC_CONSTANTS.NC_UNLIMITED : size;
65
+ const dimension = new Dimension(name, actualSize, isUnlimited);
66
+ this.dimensions[name] = dimension;
67
+ return dimension;
68
+ }
69
+ // Load dimensions and variables from mock storage when in test mode
70
+ loadMockDimensions() {
71
+ if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
72
+ const mockFiles = global.__netcdf4_mock_files;
73
+ const dataset = this.netcdf;
74
+ if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
75
+ // Load dimensions
76
+ const mockDims = mockFiles[dataset.filename].dimensions;
77
+ for (const [name, dimData] of Object.entries(mockDims)) {
78
+ const dimension = new Dimension(name, dimData.size, dimData.unlimited);
79
+ this.dimensions[name] = dimension;
80
+ }
81
+ // Load variables
82
+ const mockVars = mockFiles[dataset.filename].variables;
83
+ for (const [name, varData] of Object.entries(mockVars)) {
84
+ const varInfo = varData;
85
+ // Reconstruct variable - for now, assume double datatype and no dimensions for simplicity
86
+ const variable = new Variable(this.netcdf, name, varInfo.datatype || 'f8', varInfo.dimensions || [], 1, this.groupId);
87
+ // Restore variable attributes
88
+ if (varInfo.attributes) {
89
+ for (const [attrName, attrValue] of Object.entries(varInfo.attributes)) {
90
+ variable.setAttr(attrName, attrValue);
91
+ }
92
+ }
93
+ this.variables[name] = variable;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ async createVariable(name, datatype, dimensions = [], options = {}) {
99
+ const ncType = DATA_TYPE_MAP[datatype];
100
+ if (ncType === undefined) {
101
+ throw new Error(`Unsupported datatype: ${datatype}`);
102
+ }
103
+ // Get dimension IDs
104
+ const dimIds = dimensions.map(dimName => {
105
+ const dim = this.dimensions[dimName];
106
+ if (!dim) {
107
+ throw new Error(`Dimension '${dimName}' not found`);
108
+ }
109
+ // For now, we'll use the dimension name as ID (simplified)
110
+ return Object.keys(this.dimensions).indexOf(dimName);
111
+ });
112
+ const varid = await this.netcdf.defineVariable(this.groupId, name, ncType, dimIds);
113
+ const variable = new Variable(this.netcdf, name, datatype, dimensions, varid, this.groupId);
114
+ this.variables[name] = variable;
115
+ // Store variable metadata in mock storage if in test mode
116
+ if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
117
+ const mockFiles = global.__netcdf4_mock_files;
118
+ const dataset = this.netcdf;
119
+ if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
120
+ mockFiles[dataset.filename].variables[name] = {
121
+ datatype: datatype,
122
+ dimensions: dimensions,
123
+ data: new Float64Array(0),
124
+ attributes: {}
125
+ };
126
+ }
127
+ }
128
+ return variable;
129
+ }
130
+ createGroup(name) {
131
+ // For simplicity, groups use the same ncid for now
132
+ const group = new Group(this.netcdf, name, this.groupId, this);
133
+ this.groups[name] = group;
134
+ return group;
135
+ }
136
+ // Python-like method to get all children
137
+ children() {
138
+ return this.groups;
139
+ }
140
+ // Get group path (Python-like)
141
+ get path() {
142
+ if (!this.parent)
143
+ return '/';
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
+ }
184
+ }
185
+ toString() {
186
+ return `<netCDF4.Group '${this.path}'>`;
187
+ }
188
+ }
189
+ //# sourceMappingURL=group.js.map