@loaders.gl/netcdf 3.3.0-alpha.5 → 3.3.0-alpha.7

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,38 +1,29 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
- exports._typecheckNetCDFLoader = exports._typecheckNetCDFWorkerLoader = exports.NetCDFLoader = exports.NetCDFWorkerLoader = void 0;
9
-
7
+ exports._typecheckNetCDFWorkerLoader = exports._typecheckNetCDFLoader = exports.NetCDFWorkerLoader = exports.NetCDFLoader = void 0;
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _netcdfReader = require("./netcdfjs/netcdf-reader");
17
-
18
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; } } }; }
19
-
20
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); }
21
-
22
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; }
23
-
24
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
25
-
26
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
-
28
- var VERSION = typeof "3.3.0-alpha.5" !== 'undefined' ? "3.3.0-alpha.5" : 'latest';
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.3.0-alpha.7" !== 'undefined' ? "3.3.0-alpha.7" : 'latest';
29
18
  var NetCDFWorkerLoader = {
30
19
  name: 'NetCDF',
31
20
  id: 'mvt',
32
21
  module: 'mvt',
33
22
  version: VERSION,
34
23
  extensions: ['cdf', 'nc'],
35
- mimeTypes: ['application/netcdf', 'application/x-netcdf'],
24
+ mimeTypes: ['application/netcdf', 'application/x-netcdf'
25
+ ],
26
+
36
27
  category: 'image',
37
28
  options: {
38
29
  netcdf: {
@@ -40,8 +31,8 @@ var NetCDFWorkerLoader = {
40
31
  }
41
32
  }
42
33
  };
43
- exports.NetCDFWorkerLoader = NetCDFWorkerLoader;
44
34
 
35
+ exports.NetCDFWorkerLoader = NetCDFWorkerLoader;
45
36
  var NetCDFLoader = _objectSpread(_objectSpread({}, NetCDFWorkerLoader), {}, {
46
37
  parse: function () {
47
38
  var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
@@ -50,7 +41,6 @@ var NetCDFLoader = _objectSpread(_objectSpread({}, NetCDFWorkerLoader), {}, {
50
41
  switch (_context.prev = _context.next) {
51
42
  case 0:
52
43
  return _context.abrupt("return", parseNetCDF(arrayBuffer, options));
53
-
54
44
  case 1:
55
45
  case "end":
56
46
  return _context.stop();
@@ -58,28 +48,21 @@ var NetCDFLoader = _objectSpread(_objectSpread({}, NetCDFWorkerLoader), {}, {
58
48
  }
59
49
  }, _callee);
60
50
  }));
61
-
62
51
  function parse(_x, _x2) {
63
52
  return _parse.apply(this, arguments);
64
53
  }
65
-
66
54
  return parse;
67
55
  }(),
68
56
  binary: true
69
57
  });
70
-
71
58
  exports.NetCDFLoader = NetCDFLoader;
