datagrok-tools 4.8.4 → 4.10.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/README.md CHANGED
@@ -118,4 +118,4 @@ Read more about package development in [Datagrok's documentation](https://datagr
118
118
  save a test run result, add the `--csv` flag (the report will be saved in a
119
119
  CSV file in the package folder). You can find more details in [local package testing
120
120
  instructions](https://datagrok.ai/help/develop/how-to/test-packages#local-testing).
121
- - `link` / `unlink` commands are used for public plugins development to (un)link `datagrok-api` and libraries.
121
+ - `link` command is used for public plugins development to link `datagrok-api` and libraries.
@@ -1,62 +1,39 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.add = add;
11
-
12
9
  var _fs = _interopRequireDefault(require("fs"));
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var _entHelpers = require("../utils/ent-helpers");
17
-
18
12
  var utils = _interopRequireWildcard(require("../utils/utils"));
19
-
20
13
  var color = _interopRequireWildcard(require("../utils/color-utils"));
21
-
22
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
16
  function add(args) {
27
17
  var nOptions = Object.keys(args).length - 1;
28
18
  var nArgs = args['_'].length;
29
19
  if (nArgs < 2 || nArgs > 5 || nOptions > 0) return false;
30
20
  var entity = args['_'][1];
31
21
  var curDir = process.cwd();
32
-
33
22
  var curFolder = _path["default"].basename(curDir);
34
-
35
23
  var srcDir = _path["default"].join(curDir, 'src');
36
-
37
24
  var jsPath = _path["default"].join(srcDir, 'package.js');
38
-
39
25
  var tsPath = _path["default"].join(srcDir, 'package.ts');
40
-
41
26
  var detectorsPath = _path["default"].join(curDir, 'detectors.js');
42
-
43
27
  var webpackConfigPath = _path["default"].join(curDir, 'webpack.config.js');
44
-
45
28
  var scriptsDir = _path["default"].join(curDir, 'scripts');
46
-
47
29
  var queryDir = _path["default"].join(curDir, 'queries');
48
-
49
30
  var queryPath = _path["default"].join(queryDir, 'queries.sql');
50
-
51
31
  var connectDir = _path["default"].join(curDir, 'connections');
52
-
53
32
  var packagePath = _path["default"].join(curDir, 'package.json');
33
+ var templateDir = _path["default"].join(_path["default"].dirname(_path["default"].dirname(__dirname)));
54
34
 
55
- var templateDir = _path["default"].join(_path["default"].dirname(_path["default"].dirname(__dirname))); // Package directory check
56
-
57
-
35
+ // Package directory check
58
36
  if (!_fs["default"].existsSync(packagePath)) return color.error('`package.json` not found');
59
-
60
37
  try {
61
38
  var _package = JSON.parse(_fs["default"].readFileSync(packagePath, {
62
39
  encoding: 'utf-8'
@@ -64,172 +41,145 @@ function add(args) {
64
41
  } catch (error) {
65
42
  color.error("Error while reading ".concat(packagePath, ":"));
66
43
  console.error(error);
67
- } // TypeScript package check
68
-
44
+ }
69
45
 
46
+ // TypeScript package check
70
47
  var ts = _fs["default"].existsSync(_path["default"].join(curDir, 'tsconfig.json'));
71
-
72
48
  var packageEntry = ts ? tsPath : jsPath;
73
49
  var ext = ts ? '.ts' : '.js';
74
-
75
50
  function validateName(name) {
76
51
  if (!/^([A-Za-z])+([A-Za-z\d])*$/.test(name)) {
77
52
  return color.error('The name may only include letters and numbers. It cannot start with a digit');
78
53
  }
79
-
80
54
  return true;
81
55
  }
82
-
83
56
  function insertName(name, data) {
84
57
  for (var _i = 0, _arr = ['NAME', 'NAME_TITLECASE', 'NAME_LOWERCASE']; _i < _arr.length; _i++) {
85
58
  var repl = _arr[_i];
86
59
  data = utils.replacers[repl](data, name);
87
60
  }
88
-
89
61
  return data;
90
62
  }
91
-
92
63
  function createPackageEntryFile() {
93
64
  if (!_fs["default"].existsSync(srcDir)) _fs["default"].mkdirSync(srcDir);
94
-
95
65
  if (!_fs["default"].existsSync(packageEntry)) {
96
66
  var _contents = _fs["default"].readFileSync(_path["default"].join(templateDir, 'package-template', 'src', 'package.js'), 'utf8');
97
-
98
67
  _fs["default"].writeFileSync(packageEntry, _contents, 'utf8');
99
68
  }
100
69
  }
101
-
102
70
  var name;
103
71
  var tag;
104
72
  var contents;
105
-
106
73
  switch (entity) {
107
74
  case 'script':
108
75
  if (nArgs < 4 || nArgs > 5) return false;
109
76
  var lang = args['_'][2];
110
77
  name = args['_'][3];
111
-
112
78
  if (nArgs === 5) {
113
79
  tag = args['_'][2];
114
80
  lang = args['_'][3];
115
81
  name = args['_'][4];
116
82
  }
117
-
118
83
  if (!Object.keys(utils.scriptLangExtMap).includes(lang)) {
119
84
  color.error("Unsupported language: ".concat(lang));
120
85
  console.log('You can add a script in one of the following languages:');
121
86
  console.log(Object.keys(utils.scriptLangExtMap).join(', '));
122
87
  return false;
123
- } // Script name check
124
-
88
+ }
125
89
 
90
+ // Script name check
126
91
  if (!validateName(name)) return false;
127
- if (tag && tag !== 'panel') return color.error('Currently, you can only add the `panel` tag'); // Create the folder `scripts` if it doesn't exist yet
92
+ if (tag && tag !== 'panel') return color.error('Currently, you can only add the `panel` tag');
128
93
 
94
+ // Create the folder `scripts` if it doesn't exist yet
129
95
  if (!_fs["default"].existsSync(scriptsDir)) _fs["default"].mkdirSync(scriptsDir);
130
-
131
96
  var scriptPath = _path["default"].join(scriptsDir, name + '.' + utils.scriptLangExtMap[lang]);
132
-
133
97
  if (_fs["default"].existsSync(scriptPath)) {
134
98
  return color.error("The file with the script already exists: ".concat(scriptPath));
135
- } // Copy the script template
136
-
99
+ }
137
100
 
101
+ // Copy the script template
138
102
  var templatePath = _path["default"].join(templateDir, 'script-template');
139
-
140
103
  templatePath = _path["default"].join(templatePath, lang + '.' + utils.scriptLangExtMap[lang]);
141
104
  contents = _fs["default"].readFileSync(templatePath, 'utf8');
142
-
143
105
  if (tag) {
144
106
  var ind = contents.indexOf('tags: ') + 6;
145
107
  contents = contents.slice(0, ind) + 'panel, ' + contents.slice(ind);
146
108
  }
109
+ _fs["default"].writeFileSync(scriptPath, insertName(name, contents), 'utf8');
147
110
 
148
- _fs["default"].writeFileSync(scriptPath, insertName(name, contents), 'utf8'); // Provide a JS wrapper for the script
149
-
150
-
111
+ // Provide a JS wrapper for the script
151
112
  console.log(_entHelpers.help.script(name, curFolder));
152
113
  break;
153
-
154
114
  case 'app':
155
- if (nArgs !== 3) return false; // App name check
115
+ if (nArgs !== 3) return false;
156
116
 
117
+ // App name check
157
118
  name = args['_'][2];
158
- if (!validateName(name)) return false; // Create src/package.js if it doesn't exist yet
119
+ if (!validateName(name)) return false;
159
120
 
160
- createPackageEntryFile(); // Add an app template to package.js
121
+ // Create src/package.js if it doesn't exist yet
122
+ createPackageEntryFile();
161
123
 
124
+ // Add an app template to package.js
162
125
  var app = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'app.js'), 'utf8');
163
-
164
126
  _fs["default"].appendFileSync(packageEntry, insertName(name, app));
165
-
166
127
  console.log(_entHelpers.help.app(name));
167
128
  break;
168
-
169
129
  case 'function':
170
130
  if (nArgs < 3 || nArgs > 4) return false;
171
131
  name = args['_'][2];
172
-
173
132
  if (nArgs === 4) {
174
133
  tag = args['_'][2];
175
134
  name = args['_'][3];
176
135
  }
177
-
178
136
  if (!validateName(name)) return false;
179
-
180
137
  if (tag && tag !== 'panel' && tag !== 'init') {
181
138
  return color.error('Currently, you can only add the `panel` or `init` tag');
182
- } // Create src/package.js if it doesn't exist yet
183
-
139
+ }
184
140
 
185
- createPackageEntryFile(); // Add a function to package.js
141
+ // Create src/package.js if it doesn't exist yet
142
+ createPackageEntryFile();
186
143
 
144
+ // Add a function to package.js
187
145
  var filename = tag === 'panel' ? 'panel' + ext : tag === 'init' ? 'init.js' : 'function' + ext;
188
-
189
146
  var func = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', filename), 'utf8');
190
-
191
147
  _fs["default"].appendFileSync(packageEntry, insertName(name, func));
192
-
193
148
  console.log(_entHelpers.help.func(name, tag === 'panel'));
194
149
  break;
195
-
196
150
  case 'connection':
197
151
  if (nArgs !== 3) return false;
198
- name = args['_'][2]; // Connection name check
152
+ name = args['_'][2];
199
153
 
200
- if (!validateName(name)) return false; // Create the `connections` folder if it doesn't exist yet
154
+ // Connection name check
155
+ if (!validateName(name)) return false;
201
156
 
157
+ // Create the `connections` folder if it doesn't exist yet
202
158
  if (!_fs["default"].existsSync(connectDir)) _fs["default"].mkdirSync(connectDir);
203
-
204
159
  var connectPath = _path["default"].join(connectDir, "".concat(name, ".json"));
205
-
206
160
  if (_fs["default"].existsSync(connectPath)) {
207
161
  return color.error("The connection file already exists: ".concat(connectPath));
208
162
  }
209
-
210
163
  var connectionTemplate = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'connection.json'), 'utf8');
