@lazarusa/netcdf4-wasm-test 0.2.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.
- package/LICENSE +21 -0
- package/README.md +386 -0
- package/dist/constants.d.ts +20 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +37 -0
- package/dist/constants.js.map +1 -0
- package/dist/dimension.d.ts +9 -0
- package/dist/dimension.d.ts.map +1 -0
- package/dist/dimension.js +19 -0
- package/dist/dimension.js.map +1 -0
- package/dist/group.d.ts +33 -0
- package/dist/group.d.ts.map +1 -0
- package/dist/group.js +148 -0
- package/dist/group.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/netcdf4.d.ts +43 -0
- package/dist/netcdf4.d.ts.map +1 -0
- package/dist/netcdf4.js +407 -0
- package/dist/netcdf4.js.map +1 -0
- package/dist/netcdf4.wasm +0 -0
- package/dist/test-setup.d.ts +13 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +79 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/types.d.ts +72 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/variable.d.ts +36 -0
- package/dist/variable.d.ts.map +1 -0
- package/dist/variable.js +152 -0
- package/dist/variable.js.map +1 -0
- package/dist/wasm-module.d.ts +7 -0
- package/dist/wasm-module.d.ts.map +1 -0
- package/dist/wasm-module.js +110 -0
- package/dist/wasm-module.js.map +1 -0
- package/package.json +58 -0
package/dist/group.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
dimensions = {};
|
|
10
|
+
variables = {};
|
|
11
|
+
groups = {};
|
|
12
|
+
_attributes = {};
|
|
13
|
+
constructor(netcdf, name, groupId) {
|
|
14
|
+
this.netcdf = netcdf;
|
|
15
|
+
this.name = name;
|
|
16
|
+
this.groupId = groupId;
|
|
17
|
+
}
|
|
18
|
+
// Attribute methods
|
|
19
|
+
setAttr(name, value) {
|
|
20
|
+
this._attributes[name] = value;
|
|
21
|
+
// Store in mock file system if in test mode
|
|
22
|
+
if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
|
|
23
|
+
const mockFiles = global.__netcdf4_mock_files;
|
|
24
|
+
const dataset = this.netcdf;
|
|
25
|
+
if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
|
|
26
|
+
mockFiles[dataset.filename].attributes[name] = value;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// TODO: Implement actual NetCDF global attribute setting
|
|
30
|
+
}
|
|
31
|
+
getAttr(name) {
|
|
32
|
+
// Check mock file system first if in test mode
|
|
33
|
+
if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
|
|
34
|
+
const mockFiles = global.__netcdf4_mock_files;
|
|
35
|
+
const dataset = this.netcdf;
|
|
36
|
+
if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
|
|
37
|
+
const value = mockFiles[dataset.filename].attributes[name];
|
|
38
|
+
if (value !== undefined) {
|
|
39
|
+
this._attributes[name] = value; // Sync local cache
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return this._attributes[name];
|
|
45
|
+
}
|
|
46
|
+
attrs() {
|
|
47
|
+
return Object.keys(this._attributes);
|
|
48
|
+
}
|
|
49
|
+
async createDimension(name, size) {
|
|
50
|
+
// Check for duplicate dimension name
|
|
51
|
+
if (this.dimensions[name]) {
|
|
52
|
+
throw new Error(`Dimension '${name}' already exists`);
|
|
53
|
+
}
|
|
54
|
+
// Check for invalid size values
|
|
55
|
+
if (size !== null && size < 0 && size !== NC_CONSTANTS.NC_UNLIMITED) {
|
|
56
|
+
throw new Error(`Invalid dimension size: ${size}. Size must be non-negative or null for unlimited.`);
|
|
57
|
+
}
|
|
58
|
+
// Handle unlimited dimension (null or NC_UNLIMITED constant)
|
|
59
|
+
const isUnlimited = size === null || size === NC_CONSTANTS.NC_UNLIMITED;
|
|
60
|
+
const ncSize = isUnlimited ? 0 : size; // Use 0 for unlimited in the actual NetCDF API
|
|
61
|
+
const dimid = await this.netcdf.defineDimension(this.groupId, name, ncSize);
|
|
62
|
+
const actualSize = isUnlimited ? NC_CONSTANTS.NC_UNLIMITED : size;
|
|
63
|
+
const dimension = new Dimension(name, actualSize, isUnlimited);
|
|
64
|
+
this.dimensions[name] = dimension;
|
|
65
|
+
return dimension;
|
|
66
|
+
}
|
|
67
|
+
// Load dimensions and variables from mock storage when in test mode
|
|
68
|
+
loadMockDimensions() {
|
|
69
|
+
if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
|
|
70
|
+
const mockFiles = global.__netcdf4_mock_files;
|
|
71
|
+
const dataset = this.netcdf;
|
|
72
|
+
if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
|
|
73
|
+
// Load dimensions
|
|
74
|
+
const mockDims = mockFiles[dataset.filename].dimensions;
|
|
75
|
+
for (const [name, dimData] of Object.entries(mockDims)) {
|
|
76
|
+
const dimension = new Dimension(name, dimData.size, dimData.unlimited);
|
|
77
|
+
this.dimensions[name] = dimension;
|
|
78
|
+
}
|
|
79
|
+
// Load variables
|
|
80
|
+
const mockVars = mockFiles[dataset.filename].variables;
|
|
81
|
+
for (const [name, varData] of Object.entries(mockVars)) {
|
|
82
|
+
const varInfo = varData;
|
|
83
|
+
// Reconstruct variable - for now, assume double datatype and no dimensions for simplicity
|
|
84
|
+
const variable = new Variable(this.netcdf, name, varInfo.datatype || 'f8', varInfo.dimensions || [], 1, this.groupId);
|
|
85
|
+
// Restore variable attributes
|
|
86
|
+
if (varInfo.attributes) {
|
|
87
|
+
for (const [attrName, attrValue] of Object.entries(varInfo.attributes)) {
|
|
88
|
+
variable.setAttr(attrName, attrValue);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.variables[name] = variable;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async createVariable(name, datatype, dimensions = [], options = {}) {
|
|
97
|
+
const ncType = DATA_TYPE_MAP[datatype];
|
|
98
|
+
if (ncType === undefined) {
|
|
99
|
+
throw new Error(`Unsupported datatype: ${datatype}`);
|
|
100
|
+
}
|
|
101
|
+
// Get dimension IDs
|
|
102
|
+
const dimIds = dimensions.map(dimName => {
|
|
103
|
+
const dim = this.dimensions[dimName];
|
|
104
|
+
if (!dim) {
|
|
105
|
+
throw new Error(`Dimension '${dimName}' not found`);
|
|
106
|
+
}
|
|
107
|
+
// For now, we'll use the dimension name as ID (simplified)
|
|
108
|
+
return Object.keys(this.dimensions).indexOf(dimName);
|
|
109
|
+
});
|
|
110
|
+
const varid = await this.netcdf.defineVariable(this.groupId, name, ncType, dimIds);
|
|
111
|
+
const variable = new Variable(this.netcdf, name, datatype, dimensions, varid, this.groupId);
|
|
112
|
+
this.variables[name] = variable;
|
|
113
|
+
// Store variable metadata in mock storage if in test mode
|
|
114
|
+
if (typeof process !== 'undefined' && process.env.NODE_ENV === 'test') {
|
|
115
|
+
const mockFiles = global.__netcdf4_mock_files;
|
|
116
|
+
const dataset = this.netcdf;
|
|
117
|
+
if (mockFiles && dataset.filename && mockFiles[dataset.filename]) {
|
|
118
|
+
mockFiles[dataset.filename].variables[name] = {
|
|
119
|
+
datatype: datatype,
|
|
120
|
+
dimensions: dimensions,
|
|
121
|
+
data: new Float64Array(0),
|
|
122
|
+
attributes: {}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return variable;
|
|
127
|
+
}
|
|
128
|
+
createGroup(name) {
|
|
129
|
+
// For simplicity, groups use the same ncid for now
|
|
130
|
+
const group = new Group(this.netcdf, name, this.groupId);
|
|
131
|
+
this.groups[name] = group;
|
|
132
|
+
return group;
|
|
133
|
+
}
|
|
134
|
+
// Python-like method to get all children
|
|
135
|
+
children() {
|
|
136
|
+
return this.groups;
|
|
137
|
+
}
|
|
138
|
+
// Get group path (Python-like)
|
|
139
|
+
get path() {
|
|
140
|
+
if (this.name === '')
|
|
141
|
+
return '/';
|
|
142
|
+
return `/${this.name}`;
|
|
143
|
+
}
|
|
144
|
+
toString() {
|
|
145
|
+
return `<netCDF4.Group '${this.path}'>`;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../src/group.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { NetCDF4 } from './netcdf4.js';
|
|
2
|
+
export { Variable } from './variable.js';
|
|
3
|
+
export { Dimension } from './dimension.js';
|
|
4
|
+
export { Group } from './group.js';
|
|
5
|
+
export { NC_CONSTANTS, DATA_TYPE_MAP } from './constants.js';
|
|
6
|
+
export type { EmscriptenModule, NetCDF4Module, NetCDF4WasmOptions, DatasetOptions, VariableOptions, MemoryDatasetSource, DatasetSource } from './types.js';
|
|
7
|
+
export { NetCDF4 as default } from './netcdf4.js';
|
|
8
|
+
import { NetCDF4 } from './netcdf4.js';
|
|
9
|
+
import type { DatasetOptions, DatasetSource } from './types.js';
|
|
10
|
+
export declare function Dataset(source: DatasetSource, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
11
|
+
export declare function DatasetFromBlob(blob: Blob, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
12
|
+
export declare function DatasetFromArrayBuffer(buffer: ArrayBuffer, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
13
|
+
export declare function DatasetFromMemory(data: Uint8Array | ArrayBuffer, mode?: string, options?: DatasetOptions, filename?: string): Promise<NetCDF4>;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG7D,YAAY,EACR,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAsB,OAAO,CACzB,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,MAAY,EAClB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAGD,wBAAsB,eAAe,CACjC,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,MAAY,EAClB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,WAAW,EACnB,IAAI,GAAE,MAAY,EAClB,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,iBAAiB,CACnC,IAAI,EAAE,UAAU,GAAG,WAAW,EAC9B,IAAI,GAAE,MAAY,EAClB,OAAO,GAAE,cAAmB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAKlB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// NetCDF4 WASM - Main entry point
|
|
2
|
+
// JavaScript API modeled on netcdf4-python for familiarity
|
|
3
|
+
// Export all classes and types
|
|
4
|
+
export { NetCDF4 } from './netcdf4.js';
|
|
5
|
+
export { Variable } from './variable.js';
|
|
6
|
+
export { Dimension } from './dimension.js';
|
|
7
|
+
export { Group } from './group.js';
|
|
8
|
+
export { NC_CONSTANTS, DATA_TYPE_MAP } from './constants.js';
|
|
9
|
+
// Re-export NetCDF4 as default for backwards compatibility
|
|
10
|
+
export { NetCDF4 as default } from './netcdf4.js';
|
|
11
|
+
// Polymorphic Dataset constructor - accepts filename, Blob, ArrayBuffer, or Uint8Array
|
|
12
|
+
import { NetCDF4 } from './netcdf4.js';
|
|
13
|
+
export async function Dataset(source, mode = 'r', options = {}) {
|
|
14
|
+
// Type detection and routing
|
|
15
|
+
if (typeof source === 'string') {
|
|
16
|
+
// File path
|
|
17
|
+
return await NetCDF4.Dataset(source, mode, options);
|
|
18
|
+
}
|
|
19
|
+
else if (source instanceof Blob) {
|
|
20
|
+
// Blob object
|
|
21
|
+
return await NetCDF4.fromBlob(source, mode, options);
|
|
22
|
+
}
|
|
23
|
+
else if (source instanceof ArrayBuffer) {
|
|
24
|
+
// ArrayBuffer
|
|
25
|
+
return await NetCDF4.fromArrayBuffer(source, mode, options);
|
|
26
|
+
}
|
|
27
|
+
else if (source instanceof Uint8Array) {
|
|
28
|
+
// Uint8Array
|
|
29
|
+
return await NetCDF4.fromMemory(source, mode, options);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
throw new Error('Invalid source type. Expected string, Blob, ArrayBuffer, or Uint8Array.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Legacy convenience functions for backward compatibility
|
|
36
|
+
export async function DatasetFromBlob(blob, mode = 'r', options = {}) {
|
|
37
|
+
return await Dataset(blob, mode, options);
|
|
38
|
+
}
|
|
39
|
+
export async function DatasetFromArrayBuffer(buffer, mode = 'r', options = {}) {
|
|
40
|
+
return await Dataset(buffer, mode, options);
|
|
41
|
+
}
|
|
42
|
+
export async function DatasetFromMemory(data, mode = 'r', options = {}, filename) {
|
|
43
|
+
if (filename) {
|
|
44
|
+
return await NetCDF4.fromMemory(data, mode, options, filename);
|
|
45
|
+
}
|
|
46
|
+
return await Dataset(data, mode, options);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,2DAA2D;AAE3D,+BAA+B;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAa7D,2DAA2D;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAElD,uFAAuF;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,MAAqB,EACrB,OAAe,GAAG,EAClB,UAA0B,EAAE;IAE5B,6BAA6B;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,YAAY;QACZ,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QAChC,cAAc;QACd,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;SAAM,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;QACvC,cAAc;QACd,OAAO,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,MAAM,YAAY,UAAU,EAAE,CAAC;QACtC,aAAa;QACb,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC/F,CAAC;AACL,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,IAAU,EACV,OAAe,GAAG,EAClB,UAA0B,EAAE;IAE5B,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,MAAmB,EACnB,OAAe,GAAG,EAClB,UAA0B,EAAE;IAE5B,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACnC,IAA8B,EAC9B,OAAe,GAAG,EAClB,UAA0B,EAAE,EAC5B,QAAiB;IAEjB,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Group } from './group.js';
|
|
2
|
+
import type { NetCDF4Module, DatasetOptions } from './types.js';
|
|
3
|
+
export declare class NetCDF4 extends Group {
|
|
4
|
+
private filename?;
|
|
5
|
+
private mode;
|
|
6
|
+
private options;
|
|
7
|
+
private module;
|
|
8
|
+
private initialized;
|
|
9
|
+
private ncid;
|
|
10
|
+
private _isOpen;
|
|
11
|
+
private memorySource?;
|
|
12
|
+
constructor(filename?: string | undefined, mode?: string, options?: DatasetOptions);
|
|
13
|
+
initialize(): Promise<void>;
|
|
14
|
+
static Dataset(filename: string, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
15
|
+
static fromBlob(blob: Blob, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
16
|
+
static fromArrayBuffer(buffer: ArrayBuffer, mode?: string, options?: DatasetOptions): Promise<NetCDF4>;
|
|
17
|
+
static fromMemory(data: Uint8Array | ArrayBuffer, mode?: string, options?: DatasetOptions, filename?: string): Promise<NetCDF4>;
|
|
18
|
+
private open;
|
|
19
|
+
get file_format(): string;
|
|
20
|
+
get disk_format(): string;
|
|
21
|
+
get filepath(): string;
|
|
22
|
+
get isopen(): boolean;
|
|
23
|
+
isInitialized(): boolean;
|
|
24
|
+
getModule(): NetCDF4Module;
|
|
25
|
+
close(): Promise<void>;
|
|
26
|
+
sync(): Promise<void>;
|
|
27
|
+
__aenter__(): Promise<NetCDF4>;
|
|
28
|
+
__aexit__(): Promise<void>;
|
|
29
|
+
openFile(path: string, mode?: 'r' | 'w' | 'a'): Promise<number>;
|
|
30
|
+
createFile(path: string, mode?: number): Promise<number>;
|
|
31
|
+
closeFile(ncid: number): Promise<void>;
|
|
32
|
+
defineDimension(ncid: number, name: string, size: number): Promise<number>;
|
|
33
|
+
defineVariable(ncid: number, name: string, type: number, dimids: number[]): Promise<number>;
|
|
34
|
+
endDefineMode(ncid: number): Promise<void>;
|
|
35
|
+
putVariableDouble(ncid: number, varid: number, data: Float64Array): Promise<void>;
|
|
36
|
+
getVariableDouble(ncid: number, varid: number, size: number): Promise<Float64Array>;
|
|
37
|
+
private createMockModule;
|
|
38
|
+
private mountMemoryData;
|
|
39
|
+
toArrayBuffer(): Promise<ArrayBuffer>;
|
|
40
|
+
toBlob(type?: string): Promise<Blob>;
|
|
41
|
+
toString(): string;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=netcdf4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netcdf4.d.ts","sourceRoot":"","sources":["../src/netcdf4.ts"],"names":[],"mappings":"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"}
|