datagrok-tools 5.1.3 → 5.1.5
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/bin/commands/api.js +17 -33
- package/bin/commands/check.js +10 -26
- package/bin/commands/publish.js +19 -21
- package/bin/utils/color-utils.js +33 -2
- package/package-template/package.json +3 -3
- package/package.json +1 -1
package/bin/commands/api.js
CHANGED
|
@@ -21,15 +21,9 @@ const funcFilePath = _path.default.join(_fs.default.existsSync(srcDir) ? srcDir
|
|
|
21
21
|
const packagePath = _path.default.join(curDir, 'package.json');
|
|
22
22
|
const names = new Set();
|
|
23
23
|
let _package = {};
|
|
24
|
-
function generateQueryWrappers(
|
|
24
|
+
function generateQueryWrappers() {
|
|
25
25
|
const queriesDir = _path.default.join(curDir, 'queries');
|
|
26
|
-
if (!_fs.default.existsSync(queriesDir))
|
|
27
|
-
if (verbose) {
|
|
28
|
-
color.warn(`Directory ${queriesDir} not found`);
|
|
29
|
-
console.log('Skipping API generation for queries...');
|
|
30
|
-
}
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
26
|
+
if (!_fs.default.existsSync(queriesDir)) return;
|
|
33
27
|
const files = _ignoreWalk.default.sync({
|
|
34
28
|
path: './queries',
|
|
35
29
|
ignoreFiles: ['.npmignore', '.gitignore']
|
|
@@ -53,18 +47,12 @@ function generateQueryWrappers(verbose) {
|
|
|
53
47
|
wrappers.push(tb.build(1));
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
|
-
saveWrappersToFile('queries', wrappers
|
|
50
|
+
saveWrappersToFile('queries', wrappers);
|
|
57
51
|
}
|
|
58
|
-
function generateScriptWrappers(
|
|
52
|
+
function generateScriptWrappers() {
|
|
59
53
|
const scriptsDir = _path.default.join(curDir, 'scripts');
|
|
60
54
|
const pythonDir = _fs.default.existsSync(srcDir) ? _path.default.join(srcDir, 'python') : _path.default.join(curDir, 'python');
|
|
61
|
-
if (!_fs.default.existsSync(scriptsDir))
|
|
62
|
-
if (verbose) {
|
|
63
|
-
color.warn(`Directory ${scriptsDir} not found`);
|
|
64
|
-
console.log('Skipping API generation for scripts...');
|
|
65
|
-
}
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
55
|
+
if (!_fs.default.existsSync(scriptsDir)) return;
|
|
68
56
|
const wrappers = [];
|
|
69
57
|
for (let dir of [scriptsDir, pythonDir]) {
|
|
70
58
|
if (!_fs.default.existsSync(dir)) continue;
|
|
@@ -89,9 +77,9 @@ function generateScriptWrappers(verbose) {
|
|
|
89
77
|
wrappers.push(tb.build(1));
|
|
90
78
|
}
|
|
91
79
|
}
|
|
92
|
-
saveWrappersToFile('scripts', wrappers
|
|
80
|
+
saveWrappersToFile('scripts', wrappers);
|
|
93
81
|
}
|
|
94
|
-
function generateFunctionWrappers(
|
|
82
|
+
function generateFunctionWrappers() {
|
|
95
83
|
let filesToParse = packageFuncDirs.map(e => _path.default.join(curDir, 'src', e)).filter(e => _fs.default.existsSync(e));
|
|
96
84
|
const annotaionRegex = /(?:\/\/[^\n]*\n)+export[^{]*/g;
|
|
97
85
|
const nameRegex = /\s*export(?:\sasync)?\s*function\s*([^\s(]*)/;
|
|
@@ -113,20 +101,16 @@ function generateFunctionWrappers(verbose) {
|
|
|
113
101
|
wrappers.push(tb.build(1));
|
|
114
102
|
}
|
|
115
103
|
}
|
|
116
|
-
saveWrappersToFile('funcs', wrappers
|
|
104
|
+
saveWrappersToFile('funcs', wrappers);
|
|
117
105
|
}
|
|
118
|
-
function saveWrappersToFile(namespaceName, wrappers
|
|
106
|
+
function saveWrappersToFile(namespaceName, wrappers) {
|
|
119
107
|
if (wrappers.length === 0) return;
|
|
120
|
-
if (!_fs.default.existsSync(funcFilePath)) createApiFile(
|
|
108
|
+
if (!_fs.default.existsSync(funcFilePath)) createApiFile();
|
|
121
109
|
const scriptApi = new utils.TemplateBuilder(utils.namespaceTemplate).replace('PACKAGE_NAMESPACE', namespaceName).replace('NAME', wrappers.join(sep.repeat(2)));
|
|
122
110
|
_fs.default.appendFileSync(funcFilePath, sep + scriptApi.build() + sep);
|
|
123
|
-
|
|
111
|
+
color.log(`Successfully generated file ${apiFile}${sep}`, 'success');
|
|
124
112
|
}
|
|
125
|
-
function createApiFile(
|
|
126
|
-
if (_fs.default.existsSync(funcFilePath) && verbose) {
|
|
127
|
-
color.warn(`The file ${funcFilePath} already exists`);
|
|
128
|
-
console.log('Rewriting its contents...');
|
|
129
|
-
}
|
|
113
|
+
function createApiFile() {
|
|
130
114
|
_fs.default.writeFileSync(funcFilePath, annotationForApiFile + utils.dgImports + sep, 'utf8');
|
|
131
115
|
}
|
|
132
116
|
function checkNameColision(name) {
|
|
@@ -134,7 +118,7 @@ function checkNameColision(name) {
|
|
|
134
118
|
names.add(name);
|
|
135
119
|
}
|
|
136
120
|
function api(args) {
|
|
137
|
-
|
|
121
|
+
color.setVerbose(args.verbose || args.v || false);
|
|
138
122
|
_package = JSON.parse(_fs.default.readFileSync(packagePath, {
|
|
139
123
|
encoding: 'utf-8'
|
|
140
124
|
}));
|
|
@@ -145,9 +129,9 @@ function api(args) {
|
|
|
145
129
|
color.error('File `package.json` not found. Run the command from the package directory');
|
|
146
130
|
return false;
|
|
147
131
|
}
|
|
148
|
-
createApiFile(
|
|
149
|
-
generateScriptWrappers(
|
|
150
|
-
generateQueryWrappers(
|
|
151
|
-
generateFunctionWrappers(
|
|
132
|
+
createApiFile();
|
|
133
|
+
generateScriptWrappers();
|
|
134
|
+
generateQueryWrappers();
|
|
135
|
+
generateFunctionWrappers();
|
|
152
136
|
return true;
|
|
153
137
|
}
|
package/bin/commands/check.js
CHANGED
|
@@ -20,23 +20,22 @@ var utils = _interopRequireWildcard(require("../utils/utils"));
|
|
|
20
20
|
var color = _interopRequireWildcard(require("../utils/color-utils"));
|
|
21
21
|
var testUtils = _interopRequireWildcard(require("../utils/test-utils"));
|
|
22
22
|
var _const = require("../utils/const");
|
|
23
|
-
var _child_process = require("child_process");
|
|
24
23
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
25
24
|
const warns = ['Latest package version', 'Datagrok API version should contain'];
|
|
26
25
|
const forbiddenNames = ['function', 'class', 'export'];
|
|
27
26
|
const namesInFiles = new Map();
|
|
28
27
|
function check(args) {
|
|
29
|
-
|
|
28
|
+
if (args.verbose !== undefined || args.v !== undefined) color.setVerbose(args.verbose || args.v || false);
|
|
30
29
|
const curDir = args._.length == 2 ? args._[1] : process.cwd();
|
|
31
|
-
if (args.recursive) return runChecksRec(curDir, args.soft ?? false
|
|
30
|
+
if (args.recursive) return runChecksRec(curDir, args.soft ?? false);else {
|
|
32
31
|
if (!utils.isPackageDir(curDir)) {
|
|
33
32
|
color.error('File `package.json` not found. Run the command from the package directory');
|
|
34
33
|
return false;
|
|
35
34
|
}
|
|
36
|
-
return runChecks(curDir, args.soft ?? false, false
|
|
35
|
+
return runChecks(curDir, args.soft ?? false, false);
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
|
-
function runChecks(packagePath, soft = false, noExit = false
|
|
38
|
+
function runChecks(packagePath, soft = false, noExit = false) {
|
|
40
39
|
if (packagePath.includes(`${_path.default.sep}node_modules${_path.default.sep}`)) return true;
|
|
41
40
|
const files = _ignoreWalk.default.sync({
|
|
42
41
|
path: packagePath,
|
|
@@ -90,10 +89,10 @@ function runChecks(packagePath, soft = false, noExit = false, verbose = false) {
|
|
|
90
89
|
if (soft || json.version.startsWith('0') || errors.every(w => warns.some(ww => w.includes(ww)))) return true;
|
|
91
90
|
if (noExit) return false;else testUtils.exitWithCode(1);
|
|
92
91
|
}
|
|
93
|
-
|
|
92
|
+
color.log(`Checking package ${_path.default.basename(packagePath)}...\t\t\t\u2713 OK`);
|
|
94
93
|
return true;
|
|
95
94
|
}
|
|
96
|
-
function runChecksRec(dir, soft = false
|
|
95
|
+
function runChecksRec(dir, soft = false) {
|
|
97
96
|
const files = _fs.default.readdirSync(dir);
|
|
98
97
|
let allPassed = true;
|
|
99
98
|
for (const file of files) {
|
|
@@ -101,11 +100,11 @@ function runChecksRec(dir, soft = false, verbose = false) {
|
|
|
101
100
|
const stats = _fs.default.statSync(filepath);
|
|
102
101
|
if (stats.isDirectory()) {
|
|
103
102
|
if (utils.isPackageDir(filepath)) {
|
|
104
|
-
const passed = runChecks(filepath, soft, true
|
|
103
|
+
const passed = runChecks(filepath, soft, true);
|
|
105
104
|
allPassed = allPassed && passed;
|
|
106
105
|
} else {
|
|
107
106
|
if (file !== 'node_modules' && !file.startsWith('.')) {
|
|
108
|
-
const passed = runChecksRec(_path.default.join(dir, file), soft
|
|
107
|
+
const passed = runChecksRec(_path.default.join(dir, file), soft);
|
|
109
108
|
allPassed = allPassed && passed;
|
|
110
109
|
}
|
|
111
110
|
}
|
|
@@ -456,23 +455,8 @@ function checkSourceMap(packagePath) {
|
|
|
456
455
|
// Check if dist files exist
|
|
457
456
|
const distPackage = _path.default.join(packagePath, 'dist', 'package.js');
|
|
458
457
|
const distPackageTest = _path.default.join(packagePath, 'dist', 'package-test.js');
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
// If any dist files are missing, try to build automatically
|
|
462
|
-
if (missingFiles.length > 0) {
|
|
463
|
-
try {
|
|
464
|
-
(0, _child_process.execSync)('npm run build', {
|
|
465
|
-
cwd: packagePath,
|
|
466
|
-
stdio: 'inherit'
|
|
467
|
-
});
|
|
468
|
-
} catch (e) {
|
|
469
|
-
console.warn('Build failed:', e);
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
// Recheck dist files after build
|
|
473
|
-
missingFiles = [distPackage, distPackageTest].filter(f => !_fs.default.existsSync(f));
|
|
474
|
-
missingFiles.forEach(f => warnings.push(`${_path.default.relative(packagePath, f)} file doesnt exist even after build`));
|
|
475
|
-
}
|
|
458
|
+
const missingFiles = [distPackage, distPackageTest].filter(f => !_fs.default.existsSync(f));
|
|
459
|
+
missingFiles.forEach(f => warnings.push(`${_path.default.relative(packagePath, f)} file doesnt exist. Run 'npm run build' first.`));
|
|
476
460
|
}
|
|
477
461
|
return warnings;
|
|
478
462
|
}
|
package/bin/commands/publish.js
CHANGED
|
@@ -35,9 +35,8 @@ let curDir = process.cwd();
|
|
|
35
35
|
const packDir = _path.default.join(curDir, 'package.json');
|
|
36
36
|
const packageFiles = ['src/package.ts', 'src/detectors.ts', 'src/package.js', 'src/detectors.js', 'src/package-test.ts', 'src/package-test.js', 'package.js', 'detectors.js'];
|
|
37
37
|
let config;
|
|
38
|
-
async function processPackage(debug, rebuild, host, devKey, packageName, dropDb, suffix, hostAlias
|
|
38
|
+
async function processPackage(debug, rebuild, host, devKey, packageName, dropDb, suffix, hostAlias) {
|
|
39
39
|
// Get the server timestamps
|
|
40
|
-
verbose = verbose || false;
|
|
41
40
|
let timestamps = {};
|
|
42
41
|
let url = `${host}/packages/dev/${devKey}/${packageName}`;
|
|
43
42
|
if (debug) {
|
|
@@ -49,7 +48,7 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
49
48
|
}
|
|
50
49
|
} catch (error) {
|
|
51
50
|
if (utils.isConnectivityError(error)) color.error(`Server is possibly offline: ${host}`);
|
|
52
|
-
if (
|
|
51
|
+
if (color.isVerbose()) console.error(error);
|
|
53
52
|
return 1;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
@@ -84,7 +83,7 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
84
83
|
rebuild = true;
|
|
85
84
|
}
|
|
86
85
|
}
|
|
87
|
-
|
|
86
|
+
color.log('Starting package checks...');
|
|
88
87
|
const checkStart = Date.now();
|
|
89
88
|
const jsTsFiles = files.filter(f => !f.startsWith('dist/') && (f.endsWith('.js') || f.endsWith('.ts')));
|
|
90
89
|
const packageFilePath = _path.default.join(curDir, 'package.json');
|
|
@@ -98,7 +97,7 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
98
97
|
});
|
|
99
98
|
}
|
|
100
99
|
const funcFiles = jsTsFiles.filter(f => packageFiles.includes(f));
|
|
101
|
-
|
|
100
|
+
color.log(`Checks finished in ${Date.now() - checkStart} ms`);
|
|
102
101
|
const reg = new RegExp(/\${(\w*)}/g);
|
|
103
102
|
const errs = [];
|
|
104
103
|
files.forEach(file => {
|
|
@@ -117,7 +116,7 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
117
116
|
const t = _fs.default.statSync(fullPath).mtime.toUTCString();
|
|
118
117
|
localTimestamps[canonicalRelativePath] = t;
|
|
119
118
|
if (debug && timestamps[canonicalRelativePath] === t) {
|
|
120
|
-
|
|
119
|
+
color.log(`Skipping ${canonicalRelativePath}`);
|
|
121
120
|
return;
|
|
122
121
|
}
|
|
123
122
|
if (canonicalRelativePath.startsWith('connections/')) {
|
|
@@ -136,13 +135,13 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
136
135
|
zip.append(f, {
|
|
137
136
|
name: relativePath
|
|
138
137
|
});
|
|
139
|
-
|
|
138
|
+
color.log(`Adding ${canonicalRelativePath}...`);
|
|
140
139
|
return;
|
|
141
140
|
}
|
|
142
141
|
zip.append(_fs.default.createReadStream(fullPath), {
|
|
143
142
|
name: relativePath
|
|
144
143
|
});
|
|
145
|
-
|
|
144
|
+
color.log(`Adding ${canonicalRelativePath}...`);
|
|
146
145
|
});
|
|
147
146
|
if (errs.length) {
|
|
148
147
|
errs.forEach(e => color.error(e));
|
|
@@ -171,22 +170,21 @@ async function processPackage(debug, rebuild, host, devKey, packageName, dropDb,
|
|
|
171
170
|
console.log(log);
|
|
172
171
|
return 1;
|
|
173
172
|
} else {
|
|
174
|
-
if (
|
|
173
|
+
if (color.isVerbose()) console.log(log);
|
|
175
174
|
color.success(`✓ Published to ${hostAlias || new URL(host).hostname}`);
|
|
176
175
|
}
|
|
177
176
|
}
|
|
178
177
|
} catch (error) {
|
|
179
178
|
if (utils.isConnectivityError(error)) color.error(`Server is possibly offline: ${url}`);
|
|
180
|
-
if (
|
|
179
|
+
if (color.isVerbose()) console.error(error);
|
|
181
180
|
return 1;
|
|
182
181
|
}
|
|
183
182
|
return 0;
|
|
184
183
|
}
|
|
185
184
|
async function publish(args) {
|
|
186
|
-
|
|
185
|
+
color.setVerbose(args.verbose || args.v || false);
|
|
187
186
|
if (!args['skip-check'] && !args['all'] && !args['refresh']) (0, _check.check)({
|
|
188
|
-
_: ['check']
|
|
189
|
-
verbose: verbose
|
|
187
|
+
_: ['check']
|
|
190
188
|
});
|
|
191
189
|
config = _jsYaml.default.load(_fs.default.readFileSync(confPath, {
|
|
192
190
|
encoding: 'utf-8'
|
|
@@ -212,23 +210,23 @@ async function publish(args) {
|
|
|
212
210
|
}
|
|
213
211
|
})).json()).map(item => item.name);
|
|
214
212
|
}
|
|
215
|
-
|
|
213
|
+
color.log('Loading packages:');
|
|
216
214
|
await (0, _testUtils.loadPackages)(curDir, packagesToLoad.join(' '), host, false, false, args.link, args.release);
|
|
217
215
|
} else {
|
|
218
216
|
if (args.link) {
|
|
219
|
-
|
|
217
|
+
color.log('Linking');
|
|
220
218
|
await utils.runScript(`npm install`, curDir);
|
|
221
219
|
await utils.runScript(`grok link`, curDir);
|
|
222
220
|
await utils.runScript(`npm run build`, curDir);
|
|
223
221
|
}
|
|
224
|
-
await publishPackage(args
|
|
222
|
+
await publishPackage(args);
|
|
225
223
|
}
|
|
226
224
|
}
|
|
227
|
-
async function publishPackage(args
|
|
225
|
+
async function publishPackage(args) {
|
|
228
226
|
const nArgs = args['_'].length;
|
|
229
227
|
if (!args.link) {
|
|
230
228
|
if (args.build || args.rebuild) {
|
|
231
|
-
|
|
229
|
+
color.log('Building');
|
|
232
230
|
await utils.runScript('npm install', curDir, false);
|
|
233
231
|
await utils.runScript('npm run build', curDir, false);
|
|
234
232
|
}
|
|
@@ -237,7 +235,7 @@ async function publishPackage(args, verbose) {
|
|
|
237
235
|
color.error('Incompatible options: --debug and --release');
|
|
238
236
|
return false;
|
|
239
237
|
}
|
|
240
|
-
|
|
238
|
+
color.log('Publishing...');
|
|
241
239
|
// Create `config.yaml` if it doesn't exist yet
|
|
242
240
|
if (!_fs.default.existsSync(grokDir)) _fs.default.mkdirSync(grokDir);
|
|
243
241
|
if (!_fs.default.existsSync(confPath)) _fs.default.writeFileSync(confPath, _jsYaml.default.dump(confTemplate));
|
|
@@ -286,12 +284,12 @@ async function publishPackage(args, verbose) {
|
|
|
286
284
|
if (!args.suffix && stdout) args.suffix = stdout.toString().substring(0, 8);
|
|
287
285
|
});
|
|
288
286
|
await utils.delay(100);
|
|
289
|
-
code = await processPackage(!args.release, Boolean(args.rebuild), url, key, packageName, args.dropDb ?? false, args.suffix, host
|
|
287
|
+
code = await processPackage(!args.release, Boolean(args.rebuild), url, key, packageName, args.dropDb ?? false, args.suffix, host);
|
|
290
288
|
} catch (error) {
|
|
291
289
|
console.error(error);
|
|
292
290
|
code = 1;
|
|
293
291
|
}
|
|
294
|
-
|
|
292
|
+
color.log(`Exiting with code ${code}`);
|
|
295
293
|
process.exit(code);
|
|
296
294
|
});
|
|
297
295
|
return true;
|
package/bin/utils/color-utils.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.isVerbose = exports.info = exports.fail = exports.error = void 0;
|
|
7
|
+
exports.log = log;
|
|
8
|
+
exports.warn = exports.success = exports.setVerbose = void 0;
|
|
7
9
|
const error = s => console.log('\x1b[31m%s\x1b[0m', s);
|
|
8
10
|
exports.error = error;
|
|
9
11
|
const info = s => console.log('\x1b[32m%s\x1b[0m', s);
|
|
@@ -11,4 +13,33 @@ exports.info = info;
|
|
|
11
13
|
const warn = s => console.log('\x1b[33m%s\x1b[0m', s);
|
|
12
14
|
exports.warn = warn;
|
|
13
15
|
const success = exports.success = info;
|
|
14
|
-
const fail = exports.fail = error;
|
|
16
|
+
const fail = exports.fail = error;
|
|
17
|
+
let verbose = false;
|
|
18
|
+
const setVerbose = value => verbose = value;
|
|
19
|
+
exports.setVerbose = setVerbose;
|
|
20
|
+
const isVerbose = () => verbose;
|
|
21
|
+
exports.isVerbose = isVerbose;
|
|
22
|
+
/** Logs a message only when verbose mode is enabled
|
|
23
|
+
* @param {string} s - The message to log
|
|
24
|
+
* @param {LogType} type - The type of the message, which determines its color. Defaults to 'plain'.
|
|
25
|
+
*/
|
|
26
|
+
function log(s, type = 'plain') {
|
|
27
|
+
if (!verbose) return;
|
|
28
|
+
switch (type) {
|
|
29
|
+
case 'fail':
|
|
30
|
+
case 'error':
|
|
31
|
+
error(s);
|
|
32
|
+
break;
|
|
33
|
+
case 'warn':
|
|
34
|
+
warn(s);
|
|
35
|
+
break;
|
|
36
|
+
case 'success':
|
|
37
|
+
case 'info':
|
|
38
|
+
info(s);
|
|
39
|
+
break;
|
|
40
|
+
case 'plain':
|
|
41
|
+
default:
|
|
42
|
+
console.log(s);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "#{PACKAGE_NAME_LOWERCASE}",
|
|
3
3
|
"friendlyName": "#{PACKAGE_NAME}",
|
|
4
4
|
"version": "0.0.1",
|
|
5
|
-
"description": "",
|
|
5
|
+
"description": "#{PACKAGE_NAME} package",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"datagrok-api": "^1.26.0",
|
|
8
8
|
"cash-dom": "^8.1.5",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"@datagrok-libraries/utils": "^4.6.5"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"datagrok-tools": "^
|
|
13
|
+
"datagrok-tools": "^5.1.5",
|
|
14
14
|
"webpack": "^5.95.0",
|
|
15
15
|
"webpack-cli": "^5.1.4"
|
|
16
16
|
},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"debug-#{PACKAGE_NAME_LOWERCASE}": "webpack && grok publish",
|
|
19
19
|
"release-#{PACKAGE_NAME_LOWERCASE}": "webpack && grok publish --release",
|
|
20
20
|
"build-#{PACKAGE_NAME_LOWERCASE}": "webpack",
|
|
21
|
-
"build": "grok api && grok check && webpack",
|
|
21
|
+
"build": "grok api && grok check --soft && webpack",
|
|
22
22
|
"test": "grok test"
|
|
23
23
|
},
|
|
24
24
|
"canEdit": [
|
package/package.json
CHANGED