211
-
212
164
  _fs["default"].writeFileSync(connectPath, insertName(name, connectionTemplate), 'utf8');
213
-
214
165
  console.log(_entHelpers.help.connection(name));
215
166
  break;
216
-
217
167
  case 'query':
218
- if (nArgs !== 3) return false; // Query name check
168
+ if (nArgs !== 3) return false;
219
169
 
170
+ // Query name check
220
171
  name = args['_'][2];
221
- if (!validateName(name)) return false; // Create the `queries` folder if it doesn't exist yet
172
+ if (!validateName(name)) return false;
222
173
 
223
- if (!_fs["default"].existsSync(queryDir)) _fs["default"].mkdirSync(queryDir); // Add a query to queries.sql
174
+ // Create the `queries` folder if it doesn't exist yet
175
+ if (!_fs["default"].existsSync(queryDir)) _fs["default"].mkdirSync(queryDir);
224
176
 
177
+ // Add a query to queries.sql
225
178
  var query = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'queries.sql'), 'utf8');
226
-
227
179
  contents = insertName(name, query);
228
180
  var connection;
229
-
230
181
  if (_fs["default"].existsSync(connectDir) && _fs["default"].readdirSync(connectDir).length !== 0) {
231
182
  var _fs$readdirSync$find;
232
-
233
183
  // Use the name of the first found connection
234
184
  connection = (_fs$readdirSync$find = _fs["default"].readdirSync(connectDir).find(function (c) {
235
185
  return /.+\.json$/.test(c);
@@ -238,139 +188,107 @@ function add(args) {
238
188
  // Create the default connection file
239
189
  if (!_fs["default"].existsSync(connectDir)) _fs["default"].mkdirSync(connectDir);
240
190
  connection = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'connection.json'), 'utf8');
241
-
242
191
  _fs["default"].writeFileSync(_path["default"].join(connectDir, 'connection.json'), insertName('connection', connection), 'utf8');
243
-
244
192
  connection = 'connection';
245
193
  }
246
-
247
194
  contents = contents.replace('#{CONNECTION}', connection);
248
-
249
195
  _fs["default"].appendFileSync(queryPath, contents);
250
-
251
196
  console.log(_entHelpers.help.query(name));
252
197
  break;
253
-
254
198
  case 'view':
255
- if (nArgs !== 3) return false; // View name check
199
+ if (nArgs !== 3) return false;
256
200
 
201
+ // View name check
257
202
  name = args['_'][2];
258
203
  if (!validateName(name)) return false;
259
-
260
204
  if (!name.endsWith('View')) {
261
205
  color.warn("For consistency reasons, we recommend postfixing classes with 'View'");
262
- } // Create src/package.js if it doesn't exist yet
263
-
206
+ }
264
207
 
265
- createPackageEntryFile(); // Add a new JS file with a view class
208
+ // Create src/package.js if it doesn't exist yet
209
+ createPackageEntryFile();
266
210
 
211
+ // Add a new JS file with a view class
267
212
  var viewPath = _path["default"].join(srcDir, utils.camelCaseToKebab(name) + ext);
268
-
269
213
  if (_fs["default"].existsSync(viewPath)) {
270
214
  return color.error("The view file already exists: ".concat(viewPath));
271
215
  }
272
-
273
216
  var viewClass = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'view-class' + ext), 'utf8');
