@notifiles/sdk 1.0.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.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/index.modern.cjs +856 -0
  4. package/dist/index.modern.cjs.map +1 -0
  5. package/dist/index.modern.modern.js +690 -0
  6. package/dist/index.modern.modern.js.map +1 -0
  7. package/package.json +152 -0
  8. package/src/cloud/add/index.js +38 -0
  9. package/src/cloud/add/index.test.js +38 -0
  10. package/src/cloud/add/lib/validate.js +16 -0
  11. package/src/cloud/index.js +3 -0
  12. package/src/cloud/list/index.js +18 -0
  13. package/src/cloud/list/index.test.js +13 -0
  14. package/src/email/build copy/lib/perform/email.js +52 -0
  15. package/src/index.js +3 -0
  16. package/src/lib/adaptSettings.js +12 -0
  17. package/src/lib/cloudLibrary/bunny/index.js +2 -0
  18. package/src/lib/cloudLibrary/bunny/isValid.js +32 -0
  19. package/src/lib/cloudLibrary/bunny/upload.js +35 -0
  20. package/src/lib/cloudLibrary/index.js +20 -0
  21. package/src/lib/cloudLibrary/minio/index.js +4 -0
  22. package/src/lib/cloudLibrary/minio/isValid.js +33 -0
  23. package/src/lib/cloudLibrary/minio/remove.js +58 -0
  24. package/src/lib/cloudLibrary/minio/upload.js +61 -0
  25. package/src/lib/cloudLibrary/minio/uploadFolder.js +26 -0
  26. package/src/lib/entries/getAtPath.js +105 -0
  27. package/src/lib/entries/isPathEntry.js +29 -0
  28. package/src/lib/entries.js +144 -0
  29. package/src/lib/fs/checkFileExists.js +6 -0
  30. package/src/lib/fs/directoryFilesRecursive.js +83 -0
  31. package/src/lib/fs/ensureDirectoryExists.js +10 -0
  32. package/src/lib/fs/getFileCallerURL.js +12 -0
  33. package/src/lib/fs/importFileAsText.js +15 -0
  34. package/src/lib/fs/importJSONAsync.js +16 -0
  35. package/src/lib/fs/importYAMLAsync.js +14 -0
  36. package/src/lib/remark/hastToHtml.js +6 -0
  37. package/src/lib/remark/htmlToHast.js +6 -0
  38. package/src/lib/remark/htmlToMarkdown copy.js +12 -0
  39. package/src/lib/remark/htmlToMarkdown.js +23 -0
  40. package/src/lib/remark/htmlToMdast.js +13 -0
  41. package/src/lib/remark/htmlToMdast_.js +21 -0
  42. package/src/lib/remark/htmlToMdast_3.js +21 -0
  43. package/src/lib/remark/markdownToHTML.js +22 -0
  44. package/src/lib/remark/markdownToLexer.js +19 -0
  45. package/src/lib/remark/mdastToHTML.js +8 -0
  46. package/src/lib/remark/mdastToMarkdown.js +24 -0
  47. package/src/lib/remark/mdastToString.js +12 -0
  48. package/src/project/index.js +4 -0
  49. package/src/project/isProject/index.js +26 -0
  50. package/src/project/isProject/index.test.js +13 -0
  51. package/src/project/isProject/sync.js +18 -0
  52. package/src/project/lib/activity/createFileIfNeeded.js +33 -0
  53. package/src/project/lib/activity/defaultContent.json +5 -0
  54. package/src/project/lib/activity/updateToFile.js +32 -0
  55. package/src/project/lib/manifest/createFileIfNeeded.js +44 -0
  56. package/src/project/lib/manifest/read.js +21 -0
  57. package/src/project/lib/manifest/update.js +36 -0
  58. package/src/project/lib/manifest/updateToFile.js +22 -0
  59. package/src/project/new/index.js +2 -0
  60. package/src/project/new/plain.js +49 -0
  61. package/src/project/new/plain.test.js +38 -0
  62. package/src/template/build/entry.js +37 -0
  63. package/src/template/build/index.js +2 -0
  64. package/src/template/build/lib/email/index.js +100 -0
  65. package/src/template/build/lib/email/translate.js +16 -0
  66. package/src/template/build/lib/textmessage/index.js +44 -0
  67. package/src/template/build/lib/textmessage/translate.js +25 -0
  68. package/src/template/build/path.js +18 -0
  69. package/src/template/build/path.test.js +29 -0
  70. package/src/template/cloudify/entry.js +20 -0
  71. package/src/template/cloudify/index.js +2 -0
  72. package/src/template/cloudify/lib/email/attachments/addAttachment.js +24 -0
  73. package/src/template/cloudify/lib/email/attachments/index.js +137 -0
  74. package/src/template/cloudify/lib/email/attachments/treatLocalFile.js +13 -0
  75. package/src/template/cloudify/lib/email/attachments/treatRemoteFile.js +26 -0
  76. package/src/template/cloudify/lib/email/image/index.js +90 -0
  77. package/src/template/cloudify/lib/email/image/treatLocalFile.js +13 -0
  78. package/src/template/cloudify/lib/email/image/treatRemoteFile.js +26 -0
  79. package/src/template/cloudify/lib/email/index.js +77 -0
  80. package/src/template/cloudify/lib/remove.js +14 -0
  81. package/src/template/cloudify/lib/textMessage.js +9 -0
  82. package/src/template/cloudify/lib/upload.js +14 -0
  83. package/src/template/cloudify/path.js +20 -0
  84. package/src/template/cloudify/path.test.js +24 -0
  85. package/src/template/consolidate/entry.js +18 -0
  86. package/src/template/consolidate/index.js +2 -0
  87. package/src/template/consolidate/lib/email.js +63 -0
  88. package/src/template/consolidate/lib/image/index.js +35 -0
  89. package/src/template/consolidate/lib/image/treatLocalFile.js +14 -0
  90. package/src/template/consolidate/lib/image/treatRemoteFile.js +25 -0
  91. package/src/template/consolidate/lib/textMessage.js +5 -0
  92. package/src/template/consolidate/path.js +18 -0
  93. package/src/template/consolidate/path.test.js +14 -0
  94. package/src/template/format/entry.js +57 -0
  95. package/src/template/format/index.js +2 -0
  96. package/src/template/format/path.js +18 -0
  97. package/src/template/format/path.test.js +29 -0
  98. package/src/template/index.js +8 -0
  99. package/src/template/lib/activity/createFileIfNeeded.js +33 -0
  100. package/src/template/lib/activity/defaultContent.json +4 -0
  101. package/src/template/lib/activity/get.js +20 -0
  102. package/src/template/lib/activity/updateToFile.js +33 -0
  103. package/src/template/lib/manifest/createFileIfNeeded.js +41 -0
  104. package/src/template/lib/manifest/read.js +22 -0
  105. package/src/template/lib/manifest/update.js +18 -0
  106. package/src/template/lib/manifest/updateToFile.js +22 -0
  107. package/src/template/new/index.js +66 -0
  108. package/src/template/new/index.test.js +19 -0
  109. package/src/template/optimize/entry.js +18 -0
  110. package/src/template/optimize/index.js +2 -0
  111. package/src/template/optimize/lib/email.js +58 -0
  112. package/src/template/optimize/lib/image/index.js +40 -0
  113. package/src/template/optimize/lib/textMessage.js +8 -0
  114. package/src/template/optimize/path.js +18 -0
  115. package/src/template/optimize/path.test.js +16 -0
  116. package/src/template/sync/entry.js +18 -0
  117. package/src/template/sync/index.js +2 -0
  118. package/src/template/sync/lib/email.js +86 -0
  119. package/src/template/sync/lib/textMessage.js +80 -0
  120. package/src/template/sync/lib/upload.js +14 -0
  121. package/src/template/sync/path.js +18 -0
  122. package/src/template/sync/path.test.js +29 -0
  123. package/src/template/update/index.js +1 -0
  124. package/src/template/update/path.js +41 -0
  125. package/src/template/update/path.test.js +46 -0
  126. package/src/template/version/entry.js +10 -0
  127. package/src/template/version/index.js +2 -0
  128. package/src/template/version/lib/perform.js +74 -0
  129. package/src/template/version/lib/reset.js +16 -0
  130. package/src/template/version/lib/updatePost.js +16 -0
  131. package/src/template/version/path.js +20 -0
  132. package/src/template/version/path.test.js +16 -0
