@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/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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"}
@@ -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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"}