217
+ _fs["default"].writeFileSync(viewPath, insertName(name, viewClass), 'utf8');
274
218
 
275
- _fs["default"].writeFileSync(viewPath, insertName(name, viewClass), 'utf8'); // Add a view function to package.js
276
-
277
-
219
+ // Add a view function to package.js
278
220
  var view = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'view.js'), 'utf8');
279
-
280
221
  contents = insertName(name, "import {#{NAME}} from './".concat(utils.camelCaseToKebab(name), "';\n"));
281
222
  contents += _fs["default"].readFileSync(packageEntry, 'utf8');
282
223
  contents += insertName(name, view);
283
-
284
224
  _fs["default"].writeFileSync(packageEntry, contents, 'utf8');
285
-
286
225
  console.log(_entHelpers.help.view(name));
287
226
  break;
288
-
289
227
  case 'viewer':
290
- if (nArgs !== 3) return false; // Viewer name check
228
+ if (nArgs !== 3) return false;
291
229
 
230
+ // Viewer name check
292
231
  name = args['_'][2];
293
232
  if (!validateName(name)) return false;
294
-
295
233
  if (!name.endsWith('Viewer')) {
296
234
  color.warn("For consistency reasons, we recommend postfixing classes with 'Viewer'");
297
- } // Create src/package.js if it doesn't exist yet
298
-
235
+ }
299
236
 
