@loaders.gl/netcdf 3.4.14 → 3.4.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"iobuffer.js","names":["DEFAULT_BYTE_LENGTH","IOBuffer","data","arguments","length","undefined","options","_classCallCheck2","default","_defineProperty2","TextDecoder","TextEncoder","dataIsGiven","ArrayBuffer","lastWrittenByte","byteLength","offset","dvOffset","isView","buffer","byteOffset","littleEndian","_data","DataView","_mark","_marks","_createClass2","key","value","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","n","seek","mark","reset","pushMark","push","popMark","pop","Error","rewind","ensureAvailable","lengthNeeded","newLength","newArray","Uint8Array","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","bytes","i","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","String","fromCharCode","readChars","result","readUtf8","textDecoder","decode","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","str","charCodeAt","writeChars","writeUtf8","textEncoder","encode","toArray","exports"],"sources":["../../../src/iobuffer/iobuffer.ts"],"sourcesContent":["const DEFAULT_BYTE_LENGTH = 1024 * 8;\n\ntype InputData = number | ArrayBufferLike | ArrayBufferView | IOBuffer | Buffer;\n\ninterface IOBufferOptions {\n /**\n * Ignore the first n bytes of the ArrayBuffer.\n */\n offset?: number;\n}\n\nexport class IOBuffer {\n /**\n * Reference to the internal ArrayBuffer object.\n */\n public buffer: ArrayBufferLike;\n\n /**\n * Byte length of the internal ArrayBuffer.\n */\n public byteLength: number;\n\n /**\n * Byte offset of the internal ArrayBuffer.\n */\n public byteOffset: number;\n\n /**\n * Byte length of the internal ArrayBuffer.\n */\n public length: number;\n\n /**\n * The current offset of the buffer's pointer.\n */\n public offset: number;\n\n private lastWrittenByte: number;\n private littleEndian: boolean;\n\n private _data: DataView;\n private _mark: number;\n private _marks: number[];\n\n private textDecoder = new TextDecoder();\n private textEncoder = new TextEncoder();\n\n /**\n * @param data - The data to construct the IOBuffer with.\n * If data is a number, it will be the new buffer's length<br>\n * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n * @param options\n */\n public constructor(data: InputData = DEFAULT_BYTE_LENGTH, options: IOBufferOptions = {}) {\n let dataIsGiven = false;\n if (typeof data === 'number') {\n data = new ArrayBuffer(data);\n } else {\n dataIsGiven = true;\n this.lastWrittenByte = data.byteLength;\n }\n\n const offset = options.offset ? options.offset >>> 0 : 0;\n const byteLength = data.byteLength - offset;\n let dvOffset = offset;\n if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n if (data.byteLength !== data.buffer.byteLength) {\n dvOffset = data.byteOffset + offset;\n }\n data = data.buffer;\n }\n if (dataIsGiven) {\n this.lastWrittenByte = byteLength;\n } else {\n this.lastWrittenByte = 0;\n }\n this.buffer = data;\n this.length = byteLength;\n this.byteLength = byteLength;\n this.byteOffset = dvOffset;\n this.offset = 0;\n this.littleEndian = true;\n this._data = new DataView(this.buffer, dvOffset, byteLength);\n this._mark = 0;\n this._marks = [];\n }\n\n /**\n * Checks if the memory allocated to the buffer is sufficient to store more\n * bytes after the offset.\n * @param byteLength - The needed memory in bytes.\n * @returns `true` if there is sufficient space and `false` otherwise.\n */\n public available(byteLength = 1): boolean {\n return this.offset + byteLength <= this.length;\n }\n\n /**\n * Check if little-endian mode is used for reading and writing multi-byte\n * values.\n * @returns `true` if little-endian mode is used, `false` otherwise.\n */\n public isLittleEndian(): boolean {\n return this.littleEndian;\n }\n\n /**\n * Set little-endian mode for reading and writing multi-byte values.\n */\n public setLittleEndian(): this {\n this.littleEndian = true;\n return this;\n }\n\n /**\n * Check if big-endian mode is used for reading and writing multi-byte values.\n * @returns `true` if big-endian mode is used, `false` otherwise.\n */\n public isBigEndian(): boolean {\n return !this.littleEndian;\n }\n\n /**\n * Switches to big-endian mode for reading and writing multi-byte values.\n */\n public setBigEndian(): this {\n this.littleEndian = false;\n return this;\n }\n\n /**\n * Move the pointer n bytes forward.\n * @param n - Number of bytes to skip.\n */\n public skip(n = 1): this {\n this.offset += n;\n return this;\n }\n\n /**\n * Move the pointer to the given offset.\n * @param offset\n */\n public seek(offset: number): this {\n this.offset = offset;\n return this;\n }\n\n /**\n * Store the current pointer offset.\n * @see {@link IOBuffer#reset}\n */\n public mark(): this {\n this._mark = this.offset;\n return this;\n }\n\n /**\n * Move the pointer back to the last pointer offset set by mark.\n * @see {@link IOBuffer#mark}\n */\n public reset(): this {\n this.offset = this._mark;\n return this;\n }\n\n /**\n * Push the current pointer offset to the mark stack.\n * @see {@link IOBuffer#popMark}\n */\n public pushMark(): this {\n this._marks.push(this.offset);\n return this;\n }\n\n /**\n * Pop the last pointer offset from the mark stack, and set the current\n * pointer offset to the popped value.\n * @see {@link IOBuffer#pushMark}\n */\n public popMark(): this {\n const offset = this._marks.pop();\n if (offset === undefined) {\n throw new Error('Mark stack empty');\n }\n this.seek(offset);\n return this;\n }\n\n /**\n * Move the pointer offset back to 0.\n */\n public rewind(): this {\n this.offset = 0;\n return this;\n }\n\n /**\n * Make sure the buffer has sufficient memory to write a given byteLength at\n * the current pointer offset.\n * If the buffer's memory is insufficient, this method will create a new\n * buffer (a copy) with a length that is twice (byteLength + current offset).\n * @param byteLength\n */\n public ensureAvailable(byteLength = 1): this {\n if (!this.available(byteLength)) {\n const lengthNeeded = this.offset + byteLength;\n const newLength = lengthNeeded * 2;\n const newArray = new Uint8Array(newLength);\n newArray.set(new Uint8Array(this.buffer));\n this.buffer = newArray.buffer;\n this.length = this.byteLength = newLength;\n this._data = new DataView(this.buffer);\n }\n return this;\n }\n\n /**\n * Read a byte and return false if the byte's value is 0, or true otherwise.\n * Moves pointer forward by one byte.\n */\n public readBoolean(): boolean {\n return this.readUint8() !== 0;\n }\n\n /**\n * Read a signed 8-bit integer and move pointer forward by 1 byte.\n */\n public readInt8(): number {\n return this._data.getInt8(this.offset++);\n }\n\n /**\n * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n */\n public readUint8(): number {\n return this._data.getUint8(this.offset++);\n }\n\n /**\n * Alias for {@link IOBuffer#readUint8}.\n */\n public readByte(): number {\n return this.readUint8();\n }\n\n /**\n * Read `n` bytes and move pointer forward by `n` bytes.\n */\n public readBytes(n = 1): Uint8Array {\n const bytes = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n bytes[i] = this.readByte();\n }\n return bytes;\n }\n\n /**\n * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n */\n public readInt16(): number {\n const value = this._data.getInt16(this.offset, this.littleEndian);\n this.offset += 2;\n return value;\n }\n\n /**\n * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n */\n public readUint16(): number {\n const value = this._data.getUint16(this.offset, this.littleEndian);\n this.offset += 2;\n return value;\n }\n\n /**\n * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n */\n public readInt32(): number {\n const value = this._data.getInt32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n */\n public readUint32(): number {\n const value = this._data.getUint32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 32-bit floating number and move pointer forward by 4 bytes.\n */\n public readFloat32(): number {\n const value = this._data.getFloat32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 64-bit floating number and move pointer forward by 8 bytes.\n */\n public readFloat64(): number {\n const value = this._data.getFloat64(this.offset, this.littleEndian);\n this.offset += 8;\n return value;\n }\n\n /**\n * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n */\n public readChar(): string {\n return String.fromCharCode(this.readInt8());\n }\n\n /**\n * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n */\n public readChars(n = 1): string {\n let result = '';\n for (let i = 0; i < n; i++) {\n result += this.readChar();\n }\n return result;\n }\n\n /**\n * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n * forward by `n` bytes.\n */\n public readUtf8(n = 1): string {\n return this.textDecoder.decode(this.readBytes(n));\n }\n\n /**\n * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n * forward by 1 byte.\n */\n public writeBoolean(value: unknown): this {\n this.writeUint8(value ? 0xff : 0x00);\n return this;\n }\n\n /**\n * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n */\n public writeInt8(value: number): this {\n this.ensureAvailable(1);\n this._data.setInt8(this.offset++, value);\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n * byte.\n */\n public writeUint8(value: number): this {\n this.ensureAvailable(1);\n this._data.setUint8(this.offset++, value);\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * An alias for {@link IOBuffer#writeUint8}.\n */\n public writeByte(value: number): this {\n return this.writeUint8(value);\n }\n\n /**\n * Write all elements of `bytes` as uint8 values and move pointer forward by\n * `bytes.length` bytes.\n */\n public writeBytes(bytes: ArrayLike<number>): this {\n this.ensureAvailable(bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n this._data.setUint8(this.offset++, bytes[i]);\n }\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 16-bit signed integer and move pointer forward by 2\n * bytes.\n */\n public writeInt16(value: number): this {\n this.ensureAvailable(2);\n this._data.setInt16(this.offset, value, this.littleEndian);\n this.offset += 2;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n * bytes.\n */\n public writeUint16(value: number): this {\n this.ensureAvailable(2);\n this._data.setUint16(this.offset, value, this.littleEndian);\n this.offset += 2;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit signed integer and move pointer forward by 4\n * bytes.\n */\n public writeInt32(value: number): this {\n this.ensureAvailable(4);\n this._data.setInt32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n * bytes.\n */\n public writeUint32(value: number): this {\n this.ensureAvailable(4);\n this._data.setUint32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit floating number and move pointer forward by 4\n * bytes.\n */\n public writeFloat32(value: number): this {\n this.ensureAvailable(4);\n this._data.setFloat32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 64-bit floating number and move pointer forward by 8\n * bytes.\n */\n public writeFloat64(value: number): this {\n this.ensureAvailable(8);\n this._data.setFloat64(this.offset, value, this.littleEndian);\n this.offset += 8;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n * and move pointer forward by 1 byte.\n */\n public writeChar(str: string): this {\n return this.writeUint8(str.charCodeAt(0));\n }\n\n /**\n * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n * and move pointer forward by `str.length` bytes.\n */\n public writeChars(str: string): this {\n for (let i = 0; i < str.length; i++) {\n this.writeUint8(str.charCodeAt(i));\n }\n return this;\n }\n\n /**\n * UTF-8 encode and write `str` to the current pointer offset and move pointer\n * forward according to the encoded length.\n */\n public writeUtf8(str: string): this {\n const bytes = this.textEncoder.encode(str);\n return this.writeBytes(bytes);\n }\n\n /**\n * Export a Uint8Array view of the internal buffer.\n * The view starts at the byte offset and its length\n * is calculated to stop at the last written byte or the original length.\n */\n public toArray(): Uint8Array {\n return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n }\n\n /**\n * Update the last written byte offset\n * @private\n */\n private _updateLastWrittenByte(): void {\n if (this.offset > this.lastWrittenByte) {\n this.lastWrittenByte = this.offset;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"iobuffer.js","names":["DEFAULT_BYTE_LENGTH","IOBuffer","constructor","data","arguments","length","undefined","options","_defineProperty2","default","TextDecoder","TextEncoder","dataIsGiven","ArrayBuffer","lastWrittenByte","byteLength","offset","dvOffset","isView","buffer","byteOffset","littleEndian","_data","DataView","_mark","_marks","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","n","seek","mark","reset","pushMark","push","popMark","pop","Error","rewind","ensureAvailable","lengthNeeded","newLength","newArray","Uint8Array","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","bytes","i","readInt16","value","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","String","fromCharCode","readChars","result","readUtf8","textDecoder","decode","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","str","charCodeAt","writeChars","writeUtf8","textEncoder","encode","toArray","exports"],"sources":["../../../src/iobuffer/iobuffer.ts"],"sourcesContent":["const DEFAULT_BYTE_LENGTH = 1024 * 8;\n\ntype InputData = number | ArrayBufferLike | ArrayBufferView | IOBuffer | Buffer;\n\ninterface IOBufferOptions {\n /**\n * Ignore the first n bytes of the ArrayBuffer.\n */\n offset?: number;\n}\n\nexport class IOBuffer {\n /**\n * Reference to the internal ArrayBuffer object.\n */\n public buffer: ArrayBufferLike;\n\n /**\n * Byte length of the internal ArrayBuffer.\n */\n public byteLength: number;\n\n /**\n * Byte offset of the internal ArrayBuffer.\n */\n public byteOffset: number;\n\n /**\n * Byte length of the internal ArrayBuffer.\n */\n public length: number;\n\n /**\n * The current offset of the buffer's pointer.\n */\n public offset: number;\n\n private lastWrittenByte: number;\n private littleEndian: boolean;\n\n private _data: DataView;\n private _mark: number;\n private _marks: number[];\n\n private textDecoder = new TextDecoder();\n private textEncoder = new TextEncoder();\n\n /**\n * @param data - The data to construct the IOBuffer with.\n * If data is a number, it will be the new buffer's length<br>\n * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n * @param options\n */\n public constructor(data: InputData = DEFAULT_BYTE_LENGTH, options: IOBufferOptions = {}) {\n let dataIsGiven = false;\n if (typeof data === 'number') {\n data = new ArrayBuffer(data);\n } else {\n dataIsGiven = true;\n this.lastWrittenByte = data.byteLength;\n }\n\n const offset = options.offset ? options.offset >>> 0 : 0;\n const byteLength = data.byteLength - offset;\n let dvOffset = offset;\n if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n if (data.byteLength !== data.buffer.byteLength) {\n dvOffset = data.byteOffset + offset;\n }\n data = data.buffer;\n }\n if (dataIsGiven) {\n this.lastWrittenByte = byteLength;\n } else {\n this.lastWrittenByte = 0;\n }\n this.buffer = data;\n this.length = byteLength;\n this.byteLength = byteLength;\n this.byteOffset = dvOffset;\n this.offset = 0;\n this.littleEndian = true;\n this._data = new DataView(this.buffer, dvOffset, byteLength);\n this._mark = 0;\n this._marks = [];\n }\n\n /**\n * Checks if the memory allocated to the buffer is sufficient to store more\n * bytes after the offset.\n * @param byteLength - The needed memory in bytes.\n * @returns `true` if there is sufficient space and `false` otherwise.\n */\n public available(byteLength = 1): boolean {\n return this.offset + byteLength <= this.length;\n }\n\n /**\n * Check if little-endian mode is used for reading and writing multi-byte\n * values.\n * @returns `true` if little-endian mode is used, `false` otherwise.\n */\n public isLittleEndian(): boolean {\n return this.littleEndian;\n }\n\n /**\n * Set little-endian mode for reading and writing multi-byte values.\n */\n public setLittleEndian(): this {\n this.littleEndian = true;\n return this;\n }\n\n /**\n * Check if big-endian mode is used for reading and writing multi-byte values.\n * @returns `true` if big-endian mode is used, `false` otherwise.\n */\n public isBigEndian(): boolean {\n return !this.littleEndian;\n }\n\n /**\n * Switches to big-endian mode for reading and writing multi-byte values.\n */\n public setBigEndian(): this {\n this.littleEndian = false;\n return this;\n }\n\n /**\n * Move the pointer n bytes forward.\n * @param n - Number of bytes to skip.\n */\n public skip(n = 1): this {\n this.offset += n;\n return this;\n }\n\n /**\n * Move the pointer to the given offset.\n * @param offset\n */\n public seek(offset: number): this {\n this.offset = offset;\n return this;\n }\n\n /**\n * Store the current pointer offset.\n * @see {@link IOBuffer#reset}\n */\n public mark(): this {\n this._mark = this.offset;\n return this;\n }\n\n /**\n * Move the pointer back to the last pointer offset set by mark.\n * @see {@link IOBuffer#mark}\n */\n public reset(): this {\n this.offset = this._mark;\n return this;\n }\n\n /**\n * Push the current pointer offset to the mark stack.\n * @see {@link IOBuffer#popMark}\n */\n public pushMark(): this {\n this._marks.push(this.offset);\n return this;\n }\n\n /**\n * Pop the last pointer offset from the mark stack, and set the current\n * pointer offset to the popped value.\n * @see {@link IOBuffer#pushMark}\n */\n public popMark(): this {\n const offset = this._marks.pop();\n if (offset === undefined) {\n throw new Error('Mark stack empty');\n }\n this.seek(offset);\n return this;\n }\n\n /**\n * Move the pointer offset back to 0.\n */\n public rewind(): this {\n this.offset = 0;\n return this;\n }\n\n /**\n * Make sure the buffer has sufficient memory to write a given byteLength at\n * the current pointer offset.\n * If the buffer's memory is insufficient, this method will create a new\n * buffer (a copy) with a length that is twice (byteLength + current offset).\n * @param byteLength\n */\n public ensureAvailable(byteLength = 1): this {\n if (!this.available(byteLength)) {\n const lengthNeeded = this.offset + byteLength;\n const newLength = lengthNeeded * 2;\n const newArray = new Uint8Array(newLength);\n newArray.set(new Uint8Array(this.buffer));\n this.buffer = newArray.buffer;\n this.length = this.byteLength = newLength;\n this._data = new DataView(this.buffer);\n }\n return this;\n }\n\n /**\n * Read a byte and return false if the byte's value is 0, or true otherwise.\n * Moves pointer forward by one byte.\n */\n public readBoolean(): boolean {\n return this.readUint8() !== 0;\n }\n\n /**\n * Read a signed 8-bit integer and move pointer forward by 1 byte.\n */\n public readInt8(): number {\n return this._data.getInt8(this.offset++);\n }\n\n /**\n * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n */\n public readUint8(): number {\n return this._data.getUint8(this.offset++);\n }\n\n /**\n * Alias for {@link IOBuffer#readUint8}.\n */\n public readByte(): number {\n return this.readUint8();\n }\n\n /**\n * Read `n` bytes and move pointer forward by `n` bytes.\n */\n public readBytes(n = 1): Uint8Array {\n const bytes = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n bytes[i] = this.readByte();\n }\n return bytes;\n }\n\n /**\n * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n */\n public readInt16(): number {\n const value = this._data.getInt16(this.offset, this.littleEndian);\n this.offset += 2;\n return value;\n }\n\n /**\n * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n */\n public readUint16(): number {\n const value = this._data.getUint16(this.offset, this.littleEndian);\n this.offset += 2;\n return value;\n }\n\n /**\n * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n */\n public readInt32(): number {\n const value = this._data.getInt32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n */\n public readUint32(): number {\n const value = this._data.getUint32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 32-bit floating number and move pointer forward by 4 bytes.\n */\n public readFloat32(): number {\n const value = this._data.getFloat32(this.offset, this.littleEndian);\n this.offset += 4;\n return value;\n }\n\n /**\n * Read a 64-bit floating number and move pointer forward by 8 bytes.\n */\n public readFloat64(): number {\n const value = this._data.getFloat64(this.offset, this.littleEndian);\n this.offset += 8;\n return value;\n }\n\n /**\n * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n */\n public readChar(): string {\n return String.fromCharCode(this.readInt8());\n }\n\n /**\n * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n */\n public readChars(n = 1): string {\n let result = '';\n for (let i = 0; i < n; i++) {\n result += this.readChar();\n }\n return result;\n }\n\n /**\n * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n * forward by `n` bytes.\n */\n public readUtf8(n = 1): string {\n return this.textDecoder.decode(this.readBytes(n));\n }\n\n /**\n * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n * forward by 1 byte.\n */\n public writeBoolean(value: unknown): this {\n this.writeUint8(value ? 0xff : 0x00);\n return this;\n }\n\n /**\n * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n */\n public writeInt8(value: number): this {\n this.ensureAvailable(1);\n this._data.setInt8(this.offset++, value);\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n * byte.\n */\n public writeUint8(value: number): this {\n this.ensureAvailable(1);\n this._data.setUint8(this.offset++, value);\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * An alias for {@link IOBuffer#writeUint8}.\n */\n public writeByte(value: number): this {\n return this.writeUint8(value);\n }\n\n /**\n * Write all elements of `bytes` as uint8 values and move pointer forward by\n * `bytes.length` bytes.\n */\n public writeBytes(bytes: ArrayLike<number>): this {\n this.ensureAvailable(bytes.length);\n for (let i = 0; i < bytes.length; i++) {\n this._data.setUint8(this.offset++, bytes[i]);\n }\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 16-bit signed integer and move pointer forward by 2\n * bytes.\n */\n public writeInt16(value: number): this {\n this.ensureAvailable(2);\n this._data.setInt16(this.offset, value, this.littleEndian);\n this.offset += 2;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n * bytes.\n */\n public writeUint16(value: number): this {\n this.ensureAvailable(2);\n this._data.setUint16(this.offset, value, this.littleEndian);\n this.offset += 2;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit signed integer and move pointer forward by 4\n * bytes.\n */\n public writeInt32(value: number): this {\n this.ensureAvailable(4);\n this._data.setInt32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n * bytes.\n */\n public writeUint32(value: number): this {\n this.ensureAvailable(4);\n this._data.setUint32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 32-bit floating number and move pointer forward by 4\n * bytes.\n */\n public writeFloat32(value: number): this {\n this.ensureAvailable(4);\n this._data.setFloat32(this.offset, value, this.littleEndian);\n this.offset += 4;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write `value` as a 64-bit floating number and move pointer forward by 8\n * bytes.\n */\n public writeFloat64(value: number): this {\n this.ensureAvailable(8);\n this._data.setFloat64(this.offset, value, this.littleEndian);\n this.offset += 8;\n this._updateLastWrittenByte();\n return this;\n }\n\n /**\n * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n * and move pointer forward by 1 byte.\n */\n public writeChar(str: string): this {\n return this.writeUint8(str.charCodeAt(0));\n }\n\n /**\n * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n * and move pointer forward by `str.length` bytes.\n */\n public writeChars(str: string): this {\n for (let i = 0; i < str.length; i++) {\n this.writeUint8(str.charCodeAt(i));\n }\n return this;\n }\n\n /**\n * UTF-8 encode and write `str` to the current pointer offset and move pointer\n * forward according to the encoded length.\n */\n public writeUtf8(str: string): this {\n const bytes = this.textEncoder.encode(str);\n return this.writeBytes(bytes);\n }\n\n /**\n * Export a Uint8Array view of the internal buffer.\n * The view starts at the byte offset and its length\n * is calculated to stop at the last written byte or the original length.\n */\n public toArray(): Uint8Array {\n return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n }\n\n /**\n * Update the last written byte offset\n * @private\n */\n private _updateLastWrittenByte(): void {\n if (this.offset > this.lastWrittenByte) {\n this.lastWrittenByte = this.offset;\n }\n }\n}\n"],"mappings":"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"}
@@ -1,21 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports._typecheckNetCDFWorkerLoader = exports._typecheckNetCDFLoader = exports.NetCDFWorkerLoader = exports.NetCDFLoader = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
7
  var _netcdfReader = require("./netcdfjs/netcdf-reader");
12
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
13
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
17
- var VERSION = typeof "3.4.14" !== 'undefined' ? "3.4.14" : 'latest';
18
- var NetCDFWorkerLoader = {
8
+ const VERSION = typeof "3.4.15" !== 'undefined' ? "3.4.15" : 'latest';
9
+ const NetCDFWorkerLoader = {
19
10
  name: 'NetCDF',
20
11
  id: 'mvt',
21
12
  module: 'mvt',
@@ -30,43 +21,19 @@ var NetCDFWorkerLoader = {
30
21
  }
31
22
  };
32
23
  exports.NetCDFWorkerLoader = NetCDFWorkerLoader;
33
- var NetCDFLoader = _objectSpread(_objectSpread({}, NetCDFWorkerLoader), {}, {
34
- parse: function () {
35
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
36
- return _regenerator.default.wrap(function _callee$(_context) {
37
- while (1) switch (_context.prev = _context.next) {
38
- case 0:
39
- return _context.abrupt("return", parseNetCDF(arrayBuffer, options));
40
- case 1:
41
- case "end":
42
- return _context.stop();
43
- }
44
- }, _callee);
45
- }));
46
- function parse(_x, _x2) {
47
- return _parse.apply(this, arguments);
48
- }
49
- return parse;
50
- }(),
24
+ const NetCDFLoader = {
25
+ ...NetCDFWorkerLoader,
26
+ parse: async (arrayBuffer, options) => parseNetCDF(arrayBuffer, options),
51
27
  binary: true
52
- });
28
+ };
53
29
  exports.NetCDFLoader = NetCDFLoader;
54
30
  function parseNetCDF(arrayBuffer, options) {
55
31
  var _options$netcdf;
56
- var reader = new _netcdfReader.NetCDFReader(arrayBuffer);
57
- var variables = {};
32
+ const reader = new _netcdfReader.NetCDFReader(arrayBuffer);
33
+ const variables = {};
58
34
  if (options !== null && options !== void 0 && (_options$netcdf = options.netcdf) !== null && _options$netcdf !== void 0 && _options$netcdf.loadData) {
59
- var _iterator = _createForOfIteratorHelper(reader.variables),
60
- _step;
61
- try {
62
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
63
- var variable = _step.value;
64
- variables[variable.name] = reader.getDataVariable(variable);
65
- }
66
- } catch (err) {
67
- _iterator.e(err);
68
- } finally {
69
- _iterator.f();
35
+ for (const variable of reader.variables) {
36
+ variables[variable.name] = reader.getDataVariable(variable);
70
37
  }
71
38
  }
72
39
  return {
@@ -74,8 +41,8 @@ function parseNetCDF(arrayBuffer, options) {
74
41
  data: variables
75
42
  };
76
43
  }
77
- var _typecheckNetCDFWorkerLoader = NetCDFWorkerLoader;
44
+ const _typecheckNetCDFWorkerLoader = NetCDFWorkerLoader;
78
45
  exports._typecheckNetCDFWorkerLoader = _typecheckNetCDFWorkerLoader;
79
- var _typecheckNetCDFLoader = NetCDFLoader;
46
+ const _typecheckNetCDFLoader = NetCDFLoader;
80
47
  exports._typecheckNetCDFLoader = _typecheckNetCDFLoader;
81
48
  //# sourceMappingURL=netcdf-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netcdf-loader.js","names":["_netcdfReader","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","VERSION","NetCDFWorkerLoader","id","module","version","extensions","mimeTypes","category","options","netcdf","loadVariables","exports","NetCDFLoader","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","abrupt","parseNetCDF","stop","_x","_x2","binary","_options$netcdf","reader","NetCDFReader","variables","loadData","_iterator","_step","variable","getDataVariable","loaderData","header","data","_typecheckNetCDFWorkerLoader","_typecheckNetCDFLoader"],"sources":["../../src/netcdf-loader.ts"],"sourcesContent":["import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {NetCDFHeader} from './netcdfjs/netcdf-types';\nimport {NetCDFReader} from './netcdfjs/netcdf-reader';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type NetCDF = {\n loaderData: NetCDFHeader;\n data: {[variableName: string]: any[][]};\n};\n\nexport type NetCDFLoaderOptions = LoaderOptions & {\n netcdf?: {\n loadData?: boolean;\n };\n};\n\n/**\n * Worker loader for NETCDF\n */\nexport const NetCDFWorkerLoader = {\n name: 'NetCDF',\n id: 'mvt',\n module: 'mvt',\n version: VERSION,\n extensions: ['cdf', 'nc'],\n mimeTypes: [\n 'application/netcdf',\n 'application/x-netcdf'\n // 'application/octet-stream'\n ],\n category: 'image',\n options: {\n netcdf: {\n loadVariables: false\n }\n }\n};\n\n/**\n * Loader for the NetCDF format\n */\nexport const NetCDFLoader = {\n ...NetCDFWorkerLoader,\n parse: async (arrayBuffer, options) => parseNetCDF(arrayBuffer, options),\n binary: true\n};\n\nfunction parseNetCDF(arrayBuffer: ArrayBuffer, options?: NetCDFLoaderOptions): NetCDF {\n const reader = new NetCDFReader(arrayBuffer);\n const variables: {[variableName: string]: any[][]} = {};\n if (options?.netcdf?.loadData) {\n for (const variable of reader.variables) {\n variables[variable.name] = reader.getDataVariable(variable);\n }\n }\n return {\n loaderData: reader.header,\n data: variables\n };\n}\n\n// Type tests\nexport const _typecheckNetCDFWorkerLoader: Loader = NetCDFWorkerLoader;\nexport const _typecheckNetCDFLoader: LoaderWithParser = NetCDFLoader;\n"],"mappings":"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"}
1
+ {"version":3,"file":"netcdf-loader.js","names":["_netcdfReader","require","VERSION","NetCDFWorkerLoader","name","id","module","version","extensions","mimeTypes","category","options","netcdf","loadVariables","exports","NetCDFLoader","parse","arrayBuffer","parseNetCDF","binary","_options$netcdf","reader","NetCDFReader","variables","loadData","variable","getDataVariable","loaderData","header","data","_typecheckNetCDFWorkerLoader","_typecheckNetCDFLoader"],"sources":["../../src/netcdf-loader.ts"],"sourcesContent":["import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {NetCDFHeader} from './netcdfjs/netcdf-types';\nimport {NetCDFReader} from './netcdfjs/netcdf-reader';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type NetCDF = {\n loaderData: NetCDFHeader;\n data: {[variableName: string]: any[][]};\n};\n\nexport type NetCDFLoaderOptions = LoaderOptions & {\n netcdf?: {\n loadData?: boolean;\n };\n};\n\n/**\n * Worker loader for NETCDF\n */\nexport const NetCDFWorkerLoader = {\n name: 'NetCDF',\n id: 'mvt',\n module: 'mvt',\n version: VERSION,\n extensions: ['cdf', 'nc'],\n mimeTypes: [\n 'application/netcdf',\n 'application/x-netcdf'\n // 'application/octet-stream'\n ],\n category: 'image',\n options: {\n netcdf: {\n loadVariables: false\n }\n }\n};\n\n/**\n * Loader for the NetCDF format\n */\nexport const NetCDFLoader = {\n ...NetCDFWorkerLoader,\n parse: async (arrayBuffer, options) => parseNetCDF(arrayBuffer, options),\n binary: true\n};\n\nfunction parseNetCDF(arrayBuffer: ArrayBuffer, options?: NetCDFLoaderOptions): NetCDF {\n const reader = new NetCDFReader(arrayBuffer);\n const variables: {[variableName: string]: any[][]} = {};\n if (options?.netcdf?.loadData) {\n for (const variable of reader.variables) {\n variables[variable.name] = reader.getDataVariable(variable);\n }\n }\n return {\n loaderData: reader.header,\n data: variables\n };\n}\n\n// Type tests\nexport const _typecheckNetCDFWorkerLoader: Loader = NetCDFWorkerLoader;\nexport const _typecheckNetCDFLoader: LoaderWithParser = NetCDFLoader;\n"],"mappings":";;;;;;AAEA,IAAAA,aAAA,GAAAC,OAAA;AAIA,MAAMC,OAAO,GAAG,eAAkB,KAAK,WAAW,cAAiB,QAAQ;AAgBpE,MAAMC,kBAAkB,GAAG;EAChCC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;EACzBC,SAAS,EAAE,CACT,oBAAoB,EACpB,sBAAsB,CAEvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,OAAO,EAAE;IACPC,MAAM,EAAE;MACNC,aAAa,EAAE;IACjB;EACF;AACF,CAAC;AAACC,OAAA,CAAAX,kBAAA,GAAAA,kBAAA;AAKK,MAAMY,YAAY,GAAG;EAC1B,GAAGZ,kBAAkB;EACrBa,KAAK,EAAE,MAAAA,CAAOC,WAAW,EAAEN,OAAO,KAAKO,WAAW,CAACD,WAAW,EAAEN,OAAO,CAAC;EACxEQ,MAAM,EAAE;AACV,CAAC;AAACL,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEF,SAASG,WAAWA,CAACD,WAAwB,EAAEN,OAA6B,EAAU;EAAA,IAAAS,eAAA;EACpF,MAAMC,MAAM,GAAG,IAAIC,0BAAY,CAACL,WAAW,CAAC;EAC5C,MAAMM,SAA4C,GAAG,CAAC,CAAC;EACvD,IAAIZ,OAAO,aAAPA,OAAO,gBAAAS,eAAA,GAAPT,OAAO,CAAEC,MAAM,cAAAQ,eAAA,eAAfA,eAAA,CAAiBI,QAAQ,EAAE;IAC7B,KAAK,MAAMC,QAAQ,IAAIJ,MAAM,CAACE,SAAS,EAAE;MACvCA,SAAS,CAACE,QAAQ,CAACrB,IAAI,CAAC,GAAGiB,MAAM,CAACK,eAAe,CAACD,QAAQ,CAAC;IAC7D;EACF;EACA,OAAO;IACLE,UAAU,EAAEN,MAAM,CAACO,MAAM;IACzBC,IAAI,EAAEN;EACR,CAAC;AACH;AAGO,MAAMO,4BAAoC,GAAG3B,kBAAkB;AAACW,OAAA,CAAAgB,4BAAA,GAAAA,4BAAA;AAChE,MAAMC,sBAAwC,GAAGhB,YAAY;AAACD,OAAA,CAAAiB,sBAAA,GAAAA,sBAAA"}
@@ -5,169 +5,108 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.NetCDFReader = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
9
  var _iobuffer = require("../iobuffer/iobuffer");
12
10
  var _readHeader = require("./read-header");
13
11
  var _readData = require("./read-data");
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
- var NetCDFReader = function () {
18
- function NetCDFReader(data) {
19
- (0, _classCallCheck2.default)(this, NetCDFReader);
12
+ class NetCDFReader {
13
+ constructor(data) {
20
14
  (0, _defineProperty2.default)(this, "header", void 0);
21
15
  (0, _defineProperty2.default)(this, "buffer", void 0);
22
- var buffer = new _iobuffer.IOBuffer(data);
16
+ const buffer = new _iobuffer.IOBuffer(data);
23
17
  buffer.setBigEndian();
24
- var magic = buffer.readChars(3);
18
+ const magic = buffer.readChars(3);
25
19
  if (magic !== 'CDF') {
26
20
  throw new Error("NetCDF: file should start with 'CDF', found ".concat(magic));
27
21
  }
28
- var version = buffer.readByte();
22
+ const version = buffer.readByte();
29
23
  if (version > 2) {
30
24
  throw new Error("NetCDF: unsupported version ".concat(version));
31
25
  }
32
26
  this.header = (0, _readHeader.readNetCDFHeader)(buffer, version);
33
27
  this.buffer = buffer;
34
28
  }
35
- (0, _createClass2.default)(NetCDFReader, [{
36
- key: "version",
37
- get: function get() {
38
- if (this.header.version === 1) {
39
- return 'classic format';
40
- }
41
- return '64-bit offset format';
42
- }
43
- }, {
44
- key: "recordDimension",
45
- get: function get() {
46
- return this.header.recordDimension;
47
- }
48
- }, {
49
- key: "dimensions",
50
- get: function get() {
51
- return this.header.dimensions;
52
- }
53
- }, {
54
- key: "attributes",
55
- get: function get() {
56
- return this.header.attributes;
29
+ get version() {
30
+ if (this.header.version === 1) {
31
+ return 'classic format';
57
32
  }
58
- }, {
59
- key: "variables",
60
- get: function get() {
61
- return this.header.variables;
62
- }
63
- }, {
64
- key: "attributeExists",
65
- value: function attributeExists(attributeName) {
66
- var attribute = this.attributes.find(function (val) {
67
- return val.name === attributeName;
33
+ return '64-bit offset format';
34
+ }
35
+ get recordDimension() {
36
+ return this.header.recordDimension;
37
+ }
38
+ get dimensions() {
39
+ return this.header.dimensions;
40
+ }
41
+ get attributes() {
42
+ return this.header.attributes;
43
+ }
44
+ get variables() {
45
+ return this.header.variables;
46
+ }
47
+ attributeExists(attributeName) {
48
+ const attribute = this.attributes.find(val => val.name === attributeName);
49
+ return attribute !== undefined;
50
+ }
51
+ getAttribute(attributeName) {
52
+ const attribute = this.attributes.find(val => val.name === attributeName);
53
+ if (attribute) return attribute.value;
54
+ return null;
55
+ }
56
+ dataVariableExists(variableName) {
57
+ const variable = this.header.variables.find(function (val) {
58
+ return val.name === variableName;
59
+ });
60
+ return variable !== undefined;
61
+ }
62
+ getDataVariableAsString(variableName) {
63
+ const variable = this.getDataVariable(variableName);
64
+ if (variable) return variable.join('');
65
+ return null;
66
+ }
67
+ getDataVariable(variableName) {
68
+ let variable;
69
+ if (typeof variableName === 'string') {
70
+ variable = this.header.variables.find(function (val) {
71
+ return val.name === variableName;
68
72
  });
69
- return attribute !== undefined;
73
+ } else {
74
+ variable = variableName;
70
75
  }
71
- }, {
72
- key: "getAttribute",
73
- value: function getAttribute(attributeName) {
74
- var attribute = this.attributes.find(function (val) {
75
- return val.name === attributeName;
76
- });
77
- if (attribute) return attribute.value;
78
- return null;
76
+ if (variable === undefined) {
77
+ throw new Error("NetCDF: variable not found: ".concat(variableName));
79
78
  }
80
- }, {
81
- key: "dataVariableExists",
82
- value: function dataVariableExists(variableName) {
83
- var variable = this.header.variables.find(function (val) {
84
- return val.name === variableName;
85
- });
86
- return variable !== undefined;
79
+ this.buffer.seek(variable.offset);
80
+ if (variable.record) {
81
+ return (0, _readData.readRecord)(this.buffer, variable, this.header.recordDimension);
87
82
  }
88
- }, {
89
- key: "getDataVariableAsString",
90
- value: function getDataVariableAsString(variableName) {
91
- var variable = this.getDataVariable(variableName);
92
- if (variable) return variable.join('');
93
- return null;
83
+ return (0, _readData.readNonRecord)(this.buffer, variable);
84
+ }
85
+ toString() {
86
+ const result = [];
87
+ result.push('DIMENSIONS');
88
+ for (const dimension of this.dimensions) {
89
+ result.push(" ".concat(dimension.name.padEnd(30), " = size: ").concat(dimension.size));
94
90
  }
95
- }, {
96
- key: "getDataVariable",
97
- value: function getDataVariable(variableName) {
98
- var variable;
99
- if (typeof variableName === 'string') {
100
- variable = this.header.variables.find(function (val) {
101
- return val.name === variableName;
102
- });
103
- } else {
104
- variable = variableName;
105
- }
106
- if (variable === undefined) {
107
- throw new Error("NetCDF: variable not found: ".concat(variableName));
108
- }
109
- this.buffer.seek(variable.offset);
110
- if (variable.record) {
111
- return (0, _readData.readRecord)(this.buffer, variable, this.header.recordDimension);
112
- }
113
- return (0, _readData.readNonRecord)(this.buffer, variable);
91
+ result.push('');
92
+ result.push('GLOBAL ATTRIBUTES');
93
+ for (const attribute of this.attributes) {
94
+ result.push(" ".concat(attribute.name.padEnd(30), " = ").concat(attribute.value));
114
95
  }
115
- }, {
116
- key: "toString",
117
- value: function toString() {
118
- var result = [];
119
- result.push('DIMENSIONS');
120
- var _iterator = _createForOfIteratorHelper(this.dimensions),
121
- _step;
122
- try {
123
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
124
- var dimension = _step.value;
125
- result.push(" ".concat(dimension.name.padEnd(30), " = size: ").concat(dimension.size));
126
- }
127
- } catch (err) {
128
- _iterator.e(err);
129
- } finally {
130
- _iterator.f();
96
+ const variables = JSON.parse(JSON.stringify(this.variables));
97
+ result.push('');
98
+ result.push('VARIABLES:');
99
+ for (const variable of variables) {
100
+ variable.value = this.getDataVariable(variable);
101
+ let stringify = JSON.stringify(variable.value);
102
+ if (stringify.length > 50) stringify = stringify.substring(0, 50);
103
+ if (!isNaN(variable.value.length)) {
104
+ stringify += " (length: ".concat(variable.value.length, ")");
131
105
  }
132
- result.push('');
133
- result.push('GLOBAL ATTRIBUTES');
134
- var _iterator2 = _createForOfIteratorHelper(this.attributes),
135
- _step2;
136
- try {
137
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
138
- var attribute = _step2.value;
139
- result.push(" ".concat(attribute.name.padEnd(30), " = ").concat(attribute.value));
140
- }
141
- } catch (err) {
142
- _iterator2.e(err);
143
- } finally {
144
- _iterator2.f();
145
- }
146
- var variables = JSON.parse(JSON.stringify(this.variables));
147
- result.push('');
148
- result.push('VARIABLES:');
149
- var _iterator3 = _createForOfIteratorHelper(variables),
150
- _step3;
151
- try {
152
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
153
- var variable = _step3.value;
154
- variable.value = this.getDataVariable(variable);
155
- var stringify = JSON.stringify(variable.value);
156
- if (stringify.length > 50) stringify = stringify.substring(0, 50);
157
- if (!isNaN(variable.value.length)) {
158
- stringify += " (length: ".concat(variable.value.length, ")");
159
- }
160
- result.push(" ".concat(variable.name.padEnd(30), " = ").concat(stringify));
161
- }
162
- } catch (err) {
163
- _iterator3.e(err);
164
- } finally {
165
- _iterator3.f();
166
- }
167
- return result.join('\n');
106
+ result.push(" ".concat(variable.name.padEnd(30), " = ").concat(stringify));
168
107
  }
169
- }]);
170
- return NetCDFReader;
171
- }();
108
+ return result.join('\n');
109
+ }
110
+ }
172
111
  exports.NetCDFReader = NetCDFReader;
173
112
  //# sourceMappingURL=netcdf-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"netcdf-reader.js","names":["_iobuffer","require","_readHeader","_readData","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","NetCDFReader","data","_classCallCheck2","default","_defineProperty2","buffer","IOBuffer","setBigEndian","magic","readChars","Error","concat","version","readByte","header","readNetCDFHeader","_createClass2","key","get","recordDimension","dimensions","attributes","variables","attributeExists","attributeName","attribute","find","val","undefined","getAttribute","dataVariableExists","variableName","variable","getDataVariableAsString","getDataVariable","join","seek","offset","record","readRecord","readNonRecord","result","push","_iterator","_step","dimension","padEnd","size","_iterator2","_step2","JSON","parse","stringify","_iterator3","_step3","substring","isNaN","exports"],"sources":["../../../src/netcdfjs/netcdf-reader.ts"],"sourcesContent":["import {IOBuffer} from '../iobuffer/iobuffer';\nimport type {\n NetCDFHeader,\n NetCDFDimension,\n NetCDFRecordDimension,\n NetCDFAttribute,\n NetCDFVariable\n} from './netcdf-types';\nimport {readNetCDFHeader} from './read-header';\nimport {readRecord, readNonRecord} from './read-data';\n\n/**\n * Reads a NetCDF v3.x file\n * https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @constructor\n */\nexport class NetCDFReader {\n public header: NetCDFHeader;\n public buffer: IOBuffer;\n\n constructor(data) {\n const buffer = new IOBuffer(data);\n buffer.setBigEndian();\n\n // Validate that it's a NetCDF file\n const magic = buffer.readChars(3);\n if (magic !== 'CDF') {\n throw new Error(`NetCDF: file should start with 'CDF', found ${magic}`);\n }\n\n // Check the NetCDF format\n const version = buffer.readByte();\n if (version > 2) {\n throw new Error(`NetCDF: unsupported version ${version}`);\n }\n\n // Read the header\n this.header = readNetCDFHeader(buffer, version);\n this.buffer = buffer;\n }\n\n /**\n * @return {string} - Version for the NetCDF format\n */\n get version() {\n if (this.header.version === 1) {\n return 'classic format';\n }\n return '64-bit offset format';\n }\n\n /**\n * Get metadata for the record dimension\n */\n get recordDimension(): NetCDFRecordDimension {\n return this.header.recordDimension;\n }\n\n /**\n * Get list of dimensions (each with `name` and `size`)\n */\n get dimensions(): NetCDFDimension[] {\n return this.header.dimensions;\n }\n\n /**\n * Get list of global attributes with:\n * * `name`: String with the name of the attribute\n * * `type`: String with the type of the attribute\n * * `value`: A number or string with the value of the attribute\n */\n get attributes(): NetCDFAttribute[] {\n return this.header.attributes;\n }\n\n /**\n * Get list of variables\n */\n get variables(): NetCDFVariable[] {\n return this.header.variables;\n }\n\n /**\n * Check if an attribute exists\n * @param attributeName - Name of the attribute to find\n * @return\n */\n attributeExists(attributeName: string): boolean {\n const attribute = this.attributes.find((val) => val.name === attributeName);\n return attribute !== undefined;\n }\n\n /**\n * Returns the value of an attribute\n * @param attributeName\n * @return Value of the attributeName or null\n */\n getAttribute(attributeName: string): string | null {\n const attribute = this.attributes.find((val) => val.name === attributeName);\n if (attribute) return attribute.value;\n return null;\n }\n\n /**\n * Check if a dataVariable exists\n * @param variableName - Name of the variable to find\n * @return\n */\n dataVariableExists(variableName: string): boolean {\n const variable = this.header.variables.find(function (val) {\n return val.name === variableName;\n });\n return variable !== undefined;\n }\n\n /**\n * Returns the value of a variable as a string\n * @param variableName\n * @return Value of the variable as a string or null\n */\n getDataVariableAsString(variableName: string): string | null {\n const variable = this.getDataVariable(variableName);\n if (variable) return variable.join('');\n return null;\n }\n\n /**\n * Retrieves the data for a given variable\n * @param variableName - Name of the variable to search or variable object\n * @return List with the variable values\n */\n getDataVariable(variableName: string | object): any[] {\n let variable;\n if (typeof variableName === 'string') {\n // search the variable\n variable = this.header.variables.find(function (val) {\n return val.name === variableName;\n });\n } else {\n variable = variableName;\n }\n\n // throws if variable not found\n if (variable === undefined) {\n throw new Error(`NetCDF: variable not found: ${variableName}`);\n }\n\n // go to the offset position\n this.buffer.seek(variable.offset);\n\n if (variable.record) {\n // record variable case\n return readRecord(this.buffer, variable, this.header.recordDimension);\n }\n // non-record variable case\n return readNonRecord(this.buffer, variable);\n }\n\n toString(): string {\n const result: string[] = [];\n\n result.push('DIMENSIONS');\n for (const dimension of this.dimensions) {\n result.push(` ${dimension.name.padEnd(30)} = size: ${dimension.size}`);\n }\n\n result.push('');\n result.push('GLOBAL ATTRIBUTES');\n for (const attribute of this.attributes) {\n result.push(` ${attribute.name.padEnd(30)} = ${attribute.value}`);\n }\n\n const variables = JSON.parse(JSON.stringify(this.variables));\n result.push('');\n result.push('VARIABLES:');\n for (const variable of variables) {\n variable.value = this.getDataVariable(variable);\n let stringify = JSON.stringify(variable.value);\n if (stringify.length > 50) stringify = stringify.substring(0, 50);\n if (!isNaN(variable.value.length)) {\n stringify += ` (length: ${variable.value.length})`;\n }\n result.push(` ${variable.name.padEnd(30)} = ${stringify}`);\n }\n return result.join('\\n');\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"netcdf-reader.js","names":["_iobuffer","require","_readHeader","_readData","NetCDFReader","constructor","data","_defineProperty2","default","buffer","IOBuffer","setBigEndian","magic","readChars","Error","concat","version","readByte","header","readNetCDFHeader","recordDimension","dimensions","attributes","variables","attributeExists","attributeName","attribute","find","val","name","undefined","getAttribute","value","dataVariableExists","variableName","variable","getDataVariableAsString","getDataVariable","join","seek","offset","record","readRecord","readNonRecord","toString","result","push","dimension","padEnd","size","JSON","parse","stringify","length","substring","isNaN","exports"],"sources":["../../../src/netcdfjs/netcdf-reader.ts"],"sourcesContent":["import {IOBuffer} from '../iobuffer/iobuffer';\nimport type {\n NetCDFHeader,\n NetCDFDimension,\n NetCDFRecordDimension,\n NetCDFAttribute,\n NetCDFVariable\n} from './netcdf-types';\nimport {readNetCDFHeader} from './read-header';\nimport {readRecord, readNonRecord} from './read-data';\n\n/**\n * Reads a NetCDF v3.x file\n * https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @constructor\n */\nexport class NetCDFReader {\n public header: NetCDFHeader;\n public buffer: IOBuffer;\n\n constructor(data) {\n const buffer = new IOBuffer(data);\n buffer.setBigEndian();\n\n // Validate that it's a NetCDF file\n const magic = buffer.readChars(3);\n if (magic !== 'CDF') {\n throw new Error(`NetCDF: file should start with 'CDF', found ${magic}`);\n }\n\n // Check the NetCDF format\n const version = buffer.readByte();\n if (version > 2) {\n throw new Error(`NetCDF: unsupported version ${version}`);\n }\n\n // Read the header\n this.header = readNetCDFHeader(buffer, version);\n this.buffer = buffer;\n }\n\n /**\n * @return {string} - Version for the NetCDF format\n */\n get version() {\n if (this.header.version === 1) {\n return 'classic format';\n }\n return '64-bit offset format';\n }\n\n /**\n * Get metadata for the record dimension\n */\n get recordDimension(): NetCDFRecordDimension {\n return this.header.recordDimension;\n }\n\n /**\n * Get list of dimensions (each with `name` and `size`)\n */\n get dimensions(): NetCDFDimension[] {\n return this.header.dimensions;\n }\n\n /**\n * Get list of global attributes with:\n * * `name`: String with the name of the attribute\n * * `type`: String with the type of the attribute\n * * `value`: A number or string with the value of the attribute\n */\n get attributes(): NetCDFAttribute[] {\n return this.header.attributes;\n }\n\n /**\n * Get list of variables\n */\n get variables(): NetCDFVariable[] {\n return this.header.variables;\n }\n\n /**\n * Check if an attribute exists\n * @param attributeName - Name of the attribute to find\n * @return\n */\n attributeExists(attributeName: string): boolean {\n const attribute = this.attributes.find((val) => val.name === attributeName);\n return attribute !== undefined;\n }\n\n /**\n * Returns the value of an attribute\n * @param attributeName\n * @return Value of the attributeName or null\n */\n getAttribute(attributeName: string): string | null {\n const attribute = this.attributes.find((val) => val.name === attributeName);\n if (attribute) return attribute.value;\n return null;\n }\n\n /**\n * Check if a dataVariable exists\n * @param variableName - Name of the variable to find\n * @return\n */\n dataVariableExists(variableName: string): boolean {\n const variable = this.header.variables.find(function (val) {\n return val.name === variableName;\n });\n return variable !== undefined;\n }\n\n /**\n * Returns the value of a variable as a string\n * @param variableName\n * @return Value of the variable as a string or null\n */\n getDataVariableAsString(variableName: string): string | null {\n const variable = this.getDataVariable(variableName);\n if (variable) return variable.join('');\n return null;\n }\n\n /**\n * Retrieves the data for a given variable\n * @param variableName - Name of the variable to search or variable object\n * @return List with the variable values\n */\n getDataVariable(variableName: string | object): any[] {\n let variable;\n if (typeof variableName === 'string') {\n // search the variable\n variable = this.header.variables.find(function (val) {\n return val.name === variableName;\n });\n } else {\n variable = variableName;\n }\n\n // throws if variable not found\n if (variable === undefined) {\n throw new Error(`NetCDF: variable not found: ${variableName}`);\n }\n\n // go to the offset position\n this.buffer.seek(variable.offset);\n\n if (variable.record) {\n // record variable case\n return readRecord(this.buffer, variable, this.header.recordDimension);\n }\n // non-record variable case\n return readNonRecord(this.buffer, variable);\n }\n\n toString(): string {\n const result: string[] = [];\n\n result.push('DIMENSIONS');\n for (const dimension of this.dimensions) {\n result.push(` ${dimension.name.padEnd(30)} = size: ${dimension.size}`);\n }\n\n result.push('');\n result.push('GLOBAL ATTRIBUTES');\n for (const attribute of this.attributes) {\n result.push(` ${attribute.name.padEnd(30)} = ${attribute.value}`);\n }\n\n const variables = JSON.parse(JSON.stringify(this.variables));\n result.push('');\n result.push('VARIABLES:');\n for (const variable of variables) {\n variable.value = this.getDataVariable(variable);\n let stringify = JSON.stringify(variable.value);\n if (stringify.length > 50) stringify = stringify.substring(0, 50);\n if (!isNaN(variable.value.length)) {\n stringify += ` (length: ${variable.value.length})`;\n }\n result.push(` ${variable.name.padEnd(30)} = ${stringify}`);\n }\n return result.join('\\n');\n }\n}\n"],"mappings":"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"}
@@ -7,22 +7,22 @@ exports.readNonRecord = readNonRecord;
7
7
  exports.readRecord = readRecord;
8
8
  var _readType = require("./read-type");
9
9
  function readNonRecord(buffer, variable) {
10
- var type = (0, _readType.str2num)(variable.type);
11
- var size = variable.size / (0, _readType.num2bytes)(type);
12
- var data = new Array(size);
13
- for (var i = 0; i < size; i++) {
10
+ const type = (0, _readType.str2num)(variable.type);
11
+ const size = variable.size / (0, _readType.num2bytes)(type);
12
+ const data = new Array(size);
13
+ for (let i = 0; i < size; i++) {
14
14
  data[i] = (0, _readType.readType)(buffer, type, 1);
15
15
  }
16
16
  return data;
17
17
  }
18
18
  function readRecord(buffer, variable, recordDimension) {
19
- var type = (0, _readType.str2num)(variable.type);
20
- var width = variable.size ? variable.size / (0, _readType.num2bytes)(type) : 1;
21
- var size = recordDimension.length;
22
- var data = new Array(size);
23
- var step = recordDimension.recordStep;
24
- for (var i = 0; i < size; i++) {
25
- var currentOffset = buffer.offset;
19
+ const type = (0, _readType.str2num)(variable.type);
20
+ const width = variable.size ? variable.size / (0, _readType.num2bytes)(type) : 1;
21
+ const size = recordDimension.length;
22
+ const data = new Array(size);
23
+ const step = recordDimension.recordStep;
24
+ for (let i = 0; i < size; i++) {
25
+ const currentOffset = buffer.offset;
26
26
  data[i] = (0, _readType.readType)(buffer, type, width);
27
27
  buffer.seek(currentOffset + step);
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read-data.js","names":["_readType","require","readNonRecord","buffer","variable","type","str2num","size","num2bytes","data","Array","i","readType","readRecord","recordDimension","width","length","step","recordStep","currentOffset","offset","seek"],"sources":["../../../src/netcdfjs/read-data.ts"],"sourcesContent":["import type {IOBuffer} from '../iobuffer/iobuffer';\nimport type {NetCDFRecordDimension, NetCDFVariable} from './netcdf-types';\nimport {readType, str2num, num2bytes} from './read-type';\n\n// const STREAMING = 4294967295;\n\n/**\n * Read data for the given non-record variable\n * @param buffer - Buffer for the file data\n * @param variable - Variable metadata\n * @return Data of the element\n */\nexport function readNonRecord(\n buffer: IOBuffer,\n variable: NetCDFVariable\n): (string | number | number[] | Uint8Array)[] {\n // variable type\n const type = str2num(variable.type);\n\n // size of the data\n const size = variable.size / num2bytes(type);\n\n // iterates over the data\n const data = new Array(size);\n for (let i = 0; i < size; i++) {\n data[i] = readType(buffer, type, 1);\n }\n\n return data;\n}\n\n/**\n * Read data for the given record variable\n * @param buffer - Buffer for the file data\n * @param variable - Variable metadata\n * @param recordDimension - Record dimension metadata\n * @return - Data of the element\n */\nexport function readRecord(\n buffer: IOBuffer,\n variable: NetCDFVariable,\n recordDimension: NetCDFRecordDimension\n): (string | number | number[] | Uint8Array)[] {\n // variable type\n const type = str2num(variable.type);\n const width = variable.size ? variable.size / num2bytes(type) : 1;\n\n // size of the data\n // TODO streaming data\n const size = recordDimension.length;\n\n // iterates over the data\n const data = new Array(size);\n const step = recordDimension.recordStep;\n\n for (let i = 0; i < size; i++) {\n const currentOffset = buffer.offset;\n data[i] = readType(buffer, type, width);\n buffer.seek(currentOffset + step);\n }\n\n return data;\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAUO,SAASC,aAAaA,CAC3BC,MAAgB,EAChBC,QAAwB,EACqB;EAE7C,IAAMC,IAAI,GAAG,IAAAC,iBAAO,EAACF,QAAQ,CAACC,IAAI,CAAC;EAGnC,IAAME,IAAI,GAAGH,QAAQ,CAACG,IAAI,GAAG,IAAAC,mBAAS,EAACH,IAAI,CAAC;EAG5C,IAAMI,IAAI,GAAG,IAAIC,KAAK,CAACH,IAAI,CAAC;EAC5B,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,EAAEI,CAAC,EAAE,EAAE;IAC7BF,IAAI,CAACE,CAAC,CAAC,GAAG,IAAAC,kBAAQ,EAACT,MAAM,EAAEE,IAAI,EAAE,CAAC,CAAC;EACrC;EAEA,OAAOI,IAAI;AACb;AASO,SAASI,UAAUA,CACxBV,MAAgB,EAChBC,QAAwB,EACxBU,eAAsC,EACO;EAE7C,IAAMT,IAAI,GAAG,IAAAC,iBAAO,EAACF,QAAQ,CAACC,IAAI,CAAC;EACnC,IAAMU,KAAK,GAAGX,QAAQ,CAACG,IAAI,GAAGH,QAAQ,CAACG,IAAI,GAAG,IAAAC,mBAAS,EAACH,IAAI,CAAC,GAAG,CAAC;EAIjE,IAAME,IAAI,GAAGO,eAAe,CAACE,MAAM;EAGnC,IAAMP,IAAI,GAAG,IAAIC,KAAK,CAACH,IAAI,CAAC;EAC5B,IAAMU,IAAI,GAAGH,eAAe,CAACI,UAAU;EAEvC,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,EAAEI,CAAC,EAAE,EAAE;IAC7B,IAAMQ,aAAa,GAAGhB,MAAM,CAACiB,MAAM;IACnCX,IAAI,CAACE,CAAC,CAAC,GAAG,IAAAC,kBAAQ,EAACT,MAAM,EAAEE,IAAI,EAAEU,KAAK,CAAC;IACvCZ,MAAM,CAACkB,IAAI,CAACF,aAAa,GAAGF,IAAI,CAAC;EACnC;EAEA,OAAOR,IAAI;AACb"}
1
+ {"version":3,"file":"read-data.js","names":["_readType","require","readNonRecord","buffer","variable","type","str2num","size","num2bytes","data","Array","i","readType","readRecord","recordDimension","width","length","step","recordStep","currentOffset","offset","seek"],"sources":["../../../src/netcdfjs/read-data.ts"],"sourcesContent":["import type {IOBuffer} from '../iobuffer/iobuffer';\nimport type {NetCDFRecordDimension, NetCDFVariable} from './netcdf-types';\nimport {readType, str2num, num2bytes} from './read-type';\n\n// const STREAMING = 4294967295;\n\n/**\n * Read data for the given non-record variable\n * @param buffer - Buffer for the file data\n * @param variable - Variable metadata\n * @return Data of the element\n */\nexport function readNonRecord(\n buffer: IOBuffer,\n variable: NetCDFVariable\n): (string | number | number[] | Uint8Array)[] {\n // variable type\n const type = str2num(variable.type);\n\n // size of the data\n const size = variable.size / num2bytes(type);\n\n // iterates over the data\n const data = new Array(size);\n for (let i = 0; i < size; i++) {\n data[i] = readType(buffer, type, 1);\n }\n\n return data;\n}\n\n/**\n * Read data for the given record variable\n * @param buffer - Buffer for the file data\n * @param variable - Variable metadata\n * @param recordDimension - Record dimension metadata\n * @return - Data of the element\n */\nexport function readRecord(\n buffer: IOBuffer,\n variable: NetCDFVariable,\n recordDimension: NetCDFRecordDimension\n): (string | number | number[] | Uint8Array)[] {\n // variable type\n const type = str2num(variable.type);\n const width = variable.size ? variable.size / num2bytes(type) : 1;\n\n // size of the data\n // TODO streaming data\n const size = recordDimension.length;\n\n // iterates over the data\n const data = new Array(size);\n const step = recordDimension.recordStep;\n\n for (let i = 0; i < size; i++) {\n const currentOffset = buffer.offset;\n data[i] = readType(buffer, type, width);\n buffer.seek(currentOffset + step);\n }\n\n return data;\n}\n"],"mappings":";;;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAUO,SAASC,aAAaA,CAC3BC,MAAgB,EAChBC,QAAwB,EACqB;EAE7C,MAAMC,IAAI,GAAG,IAAAC,iBAAO,EAACF,QAAQ,CAACC,IAAI,CAAC;EAGnC,MAAME,IAAI,GAAGH,QAAQ,CAACG,IAAI,GAAG,IAAAC,mBAAS,EAACH,IAAI,CAAC;EAG5C,MAAMI,IAAI,GAAG,IAAIC,KAAK,CAACH,IAAI,CAAC;EAC5B,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,EAAEI,CAAC,EAAE,EAAE;IAC7BF,IAAI,CAACE,CAAC,CAAC,GAAG,IAAAC,kBAAQ,EAACT,MAAM,EAAEE,IAAI,EAAE,CAAC,CAAC;EACrC;EAEA,OAAOI,IAAI;AACb;AASO,SAASI,UAAUA,CACxBV,MAAgB,EAChBC,QAAwB,EACxBU,eAAsC,EACO;EAE7C,MAAMT,IAAI,GAAG,IAAAC,iBAAO,EAACF,QAAQ,CAACC,IAAI,CAAC;EACnC,MAAMU,KAAK,GAAGX,QAAQ,CAACG,IAAI,GAAGH,QAAQ,CAACG,IAAI,GAAG,IAAAC,mBAAS,EAACH,IAAI,CAAC,GAAG,CAAC;EAIjE,MAAME,IAAI,GAAGO,eAAe,CAACE,MAAM;EAGnC,MAAMP,IAAI,GAAG,IAAIC,KAAK,CAACH,IAAI,CAAC;EAC5B,MAAMU,IAAI,GAAGH,eAAe,CAACI,UAAU;EAEvC,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,IAAI,EAAEI,CAAC,EAAE,EAAE;IAC7B,MAAMQ,aAAa,GAAGhB,MAAM,CAACiB,MAAM;IACnCX,IAAI,CAACE,CAAC,CAAC,GAAG,IAAAC,kBAAQ,EAACT,MAAM,EAAEE,IAAI,EAAEU,KAAK,CAAC;IACvCZ,MAAM,CAACkB,IAAI,CAACF,aAAa,GAAGF,IAAI,CAAC;EACnC;EAEA,OAAOR,IAAI;AACb"}