@sassoftware/viya-serverjs 0.5.5 → 0.6.1-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +15 -32
- package/.env.proxy +24 -0
- package/.env.server +20 -35
- package/Dockerfile +24 -30
- package/README.md +69 -37
- package/cli.js +2 -1
- package/lib/handlers/codeAuth.js +11 -9
- package/lib/handlers/getApp.js +5 -2
- package/lib/handlers/logon.js +4 -5
- package/lib/handlers/proxyMapUri.js +1 -1
- package/lib/handlers/setCookies.js +22 -15
- package/lib/iService.js +98 -234
- package/lib/index.js +29 -15
- package/lib/plugins/SASauth.js +2 -8
- package/lib/plugins/appCookie.js +3 -4
- package/lib/plugins/setContext.js +3 -1
- package/lib/plugins/setDefaultRoutes.js +33 -61
- package/lib/plugins/setupUserRoutes.js +11 -5
- package/lib/readCerts.js +38 -0
- package/package.json +15 -21
- package/public/help.html +1 -1
- package/public/index.html +302 -304
- package/public/indexold.html +356 -0
- package/server.js +10 -11
- package/src/handlers/codeAuth.js +10 -10
- package/src/handlers/getApp.js +4 -1
- package/src/handlers/logon.js +3 -4
- package/src/handlers/proxyMapUri.js +3 -3
- package/src/handlers/setCookies.js +8 -11
- package/src/iService.js +82 -173
- package/src/index.js +30 -17
- package/src/plugins/SASauth.js +2 -9
- package/src/plugins/appCookie.js +4 -5
- package/src/plugins/setContext.js +3 -2
- package/src/plugins/setDefaultRoutes.js +19 -25
- package/src/plugins/setupUserRoutes.js +6 -3
- package/src/readCerts.js +33 -0
- package/tls/viyatls.sh +3 -0
- package/mcpServer.js +0 -364
- package/public/auth.html +0 -25
- package/testca.js +0 -10
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
4
|
var _handlers = require("../handlers");
|
|
5
|
-
var _setContext = _interopRequireDefault(require("./setContext"));
|
|
5
|
+
var _setContext = _interopRequireDefault(require("./setContext.js"));
|
|
6
6
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
7
7
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
8
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -45,7 +45,8 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
45
45
|
strategy: "sas"
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
|
-
var getAppb = _handlers.getApp.bind(null,
|
|
48
|
+
var getAppb = _handlers.getApp.bind(null, options // process.env.USETOKEN === "YES" ? options : null
|
|
49
|
+
);
|
|
49
50
|
console.log("Default strategy", authDefault);
|
|
50
51
|
console.log("Logon strategy", authLogon);
|
|
51
52
|
options.authDefault = authDefault;
|
|
@@ -56,7 +57,7 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
56
57
|
method: ["GET"],
|
|
57
58
|
path: "".concat(appName, "/logon"),
|
|
58
59
|
options: {
|
|
59
|
-
auth:
|
|
60
|
+
auth: options.authFlow === "server" ? {
|
|
60
61
|
mode: "try",
|
|
61
62
|
strategy: "sas"
|
|
62
63
|
} : null,
|
|
@@ -72,9 +73,10 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
72
73
|
return _regenerator().w(function (_context) {
|
|
73
74
|
while (1) switch (_context.n) {
|
|
74
75
|
case 0:
|
|
75
|
-
|
|
76
|
+
debug('logonhandler', req.auth.credentials);
|
|
77
|
+
console.log('In logon handler', options.authFlow);
|
|
76
78
|
_context.n = 1;
|
|
77
|
-
return (0, _handlers.logon)(req, h);
|
|
79
|
+
return (0, _handlers.logon)(req, h, options);
|
|
78
80
|
case 1:
|
|
79
81
|
return _context.a(2, _context.v);
|
|
80
82
|
}
|
|
@@ -90,23 +92,8 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
90
92
|
method: ["GET"],
|
|
91
93
|
path: "".concat(appName),
|
|
92
94
|
options: {
|
|
93
|
-
auth: process.env.USELOGON
|
|
94
|
-
|
|
95
|
-
handler: function () {
|
|
96
|
-
var _handler2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(req, h) {
|
|
97
|
-
return _regenerator().w(function (_context2) {
|
|
98
|
-
while (1) switch (_context2.n) {
|
|
99
|
-
case 0:
|
|
100
|
-
console.log(">>>>>>>>>>>>>>>>>>>>>>>in ".concat(appName));
|
|
101
|
-
return _context2.a(2, getAppb(req, h));
|
|
102
|
-
}
|
|
103
|
-
}, _callee2);
|
|
104
|
-
}));
|
|
105
|
-
function handler(_x3, _x4) {
|
|
106
|
-
return _handler2.apply(this, arguments);
|
|
107
|
-
}
|
|
108
|
-
return handler;
|
|
109
|
-
}()
|
|
95
|
+
auth: process.env.USELOGON === 'YES' ? null : options.serverMode === "app" ? authLogon : authDefault,
|
|
96
|
+
handler: getAppb
|
|
110
97
|
}
|
|
111
98
|
}, {
|
|
112
99
|
method: ["GET"],
|
|
@@ -114,16 +101,16 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
114
101
|
options: {
|
|
115
102
|
auth: authDefault,
|
|
116
103
|
handler: function () {
|
|
117
|
-
var
|
|
118
|
-
return _regenerator().w(function (
|
|
119
|
-
while (1) switch (
|
|
104
|
+
var _handler2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(req, h) {
|
|
105
|
+
return _regenerator().w(function (_context2) {
|
|
106
|
+
while (1) switch (_context2.n) {
|
|
120
107
|
case 0:
|
|
121
|
-
return
|
|
108
|
+
return _context2.a(2, h.redirect("".concat(appName, "/documentation")));
|
|
122
109
|
}
|
|
123
|
-
},
|
|
110
|
+
}, _callee2);
|
|
124
111
|
}));
|
|
125
|
-
function handler(
|
|
126
|
-
return
|
|
112
|
+
function handler(_x3, _x4) {
|
|
113
|
+
return _handler2.apply(this, arguments);
|
|
127
114
|
}
|
|
128
115
|
return handler;
|
|
129
116
|
}()
|
|
@@ -163,10 +150,10 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
163
150
|
options: {
|
|
164
151
|
auth: /*authDefault*/false,
|
|
165
152
|
handler: function () {
|
|
166
|
-
var
|
|
153
|
+
var _handler3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(req, h) {
|
|
167
154
|
var allAppEnv, uappenv, s;
|
|
168
|
-
return _regenerator().w(function (
|
|
169
|
-
while (1) switch (
|
|
155
|
+
return _regenerator().w(function (_context3) {
|
|
156
|
+
while (1) switch (_context3.n) {
|
|
170
157
|
case 0:
|
|
171
158
|
allAppEnv = options.allAppEnv;
|
|
172
159
|
if (options.userInfo != null) {
|
|
@@ -181,12 +168,12 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
181
168
|
console.log(s);
|
|
182
169
|
}
|
|
183
170
|
debug(s);
|
|
184
|
-
return
|
|
171
|
+
return _context3.a(2, s);
|
|
185
172
|
}
|
|
186
|
-
},
|
|
173
|
+
}, _callee3);
|
|
187
174
|
}));
|
|
188
|
-
function handler(
|
|
189
|
-
return
|
|
175
|
+
function handler(_x5, _x6) {
|
|
176
|
+
return _handler3.apply(this, arguments);
|
|
190
177
|
}
|
|
191
178
|
return handler;
|
|
192
179
|
}()
|
|
@@ -197,10 +184,10 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
197
184
|
options: {
|
|
198
185
|
auth: /*authDefault*/false,
|
|
199
186
|
handler: function () {
|
|
200
|
-
var
|
|
187
|
+
var _handler4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(req, h) {
|
|
201
188
|
var allAppEnv, uappenv, s;
|
|
202
|
-
return _regenerator().w(function (
|
|
203
|
-
while (1) switch (
|
|
189
|
+
return _regenerator().w(function (_context4) {
|
|
190
|
+
while (1) switch (_context4.n) {
|
|
204
191
|
case 0:
|
|
205
192
|
allAppEnv = options.allAppEnv;
|
|
206
193
|
if (options.userInfo != null) {
|
|
@@ -215,12 +202,12 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
215
202
|
debug(options.allAppEnv);
|
|
216
203
|
}
|
|
217
204
|
debug(s);
|
|
218
|
-
return
|
|
205
|
+
return _context4.a(2, s);
|
|
219
206
|
}
|
|
220
|
-
},
|
|
207
|
+
}, _callee4);
|
|
221
208
|
}));
|
|
222
|
-
function handler(
|
|
223
|
-
return
|
|
209
|
+
function handler(_x7, _x8) {
|
|
210
|
+
return _handler4.apply(this, arguments);
|
|
224
211
|
}
|
|
225
212
|
return handler;
|
|
226
213
|
}()
|
|
@@ -242,21 +229,7 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
242
229
|
path: "/{param*}",
|
|
243
230
|
options: {
|
|
244
231
|
auth: authDefault,
|
|
245
|
-
handler:
|
|
246
|
-
var _handler6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(req, h) {
|
|
247
|
-
return _regenerator().w(function (_context6) {
|
|
248
|
-
while (1) switch (_context6.n) {
|
|
249
|
-
case 0:
|
|
250
|
-
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>in param');
|
|
251
|
-
return _context6.a(2, (0, _handlers.getApp2)(req, h));
|
|
252
|
-
}
|
|
253
|
-
}, _callee6);
|
|
254
|
-
}));
|
|
255
|
-
function handler(_x1, _x10) {
|
|
256
|
-
return _handler6.apply(this, arguments);
|
|
257
|
-
}
|
|
258
|
-
return handler;
|
|
259
|
-
}()
|
|
232
|
+
handler: _handlers.getApp2
|
|
260
233
|
}
|
|
261
234
|
}, {
|
|
262
235
|
method: ["GET"],
|
|
@@ -288,14 +261,13 @@ module.exports = function setDefaultRoutes(server, options) {
|
|
|
288
261
|
};
|
|
289
262
|
debug(pr);
|
|
290
263
|
defaultTable.push(pr);
|
|
291
|
-
|
|
292
|
-
|
|
264
|
+
var routeTables = uTable !== null ? defaultTable.concat(uTable) : defaultTable;
|
|
265
|
+
routeTables.forEach(function (r) {
|
|
293
266
|
r.options.pre = [{
|
|
294
267
|
method: _setContext["default"],
|
|
295
268
|
assign: 'context'
|
|
296
269
|
}];
|
|
297
270
|
console.log, 'Setting pre for route', r.path, r.options.pre;
|
|
298
271
|
});
|
|
299
|
-
var routeTables = uTable !== null ? defaultTable.concat(uTable) : defaultTable;
|
|
300
272
|
server.route(routeTables);
|
|
301
273
|
};
|
|
@@ -6,7 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
var _setContext = _interopRequireDefault(require("./setContext"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
-
|
|
9
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
10
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
14
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
|
|
10
15
|
* ------------------------------------------------------------------------------------
|
|
11
16
|
* Copyright (c) SAS Institute Inc.
|
|
12
17
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -23,7 +28,6 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default":
|
|
|
23
28
|
* ---------------------------------------------------------------------------------------
|
|
24
29
|
*
|
|
25
30
|
*/
|
|
26
|
-
|
|
27
31
|
function setupUserRoutes(u, options) {
|
|
28
32
|
if (u == null) {
|
|
29
33
|
return [];
|
|
@@ -31,7 +35,11 @@ function setupUserRoutes(u, options) {
|
|
|
31
35
|
var ux = typeof u === 'function' ? u() : u;
|
|
32
36
|
var routes = ux.map(function (rx) {
|
|
33
37
|
//let rx = {...r};
|
|
34
|
-
|
|
38
|
+
/* change it to options */
|
|
39
|
+
if (rx.config != null) {
|
|
40
|
+
rx.options = _objectSpread({}, rx.config);
|
|
41
|
+
delete rx.config;
|
|
42
|
+
}
|
|
35
43
|
if (rx.options.pre == null) {
|
|
36
44
|
rx.options.pre = [{
|
|
37
45
|
method: _setContext["default"],
|
|
@@ -43,13 +51,11 @@ function setupUserRoutes(u, options) {
|
|
|
43
51
|
assign: 'context'
|
|
44
52
|
}]);
|
|
45
53
|
}
|
|
46
|
-
console.log(rx.options.pre);
|
|
47
54
|
if (rx.options.auth === true) {
|
|
48
55
|
rx.options.auth = options.authDefault;
|
|
49
56
|
} else if (rx.options.auth === 'logon') {
|
|
50
57
|
rx.options.auth = options.authLogon;
|
|
51
58
|
}
|
|
52
|
-
console.log('route auth', rx.options.auth);
|
|
53
59
|
return rx;
|
|
54
60
|
});
|
|
55
61
|
return routes;
|
package/lib/readCerts.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
/**
|
|
10
|
+
* Copyright © 2025, SAS Institute Inc., Cary, NC, USA. All Rights Reserved.
|
|
11
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
function getCerts(tlsdir) {
|
|
15
|
+
if (tlsdir == null || tlsdir === 'NONE') {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
console.log("[Note] Reading certs from directory: " + tlsdir);
|
|
19
|
+
if (_fs["default"].existsSync(tlsdir) === false) {
|
|
20
|
+
console.error("[Warning] Specified cert dir does not exist: " + tlsdir);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
var listOfFiles = _fs["default"].readdirSync(tlsdir);
|
|
24
|
+
console.log("[Note] TLS/SSL files found: " + listOfFiles);
|
|
25
|
+
var options = {};
|
|
26
|
+
for (var i = 0; i < listOfFiles.length; i++) {
|
|
27
|
+
var fname = listOfFiles[i];
|
|
28
|
+
var name = tlsdir + '/' + listOfFiles[i];
|
|
29
|
+
var key = fname.split('.')[0];
|
|
30
|
+
console.log('Reading TLS file: ' + name + ' as key: ' + key);
|
|
31
|
+
options[key] = _fs["default"].readFileSync(name, {
|
|
32
|
+
encoding: 'utf8'
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
console.log('cert files', Object.keys(options));
|
|
36
|
+
return options;
|
|
37
|
+
}
|
|
38
|
+
var _default = exports["default"] = getCerts;
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sassoftware/viya-serverjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1-0",
|
|
4
4
|
"description": "Easy to use app server for SAS Viya applications",
|
|
5
5
|
"author": "Deva Kumaraswamy <deva.kumar@sas.com>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "./lib/index.js",
|
|
8
8
|
"bin": {
|
|
9
|
-
"@sassoftware/viya-
|
|
9
|
+
"@sassoftware/viya-appserverjs": "cli.js"
|
|
10
10
|
},
|
|
11
11
|
"keywords": [
|
|
12
12
|
"restaf",
|
|
@@ -29,14 +29,12 @@
|
|
|
29
29
|
"unpkg": "./lib/index.js",
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "rimraf lib && babel src --out-dir lib",
|
|
32
|
-
"test": "node cli --env=./.env --docker=./Dockerfile",
|
|
33
|
-
"
|
|
34
|
-
"testmcp": "node server.js --env=./.env --docker=./Dockerfile",
|
|
35
|
-
"debug": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node --inspect-brk server.js --env=./.env.server --docker=./Dockerfile",
|
|
32
|
+
"test": "cross-env node cli --env=./.env --docker=./Dockerfile",
|
|
33
|
+
"server": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node server.js --env=./.env.proxy --docker=./Dockerfile",
|
|
36
34
|
"proxy": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 node cli --env=./.env.proxy --docker=./Dockerfile",
|
|
37
|
-
"pub": "npm publish --tag
|
|
38
|
-
"
|
|
39
|
-
"
|
|
35
|
+
"pub": "npm publish --tag dev --access public",
|
|
36
|
+
"bump": "npm version prerelease",
|
|
37
|
+
"lint": "npx eslint --fix src/*.js"
|
|
40
38
|
},
|
|
41
39
|
"dependencies": {
|
|
42
40
|
"@hapi/bell": "^13.1.0",
|
|
@@ -47,7 +45,7 @@
|
|
|
47
45
|
"@hapi/inert": "^7.1.0",
|
|
48
46
|
"@hapi/vision": "^7.0.3",
|
|
49
47
|
"axios": "^1.13.2",
|
|
50
|
-
"core-js": "^3.
|
|
48
|
+
"core-js": "^3.48.0",
|
|
51
49
|
"cross-spawn": "^7.0.6",
|
|
52
50
|
"debug": "^4.4.3",
|
|
53
51
|
"docker-file-parser": "^1.0.7",
|
|
@@ -58,29 +56,25 @@
|
|
|
58
56
|
"jwt-decode": "^4.0.0",
|
|
59
57
|
"node-cache-promise": "^1.0.2",
|
|
60
58
|
"only": "0.0.2",
|
|
61
|
-
"qs": "^6.14.
|
|
59
|
+
"qs": "^6.14.1",
|
|
62
60
|
"regenerator-runtime": "^0.14.1",
|
|
63
61
|
"request-debug": "^0.2.0",
|
|
64
|
-
"selfsigned": "^5.
|
|
62
|
+
"selfsigned": "^5.5.0",
|
|
65
63
|
"uuid": "^13.0.0",
|
|
66
64
|
"yargs": "18.0.0"
|
|
67
65
|
},
|
|
68
66
|
"devDependencies": {
|
|
69
|
-
"@babel/cli": "^7.28.
|
|
70
|
-
"@babel/core": "^7.28.
|
|
71
|
-
"@babel/eslint-parser": "7.28.
|
|
72
|
-
"@babel/preset-env": "^7.28.
|
|
67
|
+
"@babel/cli": "^7.28.6",
|
|
68
|
+
"@babel/core": "^7.28.6",
|
|
69
|
+
"@babel/eslint-parser": "7.28.6",
|
|
70
|
+
"@babel/preset-env": "^7.28.6",
|
|
73
71
|
"cross-env": "^10.1.0",
|
|
74
72
|
"eslint": "^9.39.2",
|
|
75
|
-
"prettier": "^3.
|
|
73
|
+
"prettier": "^3.8.1",
|
|
76
74
|
"rimraf": "^6.1.2",
|
|
77
75
|
"shx": "^0.4.0"
|
|
78
76
|
},
|
|
79
77
|
"resolutions": {
|
|
80
78
|
"@babel/traverse": "7.26.10"
|
|
81
|
-
},
|
|
82
|
-
"overrides": {
|
|
83
|
-
"gopd": "1.2.0",
|
|
84
|
-
"get-intrinsic": "1.2.7"
|
|
85
79
|
}
|
|
86
80
|
}
|
package/public/help.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<h1>
|
|
1
|
+
<h1> Hellp</h1>
|