300
- createPackageEntryFile(); // Add a new JS file with a viewer class
237
+ // Create src/package.js if it doesn't exist yet
238
+ createPackageEntryFile();
301
239
 
240
+ // Add a new JS file with a viewer class
302
241
  var viewerPath = _path["default"].join(srcDir, utils.camelCaseToKebab(name) + ext);
303
-
304
242
  if (_fs["default"].existsSync(viewerPath)) {
305
243
  return color.error("The viewer file already exists: ".concat(viewerPath));
306
244
  }
307
-
308
245
  var viewerClass = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'viewer-class' + ext), 'utf8');
246
+ _fs["default"].writeFileSync(viewerPath, insertName(name, viewerClass), 'utf8');
309
247
 
310
- _fs["default"].writeFileSync(viewerPath, insertName(name, viewerClass), 'utf8'); // Add a viewer function to package.js
311
-
312
-
248
+ // Add a viewer function to package.js
313
249
  var viewer = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'viewer.js'), 'utf8');
314
-
315
250
  contents = insertName(name, "import {#{NAME}} from './".concat(utils.camelCaseToKebab(name), "';\n"));
316
251
  contents += _fs["default"].readFileSync(packageEntry, 'utf8');
317
252
  contents += insertName(name, viewer);
318
-
319
253
  _fs["default"].writeFileSync(packageEntry, contents, 'utf8');
320
-
321
254
  console.log(_entHelpers.help.viewer(name));
322
255
  break;
323
-
324
256
  case 'detector':
325
257
  if (nArgs !== 3) return false;
326
258
  name = args['_'][2];