@@ -0,0 +1,856 @@
1
+ var _yargs = require('yargs');
2
+ var helpers = require('yargs/helpers');
3
+ var fs$1 = require('fs');
4
+ var Bluebird = require('bluebird');
5
+ var chalk = require('chalk');
6
+ var inquirer = require('inquirer');
7
+ var inquirerPromptAutocomplete = require('inquirer-autocomplete-prompt');
8
+ var inquirerFileTreeSelection = require('inquirer-file-tree-selection-prompt');
9
+ var inquirerParseJsonFile = require('inquirer-parse-json-file');
10
+ var ejs$1 = require('ejs');
11
+ var jetpack = require('fs-jetpack');
12
+ var _path = require('path');
13
+ var cp = require('child_process');
14
+ var _ = require('underscore');
15
+ var lodash = require('lodash');
16
+ var parseArgv = require('tiny-parse-argv');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ function _interopNamespace(e) {
21
+ if (e && e.__esModule) return e;
22
+ var n = Object.create(null);
23
+ if (e) {
24
+ Object.keys(e).forEach(function (k) {
25
+ if (k !== 'default') {
26
+ var d = Object.getOwnPropertyDescriptor(e, k);
27
+ Object.defineProperty(n, k, d.get ? d : {
28
+ enumerable: true,
29
+ get: function () { return e[k]; }
30
+ });
31
+ }
32
+ });
33
+ }
34
+ n["default"] = e;
35
+ return n;
36
+ }
37
+
38
+ var _yargs__default = /*#__PURE__*/_interopDefaultLegacy(_yargs);
39
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs$1);
40
+ var Bluebird__default = /*#__PURE__*/_interopDefaultLegacy(Bluebird);
41
+ var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
42
+ var inquirer__default = /*#__PURE__*/_interopDefaultLegacy(inquirer);
43
+ var inquirerPromptAutocomplete__default = /*#__PURE__*/_interopDefaultLegacy(inquirerPromptAutocomplete);
44
+ var inquirerFileTreeSelection__default = /*#__PURE__*/_interopDefaultLegacy(inquirerFileTreeSelection);
45
+ var inquirerParseJsonFile__default = /*#__PURE__*/_interopDefaultLegacy(inquirerParseJsonFile);
46
+ var ejs__default = /*#__PURE__*/_interopDefaultLegacy(ejs$1);
47
+ var jetpack__default = /*#__PURE__*/_interopDefaultLegacy(jetpack);
48
+ var _path__default = /*#__PURE__*/_interopDefaultLegacy(_path);
49
+ var cp__default = /*#__PURE__*/_interopDefaultLegacy(cp);
50
+ var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
51
+ var lodash__default = /*#__PURE__*/_interopDefaultLegacy(lodash);
52
+ var parseArgv__default = /*#__PURE__*/_interopDefaultLegacy(parseArgv);
53
+
54
+ function _extends() {
55
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
56
+ for (var i = 1; i < arguments.length; i++) {
57
+ var source = arguments[i];
58
+ for (var key in source) {
59
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
60
+ target[key] = source[key];
61
+ }
62
+ }
63
+ }
64
+ return target;
65
+ };
66
+ return _extends.apply(this, arguments);
67
+ }
68
+
69
+ var nonEmpty = (function (_ref) {
70
+ var input = _ref.input;
71
+ try {
72
+ return Promise.resolve(input && input.length > 0);
73
+ } catch (e) {
74
+ return Promise.reject(e);
75
+ }
76
+ });
77
+
78
+ var getValidators = (function (a) {
79
+ switch (a.type) {
80
+ default:
81
+ case 'nonEmpty':
82
+ {
83
+ return nonEmpty;
84
+ }
85
+ }
86
+ });
87
+
88
+ var _ask = (function (props) {
89
+ try {
90
+ var payload = props.payload,
91
+ question = props.question,
92
+ generator = props.generator,
93
+ promptModule = props.promptModule,
94
+ promptType = props.promptType;
95
+ var name = question.name,
96
+ message = question.message,
97
+ defaultValue = question.defaultValue,
98
+ _question$validators = question.validators,
99
+ validators = _question$validators === void 0 ? [{
100
+ type: 'nonEmpty'
101
+ }] : _question$validators;
102
+ if (!name) {
103
+ return Promise.resolve();
104
+ }
105
+ var value = payload[name];
106
+ if (!value && question.alias) {
107
+ value = payload[question.alias];
108
+ }
109
+ var valueIsDefined = !(value === null || value === undefined);
110
+ if (valueIsDefined) {
111
+ generator.print.log(chalk__default["default"].green('✓') + " " + chalk__default["default"].bold(message ? message : name) + " " + chalk__default["default"].italic(value));
112
+ return Promise.resolve();
113
+ }
114
+ var isQuick = payload['quick'] || payload['q'];
115
+ if (isQuick && valueIsDefined) {
116
+ generator.print.log(chalk__default["default"].green('✓') + " " + chalk__default["default"].bold(message ? message : name) + " " + chalk__default["default"].italic(value));
117
+ return Promise.resolve();
118
+ }
119
+ if (isQuick && !(defaultValue === null || defaultValue === undefined)) {
120
+ payload[name] = defaultValue;
121
+ generator.print.log(chalk__default["default"].green('✓') + " " + chalk__default["default"].bold(message ? message : name) + " " + chalk__default["default"].italic(payload[name]));
122
+ return Promise.resolve();
123
+ }
124
+ return Promise.resolve(promptModule.prompt(_extends({}, props.question, {
125
+ type: promptType,
126
+ name: name,
127
+ message: message,
128
+ "default": value ? value : defaultValue,
129
+ validate: function (input) {
130
+ try {
131
+ var isValid = true;
132
+ return Promise.resolve(Bluebird__default["default"].Promise.mapSeries(validators, function (validator) {
133
+ try {
134
+ var _temp2 = function _temp2(_result) {
135
+ if (_exit) return _result;
136
+ if (validate.regex) {
137
+ var f = new RegExp(validate.regex, 'g');
138
+ // isValid = validator.regex.test(input)
139
+ isValid = f.test(input);
140
+ }
141
+ };
142
+ var _exit;
143
+ var validate = getValidators(validator);
144
+ var _temp = function () {
145
+ if (validate) {
146
+ return Promise.resolve(validate(_extends({
147
+ input: input
148
+ }, validator))).then(function (_i) {
149
+ if (!_i) {
150
+ isValid = false;
151
+ }
152
+ _exit = 1;
153
+ });
154
+ }
155
+ }();
156
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
157
+ } catch (e) {
158
+ return Promise.reject(e);
159
+ }
160
+ })).then(function () {
161
+ if (props.question.validate) {
162
+ isValid = props.question.validate(input);
163
+ }
164
+ return isValid;
165
+ });
166
+ } catch (e) {
167
+ return Promise.reject(e);
168
+ }
169
+ }
170
+ }))).then(function (_promptModule$prompt) {
171
+ payload[name] = _promptModule$prompt[name];
172
+ return payload[name];
173
+ });
174
+ } catch (e) {
175
+ return Promise.reject(e);
176
+ }
177
+ });
178
+
179
+ var _promptModule = (function (id) {
180
+ switch (id) {
181
+ default:
182
+ case 'inquirer':
183
+ return inquirer__default["default"];
184
+ }
185
+ });
186
+
187
+ var prompt = (function (_ref) {
188
+ var generator = _ref.generator;
189
+ var prompt = {
190
+ ask: function (value) {
191
+ try {
192
+ var questions = Array.isArray(value) ? value : [value];
193
+ var result = {};
194
+ return Promise.resolve(Bluebird__default["default"].Promise.mapSeries(questions, function (question) {
195
+ try {
196
+ var fullQuestion = _extends({}, question);
197
+ var items = generator.options.filter(function (a) {
198
+ return a.name === question.name;
199
+ });
200
+ if (items && items.length) {
201
+ fullQuestion = _extends({}, items[0], fullQuestion);
202
+ }
203
+ var _ref2 = fullQuestion.prompt ? fullQuestion.prompt : {},
204
+ _ref2$type = _ref2.type,
205
+ promptType = _ref2$type === void 0 ? 'input' : _ref2$type,
206
+ _f = _ref2.module;
207
+ var _promptModule2 = _f ? _f : _promptModule();
208
+ if (typeof _promptModule2 === 'string') {
209
+ _promptModule2 = _promptModule(_f);
210
+ }
211
+ return Promise.resolve(_ask({
212
+ question: fullQuestion,
213
+ payload: generator.payload,
214
+ generator: generator,
215
+ promptModule: _promptModule2,
216
+ promptType: promptType
217
+ })).then(function (v) {
218
+ result[question.name] = v;
219
+ return v;
220
+ });
221
+ } catch (e) {
222
+ return Promise.reject(e);
223
+ }
224
+ })).then(function () {
225
+ return result;
226
+ });
227
+ } catch (e) {
228
+ return Promise.reject(e);
229
+ }
230
+ },
231
+ confirm: function () {
232
+ return Promise.resolve();
233
+ },
234
+ registerPrompt: function registerPrompt(promptModule, key, module) {
235
+ promptModule.registerPrompt(key, module);
236
+ }
237
+ };
238
+ var promptModule = _promptModule();
239
+ prompt.registerPrompt(promptModule, 'autocomplete', inquirerPromptAutocomplete__default["default"]);
240
+ prompt.registerPrompt(promptModule, 'file-tree-selection', inquirerFileTreeSelection__default["default"]);
241
+ prompt.registerPrompt(promptModule, 'json-file', inquirerParseJsonFile__default["default"]);
242
+ return prompt;
243
+ });
244
+
245
+ var template = (function (_ref) {
246
+ return {
247
+ render: function render(text, data) {
248
+ return ejs__default["default"].render(text, data);
249
+ }
250
+ };
251
+ });
252
+
253
+ var getFileCallerURL = (function () {
254
+ var _error$stack;
255
+ var error = new Error();
256
+ var stack = (_error$stack = error.stack) == null ? void 0 : _error$stack.split('\n');
257
+ var data = stack[3];
258
+ var filePathPattern = new RegExp("(file:[/]{2}.+[^:0-9]):{1}[0-9]+:{1}[0-9]+");
259
+ var result = filePathPattern.exec(data);
260
+ var filePath = '';
261
+ if (result && result.length > 1) {
262
+ filePath = result[1];
263
+ }
264
+ return filePath;
265
+ });
266
+
267
+ var fs = (function (_ref) {
268
+ return _extends({}, jetpack__default["default"], {
269
+ copy: function (_ref2) {
270
+ var source = _ref2.source,
271
+ destination = _ref2.destination;
272
+ try {
273
+ return Promise.resolve(fs__default["default"].promises.cp(source, destination));
274
+ } catch (e) {
275
+ return Promise.reject(e);
276
+ }
277
+ },
278
+ copyTpl: function (source, destination, data) {
279
+ try {
280
+ return Promise.resolve(fs__default["default"].promises.readFile(source)).then(function (entry) {
281
+ var result = ejs.render(entry, data);
282
+ return Promise.resolve(fs__default["default"].promises.writeFile(destination, result)).then(function () {});
283
+ });
284
+ } catch (e) {
285
+ return Promise.reject(e);
286
+ }
287
+ },
288
+ copyFraction: function (_ref3) {
289
+ var source = _ref3.source,
290
+ destination = _ref3.destination,
291
+ _ref3$useRelativeCall = _ref3.useRelativeCall,
292
+ useRelativeCall = _ref3$useRelativeCall === void 0 ? true : _ref3$useRelativeCall;
293
+ try {
294
+ var _source = source;
295
+ if (useRelativeCall) {
296
+ var sou = getFileCallerURL();
297
+ sou = _path__default["default"].dirname(sou);
298
+ sou = sou.replace('file://', '');
299
+ _source = sou + "/template/" + _source;
300
+ }
301
+ return Promise.resolve(jetpack__default["default"].copyAsync(_source, destination, {
302
+ overwrite: true
303
+ })); // return fs.promises.copyFile(_source, destination)
304
+ } catch (e) {
305
+ return Promise.reject(e);
306
+ }
307
+ }
308
+ });
309
+ });
310
+
311
+ var ui = (function (_ref) {
312
+ var generator = _ref.generator;
313
+ return {
314
+ drawSectionHeader: function drawSectionHeader(_ref2) {
315
+ var title = _ref2.title,
316
+ subTitle = _ref2.subTitle,
317
+ _ref2$type = _ref2.type,
318
+ type = _ref2$type === void 0 ? 'text' : _ref2$type;
319
+ switch (type) {
320
+ case 'h1':
321
+ {
322
+ generator.print.log("\n");
323
+ generator.print.log(chalk__default["default"].white.bgRed.bold("" + title));
324
+ if (subTitle) {
325
+ generator.print.log(chalk__default["default"].italic(subTitle + "\n"));
326
+ }
327
+ generator.print.log("----");
328
+ generator.print.log("");
329
+ }
330
+ break;
331
+ case 'h2':
332
+ {
333
+ generator.print.log("\n");
334
+ generator.print.log(chalk__default["default"].white.bgGreen.bold("" + title));
335
+ if (subTitle) {
336
+ generator.print.log(chalk__default["default"].italic(subTitle + "\n"));
337
+ }
338
+ }
339
+ break;
340
+ default:
341
+ {
342
+ generator.print.log(chalk__default["default"].blue.bold("\n" + title));
343
+ if (subTitle) {
344
+ generator.print.log(chalk__default["default"].italic(subTitle + "\n"));
345
+ }
346
+ }
347
+ break;
348
+ }
349
+ }
350
+ };
351
+ });
352
+
353
+ var mergeOptions = (function (_ref) {
354
+ var _ref$handlerOptions = _ref.handlerOptions,
355
+ handlerOptions = _ref$handlerOptions === void 0 ? [] : _ref$handlerOptions,
356
+ generator = _ref.generator;
357
+ generator.options = handlerOptions.map(function (option) {
358
+ switch (option.scope) {
359
+ case 'private':
360
+ {
361
+ return option;
362
+ }
363
+ }
364
+ var i = ___default["default"].findWhere(generator.libraryOptions, {
365
+ name: option.name
366
+ });
367
+ if (!i) {
368
+ return option;
369
+ }
370
+ var result = _extends({}, option);
371
+ lodash__default["default"].merge(result, i);
372
+ return result;
373
+ });
374
+ });
375
+
376
+ var buildGenerator = (function (_ref) {
377
+ var payload = _ref.payload,
378
+ _ref$options = _ref.options,
379
+ options = _ref$options === void 0 ? [] : _ref$options;
380
+ var generator = {
381
+ payload: payload,
382
+ print: console,
383
+ libraryOptions: options,
384
+ options: []
385
+ };
386
+ generator.mergeOptions = function (op) {
387
+ return mergeOptions({
388
+ handlerOptions: op,
389
+ generator: generator
390
+ });
391
+ };
392
+ generator.ui = ui({
393
+ generator: generator
394
+ });
395
+ generator.prompt = prompt({
396
+ generator: generator
397
+ });
398
+ generator.template = template();
399
+ generator.fs = fs();
400
+ generator.spawn = function (command, args, options) {
401
+ try {
402
+ return Promise.resolve(new Promise(function (resolve) {
403
+ var result = cp__default["default"].spawn(command, args, options);
404
+ result.on('close', function () {
405
+ resolve();
406
+ });
407
+ }));
408
+ } catch (e) {
409
+ return Promise.reject(e);
410
+ }
411
+ };
412
+ return generator;
413
+ });
414
+
415
+ var buildCommand = (function (_ref) {
416
+ var path = _ref.path,
417
+ generator = _ref.generator,
418
+ payload = _ref.payload;
419
+ try {
420
+ return Promise.resolve((function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(path)).then(function (_import) {
421
+ var data = _import["default"];
422
+ var _data$name = data.name,
423
+ name = _data$name === void 0 ? '' : _data$name,
424
+ _data$description = data.description,
425
+ description = _data$description === void 0 ? '' : _data$description,
426
+ handler = data.handler,
427
+ example = data.example;
428
+ var command = {
429
+ command: name,
430
+ desc: description,
431
+ builder: {},
432
+ handler: function handler(argv) {
433
+ data.handler({
434
+ generator: generator,
435
+ payload: payload,
436
+ argv: argv
437
+ });
438
+ }
439
+ };
440
+ return {
441
+ command: command,
442
+ data: _extends({}, data, {
443
+ options: data.options && data.options.length ? data.options : []
444
+ })
445
+ };
446
+ });
447
+ } catch (e) {
448
+ return Promise.reject(e);
449
+ }
450
+ });
451
+
452
+ var formatOptionForYargs = (function (_ref) {
453
+ var option = _ref.option,
454
+ yargs = _ref.yargs;
455
+ var name = option.name,
456
+ description = option.description,
457
+ message = option.message,
458
+ _option$type = option.type,
459
+ type = _option$type === void 0 ? 'string' : _option$type,
460
+ _option$global = option.global,
461
+ global = _option$global === void 0 ? false : _option$global,
462
+ alias = option.alias,
463
+ defaultValue = option.defaultValue;
464
+ yargs.option(name, {
465
+ desc: description ? description : message,
466
+ type: type,
467
+ global: global,
468
+ alias: alias,
469
+ "default": defaultValue
470
+ });
471
+ });
472
+
473
+ var operation = function operation(_ref) {
474
+ var path = _ref.path,
475
+ generator = _ref.generator,
476
+ yargs = _ref.yargs,
477
+ _ref$root = _ref.root,
478
+ root = _ref$root === void 0 ? false : _ref$root,
479
+ payload = _ref.payload;
480
+ try {
481
+ return Promise.resolve(jetpack__default["default"].listAsync(path)).then(function (candidates) {
482
+ if (!candidates || !candidates.length) {
483
+ return;
484
+ }
485
+ var commands = [];
486
+ var index = null;
487
+ var subCommands = [];
488
+ return Promise.resolve(Promise.all(candidates.map(function (item) {
489
+ try {
490
+ var __path = path + "/" + item;
491
+ return Promise.resolve(fs__default["default"].promises.stat(__path)).then(function (stat) {
492
+ return !stat || !stat.isDirectory() ? null : Promise.resolve(operation({
493
+ path: __path,
494
+ generator: generator,
495
+ payload: payload,
496
+ yargs: yargs
497
+ })).then(function (subCommand) {
498
+ subCommands.push(subCommand);
499
+ });
500
+ });
501
+ } catch (e) {
502
+ return Promise.reject(e);
503
+ }
504
+ }))).then(function () {
505
+ return Promise.resolve(Promise.all(candidates.map(function (item) {
506
+ try {
507
+ var __path = path + "/" + item;
508
+ return Promise.resolve(fs__default["default"].promises.stat(__path)).then(function (stat) {
509
+ return !stat || stat.isDirectory() ? null : Promise.resolve(buildCommand({
510
+ path: __path,
511
+ generator: generator,
512
+ fileName: item,
513
+ payload: payload
514
+ })).then(function (_ref2) {
515
+ var commandData = _ref2.data,
516
+ command = _ref2.command;
517
+ if (item === 'index.js') {
518
+ return;
519
+ }
520
+ command.builder = function (yargs) {
521
+ fixOptions({
522
+ generator: generator,
523
+ commandOptions: commandData.options,
524
+ yargs: yargs
525
+ });
526
+ if (commandData.example) {
527
+ yargs.example(commandData.example);
528
+ }
529
+ };
530
+ if (commandData.usage) {}
531
+ commands.push(command);
532
+ });
533
+ });
534
+ } catch (e) {
535
+ return Promise.reject(e);
536
+ }
537
+ }))).then(function () {
538
+ return Promise.resolve(Promise.all(candidates.map(function (item) {
539
+ try {
540
+ var __path = path + "/" + item;
541
+ return Promise.resolve(fs__default["default"].promises.stat(__path)).then(function (stat) {
542
+ if (!stat || stat.isDirectory()) {
543
+ return null;
544
+ }
545
+ if (item !== 'index.js') {
546
+ return;
547
+ }
548
+ return Promise.resolve(buildCommand({
549
+ path: __path,
550
+ generator: generator,
551
+ fileName: item,
552
+ payload: payload
553
+ })).then(function (_ref3) {
554
+ var commandData = _ref3.data,
555
+ command = _ref3.command;
556
+ if (!root) {
557
+ command.builder = function (yargs) {
558
+ fixOptions({
559
+ generator: generator,
560
+ commandOptions: commandData.options,
561
+ yargs: yargs
562
+ });
563
+ // commandData.options.forEach(option => formatOptionForYargs({ option, yargs }))
564
+ if (commandData.example) {
565
+ yargs.example(commandData.example);
566
+ }
567
+ commands.forEach(function (subCommand) {
568
+ yargs.command(subCommand);
569
+ });
570
+ subCommands.forEach(function (subCommand) {
571
+ yargs.command(subCommand.index);
572
+ });
573
+ };
574
+ } else {
575
+ subCommands.forEach(function (subCommand) {
576
+ yargs.command(subCommand.index);
577
+ });
578
+ }
579
+ index = command;
580
+ });
581
+ });
582
+ } catch (e) {
583
+ return Promise.reject(e);
584
+ }
585
+ }))).then(function () {
586
+ return {
587
+ index: index,
588
+ commands: commands
589
+ };
590
+ });
591
+ });
592
+ });
593
+ });
594
+ } catch (e) {
595
+ return Promise.reject(e);
596
+ }
597
+ };
598
+ var fixOptions = function fixOptions(_ref4) {
599
+ var generator = _ref4.generator,
600
+ commandOptions = _ref4.commandOptions,
601
+ yargs = _ref4.yargs;
602
+ var nativeArgv = parseArgv__default["default"](process.argv);
603
+ delete nativeArgv["--"];
604
+ delete nativeArgv["_"];
605
+ Object.keys(nativeArgv).forEach(function (n) {
606
+ generator.payload[n] = nativeArgv[n];
607
+ });
608
+ var _options = commandOptions && commandOptions.length ? commandOptions : [];
609
+ var options = _options.map(function (option) {
610
+ var value = nativeArgv[option.name];
611
+ return _extends({}, option, {
612
+ value: value
613
+ });
614
+ });
615
+ generator.mergeOptions(options);
616
+ generator.options.forEach(function (option) {
617
+ return formatOptionForYargs({
618
+ option: option,
619
+ yargs: yargs
620
+ });
621
+ });
622
+ };
623
+
624
+ var registerCommands = (function (_ref) {
625
+ var path = _ref.path,
626
+ yargs = _ref.yargs,
627
+ options = _ref.options;
628
+ try {
629
+ var commandsPath = path + "/commands";
630
+ var payload = {};
631
+ var generator = buildGenerator({
632
+ payload: payload,
633
+ options: options,
634
+ yargs: yargs
635
+ });
636
+ return Promise.resolve(operation({
637
+ path: commandsPath,
638
+ generator: generator,
639
+ yargs: yargs,
640
+ root: true,
641
+ payload: payload
642
+ })).then(function (_ref2) {
643
+ var index = _ref2.index,
644
+ commands = _ref2.commands;
645
+ commands.forEach(function (command) {
646
+ yargs.command(command);
647
+ });
648
+ yargs.argv;
649
+ return commands;
650
+ });
651
+ } catch (e) {
652
+ return Promise.reject(e);
653
+ }
654
+ });
655
+
656
+ var checkFileExists = (function (file) {
657
+ try {
658
+ return Promise.resolve(fs__default["default"].promises.access(file, fs__default["default"].constants.F_OK).then(function () {
659
+ return true;
660
+ })["catch"](function () {
661
+ return false;
662
+ }));
663
+ } catch (e) {
664
+ return Promise.reject(e);
665
+ }
666
+ });
667
+
668
+ //https://www.npmjs.com/package/directory-import
669
+
670
+ function _catch(body, recover) {
671
+ try {
672
+ var result = body();
673
+ } catch (e) {
674
+ return recover(e);
675
+ }
676
+ if (result && result.then) {
677
+ return result.then(void 0, recover);
678
+ }
679
+ return result;
680
+ }
681
+ var perform = function perform(_ref) {
682
+ var path = _ref.path,
683
+ _ref$includeMeta = _ref.includeMeta,
684
+ includeMeta = _ref$includeMeta === void 0 ? false : _ref$includeMeta,
685
+ _ref$includeExtension = _ref.includeExtensions,
686
+ includeExtensions = _ref$includeExtension === void 0 ? ['.js', '.ts', '.json'] : _ref$includeExtension;
687
+ try {
688
+ var _exit;
689
+ return Promise.resolve(_catch(function () {
690
+ var _exit2;
691
+ return Promise.resolve(checkFileExists(path)).then(function (_checkFileExists) {
692
+ if (!_checkFileExists) {
693
+ var _temp = null;
694
+ _exit = 1;
695
+ return _temp;
696
+ }
697
+ return Promise.resolve(fs__default["default"].promises.readdir(path)).then(function (items) {
698
+ return !items || !items.length ? null : Promise.resolve(Promise.all(items.map(function (item) {
699
+ try {
700
+ var __path = _path__default["default"].join(path, item);
701
+ return Promise.resolve(fs__default["default"].promises.stat(__path)).then(function (_stat) {
702
+ var _exit3;
703
+ if (!_stat) {
704
+ return null;
705
+ }
706
+ var isDir = _stat.isDirectory();
707
+ return isDir ? perform({
708
+ path: __path
709
+ }) : Promise.resolve(checkFileExists(__path)).then(function (_checkFileExists2) {
710
+ if (!_checkFileExists2) {
711
+ var _temp2 = null;
712
+ _exit3 = 1;
713
+ return _temp2;
714
+ }
715
+ if (item.includes('spec.js')) {
716
+ return null;
717
+ }
718
+ var extension = getExtension(item);
719
+ if (!includeExtensions.includes(extension)) {
720
+ return null;
721
+ }
722
+ if (includeMeta) {
723
+ var racine = getFileRaw(__path);
724
+ return Promise.resolve((function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(__path)).then(function (_module) {
725
+ var md = racine + ".md";
726
+ var documentation = null;
727
+ return Promise.resolve(checkFileExists(md)).then(function (_checkFileExists3) {
728
+ function _temp4() {
729
+ return [{
730
+ module: _module,
731
+ path: __path,
732
+ documentation: documentation
733
+ }];
734
+ }
735
+ var _temp3 = function () {
736
+ if (_checkFileExists3) {
737
+ return Promise.resolve(fs__default["default"].promises.readFile(md, 'utf8')).then(function (_fs$promises$readFile) {
738
+ documentation = _fs$promises$readFile;
739
+ });
740
+ }
741
+ }();
742
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
743
+ });
744
+ });
745
+ } else {
746
+ return Promise.resolve((function (t) { return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(t)); }); })(__path)).then(function (_import) {
747
+ return [_import];
748
+ });
749
+ }
750
+ });
751
+ });
752
+ } catch (e) {
753
+ return Promise.reject(e);
754
+ }
755
+ }))).then(function (_Promise$all) {
756
+ var results = _Promise$all.filter(function (a) {
757
+ return a;
758
+ });
759
+ results = ___default["default"].flatten(results);
760
+ return results;
761
+ });
762
+ });
763
+ });
764
+ }, function (e) {
765
+ console.error(e);
766
+ return null;
767
+ }));
768
+ } catch (e) {
769
+ return Promise.reject(e);
770
+ }
771
+ };
772
+ var getExtension = function getExtension(str) {
773
+ return str.slice(str.lastIndexOf("."));
774
+ };
775
+ var getFileRaw = function getFileRaw(str) {
776
+ return str.split('.').slice(0, -1).join('.');
777
+ };
778
+
779
+ var loadOptions = (function (_ref) {
780
+ var path = _ref.path;
781
+ try {
782
+ var optionsPath = path + "/options";
783
+ return Promise.resolve(perform({
784
+ path: optionsPath,
785
+ includeMeta: false
786
+ })).then(function (files) {
787
+ files = files ? files.map(function (f) {
788
+ return f["default"];
789
+ }) : [];
790
+ return files;
791
+ });
792
+ } catch (e) {
793
+ return Promise.reject(e);
794
+ }
795
+ });
796
+
797
+ // https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e
798
+ var launch = (function (_temp) {
799
+ var _ref = _temp === void 0 ? {} : _temp,
800
+ path = _ref.path,
801
+ npmPackage = _ref.npmPackage,
802
+ config = _ref.config;
803
+ try {
804
+ // import options from './options.js';
805
+ var __actualPath = path;
806
+ if (!__actualPath) {
807
+ var ce = getFileCallerURL();
808
+ __actualPath = _path__default["default"].dirname(ce);
809
+ __actualPath = __actualPath.replace('file://', '');
810
+ }
811
+ var __actualNpmPackage = npmPackage;
812
+ if (!__actualNpmPackage) {
813
+ var __d = _path__default["default"].resolve(__actualPath, '../package.json');
814
+ if (fs__default["default"].existsSync(__d)) {
815
+ __actualNpmPackage = JSON.parse(fs__default["default"].readFileSync(__d).toString());
816
+ }
817
+ }
818
+ if (!__actualNpmPackage) {
819
+ __actualNpmPackage = {
820
+ version: "0.0.0"
821
+ };
822
+ }
823
+ var __actualConfig = config;
824
+ if (!__actualConfig) {
825
+ var _d = _path__default["default"].resolve(__actualPath, '../cli.config.json');
826
+ if (fs__default["default"].existsSync(_d)) {
827
+ __actualConfig = JSON.parse(fs__default["default"].readFileSync(_d).toString());
828
+ }
829
+ }
830
+ if (!__actualConfig) {
831
+ __actualConfig = {};
832
+ }
833
+ //https://github.com/yargs/yargs/issues/569
834
+
835
+ var yargs = _yargs__default["default"](helpers.hideBin(process.argv));
836
+ yargs
837
+ // .options(options)
838
+ .usage('Usage: servable <command>').demandCommand(1).wrap(Math.min(yargs.terminalWidth(), 160)).help('help').alias('help', 'h').version(__actualNpmPackage.version).alias('version', 'v').hide('help').hide('version').epilog('Made by Servable.');
839
+ return Promise.resolve(loadOptions({
840
+ path: __actualPath,
841
+ config: __actualConfig
842
+ })).then(function (options) {
843
+ return Promise.resolve(registerCommands({
844
+ path: __actualPath,
845
+ yargs: yargs,
846
+ config: __actualConfig,
847
+ options: options
848
+ })).then(function () {});
849
+ });
850
+ } catch (e) {
851
+ return Promise.reject(e);
852
+ }
853
+ });
854
+
855
+ exports.launch = launch;
856
+ //# sourceMappingURL=index.modern.cjs.map