geoserver-node-client 1.6.0 → 1.6.2

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,24 +1,14 @@
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.GeoServerResponseError = void 0;
8
7
  exports.getGeoServerResponseText = getGeoServerResponseText;
9
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
- var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
16
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
17
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
18
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
19
8
  /**
20
9
  * Utility functions and classes
21
10
  */
11
+
22
12
  /**
23
13
  * Return the GeoServer response text if available.
24
14
  *
@@ -26,47 +16,30 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
26
16
  *
27
17
  * @returns {String} The response text if available
28
18
  */
29
- function getGeoServerResponseText(_x) {
30
- return _getGeoServerResponseText.apply(this, arguments);
19
+ async function getGeoServerResponseText(response) {
20
+ try {
21
+ return response.text();
22
+ // eslint-disable-next-line
23
+ } catch (e) {
24
+ // return nothing
25
+ }
31
26
  }
27
+
32
28
  /**
33
29
  * Generic GeoServer error
34
30
  */
35
- function _getGeoServerResponseText() {
36
- _getGeoServerResponseText = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(response) {
37
- var _t;
38
- return _regenerator["default"].wrap(function (_context) {
39
- while (1) switch (_context.prev = _context.next) {
40
- case 0:
41
- _context.prev = 0;
42
- return _context.abrupt("return", response.text());
43
- case 1:
44
- _context.prev = 1;
45
- _t = _context["catch"](0);
46
- case 2:
47
- case "end":
48
- return _context.stop();
49
- }
50
- }, _callee, null, [[0, 1]]);
51
- }));
52
- return _getGeoServerResponseText.apply(this, arguments);
53
- }
54
- var GeoServerResponseError = exports.GeoServerResponseError = /*#__PURE__*/function (_Error) {
31
+ class GeoServerResponseError extends Error {
55
32
  /**
56
33
  * @param {String} [message=GeoServer Response Error] The error message
57
34
  * @param {String} [geoServerOutput] The error output from GeoServer (useful for debugging)
58
35
  */
59
- function GeoServerResponseError(message, geoServerOutput) {
60
- var _this;
61
- (0, _classCallCheck2["default"])(this, GeoServerResponseError);
62
- _this = _callSuper(this, GeoServerResponseError, [message]);
63
- _this.name = 'GeoServerResponseError';
64
- _this.message = message || 'GeoServer Response Error';
36
+ constructor(message, geoServerOutput) {
37
+ super(message);
38
+ this.name = 'GeoServerResponseError';
39
+ this.message = message || 'GeoServer Response Error';
65
40
 
66
41
  // custom property as explained here: https://xjamundx.medium.com/custom-javascript-errors-in-es6-aa891b173f87
67
- _this.geoServerOutput = geoServerOutput;
68
- return _this;
42
+ this.geoServerOutput = geoServerOutput;
69
43
  }
70
- (0, _inherits2["default"])(GeoServerResponseError, _Error);
71
- return (0, _createClass2["default"])(GeoServerResponseError);
72
- }(/*#__PURE__*/(0, _wrapNativeSuper2["default"])(Error));
44
+ }
45
+ exports.GeoServerResponseError = GeoServerResponseError;
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports["default"] = void 0;
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
7
+ exports.default = void 0;
12
8
  var _nodeFetch = _interopRequireDefault(require("node-fetch"));
13
9
  var _geoserver = require("./util/geoserver.js");
14
10
  var _about = _interopRequireDefault(require("./about.js"));
@@ -17,7 +13,7 @@ var _about = _interopRequireDefault(require("./about.js"));
17
13
  *
18
14
  * @module WorkspaceClient
19
15
  */
20
- var WorkspaceClient = exports["default"] = /*#__PURE__*/function () {
16
+ class WorkspaceClient {
21
17
  /**
22
18
  * Creates a GeoServer REST WorkspaceClient instance.
23
19
  *
@@ -26,8 +22,7 @@ var WorkspaceClient = exports["default"] = /*#__PURE__*/function () {
26
22
  * @param {String} url The URL of the GeoServer REST API endpoint
27
23
  * @param {String} auth The Basic Authentication string
28
24
  */
29
- function WorkspaceClient(url, auth) {
30
- (0, _classCallCheck2["default"])(this, WorkspaceClient);
25
+ constructor(url, auth) {
31
26
  this.url = url;
32
27
  this.auth = auth;
33
28
  }
@@ -39,227 +34,119 @@ var WorkspaceClient = exports["default"] = /*#__PURE__*/function () {
39
34
  *
40
35
  * @returns {Object} An Object describing the workspaces
41
36
  */
42
- return (0, _createClass2["default"])(WorkspaceClient, [{
43
- key: "getAll",
44
- value: (function () {
45
- var _getAll = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
46
- var response, geoServerResponse;
47
- return _regenerator["default"].wrap(function (_context) {
48
- while (1) switch (_context.prev = _context.next) {
49
- case 0:
50
- _context.next = 1;
51
- return (0, _nodeFetch["default"])(this.url + 'workspaces.json', {
52
- credentials: 'include',
53
- method: 'GET',
54
- headers: {
55
- Authorization: this.auth
56
- }
57
- });
58
- case 1:
59
- response = _context.sent;
60
- if (response.ok) {
61
- _context.next = 3;
62
- break;
63
- }
64
- _context.next = 2;
65
- return (0, _geoserver.getGeoServerResponseText)(response);
66
- case 2:
67
- geoServerResponse = _context.sent;
68
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
69
- case 3:
70
- return _context.abrupt("return", response.json());
71
- case 4:
72
- case "end":
73
- return _context.stop();
74
- }
75
- }, _callee, this);
76
- }));
77
- function getAll() {
78
- return _getAll.apply(this, arguments);
37
+ async getAll() {
38
+ const response = await (0, _nodeFetch.default)(this.url + 'workspaces.json', {
39
+ credentials: 'include',
40
+ method: 'GET',
41
+ headers: {
42
+ Authorization: this.auth
79
43
  }
80
- return getAll;
81
- }()
82
- /**
83
- * Returns a workspace.
84
- *
85
- * @param {String} name Name of the workspace
86
- *
87
- * @throws Error if request fails
88
- *
89
- * @returns {Object} An object describing the workspaces
90
- */
91
- )
92
- }, {
93
- key: "get",
94
- value: (function () {
95
- var _get = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(name) {
96
- var response, grc, geoServerResponse;
97
- return _regenerator["default"].wrap(function (_context2) {
98
- while (1) switch (_context2.prev = _context2.next) {
99
- case 0:
100
- _context2.next = 1;
101
- return (0, _nodeFetch["default"])(this.url + 'workspaces/' + name + '.json', {
102
- credentials: 'include',
103
- method: 'GET',
104
- headers: {
105
- Authorization: this.auth
106
- }
107
- });
108
- case 1:
109
- response = _context2.sent;
110
- if (response.ok) {
111
- _context2.next = 5;
112
- break;
113
- }
114
- grc = new _about["default"](this.url, this.auth);
115
- _context2.next = 2;
116
- return grc.exists();
117
- case 2:
118
- if (!_context2.sent) {
119
- _context2.next = 3;
120
- break;
121
- }
122
- return _context2.abrupt("return");
123
- case 3:
124
- _context2.next = 4;
125
- return (0, _geoserver.getGeoServerResponseText)(response);
126
- case 4:
127
- geoServerResponse = _context2.sent;
128
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
129
- case 5:
130
- return _context2.abrupt("return", response.json());
131
- case 6:
132
- case "end":
133
- return _context2.stop();
134
- }
135
- }, _callee2, this);
136
- }));
137
- function get(_x) {
138
- return _get.apply(this, arguments);
44
+ });
45
+ if (!response.ok) {
46
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
47
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
48
+ }
49
+ return response.json();
50
+ }
51
+
52
+ /**
53
+ * Returns a workspace.
54
+ *
55
+ * @param {String} name Name of the workspace
56
+ *
57
+ * @throws Error if request fails
58
+ *
59
+ * @returns {Object} An object describing the workspaces
60
+ */
61
+ async get(name) {
62
+ const response = await (0, _nodeFetch.default)(this.url + 'workspaces/' + name + '.json', {
63
+ credentials: 'include',
64
+ method: 'GET',
65
+ headers: {
66
+ Authorization: this.auth
139
67
  }
140
- return get;
141
- }()
142
- /**
143
- * Creates a new workspace.
144
- *
145
- * @param {String} name Name of the new workspace
146
- *
147
- * @throws Error if request fails
148
- *
149
- * @returns {String} The name of the created workspace
150
- */
151
- )
152
- }, {
153
- key: "create",
154
- value: (function () {
155
- var _create = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(name) {
156
- var body, response, geoServerResponse, wsObject, _t;
157
- return _regenerator["default"].wrap(function (_context3) {
158
- while (1) switch (_context3.prev = _context3.next) {
159
- case 0:
160
- body = {
161
- workspace: {
162
- name: name
163
- }
164
- };
165
- _context3.next = 1;
166
- return (0, _nodeFetch["default"])(this.url + 'workspaces', {
167
- credentials: 'include',
168
- method: 'POST',
169
- headers: {
170
- Authorization: this.auth,
171
- 'Content-Type': 'application/json'
172
- },
173
- body: JSON.stringify(body)
174
- });
175
- case 1:
176
- response = _context3.sent;
177
- if (response.ok) {
178
- _context3.next = 5;
179
- break;
180
- }
181
- _context3.next = 2;
182
- return (0, _geoserver.getGeoServerResponseText)(response);
183
- case 2:
184
- geoServerResponse = _context3.sent;
185
- _t = response.status;
186
- _context3.next = _t === 409 ? 3 : 4;
187
- break;
188
- case 3:
189
- throw new _geoserver.GeoServerResponseError('Unable to add workspace as it already exists', geoServerResponse);
190
- case 4:
191
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
192
- case 5:
193
- _context3.next = 6;
194
- return this.get(name);
195
- case 6:
196
- wsObject = _context3.sent;
197
- return _context3.abrupt("return", wsObject.workspace.name);
198
- case 7:
199
- case "end":
200
- return _context3.stop();
201
- }
202
- }, _callee3, this);
203
- }));
204
- function create(_x2) {
205
- return _create.apply(this, arguments);
68
+ });
69
+ if (!response.ok) {
70
+ const grc = new _about.default(this.url, this.auth);
71
+ if (await grc.exists()) {
72
+ // GeoServer exists, but requested item does not exist, we return empty
73
+ return;
74
+ } else {
75
+ // There was a general problem with GeoServer
76
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
77
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
206
78
  }
207
- return create;
208
- }()
209
- /**
210
- * Deletes a workspace.
211
- *
212
- * @param {String} name Name of the workspace to delete
213
- * @param {Boolean} recurse Flag to enable recursive deletion
214
- *
215
- * @throws Error if request fails
216
- */
217
- )
218
- }, {
219
- key: "delete",
220
- value: (function () {
221
- var _delete2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4(name, recurse) {
222
- var response, geoServerResponse, _t2;
223
- return _regenerator["default"].wrap(function (_context4) {
224
- while (1) switch (_context4.prev = _context4.next) {
225
- case 0:
226
- _context4.next = 1;
227
- return (0, _nodeFetch["default"])(this.url + 'workspaces/' + name + '?recurse=' + recurse, {
228
- credentials: 'include',
229
- method: 'DELETE',
230
- headers: {
231
- Authorization: this.auth
232
- }
233
- });
234
- case 1:
235
- response = _context4.sent;
236
- if (response.ok) {
237
- _context4.next = 6;
238
- break;
239
- }
240
- _context4.next = 2;
241
- return (0, _geoserver.getGeoServerResponseText)(response);
242
- case 2:
243
- geoServerResponse = _context4.sent;
244
- _t2 = response.status;
245
- _context4.next = _t2 === 400 ? 3 : _t2 === 404 ? 4 : 5;
246
- break;
247
- case 3:
248
- throw new _geoserver.GeoServerResponseError('Workspace or related Namespace is not empty (and recurse not true)', geoServerResponse);
249
- case 4:
250
- throw new _geoserver.GeoServerResponseError("Workspace doesn't exist", geoServerResponse);
251
- case 5:
252
- throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
253
- case 6:
254
- case "end":
255
- return _context4.stop();
256
- }
257
- }, _callee4, this);
258
- }));
259
- function _delete(_x3, _x4) {
260
- return _delete2.apply(this, arguments);
79
+ }
80
+ return response.json();
81
+ }
82
+
83
+ /**
84
+ * Creates a new workspace.
85
+ *
86
+ * @param {String} name Name of the new workspace
87
+ *
88
+ * @throws Error if request fails
89
+ *
90
+ * @returns {String} The name of the created workspace
91
+ */
92
+ async create(name) {
93
+ const body = {
94
+ workspace: {
95
+ name
261
96
  }
262
- return _delete;
263
- }())
264
- }]);
265
- }();
97
+ };
98
+ const response = await (0, _nodeFetch.default)(this.url + 'workspaces', {
99
+ credentials: 'include',
100
+ method: 'POST',
101
+ headers: {
102
+ Authorization: this.auth,
103
+ 'Content-Type': 'application/json'
104
+ },
105
+ body: JSON.stringify(body)
106
+ });
107
+ if (!response.ok) {
108
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
109
+ switch (response.status) {
110
+ case 409:
111
+ throw new _geoserver.GeoServerResponseError('Unable to add workspace as it already exists', geoServerResponse);
112
+ default:
113
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
114
+ }
115
+ }
116
+ // query the WS object again to return the name of the created WS
117
+ const wsObject = await this.get(name);
118
+ return wsObject.workspace.name;
119
+ }
120
+
121
+ /**
122
+ * Deletes a workspace.
123
+ *
124
+ * @param {String} name Name of the workspace to delete
125
+ * @param {Boolean} recurse Flag to enable recursive deletion
126
+ *
127
+ * @throws Error if request fails
128
+ */
129
+ async delete(name, recurse) {
130
+ const response = await (0, _nodeFetch.default)(this.url + 'workspaces/' + name + '?recurse=' + recurse, {
131
+ credentials: 'include',
132
+ method: 'DELETE',
133
+ headers: {
134
+ Authorization: this.auth
135
+ }
136
+ });
137
+ if (!response.ok) {
138
+ const geoServerResponse = await (0, _geoserver.getGeoServerResponseText)(response);
139
+ switch (response.status) {
140
+ case 400:
141
+ // the docs say code 403, but apparently it is code 400
142
+ // https://docs.geoserver.org/latest/en/api/#1.0.0/workspaces.yaml
143
+ throw new _geoserver.GeoServerResponseError('Workspace or related Namespace is not empty (and recurse not true)', geoServerResponse);
144
+ case 404:
145
+ throw new _geoserver.GeoServerResponseError("Workspace doesn't exist", geoServerResponse);
146
+ default:
147
+ throw new _geoserver.GeoServerResponseError(null, geoServerResponse);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ exports.default = WorkspaceClient;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "geoserver-node-client",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "Node.js client for GeoServer REST API",
5
5
  "type": "module",
6
6
  "main": "geoserver-rest-client.js",
@@ -36,14 +36,14 @@
36
36
  "author": "C. Mayer, meggsimum (info_at*meggsimum?dot?de)",
37
37
  "license": "BSD-2-Clause",
38
38
  "dependencies": {
39
- "@babel/runtime": "^7.27.6",
39
+ "@babel/runtime": "^8.0.0",
40
40
  "node-fetch": "^3.3.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@babel/cli": "^7.23.0",
44
- "@babel/core": "^7.27.4",
45
- "@babel/plugin-transform-runtime": "^7.27.4",
46
- "@babel/preset-env": "^7.22.20",
43
+ "@babel/cli": "^8.0.0",
44
+ "@babel/core": "^8.0.0",
45
+ "@babel/plugin-transform-runtime": "^8.0.0",
46
+ "@babel/preset-env": "^8.0.0",
47
47
  "@eslint/compat": "^2.0.0",
48
48
  "chai": "^6.0.1",
49
49
  "eslint": "^9.29.0",
@@ -51,8 +51,8 @@
51
51
  "eslint-plugin-prettier": "^5.5.1",
52
52
  "jsdoc": "^4.0.2",
53
53
  "mocha": "^11.7.1",
54
- "neostandard": "^0.12.1",
54
+ "neostandard": "^0.13.0",
55
55
  "prettier": "^3.6.1",
56
- "release-it": "^19.0.3"
56
+ "release-it": "^20.0.0"
57
57
  }
58
58
  }