327
-
328
259
  if (!_fs["default"].existsSync(detectorsPath)) {
329
260
  var temp = _fs["default"].readFileSync(_path["default"].join(templateDir, 'package-template', 'detectors.js'), 'utf8');
330
-
331
261
  temp = utils.replacers['PACKAGE_DETECTORS_NAME'](temp, curFolder);
332
-
333
262
  _fs["default"].writeFileSync(detectorsPath, temp, 'utf8');
334
263
  }
335
-
336
264
  var detector = _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'sem-type-detector.js'), 'utf8');
337
-
338
265
  contents = _fs["default"].readFileSync(detectorsPath, 'utf8');
339
266
  var idx = contents.search(/(?<=PackageDetectors extends DG.Package\s*{\s*(\r\n|\r|\n)).*/);
340
267
  if (idx === -1) return color.error('Detectors class not found');
341
268
  contents = contents.slice(0, idx) + detector + contents.slice(idx);
342
-
343
269
  for (var _i2 = 0, _arr2 = ['NAME', 'NAME_PREFIX', 'PACKAGE_DETECTORS_NAME']; _i2 < _arr2.length; _i2++) {
344
270
  var repl = _arr2[_i2];
345
271
  contents = utils.replacers[repl](contents, name);
346
272
  }
347
-
348
273
  _fs["default"].writeFileSync(detectorsPath, contents, 'utf8');
349
-
350
274
  console.log(_entHelpers.help.detector(name));
351
275
  break;
352
-
353
276
  case 'tests':
354
277
  if (!_fs["default"].existsSync(tsPath)) {
355
278
  color.error('Only TypeScript packages are supported');
356
279
  return false;
357
280
  }
358
-
359
281
  if (!_fs["default"].existsSync(webpackConfigPath)) {
360
282
  color.error('Webpack configuration not found');
361
283
  return false;
362
284
  }
363
-
364
285
  var config = _fs["default"].readFileSync(webpackConfigPath, 'utf8');
365
-
366
286
  if (!/(?<=entry:\s*{\s*(\r\n|\r|\n))[^}]*test:/.test(config)) {
367
287
  var entryIdx = config.search(/(?<=entry:\s*{\s*(\r\n|\r|\n)).*/);
368
288
  if (entryIdx === -1) return color.error('Entry point not found during config parsing');
369
289
  var testEntry = " test: {filename: 'package-test.js', library: " + "{type: 'var', name:`${packageName}_test`}, import: './src/package-test.ts'},";
370
-
371
290
  _fs["default"].writeFileSync(webpackConfigPath, config.slice(0, entryIdx) + testEntry + config.slice(entryIdx), 'utf8');
372
291
  }
373
-
374
292
  var packageObj = JSON.parse(_fs["default"].readFileSync(packagePath, 'utf8'));
375
293
  Object.assign(packageObj.dependencies, {
376
294
  '@datagrok-libraries/utils': 'latest'
@@ -378,27 +296,17 @@ function add(args) {
378
296
  Object.assign(packageObj.scripts, {
379
297
  'test': 'grok test'
380
298
  });
381
-
382
299
  _fs["default"].writeFileSync(packagePath, JSON.stringify(packageObj, null, 2), 'utf8');
383
-
384
300
  var packageTestPath = _path["default"].join(srcDir, 'package-test.ts');
385
-
386
301
  if (!_fs["default"].existsSync(packageTestPath)) _fs["default"].writeFileSync(packageTestPath, _fs["default"].readFileSync(_path["default"].join(templateDir, 'package-template', 'src', 'package-test.ts')));
387
-
388
302
  var testsDir = _path["default"].join(srcDir, 'tests');
389
-
390
303
  if (!_fs["default"].existsSync(testsDir)) _fs["default"].mkdirSync(testsDir);
391
-
392
304
  _fs["default"].writeFileSync(_path["default"].join(testsDir, 'test-examples.ts'), _fs["default"].readFileSync(_path["default"].join(templateDir, 'entity-template', 'test.ts')));
393
-
394
305
  _fs["default"].writeFileSync(packageTestPath, "import './tests/test-examples';\n" + _fs["default"].readFileSync(packageTestPath));
395
-
396
306
  console.log(_entHelpers.help.test(testsDir));
397
307
  break;
398
-
399
308
  default:
400
309
  return false;
401
310
  }
402
-
403
311
  return true;
404
312
  }
@@ -1,80 +1,54 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.api = api;
11
-
12
9
  var _fs = _interopRequireDefault(require("fs"));
13
-
14
10
  var _path = _interopRequireDefault(require("path"));
15
-
16
11
  var _ignoreWalk = _interopRequireDefault(require("ignore-walk"));
17
-
18
12
  var utils = _interopRequireWildcard(require("../utils/utils"));
19
-
20
13
  var color = _interopRequireWildcard(require("../utils/color-utils"));
21
-
22
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
-
24
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
-
26
16
  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; } } }; }