72
-
73
59
  function parseNetCDF(arrayBuffer, options) {
74
60
  var _options$netcdf;
75
-
76
61
  var reader = new _netcdfReader.NetCDFReader(arrayBuffer);
77
62
  var variables = {};
78
-
79
63
  if (options !== null && options !== void 0 && (_options$netcdf = options.netcdf) !== null && _options$netcdf !== void 0 && _options$netcdf.loadData) {
80
64
  var _iterator = _createForOfIteratorHelper(reader.variables),
81
- _step;
82
-
65
+ _step;
83
66
  try {
84
67
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
85
68
  var variable = _step.value;
@@ -91,7 +74,6 @@ function parseNetCDF(arrayBuffer, options) {
91
74
  _iterator.f();
92
75
  }
93
76
  }
94
-
95
77
  return {
96
78
  loaderData: reader.header,
97
79
  data: variables
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/netcdf-loader.ts"],"names":["VERSION","NetCDFWorkerLoader","name","id","module","version","extensions","mimeTypes","category","options","netcdf","loadVariables","NetCDFLoader","parse","arrayBuffer","parseNetCDF","binary","reader","NetCDFReader","variables","loadData","variable","getDataVariable","loaderData","header","data","_typecheckNetCDFWorkerLoader","_typecheckNetCDFLoader"],"mappings":";;;;;;;;;;;;;;;AAEA;;;;;;;;;;;;AAIA,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;AAgBO,IAAMC,kBAAkB,GAAG;AAChCC,EAAAA,IAAI,EAAE,QAD0B;AAEhCC,EAAAA,EAAE,EAAE,KAF4B;AAGhCC,EAAAA,MAAM,EAAE,KAHwB;AAIhCC,EAAAA,OAAO,EAAEL,OAJuB;AAKhCM,EAAAA,UAAU,EAAE,CAAC,KAAD,EAAQ,IAAR,CALoB;AAMhCC,EAAAA,SAAS,EAAE,CACT,oBADS,EAET,sBAFS,CANqB;AAWhCC,EAAAA,QAAQ,EAAE,OAXsB;AAYhCC,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AACNC,MAAAA,aAAa,EAAE;AADT;AADD;AAZuB,CAA3B;;;AAsBA,IAAMC,YAAY,mCACpBX,kBADoB;AAEvBY,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,WAAP,EAAoBL,OAApB;AAAA;AAAA;AAAA;AAAA;AAAA,+CAAgCM,WAAW,CAACD,WAAD,EAAcL,OAAd,CAA3C;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KAFkB;AAGvBO,EAAAA,MAAM,EAAE;AAHe,EAAlB;;;;AAMP,SAASD,WAAT,CAAqBD,WAArB,EAA+CL,OAA/C,EAAsF;AAAA;;AACpF,MAAMQ,MAAM,GAAG,IAAIC,0BAAJ,CAAiBJ,WAAjB,CAAf;AACA,MAAMK,SAA4C,GAAG,EAArD;;AACA,MAAIV,OAAJ,aAAIA,OAAJ,kCAAIA,OAAO,CAAEC,MAAb,4CAAI,gBAAiBU,QAArB,EAA+B;AAAA,+CACNH,MAAM,CAACE,SADD;AAAA;;AAAA;AAC7B,0DAAyC;AAAA,YAA9BE,QAA8B;AACvCF,QAAAA,SAAS,CAACE,QAAQ,CAACnB,IAAV,CAAT,GAA2Be,MAAM,CAACK,eAAP,CAAuBD,QAAvB,CAA3B;AACD;AAH4B;AAAA;AAAA;AAAA;AAAA;AAI9B;;AACD,SAAO;AACLE,IAAAA,UAAU,EAAEN,MAAM,CAACO,MADd;AAELC,IAAAA,IAAI,EAAEN;AAFD,GAAP;AAID;;AAGM,IAAMO,4BAAoC,GAAGzB,kBAA7C;;AACA,IAAM0B,sBAAwC,GAAGf,YAAjD","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"],"file":"netcdf-loader.js"}
1
+ {"version":3,"file":"netcdf-loader.js","names":["VERSION","NetCDFWorkerLoader","name","id","module","version","extensions","mimeTypes","category","options","netcdf","loadVariables","NetCDFLoader","parse","arrayBuffer","parseNetCDF","binary","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;AAAsD;AAAA;AAAA;AAAA;AAAA;AAItD,IAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAgBpE,IAAMC,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;EAAsB,CAEvB;;EACDC,QAAQ,EAAE,OAAO;EACjBC,OAAO,EAAE;IACPC,MAAM,EAAE;MACNC,aAAa,EAAE;IACjB;EACF;AACF,CAAC;;AAAC;AAKK,IAAMC,YAAY,mCACpBX,kBAAkB;EACrBY,KAAK;IAAA,uEAAE,iBAAOC,WAAW,EAAEL,OAAO;MAAA;QAAA;UAAA;YAAA;cAAA,iCAAKM,WAAW,CAACD,WAAW,EAAEL,OAAO,CAAC;YAAA;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA;IAAA;MAAA;IAAA;IAAA;EAAA;EACxEO,MAAM,EAAE;AAAI,EACb;AAAC;AAEF,SAASD,WAAW,CAACD,WAAwB,EAAEL,OAA6B,EAAU;EAAA;EACpF,IAAMQ,MAAM,GAAG,IAAIC,0BAAY,CAACJ,WAAW,CAAC;EAC5C,IAAMK,SAA4C,GAAG,CAAC,CAAC;EACvD,IAAIV,OAAO,aAAPA,OAAO,kCAAPA,OAAO,CAAEC,MAAM,4CAAf,gBAAiBU,QAAQ,EAAE;IAAA,2CACNH,MAAM,CAACE,SAAS;MAAA;IAAA;MAAvC,oDAAyC;QAAA,IAA9BE,QAAQ;QACjBF,SAAS,CAACE,QAAQ,CAACnB,IAAI,CAAC,GAAGe,MAAM,CAACK,eAAe,CAACD,QAAQ,CAAC;MAC7D;IAAC;MAAA;IAAA;MAAA;IAAA;EACH;EACA,OAAO;IACLE,UAAU,EAAEN,MAAM,CAACO,MAAM;IACzBC,IAAI,EAAEN;EACR,CAAC;AACH;;AAGO,IAAMO,4BAAoC,GAAGzB,kBAAkB;AAAC;AAChE,IAAM0B,sBAAwC,GAAGf,YAAY;AAAC"}
@@ -1,30 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.NetCDFReader = void 0;
9
-
10
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
11
  var _iobuffer = require("../iobuffer/iobuffer");
17
-
18
12
  var _readHeader = require("./read-header");
19
-
20
13
  var _readData = require("./read-data");
21
-
22
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; } } }; }
23
-
24
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); }
25
-
26
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; }
27
-
28
17
  var NetCDFReader = function () {
29
18
  function NetCDFReader(data) {
30
19
  (0, _classCallCheck2.default)(this, NetCDFReader);
@@ -32,14 +21,13 @@ var NetCDFReader = function () {
32
21
  (0, _defineProperty2.default)(this, "buffer", void 0);
33
22
  var buffer = new _iobuffer.IOBuffer(data);
34
23
  buffer.setBigEndian();
35
- var magic = buffer.readChars(3);
36
24
 
25
+ var magic = buffer.readChars(3);
37
26
  if (magic !== 'CDF') {
38
27
  throw new Error("NetCDF: file should start with 'CDF', found ".concat(magic));
39
28
  }
40
29
 
41
30
  var version = buffer.readByte();
42
-
43
31
  if (version > 2) {
44
32
  throw new Error("NetCDF: unsupported version ".concat(version));
45
33
  }
@@ -50,70 +38,87 @@ var NetCDFReader = function () {
50
38
 
51
39
  (0, _createClass2.default)(NetCDFReader, [{
52
40
  key: "version",
53
- get: function get() {
41
+ get:
42
+ function get() {
54
43
  if (this.header.version === 1) {
55
44
  return 'classic format';
56
45
  }
57
-
58
46
  return '64-bit offset format';
59
47
  }
48
+
60
49
  }, {
61
50
  key: "recordDimension",
62
- get: function get() {
51
+ get:
52
+ function get() {
63
53
  return this.header.recordDimension;
64
54
  }
55
+
65
56
  }, {
66
57
  key: "dimensions",
67
- get: function get() {
58
+ get:
59
+ function get() {
68
60
  return this.header.dimensions;
69
61
  }
62
+
70
63
  }, {
71
64
  key: "attributes",
72
- get: function get() {
65
+ get:
66
+ function get() {
73
67
  return this.header.attributes;
74
68
  }
69
+
75
70
  }, {
76
71
  key: "variables",
77
- get: function get() {
72
+ get:
73
+ function get() {
78
74
  return this.header.variables;
79
75
  }
76
+
80
77
  }, {
81
78
  key: "attributeExists",
82
- value: function attributeExists(attributeName) {
79
+ value:
80
+ function attributeExists(attributeName) {
83
81
  var attribute = this.attributes.find(function (val) {
84
82
  return val.name === attributeName;
85
83
  });
86
84
  return attribute !== undefined;
87
85
  }
86
+
88
87
  }, {
89
88
  key: "getAttribute",
90
- value: function getAttribute(attributeName) {
89
+ value:
90
+ function getAttribute(attributeName) {
91
91
  var attribute = this.attributes.find(function (val) {
92
92
  return val.name === attributeName;
93
93
  });
94
94
  if (attribute) return attribute.value;
95
95
  return null;
96
96
  }
97
+
97
98
  }, {
98
99
  key: "dataVariableExists",
99
- value: function dataVariableExists(variableName) {
100
+ value:
101
+ function dataVariableExists(variableName) {
100
102
  var variable = this.header.variables.find(function (val) {
101
103
  return val.name === variableName;
102
104
  });
103
105
  return variable !== undefined;
104
106
  }
107
+
105
108
  }, {
106
109
  key: "getDataVariableAsString",
107
- value: function getDataVariableAsString(variableName) {
110
+ value:
111
+ function getDataVariableAsString(variableName) {
108
112
  var variable = this.getDataVariable(variableName);
109
113
  if (variable) return variable.join('');
110
114
  return null;
111
115
  }
116
+
112
117
  }, {
113
118
  key: "getDataVariable",
114
- value: function getDataVariable(variableName) {
119
+ value:
120
+ function getDataVariable(variableName) {
115
121
  var variable;
116
-
117
122
  if (typeof variableName === 'string') {
118
123
  variable = this.header.variables.find(function (val) {
119
124
  return val.name === variableName;
@@ -127,11 +132,9 @@ var NetCDFReader = function () {
127
132
  }
128
133
 
129
134
  this.buffer.seek(variable.offset);
130
-
131
135
  if (variable.record) {
132
136
  return (0, _readData.readRecord)(this.buffer, variable, this.header.recordDimension);
133
137
  }
134
-
135
138
  return (0, _readData.readNonRecord)(this.buffer, variable);
136
139
  }
137
140
  }, {
@@ -139,10 +142,8 @@ var NetCDFReader = function () {
139
142
  value: function toString() {
140
143
  var result = [];
141
144
  result.push('DIMENSIONS');
142
-
143
145
  var _iterator = _createForOfIteratorHelper(this.dimensions),
144
- _step;
145
-
146
+ _step;
146
147
  try {
147
148
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
148
149
  var dimension = _step.value;
@@ -153,13 +154,10 @@ var NetCDFReader = function () {
153
154
  } finally {
154
155
  _iterator.f();
155
156
  }
156
-
157
157
  result.push('');
158
158
  result.push('GLOBAL ATTRIBUTES');
159
-
160
159
  var _iterator2 = _createForOfIteratorHelper(this.attributes),
161
- _step2;
162
-
160
+ _step2;
163
161
  try {
164
162
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
165
163
  var attribute = _step2.value;
@@ -170,25 +168,20 @@ var NetCDFReader = function () {
170
168
  } finally {
171
169
  _iterator2.f();
172
170
  }
173
-
174
171
  var variables = JSON.parse(JSON.stringify(this.variables));
175
172
  result.push('');
176
173
  result.push('VARIABLES:');
177
-
178
174
  var _iterator3 = _createForOfIteratorHelper(variables),
179
- _step3;
180
-
175
+ _step3;
181
176
  try {
182
177
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
183
178
  var variable = _step3.value;
184
179
  variable.value = this.getDataVariable(variable);
185
180
  var stringify = JSON.stringify(variable.value);
186
181
  if (stringify.length > 50) stringify = stringify.substring(0, 50);
187
-
188
182
  if (!isNaN(variable.value.length)) {
189
183
  stringify += " (length: ".concat(variable.value.length, ")");
190
184
  }
191
-
192
185
  result.push(" ".concat(variable.name.padEnd(30), " = ").concat(stringify));
193
186
  }
194
187
  } catch (err) {
@@ -196,12 +189,10 @@ var NetCDFReader = function () {
196
189
  } finally {
197
190
  _iterator3.f();
198
191
  }
199
-
200
192
  return result.join('\n');
201
193
  }
202
194
  }]);
203
195
  return NetCDFReader;
204
196
  }();
205
-
206
197
  exports.NetCDFReader = NetCDFReader;
207
198
  //# sourceMappingURL=netcdf-reader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/netcdfjs/netcdf-reader.ts"],"names":["NetCDFReader","data","buffer","IOBuffer","setBigEndian","magic","readChars","Error","version","readByte","header","recordDimension","dimensions","attributes","variables","attributeName","attribute","find","val","name","undefined","value","variableName","variable","getDataVariable","join","seek","offset","record","result","push","dimension","padEnd","size","JSON","parse","stringify","length","substring","isNaN"],"mappings":"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","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"],"file":"netcdf-reader.js"}
1
+ {"version":3,"file":"netcdf-reader.js","names":["NetCDFReader","data","buffer","IOBuffer","setBigEndian","magic","readChars","Error","version","readByte","header","readNetCDFHeader","recordDimension","dimensions","attributes","variables","attributeName","attribute","find","val","name","undefined","value","variableName","variable","getDataVariable","join","seek","offset","record","readRecord","readNonRecord","result","push","dimension","padEnd","size","JSON","parse","stringify","length","substring","isNaN"],"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 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"netcdf-types.js"}
1
+ {"version":3,"file":"netcdf-types.js","names":[],"sources":["../../../src/netcdfjs/netcdf-types.ts"],"sourcesContent":["/**\n * Header describing a NetDCF file\n * @param recordDimension: Number with the length of record dimension\n * @param dimensions: List of dimensions\n * @param attributes: List of global attributes\n * @param variables: List of variables\n */\nexport type NetCDFHeader = {\n version: number;\n recordDimension: NetCDFRecordDimension;\n dimensions: NetCDFDimension[];\n attributes: NetCDFAttribute[];\n variables: NetCDFVariable[];\n};\n\n/**\n * Metadata for the record dimension\n * @param length Number of elements in the record dimension\n * @param id Id in the list of dimensions for the record dimension\n * @param name name of the record dimension\n * @param recordStep the record variables step size\n */\nexport type NetCDFRecordDimension = {\n length: number;\n id: number; // id of the unlimited dimension\n name: string; // name of the unlimited dimension\n recordStep: number;\n};\n\n/**\n * `dimensions` is an array of dimension objects:\n * @param name name of the dimension\n * @param size size of the dimension\n * @param recordId: id of the dimension that has unlimited size or undefined,\n * @param recordName: name of the dimension that has unlimited size\n */\nexport type NetCDFDimension = {\n name: string;\n size: number;\n recordId: number;\n recordName: string;\n};\n\n/**\n * Number of recordStep and list of variables with:\n * @param name String with the name of the variable\n * @param dimensions Array with the dimension IDs of the variable\n * @param attributes Array with the attributes of the variable\n * @param type String with the type of the variable\n * @param size Number with the size of the variable\n * @param offset Number with the offset where of the variable begins\n * @param record True if is a record variable, false otherwise (unlimited size)\n */\nexport type NetCDFVariable = {\n name: string;\n dimensions: [];\n attributes: [];\n type: string;\n size: number;\n offset: number;\n record: boolean;\n};\n\n/**\n * @param name name of the attribute\n * @param type type of the attribute\n * @param value number or string with the value of the attribute\n */\nexport type NetCDFAttribute = {\n name: string;\n type: string;\n value: string;\n};\n"],"mappings":""}
@@ -5,34 +5,33 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.readNonRecord = readNonRecord;
7
7
  exports.readRecord = readRecord;
8
-
9
8
  var _readType = require("./read-type");
10
9
 
11
10
  function readNonRecord(buffer, variable) {
12
11
  var type = (0, _readType.str2num)(variable.type);
12
+
13
13
  var size = variable.size / (0, _readType.num2bytes)(type);
14
- var data = new Array(size);
15
14
 
15
+ var data = new Array(size);
16
16
  for (var i = 0; i < size; i++) {
17
17
  data[i] = (0, _readType.readType)(buffer, type, 1);
18
18
  }
19
-
20
19
  return data;
21
20
  }
22
21
 
23
22
  function readRecord(buffer, variable, recordDimension) {
24
23
  var type = (0, _readType.str2num)(variable.type);
25
24
  var width = variable.size ? variable.size / (0, _readType.num2bytes)(type) : 1;
25
+
26
26
  var size = recordDimension.length;
27
+
27
28
  var data = new Array(size);
28
29
  var step = recordDimension.recordStep;
29
-
30
30
  for (var i = 0; i < size; i++) {
31
31
  var currentOffset = buffer.offset;
32
32
  data[i] = (0, _readType.readType)(buffer, type, width);
33
33
  buffer.seek(currentOffset + step);
34
34
  }
35
-
36
35
  return data;
37
36
  }
38
37
  //# sourceMappingURL=read-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/netcdfjs/read-data.ts"],"names":["readNonRecord","buffer","variable","type","size","data","Array","i","readRecord","recordDimension","width","length","step","recordStep","currentOffset","offset","seek"],"mappings":";;;;;;;;AAEA;;AAUO,SAASA,aAAT,CACLC,MADK,EAELC,QAFK,EAGwC;AAE7C,MAAMC,IAAI,GAAG,uBAAQD,QAAQ,CAACC,IAAjB,CAAb;AAGA,MAAMC,IAAI,GAAGF,QAAQ,CAACE,IAAT,GAAgB,yBAAUD,IAAV,CAA7B;AAGA,MAAME,IAAI,GAAG,IAAIC,KAAJ,CAAUF,IAAV,CAAb;;AACA,OAAK,IAAIG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,IAApB,EAA0BG,CAAC,EAA3B,EAA+B;AAC7BF,IAAAA,IAAI,CAACE,CAAD,CAAJ,GAAU,wBAASN,MAAT,EAAiBE,IAAjB,EAAuB,CAAvB,CAAV;AACD;;AAED,SAAOE,IAAP;AACD;;AASM,SAASG,UAAT,CACLP,MADK,EAELC,QAFK,EAGLO,eAHK,EAIwC;AAE7C,MAAMN,IAAI,GAAG,uBAAQD,QAAQ,CAACC,IAAjB,CAAb;AACA,MAAMO,KAAK,GAAGR,QAAQ,CAACE,IAAT,GAAgBF,QAAQ,CAACE,IAAT,GAAgB,yBAAUD,IAAV,CAAhC,GAAkD,CAAhE;AAIA,MAAMC,IAAI,GAAGK,eAAe,CAACE,MAA7B;AAGA,MAAMN,IAAI,GAAG,IAAIC,KAAJ,CAAUF,IAAV,CAAb;AACA,MAAMQ,IAAI,GAAGH,eAAe,CAACI,UAA7B;;AAEA,OAAK,IAAIN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,IAApB,EAA0BG,CAAC,EAA3B,EAA+B;AAC7B,QAAMO,aAAa,GAAGb,MAAM,CAACc,MAA7B;AACAV,IAAAA,IAAI,CAACE,CAAD,CAAJ,GAAU,wBAASN,MAAT,EAAiBE,IAAjB,EAAuBO,KAAvB,CAAV;AACAT,IAAAA,MAAM,CAACe,IAAP,CAAYF,aAAa,GAAGF,IAA5B;AACD;;AAED,SAAOP,IAAP;AACD","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"],"file":"read-data.js"}
1
+ {"version":3,"file":"read-data.js","names":["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;;AAUO,SAASA,aAAa,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,UAAU,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"}
@@ -3,11 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.readNetCDFHeader = readNetCDFHeader;
7
6
  exports.readName = readName;
8
-
7
+ exports.readNetCDFHeader = readNetCDFHeader;
9
8
  var _readType = require("./read-type");
10
-
11
9
  var ZERO = 0;
12
10
  var NC_DIMENSION = 10;
13
11
  var NC_VARIABLE = 11;
@@ -16,8 +14,11 @@ var NC_UNLIMITED = 0;
16
14
 
17
15
  function readNetCDFHeader(buffer, version) {
18
16
  var recordDimensionLength = buffer.readUint32();
17
+
19
18
  var dimList = readDimensionsList(buffer);
19
+
20
20
  var attributes = readAttributesList(buffer);
21
+
21
22
  var variableList = readVariablesList(buffer, dimList.recordId, version);
22
23
  var header = {
23
24
  version: version,
@@ -36,19 +37,16 @@ function readNetCDFHeader(buffer, version) {
36
37
 
37
38
  function readDimensionsList(buffer) {
38
39
  var dimList = buffer.readUint32();
39
-
40
40
  if (dimList === ZERO) {
41
41
  if (buffer.readUint32() !== ZERO) {
42
42
  throw new Error('NetCDF: wrong empty tag for list of dimensions');
43
43
  }
44
-
45
44
  return {
46
45
  recordId: 0,
47
46
  recordName: '',
48
47
  dimensions: []
49
48
  };
50
49
  }
51
-
52
50
  if (dimList !== NC_DIMENSION) {
53
51
  throw new Error('NetCDF: wrong tag for list of dimensions');
54
52
  }
@@ -57,22 +55,19 @@ function readDimensionsList(buffer) {
57
55
  var dimensions = new Array(dimensionSize);
58
56
  var recordId;
59
57
  var recordName;
60
-
61
58
  for (var dim = 0; dim < dimensionSize; dim++) {
62
59
  var name = readName(buffer);
63
- var size = buffer.readUint32();
64
60
 
61
+ var size = buffer.readUint32();
65
62
  if (size === NC_UNLIMITED) {
66
63
  recordId = dim;
67
64
  recordName = name;
68
65
  }
69
-
70
66
  dimensions[dim] = {
71
67
  name: name,
72
68
  size: size
73
69
  };
74
70
  }
75
-
76
71
  return {
77
72
  dimensions: dimensions,
78
73
  recordId: recordId,
@@ -82,32 +77,29 @@ function readDimensionsList(buffer) {
82
77
 
83
78
  function readAttributesList(buffer) {
84
79
  var gAttList = buffer.readUint32();
85
-
86
80
  if (gAttList === ZERO) {
87
81
  if (buffer.readUint32() !== ZERO) {
88
82
  throw new Error('NetCDF: wrong empty tag for list of attributes');
89
83
  }
90
-
91
84
  return [];
92
85
  }
93
-
94
86
  if (gAttList !== NC_ATTRIBUTE) {
95
87
  throw new Error('NetCDF: wrong tag for list of attributes');
96
88
  }
97
89
 
98
90
  var attributeSize = buffer.readUint32();
99
91
  var attributes = new Array(attributeSize);
100
-
101
92
  for (var gAtt = 0; gAtt < attributeSize; gAtt++) {
102
93
  var name = readName(buffer);
103
- var type = buffer.readUint32();
104
94
 
95
+ var type = buffer.readUint32();
105
96
  if (type < 1 || type > 6) {
106
97
  throw new Error("NetCDF: non valid type ".concat(type));
107
98
  }
108
99
 
109
100
  var size = buffer.readUint32();
110
101
  var value = (0, _readType.readType)(buffer, type, size);
102
+
111
103
  padding(buffer);
112
104
  attributes[gAtt] = {
113
105
  name: name,
@@ -115,66 +107,58 @@ function readAttributesList(buffer) {
115
107
  value: value
116
108
  };
117
109
  }
118
-
119
110
  return attributes;
120
111
  }
121
112
 
122
113
  function readVariablesList(buffer, recordId, version) {
123
114
  var varList = buffer.readUint32();
124
115
  var recordStep = 0;
125
-
126
116
  if (varList === ZERO) {
127
117
  if (buffer.readUint32() !== ZERO) {
128
118
  throw new Error('NetCDF: wrong empty tag for list of variables');
129
119
  }
130
-
131
120
  return {
132
121
  recordStep: recordStep,
133
122
  variables: []
134
123
  };
135
124
  }
136
-
137
125
  if (varList !== NC_VARIABLE) {
138
126
  throw new Error('NetCDF: wrong tag for list of variables');
139
127
  }
140
128
 
141
129
  var variableSize = buffer.readUint32();
142
130
  var variables = new Array(variableSize);
143
-
144
131
  for (var v = 0; v < variableSize; v++) {
145
132
  var name = readName(buffer);
133
+
146
134
  var dimensionality = buffer.readUint32();
147
- var dimensionsIds = new Array(dimensionality);
148
135
 
136
+ var dimensionsIds = new Array(dimensionality);
149
137
  for (var dim = 0; dim < dimensionality; dim++) {
150
138
  dimensionsIds[dim] = buffer.readUint32();
151
139
  }
152
140
 
153
141
  var attributes = readAttributesList(buffer);
154
- var type = buffer.readUint32();
155
142
 
143
+ var type = buffer.readUint32();
156
144
  if (type < 1 && type > 6) {
157
145
  throw new Error("NetCDF: non valid type ".concat(type));
158
146
  }
159
147
 
160
148
  var varSize = buffer.readUint32();
161
- var offset = buffer.readUint32();
162
149
 
150
+ var offset = buffer.readUint32();
163
151
  if (version === 2) {
164
152
  if (offset > 0) {
165
153
  throw new Error('NetCDF: offsets larger than 4GB not supported');
166
154
  }
167
-
168
155
  offset = buffer.readUint32();
169
156
  }
170
-
171
157
  var record = false;
172
-
173
158
  if (typeof recordId !== 'undefined' && dimensionsIds[0] === recordId) {
174
159
  recordStep += varSize;
175
160
  record = true;
176
161
  }
177
-
178
162
  variables[v] = {
179
163
  name: name,
180
164
  dimensions: dimensionsIds,
@@ -185,7 +169,6 @@ function readVariablesList(buffer, recordId, version) {
185
169
  record: record
186
170
  };
187
171
  }
188
-
189
172
  return {
190
173
  variables: variables,
191
174
  recordStep: recordStep
@@ -195,6 +178,7 @@ function readVariablesList(buffer, recordId, version) {
195
178
  function readName(buffer) {
196
179
  var nameLength = buffer.readUint32();
197
180
  var name = buffer.readChars(nameLength);
181
+
198
182
  padding(buffer);
199
183
  return name;
200
184
  }