27
-
28
17
  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); }
29
-
30
18
  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; }
31
-
32
19
  function generateQueryWrappers() {
33
20
  var curDir = process.cwd();
34
-
35
21
  var queriesDir = _path["default"].join(curDir, 'queries');
36
-
37
22
  if (!_fs["default"].existsSync(queriesDir)) {
38
23
  color.warn("Directory ".concat(queriesDir, " not found"));
39
24
  console.log('Skipping API generation for queries...');
40
25
  return;
41
26
  }
42
-
43
27
  var packagePath = _path["default"].join(curDir, 'package.json');
44
-
45
28
  var _package = JSON.parse(_fs["default"].readFileSync(packagePath, {
46
29
  encoding: 'utf-8'
47
30
  }));
48
-
49
31
  var files = _ignoreWalk["default"].sync({
50
32
  path: './queries',
51
33
  ignoreFiles: ['.npmignore', '.gitignore']
52
34
  });
53
-
54
35
  var wrappers = [];
55
-
56
36
  var _iterator = _createForOfIteratorHelper(files),
57
- _step;
58
-
37
+ _step;
59
38
  try {
60
39
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
61
40
  var file = _step.value;
62
41
  if (!file.endsWith(utils.queryExtension)) continue;
63
-
64
42
  var filepath = _path["default"].join(queriesDir, file);
65
-
66
43
  var script = _fs["default"].readFileSync(filepath, 'utf8');
67
-
68
44
  if (!script) continue;
69
45
  var queries = script.split('--end').map(function (q) {
70
46
  return q.trim();
71
47
  }).filter(function (q) {
72
48
  return q.length > 0;
73
49
  });
74
-
75
50
  var _iterator2 = _createForOfIteratorHelper(queries),
76
- _step2;
77
-
51
+ _step2;
78
52
  try {
79
53
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
80
54
  var q = _step2.value;
@@ -83,7 +57,8 @@ function generateQueryWrappers() {
83
57
  var tb = new utils.TemplateBuilder(utils.queryWrapperTemplate).replace('FUNC_NAME', name).replace('FUNC_NAME_LOWERCASE', name).replace('PACKAGE_NAMESPACE', _package.name);
84
58
  var inputs = utils.getScriptInputs(q, utils.commentMap[utils.queryExtension]);
85
59
  var outputType = utils.getScriptOutputType(q, utils.commentMap[utils.queryExtension]);
86
- tb.replace('PARAMS_OBJECT', inputs).replace('TYPED_PARAMS', inputs) // The query output, if omitted, is a dataframe
60
+ tb.replace('PARAMS_OBJECT', inputs).replace('TYPED_PARAMS', inputs)
61
+ // The query output, if omitted, is a dataframe
87
62
  .replace('OUTPUT_TYPE', outputType === 'void' ? utils.dgToTsTypeMap['dataframe'] : outputType);
88
63
  wrappers.push(tb.build());
89
64
  }
@@ -98,52 +73,36 @@ function generateQueryWrappers() {
98
73
  } finally {
99
74
  _iterator.f();
100
75
  }
101
-
102
76
  var srcDir = _path["default"].join(curDir, 'src');
103
-
104
77
  var queryFileName = 'queries-api.ts';
105
-
106
78
  var queryFilePath = _path["default"].join(_fs["default"].existsSync(srcDir) ? srcDir : curDir, queryFileName);
107
-
108
79
  if (_fs["default"].existsSync(queryFilePath)) {
109
80
  color.warn("The file ".concat(queryFilePath, " already exists"));
110
81
  console.log('Rewriting its contents...');
111
82
  }
112
-
113
83
  var sep = '\n';
114
-
115
84
  _fs["default"].writeFileSync(queryFilePath, utils.dgImports + sep + wrappers.join(sep.repeat(2)) + sep, 'utf8');
116
-
117
85
  color.success("Successfully generated file ".concat(queryFileName).concat(sep));
118
86
  }
119
-
120
87
  function generateScriptWrappers() {
121
88
  var curDir = process.cwd();
122
-
123
89
  var scriptsDir = _path["default"].join(curDir, 'scripts');
124
-
125
90
  if (!_fs["default"].existsSync(scriptsDir)) {
126
91
  color.warn("Directory ".concat(scriptsDir, " not found"));
127
92
  console.log('Skipping API generation for scripts...');
128
93
  return;
129
94
  }
130
-
131
95
  var packagePath = _path["default"].join(curDir, 'package.json');
132
-
133
96
  var _package = JSON.parse(_fs["default"].readFileSync(packagePath, {
134
97
  encoding: 'utf-8'
135
98
  }));
136
-
137
99
  var files = _ignoreWalk["default"].sync({
138
100
  path: './scripts',
139
101
  ignoreFiles: ['.npmignore', '.gitignore']
140
102
  });
141
-
142
103
  var wrappers = [];
143
-
144
104
  var _iterator3 = _createForOfIteratorHelper(files),
145
- _step3;
146
-
105
+ _step3;
147
106
  try {
148
107
  var _loop = function _loop() {
149
108
  var file = _step3.value;
@@ -151,11 +110,8 @@ function generateScriptWrappers() {
151
110
  if (!utils.scriptExtensions.some(function (ext) {
152
111
  return extension = ext, file.endsWith(ext);
153
112
  })) return "continue";
154
-
155
113
  var filepath = _path["default"].join(scriptsDir, file);
156
-
157
114
  var script = _fs["default"].readFileSync(filepath, 'utf8');
158
-
159
115
  if (!script) return "continue";
160
116
  var name = utils.getScriptName(script, utils.commentMap[extension]);
161
117
  if (!name) return "continue";
@@ -165,10 +121,8 @@ function generateScriptWrappers() {
165
121
  tb.replace('PARAMS_OBJECT', inputs).replace('TYPED_PARAMS', inputs).replace('OUTPUT_TYPE', outputType);
166
122
  wrappers.push(tb.build(1));
167
123
  };
168
-
169
124
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
170
125
  var _ret = _loop();
171
-
172
126
  if (_ret === "continue") continue;
173
127
  }
174
128
  } catch (err) {
@@ -176,35 +130,25 @@ function generateScriptWrappers() {
176
130
  } finally {
177
131
  _iterator3.f();
178
132
  }
179
-
180
133
  var srcDir = _path["default"].join(curDir, 'src');
181
-
182
134
  var funcFileName = 'scripts-api.ts';
183
-
184
135
  var funcFilePath = _path["default"].join(_fs["default"].existsSync(srcDir) ? srcDir : curDir, funcFileName);
185
-
186
136
  if (_fs["default"].existsSync(funcFilePath)) {
187
137
  color.warn("The file ".concat(funcFilePath, " already exists"));
188
138
  console.log('Rewriting its contents...');
189
139
  }
190
-
191
140
  var sep = '\n';
192
141
  var scriptApi = new utils.TemplateBuilder(utils.namespaceTemplate).replace('PACKAGE_NAMESPACE', _package.name).replace('NAME', wrappers.join(sep.repeat(2)));
193
-
194
142
  _fs["default"].writeFileSync(funcFilePath, utils.dgImports + sep + scriptApi.build() + sep, 'utf8');
195
-
196
143
  color.success("Successfully generated file ".concat(funcFileName).concat(sep));
197
144
  }
198
-
199
145
  function api(args) {
200
146
  var nOptions = Object.keys(args).length - 1;
201
147
  if (args['_'].length !== 1 || nOptions > 0) return false;
202
-
203
148
  if (!utils.isPackageDir(process.cwd())) {
204
149
  color.error('File `package.json` not found. Run the command from the package directory');
205
150
  return false;
206
151
  }
207
-
208
152
  generateScriptWrappers();
209
153
  generateQueryWrappers();
210
154
  return true;