occam-model 1.0.484

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 (66) hide show
  1. package/.swcrc +5 -0
  2. package/README.md +78 -0
  3. package/lib/constants.js +34 -0
  4. package/lib/dependencies.js +114 -0
  5. package/lib/dependency.js +81 -0
  6. package/lib/directory.js +107 -0
  7. package/lib/entries.js +245 -0
  8. package/lib/file.js +162 -0
  9. package/lib/fileNames.js +49 -0
  10. package/lib/files.js +121 -0
  11. package/lib/index.js +83 -0
  12. package/lib/mixins/bnf.js +43 -0
  13. package/lib/mixins/entries.js +99 -0
  14. package/lib/mixins/files.js +46 -0
  15. package/lib/mixins/metaJSON.js +36 -0
  16. package/lib/mixins/vocabulary.js +43 -0
  17. package/lib/multiplers.js +26 -0
  18. package/lib/project.js +98 -0
  19. package/lib/projects.js +112 -0
  20. package/lib/propertyNames.js +26 -0
  21. package/lib/release.js +152 -0
  22. package/lib/releases.js +112 -0
  23. package/lib/shortenedVersion.js +105 -0
  24. package/lib/types.js +22 -0
  25. package/lib/utilities/content.js +42 -0
  26. package/lib/utilities/filePath.js +105 -0
  27. package/lib/utilities/files.js +99 -0
  28. package/lib/utilities/metaJSON.js +197 -0
  29. package/lib/utilities/name.js +18 -0
  30. package/lib/utilities/query.js +36 -0
  31. package/lib/utilities/validate.js +26 -0
  32. package/lib/utilities/version.js +71 -0
  33. package/lib/version.js +160 -0
  34. package/license.txt +48 -0
  35. package/package.json +34 -0
  36. package/src/constants.js +7 -0
  37. package/src/dependencies.js +65 -0
  38. package/src/dependency.js +43 -0
  39. package/src/directory.js +60 -0
  40. package/src/entries.js +206 -0
  41. package/src/file.js +113 -0
  42. package/src/fileNames.js +18 -0
  43. package/src/files.js +66 -0
  44. package/src/index.js +18 -0
  45. package/src/mixins/bnf.js +51 -0
  46. package/src/mixins/entries.js +69 -0
  47. package/src/mixins/files.js +61 -0
  48. package/src/mixins/metaJSON.js +44 -0
  49. package/src/mixins/vocabulary.js +51 -0
  50. package/src/multiplers.js +5 -0
  51. package/src/project.js +63 -0
  52. package/src/projects.js +54 -0
  53. package/src/propertyNames.js +5 -0
  54. package/src/release.js +151 -0
  55. package/src/releases.js +54 -0
  56. package/src/shortenedVersion.js +71 -0
  57. package/src/types.js +4 -0
  58. package/src/utilities/content.js +22 -0
  59. package/src/utilities/filePath.js +66 -0
  60. package/src/utilities/files.js +114 -0
  61. package/src/utilities/metaJSON.js +254 -0
  62. package/src/utilities/name.js +13 -0
  63. package/src/utilities/query.js +25 -0
  64. package/src/utilities/validate.js +5 -0
  65. package/src/utilities/version.js +70 -0
  66. package/src/version.js +123 -0
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get customGrammarBNFFilesFromFiles () {
13
+ return customGrammarBNFFilesFromFiles;
14
+ },
15
+ get customGrammarVocabularyFilesFromFiles () {
16
+ return customGrammarVocabularyFilesFromFiles;
17
+ },
18
+ get furtleFilesFromFiles () {
19
+ return furtleFilesFromFiles;
20
+ },
21
+ get metaJSONFileFromFiles () {
22
+ return metaJSONFileFromFiles;
23
+ },
24
+ get nominalFilesFromFiles () {
25
+ return nominalFilesFromFiles;
26
+ },
27
+ get readmeFileFromFiles () {
28
+ return readmeFileFromFiles;
29
+ }
30
+ });
31
+ var _filePath = require("../utilities/filePath");
32
+ function readmeFileFromFiles(files) {
33
+ var readmeFile = null;
34
+ files.someFile(function(file) {
35
+ var filePath = file.getPath(), filePathReadmeFilePath = (0, _filePath.isFilePathReadmeFilePath)(filePath);
36
+ if (filePathReadmeFilePath) {
37
+ readmeFile = file; ///
38
+ return true;
39
+ }
40
+ });
41
+ return readmeFile;
42
+ }
43
+ function furtleFilesFromFiles(files) {
44
+ var furtleFiles = files.reduceFile(function(furtleFiles, file) {
45
+ var filePath = file.getPath(), filePathFurtleFilePath = (0, _filePath.isFilePathFurtleFilePath)(filePath), fileFurtleFile = filePathFurtleFilePath; ///
46
+ if (fileFurtleFile) {
47
+ var furtleFile = file; ///
48
+ furtleFiles.push(furtleFile);
49
+ }
50
+ return furtleFiles;
51
+ }, []);
52
+ return furtleFiles;
53
+ }
54
+ function nominalFilesFromFiles(files) {
55
+ var nominalFiles = files.reduceFile(function(nominalFiles, file) {
56
+ var filePath = file.getPath(), filePathNominalFilePath = (0, _filePath.isFilePathNominalFilePath)(filePath), fileNominalFile = filePathNominalFilePath; ///
57
+ if (fileNominalFile) {
58
+ var nominalFile = file; ///
59
+ nominalFiles.push(nominalFile);
60
+ }
61
+ return nominalFiles;
62
+ }, []);
63
+ return nominalFiles;
64
+ }
65
+ function metaJSONFileFromFiles(files) {
66
+ var metaJSONFile = null;
67
+ files.someFile(function(file) {
68
+ var filePath = file.getPath(), filePathMetaJSONFilePath = (0, _filePath.isFilePathMetaJSONFilePath)(filePath);
69
+ if (filePathMetaJSONFilePath) {
70
+ metaJSONFile = file; ///
71
+ return true;
72
+ }
73
+ });
74
+ return metaJSONFile;
75
+ }
76
+ function customGrammarBNFFilesFromFiles(files) {
77
+ var customGrammarBNFFiles = files.reduceFile(function(customGrammarBNFFiles, file) {
78
+ var filePath = file.getPath(), filePathCustomGrammarBNFFilePath = (0, _filePath.isFilePathCustomGrammarBNFFilePath)(filePath), fileCustomGrammarBNFFile = filePathCustomGrammarBNFFilePath; ///
79
+ if (fileCustomGrammarBNFFile) {
80
+ var customGrammarBNFFile = file; ///
81
+ customGrammarBNFFiles.push(customGrammarBNFFile);
82
+ }
83
+ return customGrammarBNFFiles;
84
+ }, []);
85
+ return customGrammarBNFFiles;
86
+ }
87
+ function customGrammarVocabularyFilesFromFiles(files) {
88
+ var customGrammarVocabularyFiles = files.reduceFile(function(customGrammarVocabularyFiles, file) {
89
+ var filePath = file.getPath(), filePathCustomGrammarVocabularyFilePath = (0, _filePath.isFilePathCustomGrammarVocabularyFilePath)(filePath), fileCustomGrammarVocabularyFile = filePathCustomGrammarVocabularyFilePath; ///
90
+ if (fileCustomGrammarVocabularyFile) {
91
+ var customGrammarVocabularyFile = file; ///
92
+ customGrammarVocabularyFiles.push(customGrammarVocabularyFile);
93
+ }
94
+ return customGrammarVocabularyFiles;
95
+ }, []);
96
+ return customGrammarVocabularyFiles;
97
+ }
98
+
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGlzRmlsZVBhdGhSZWFkbWVGaWxlUGF0aCxcbiAgICAgICAgIGlzRmlsZVBhdGhGdXJ0bGVGaWxlUGF0aCxcbiAgICAgICAgIGlzRmlsZVBhdGhOb21pbmFsRmlsZVBhdGgsXG4gICAgICAgICBpc0ZpbGVQYXRoTWV0YUpTT05GaWxlUGF0aCxcbiAgICAgICAgIGlzRmlsZVBhdGhDdXN0b21HcmFtbWFyQk5GRmlsZVBhdGgsXG4gICAgICAgICBpc0ZpbGVQYXRoQ3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlUGF0aCB9IGZyb20gXCIuLi91dGlsaXRpZXMvZmlsZVBhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRtZUZpbGVGcm9tRmlsZXMoZmlsZXMpIHtcbiAgbGV0IHJlYWRtZUZpbGUgPSBudWxsO1xuXG4gIGZpbGVzLnNvbWVGaWxlKChmaWxlKSA9PiB7XG4gICAgY29uc3QgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKSxcbiAgICAgICAgICBmaWxlUGF0aFJlYWRtZUZpbGVQYXRoID0gaXNGaWxlUGF0aFJlYWRtZUZpbGVQYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmIChmaWxlUGF0aFJlYWRtZUZpbGVQYXRoKSB7XG4gICAgICByZWFkbWVGaWxlID0gZmlsZTsgIC8vL1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWFkbWVGaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnVydGxlRmlsZXNGcm9tRmlsZXMoZmlsZXMpIHtcbiAgY29uc3QgZnVydGxlRmlsZXMgPSBmaWxlcy5yZWR1Y2VGaWxlKChmdXJ0bGVGaWxlcywgZmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXG4gICAgICAgICAgZmlsZVBhdGhGdXJ0bGVGaWxlUGF0aCA9IGlzRmlsZVBhdGhGdXJ0bGVGaWxlUGF0aChmaWxlUGF0aCksXG4gICAgICAgICAgZmlsZUZ1cnRsZUZpbGUgPSBmaWxlUGF0aEZ1cnRsZUZpbGVQYXRoOyAgLy8vXG5cbiAgICBpZiAoZmlsZUZ1cnRsZUZpbGUpIHtcbiAgICAgIGNvbnN0IGZ1cnRsZUZpbGUgPSBmaWxlOyAgLy8vXG5cbiAgICAgIGZ1cnRsZUZpbGVzLnB1c2goZnVydGxlRmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1cnRsZUZpbGVzO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIGZ1cnRsZUZpbGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9taW5hbEZpbGVzRnJvbUZpbGVzKGZpbGVzKSB7XG4gIGNvbnN0IG5vbWluYWxGaWxlcyA9IGZpbGVzLnJlZHVjZUZpbGUoKG5vbWluYWxGaWxlcywgZmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXG4gICAgICBmaWxlUGF0aE5vbWluYWxGaWxlUGF0aCA9IGlzRmlsZVBhdGhOb21pbmFsRmlsZVBhdGgoZmlsZVBhdGgpLFxuICAgICAgZmlsZU5vbWluYWxGaWxlID0gZmlsZVBhdGhOb21pbmFsRmlsZVBhdGg7ICAvLy9cblxuICAgIGlmIChmaWxlTm9taW5hbEZpbGUpIHtcbiAgICAgIGNvbnN0IG5vbWluYWxGaWxlID0gZmlsZTsgIC8vL1xuXG4gICAgICBub21pbmFsRmlsZXMucHVzaChub21pbmFsRmlsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vbWluYWxGaWxlcztcbiAgfSwgW10pO1xuXG4gIHJldHVybiBub21pbmFsRmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhSlNPTkZpbGVGcm9tRmlsZXMoZmlsZXMpIHtcbiAgbGV0IG1ldGFKU09ORmlsZSA9IG51bGw7XG5cbiAgZmlsZXMuc29tZUZpbGUoKGZpbGUpID0+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxuICAgICAgICAgIGZpbGVQYXRoTWV0YUpTT05GaWxlUGF0aCA9IGlzRmlsZVBhdGhNZXRhSlNPTkZpbGVQYXRoKGZpbGVQYXRoKTtcblxuICAgIGlmIChmaWxlUGF0aE1ldGFKU09ORmlsZVBhdGgpIHtcbiAgICAgIG1ldGFKU09ORmlsZSA9IGZpbGU7ICAvLy9cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbWV0YUpTT05GaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tR3JhbW1hckJORkZpbGVzRnJvbUZpbGVzKGZpbGVzKSB7XG4gIGNvbnN0IGN1c3RvbUdyYW1tYXJCTkZGaWxlcyA9IGZpbGVzLnJlZHVjZUZpbGUoKGN1c3RvbUdyYW1tYXJCTkZGaWxlcywgZmlsZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXG4gICAgICAgICAgICAgICAgZmlsZVBhdGhDdXN0b21HcmFtbWFyQk5GRmlsZVBhdGggPSBpc0ZpbGVQYXRoQ3VzdG9tR3JhbW1hckJORkZpbGVQYXRoKGZpbGVQYXRoKSxcbiAgICAgICAgICAgICAgICBmaWxlQ3VzdG9tR3JhbW1hckJORkZpbGUgPSBmaWxlUGF0aEN1c3RvbUdyYW1tYXJCTkZGaWxlUGF0aDsgIC8vL1xuXG4gICAgICAgICAgaWYgKGZpbGVDdXN0b21HcmFtbWFyQk5GRmlsZSkge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhbW1hckJORkZpbGUgPSBmaWxlOyAgLy8vXG5cbiAgICAgICAgICAgIGN1c3RvbUdyYW1tYXJCTkZGaWxlcy5wdXNoKGN1c3RvbUdyYW1tYXJCTkZGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY3VzdG9tR3JhbW1hckJORkZpbGVzO1xuICAgICAgICB9LCBbXSk7XG5cbiAgcmV0dXJuIGN1c3RvbUdyYW1tYXJCTkZGaWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbUdyYW1tYXJWb2NhYnVsYXJ5RmlsZXNGcm9tRmlsZXMoZmlsZXMpIHtcbiAgY29uc3QgY3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlcyA9IGZpbGVzLnJlZHVjZUZpbGUoKGN1c3RvbUdyYW1tYXJWb2NhYnVsYXJ5RmlsZXMsIGZpbGUpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxuICAgICAgICAgICAgICAgIGZpbGVQYXRoQ3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlUGF0aCA9IGlzRmlsZVBhdGhDdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVQYXRoKGZpbGVQYXRoKSxcbiAgICAgICAgICAgICAgICBmaWxlQ3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlID0gZmlsZVBhdGhDdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVQYXRoOyAgLy8vXG5cbiAgICAgICAgICBpZiAoZmlsZUN1c3RvbUdyYW1tYXJWb2NhYnVsYXJ5RmlsZSkge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlID0gZmlsZTsgIC8vL1xuXG4gICAgICAgICAgICBjdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVzLnB1c2goY3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlcztcbiAgICAgICAgfSwgW10pO1xuXG4gIHJldHVybiBjdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVzO1xufVxuIl0sIm5hbWVzIjpbImN1c3RvbUdyYW1tYXJCTkZGaWxlc0Zyb21GaWxlcyIsImN1c3RvbUdyYW1tYXJWb2NhYnVsYXJ5RmlsZXNGcm9tRmlsZXMiLCJmdXJ0bGVGaWxlc0Zyb21GaWxlcyIsIm1ldGFKU09ORmlsZUZyb21GaWxlcyIsIm5vbWluYWxGaWxlc0Zyb21GaWxlcyIsInJlYWRtZUZpbGVGcm9tRmlsZXMiLCJmaWxlcyIsInJlYWRtZUZpbGUiLCJzb21lRmlsZSIsImZpbGUiLCJmaWxlUGF0aCIsImdldFBhdGgiLCJmaWxlUGF0aFJlYWRtZUZpbGVQYXRoIiwiaXNGaWxlUGF0aFJlYWRtZUZpbGVQYXRoIiwiZnVydGxlRmlsZXMiLCJyZWR1Y2VGaWxlIiwiZmlsZVBhdGhGdXJ0bGVGaWxlUGF0aCIsImlzRmlsZVBhdGhGdXJ0bGVGaWxlUGF0aCIsImZpbGVGdXJ0bGVGaWxlIiwiZnVydGxlRmlsZSIsInB1c2giLCJub21pbmFsRmlsZXMiLCJmaWxlUGF0aE5vbWluYWxGaWxlUGF0aCIsImlzRmlsZVBhdGhOb21pbmFsRmlsZVBhdGgiLCJmaWxlTm9taW5hbEZpbGUiLCJub21pbmFsRmlsZSIsIm1ldGFKU09ORmlsZSIsImZpbGVQYXRoTWV0YUpTT05GaWxlUGF0aCIsImlzRmlsZVBhdGhNZXRhSlNPTkZpbGVQYXRoIiwiY3VzdG9tR3JhbW1hckJORkZpbGVzIiwiZmlsZVBhdGhDdXN0b21HcmFtbWFyQk5GRmlsZVBhdGgiLCJpc0ZpbGVQYXRoQ3VzdG9tR3JhbW1hckJORkZpbGVQYXRoIiwiZmlsZUN1c3RvbUdyYW1tYXJCTkZGaWxlIiwiY3VzdG9tR3JhbW1hckJORkZpbGUiLCJjdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVzIiwiZmlsZVBhdGhDdXN0b21HcmFtbWFyVm9jYWJ1bGFyeUZpbGVQYXRoIiwiaXNGaWxlUGF0aEN1c3RvbUdyYW1tYXJWb2NhYnVsYXJ5RmlsZVBhdGgiLCJmaWxlQ3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlIiwiY3VzdG9tR3JhbW1hclZvY2FidWxhcnlGaWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUErRWdCQTtlQUFBQTs7UUFrQkFDO2VBQUFBOztRQXZFQUM7ZUFBQUE7O1FBb0NBQztlQUFBQTs7UUFsQkFDO2VBQUFBOztRQW5DQUM7ZUFBQUE7Ozt3QkFGMEM7QUFFbkQsU0FBU0Esb0JBQW9CQyxLQUFLO0lBQ3ZDLElBQUlDLGFBQWE7SUFFakJELE1BQU1FLFFBQVEsQ0FBQyxTQUFDQztRQUNkLElBQU1DLFdBQVdELEtBQUtFLE9BQU8sSUFDdkJDLHlCQUF5QkMsSUFBQUEsa0NBQXdCLEVBQUNIO1FBRXhELElBQUlFLHdCQUF3QjtZQUMxQkwsYUFBYUUsTUFBTyxHQUFHO1lBRXZCLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNMLHFCQUFxQkksS0FBSztJQUN4QyxJQUFNUSxjQUFjUixNQUFNUyxVQUFVLENBQUMsU0FBQ0QsYUFBYUw7UUFDakQsSUFBTUMsV0FBV0QsS0FBS0UsT0FBTyxJQUN2QksseUJBQXlCQyxJQUFBQSxrQ0FBd0IsRUFBQ1AsV0FDbERRLGlCQUFpQkYsd0JBQXlCLEdBQUc7UUFFbkQsSUFBSUUsZ0JBQWdCO1lBQ2xCLElBQU1DLGFBQWFWLE1BQU8sR0FBRztZQUU3QkssWUFBWU0sSUFBSSxDQUFDRDtRQUNuQjtRQUVBLE9BQU9MO0lBQ1QsR0FBRyxFQUFFO0lBRUwsT0FBT0E7QUFDVDtBQUVPLFNBQVNWLHNCQUFzQkUsS0FBSztJQUN6QyxJQUFNZSxlQUFlZixNQUFNUyxVQUFVLENBQUMsU0FBQ00sY0FBY1o7UUFDbkQsSUFBTUMsV0FBV0QsS0FBS0UsT0FBTyxJQUMzQlcsMEJBQTBCQyxJQUFBQSxtQ0FBeUIsRUFBQ2IsV0FDcERjLGtCQUFrQkYseUJBQTBCLEdBQUc7UUFFakQsSUFBSUUsaUJBQWlCO1lBQ25CLElBQU1DLGNBQWNoQixNQUFPLEdBQUc7WUFFOUJZLGFBQWFELElBQUksQ0FBQ0s7UUFDcEI7UUFFQSxPQUFPSjtJQUNULEdBQUcsRUFBRTtJQUVMLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTbEIsc0JBQXNCRyxLQUFLO0lBQ3pDLElBQUlvQixlQUFlO0lBRW5CcEIsTUFBTUUsUUFBUSxDQUFDLFNBQUNDO1FBQ2QsSUFBTUMsV0FBV0QsS0FBS0UsT0FBTyxJQUN2QmdCLDJCQUEyQkMsSUFBQUEsb0NBQTBCLEVBQUNsQjtRQUU1RCxJQUFJaUIsMEJBQTBCO1lBQzVCRCxlQUFlakIsTUFBTyxHQUFHO1lBRXpCLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT2lCO0FBQ1Q7QUFFTyxTQUFTMUIsK0JBQStCTSxLQUFLO0lBQ2xELElBQU11Qix3QkFBd0J2QixNQUFNUyxVQUFVLENBQUMsU0FBQ2MsdUJBQXVCcEI7UUFDL0QsSUFBTUMsV0FBV0QsS0FBS0UsT0FBTyxJQUN2Qm1CLG1DQUFtQ0MsSUFBQUEsNENBQWtDLEVBQUNyQixXQUN0RXNCLDJCQUEyQkYsa0NBQW1DLEdBQUc7UUFFdkUsSUFBSUUsMEJBQTBCO1lBQzVCLElBQU1DLHVCQUF1QnhCLE1BQU8sR0FBRztZQUV2Q29CLHNCQUFzQlQsSUFBSSxDQUFDYTtRQUM3QjtRQUVBLE9BQU9KO0lBQ1QsR0FBRyxFQUFFO0lBRVgsT0FBT0E7QUFDVDtBQUVPLFNBQVM1QixzQ0FBc0NLLEtBQUs7SUFDekQsSUFBTTRCLCtCQUErQjVCLE1BQU1TLFVBQVUsQ0FBQyxTQUFDbUIsOEJBQThCekI7UUFDN0UsSUFBTUMsV0FBV0QsS0FBS0UsT0FBTyxJQUN2QndCLDBDQUEwQ0MsSUFBQUEsbURBQXlDLEVBQUMxQixXQUNwRjJCLGtDQUFrQ0YseUNBQTBDLEdBQUc7UUFFckYsSUFBSUUsaUNBQWlDO1lBQ25DLElBQU1DLDhCQUE4QjdCLE1BQU8sR0FBRztZQUU5Q3lCLDZCQUE2QmQsSUFBSSxDQUFDa0I7UUFDcEM7UUFFQSxPQUFPSjtJQUNULEdBQUcsRUFBRTtJQUVYLE9BQU9BO0FBQ1QifQ==
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get default () {
13
+ return _default;
14
+ },
15
+ get dependenciesFromDocumentNode () {
16
+ return dependenciesFromDocumentNode;
17
+ },
18
+ get dependencyNamesFromDocumentNode () {
19
+ return dependencyNamesFromDocumentNode;
20
+ },
21
+ get documentNodeFromMetaJSONFile () {
22
+ return documentNodeFromMetaJSONFile;
23
+ },
24
+ get isMetaJSONFileValid () {
25
+ return isMetaJSONFileValid;
26
+ },
27
+ get repositoryFromDocumentNode () {
28
+ return repositoryFromDocumentNode;
29
+ },
30
+ get updateMetaJSONFileVersion () {
31
+ return updateMetaJSONFileVersion;
32
+ },
33
+ get versionFromDocumentNode () {
34
+ return versionFromDocumentNode;
35
+ }
36
+ });
37
+ var _occamgrammars = require("occam-grammars");
38
+ var _version = /*#__PURE__*/ _interop_require_default(require("../version"));
39
+ var _dependency = /*#__PURE__*/ _interop_require_default(require("../dependency"));
40
+ var _dependencies = /*#__PURE__*/ _interop_require_default(require("../dependencies"));
41
+ var _shortenedVersion = /*#__PURE__*/ _interop_require_default(require("../shortenedVersion"));
42
+ var _constants = require("../constants");
43
+ var _content = require("../utilities/content");
44
+ var _query = require("../utilities/query");
45
+ var _validate = require("../utilities/validate");
46
+ var _propertyNames = require("../propertyNames");
47
+ function _interop_require_default(obj) {
48
+ return obj && obj.__esModule ? obj : {
49
+ default: obj
50
+ };
51
+ }
52
+ var jsonLexer = _occamgrammars.JSONLexer.fromNothing(), jsonParser = _occamgrammars.JSONParser.fromNothing();
53
+ var errorNodesQuery = (0, _query.nodesQuery)("/*/error"), propertyNodesQuery = (0, _query.nodesQuery)("/property/json/object/property"), documentPropertyNodesQuery = (0, _query.nodesQuery)("/document/json/object/property"), propertyStringLiteralTerminalNodeQuery = (0, _query.nodeQuery)("/property/@string-literal"), propertyJSONStringLiteralTerminalNodeQuery = (0, _query.nodeQuery)("/property/json/@string-literal!");
54
+ function isMetaJSONFileValid(metaJSONFile) {
55
+ var metaJSONFileValid = false;
56
+ var documentNode = documentNodeFromMetaJSONFile(metaJSONFile);
57
+ if (documentNode !== null) {
58
+ var errorNodes = errorNodesQuery(documentNode), errorNodesLength = errorNodes.length;
59
+ if (errorNodesLength === 0) {
60
+ var version = versionFromDocumentNode(documentNode), repository = repositoryFromDocumentNode(documentNode), dependencies = dependenciesFromDocumentNode(documentNode);
61
+ metaJSONFileValid = version !== null && repository !== null && dependencies !== null;
62
+ }
63
+ }
64
+ return metaJSONFileValid;
65
+ }
66
+ function updateMetaJSONFileVersion(metaJSONFile, version) {
67
+ var documentNode = documentNodeFromMetaJSONFile(metaJSONFile), repository = repositoryFromDocumentNode(documentNode);
68
+ var dependencies = dependenciesFromDocumentNode(documentNode);
69
+ var string = version.toString(), dependenciesJSON = dependencies.toJSON();
70
+ version = string; ///
71
+ dependencies = dependenciesJSON; ///
72
+ var metaJSON = {
73
+ version: version,
74
+ repository: repository,
75
+ dependencies: dependencies
76
+ }, metaJSONString = JSON.stringify(metaJSON, null, _constants.DOUBLE_SPACE), metaJSONFileContent = metaJSONString; ///
77
+ metaJSONFile.setContent(metaJSONFileContent);
78
+ }
79
+ function documentNodeFromMetaJSONFile(metaJSONFile) {
80
+ var documentNode = null;
81
+ if (metaJSONFile !== null) {
82
+ var content = metaJSONFile.getContent(), tokens = jsonLexer.tokenise(content), node = jsonParser.parse(tokens);
83
+ documentNode = node; ///
84
+ }
85
+ return documentNode;
86
+ }
87
+ function versionFromDocumentNode(documentNode) {
88
+ var version = null;
89
+ var documentPropertyNodes = documentPropertyNodesFromDocumentNode(documentNode);
90
+ documentPropertyNodes.some(function(documentPropertyNode) {
91
+ var propertyNode = documentPropertyNode, propertyName = propertyNameFromPropertyNode(propertyNode);
92
+ if (propertyName === _propertyNames.VERSION_PROPERTY_NAME) {
93
+ var stringPropertyValue = stringPropertyValueFromPropertyNode(propertyNode);
94
+ if (stringPropertyValue !== null) {
95
+ var string = stringPropertyValue, stringVersionString = (0, _validate.isStringVersionString)(string);
96
+ if (stringVersionString) {
97
+ version = _version.default.fromString(string);
98
+ }
99
+ return true;
100
+ }
101
+ }
102
+ });
103
+ return version;
104
+ }
105
+ function repositoryFromDocumentNode(documentNode) {
106
+ var repository = null;
107
+ var documentPropertyNodes = documentPropertyNodesFromDocumentNode(documentNode);
108
+ documentPropertyNodes.some(function(documentPropertyNode) {
109
+ var propertyNode = documentPropertyNode, propertyName = propertyNameFromPropertyNode(propertyNode);
110
+ if (propertyName === _propertyNames.REPOSITORY_PROPERTY_NAME) {
111
+ var stringPropertyValue = stringPropertyValueFromPropertyNode(propertyNode);
112
+ if (stringPropertyValue !== null) {
113
+ repository = stringPropertyValue; ///
114
+ return true;
115
+ }
116
+ }
117
+ });
118
+ return repository;
119
+ }
120
+ function dependenciesFromDocumentNode(documentNode) {
121
+ var dependencies = null;
122
+ var dependenciesPropertyNode = dependenciesPropertyNodeFromDocumentNode(documentNode);
123
+ if (dependenciesPropertyNode !== null) {
124
+ dependencies = _dependencies.default.fromNothing();
125
+ var propertyNode = dependenciesPropertyNode, propertyNodes = propertyNodesQuery(propertyNode);
126
+ propertyNodes.forEach(function(propertyNode) {
127
+ var stringPropertyValue = stringPropertyValueFromPropertyNode(propertyNode);
128
+ if (stringPropertyValue !== null) {
129
+ var string = stringPropertyValue, stringShortenedVersionString = (0, _validate.isStringShortenedVersionString)(string);
130
+ if (stringShortenedVersionString) {
131
+ var propertyName = propertyNameFromPropertyNode(propertyNode), name = propertyName, shortenedVersion = _shortenedVersion.default.fromString(string), dependency = _dependency.default.fromNameAndShortenedVersion(name, shortenedVersion);
132
+ dependencies.addDependency(dependency);
133
+ }
134
+ }
135
+ });
136
+ }
137
+ return dependencies;
138
+ }
139
+ function dependencyNamesFromDocumentNode(documentNode) {
140
+ var dependencyNames = null;
141
+ var dependenciesPropertyNode = dependenciesPropertyNodeFromDocumentNode(documentNode);
142
+ if (dependenciesPropertyNode !== null) {
143
+ dependencyNames = [];
144
+ var propertyNode = dependenciesPropertyNode, propertyNodes = propertyNodesQuery(propertyNode);
145
+ propertyNodes.forEach(function(propertyNode) {
146
+ var stringPropertyValue = stringPropertyValueFromPropertyNode(propertyNode);
147
+ if (stringPropertyValue !== null) {
148
+ var string = stringPropertyValue, stringShortenedVersionString = (0, _validate.isStringShortenedVersionString)(string);
149
+ if (stringShortenedVersionString) {
150
+ var propertyName = propertyNameFromPropertyNode(propertyNode), dependencyName = propertyName; ///
151
+ dependencyNames.push(dependencyName);
152
+ }
153
+ }
154
+ });
155
+ }
156
+ return dependencyNames;
157
+ }
158
+ var _default = {
159
+ isMetaJSONFileValid: isMetaJSONFileValid,
160
+ updateMetaJSONFileVersion: updateMetaJSONFileVersion,
161
+ documentNodeFromMetaJSONFile: documentNodeFromMetaJSONFile,
162
+ versionFromDocumentNode: versionFromDocumentNode,
163
+ repositoryFromDocumentNode: repositoryFromDocumentNode,
164
+ dependenciesFromDocumentNode: dependenciesFromDocumentNode,
165
+ dependencyNamesFromDocumentNode: dependencyNamesFromDocumentNode
166
+ };
167
+ function propertyNameFromPropertyNode(propertyNode) {
168
+ var propertyStringLiteralTerminalNode = propertyStringLiteralTerminalNodeQuery(propertyNode), propertyStringLiteralTerminalNodeContent = propertyStringLiteralTerminalNode.getContent(), propertyName = (0, _content.trimDoubleQuotes)(propertyStringLiteralTerminalNodeContent); ///
169
+ return propertyName;
170
+ }
171
+ function stringPropertyValueFromPropertyNode(propertyNode) {
172
+ var stringPropertyValue = null;
173
+ var propertyJSONStringLiteralTerminalNode = propertyJSONStringLiteralTerminalNodeQuery(propertyNode);
174
+ if (propertyJSONStringLiteralTerminalNode !== null) {
175
+ var propertyJSONStringLiteralTerminalNodeContent = propertyJSONStringLiteralTerminalNode.getContent();
176
+ stringPropertyValue = (0, _content.trimDoubleQuotes)(propertyJSONStringLiteralTerminalNodeContent); ///
177
+ }
178
+ return stringPropertyValue;
179
+ }
180
+ function documentPropertyNodesFromDocumentNode(documentNode) {
181
+ var documentPropertyNodes = documentPropertyNodesQuery(documentNode);
182
+ return documentPropertyNodes;
183
+ }
184
+ function dependenciesPropertyNodeFromDocumentNode(documentNode) {
185
+ var dependenciesPropertyNode = null;
186
+ var documentPropertyNodes = documentPropertyNodesFromDocumentNode(documentNode);
187
+ documentPropertyNodes.some(function(documentPropertyNode) {
188
+ var propertyNode = documentPropertyNode, propertyName = propertyNameFromPropertyNode(propertyNode);
189
+ if (propertyName === _propertyNames.DEPENDENCIES_PROPERTY_NAME) {
190
+ dependenciesPropertyNode = propertyNode; ///
191
+ return true;
192
+ }
193
+ });
194
+ return dependenciesPropertyNode;
195
+ }
196
+
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbWV0YUpTT04uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEpTT05MZXhlciwgSlNPTlBhcnNlciB9IGZyb20gXCJvY2NhbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgVmVyc2lvbiBmcm9tIFwiLi4vdmVyc2lvblwiO1xuaW1wb3J0IERlcGVuZGVuY3kgZnJvbSBcIi4uL2RlcGVuZGVuY3lcIjtcbmltcG9ydCBEZXBlbmRlbmNpZXMgZnJvbSBcIi4uL2RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IFNob3J0ZW5lZFZlcnNpb24gZnJvbSBcIi4uL3Nob3J0ZW5lZFZlcnNpb25cIjtcblxuaW1wb3J0IHsgRE9VQkxFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdHJpbURvdWJsZVF1b3RlcyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGVudFwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgaXNTdHJpbmdWZXJzaW9uU3RyaW5nLCBpc1N0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBWRVJTSU9OX1BST1BFUlRZX05BTUUsIFJFUE9TSVRPUllfUFJPUEVSVFlfTkFNRSwgREVQRU5ERU5DSUVTX1BST1BFUlRZX05BTUUgfSBmcm9tIFwiLi4vcHJvcGVydHlOYW1lc1wiO1xuXG5jb25zdCBqc29uTGV4ZXIgPSBKU09OTGV4ZXIuZnJvbU5vdGhpbmcoKSxcbiAgICAgIGpzb25QYXJzZXIgPSBKU09OUGFyc2VyLmZyb21Ob3RoaW5nKCk7XG5cbmNvbnN0IGVycm9yTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvKi9lcnJvclwiKSxcbiAgICAgIHByb3BlcnR5Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvcHJvcGVydHkvanNvbi9vYmplY3QvcHJvcGVydHlcIiksXG4gICAgICBkb2N1bWVudFByb3BlcnR5Tm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvZG9jdW1lbnQvanNvbi9vYmplY3QvcHJvcGVydHlcIiksXG4gICAgICBwcm9wZXJ0eVN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9wcm9wZXJ0eS9Ac3RyaW5nLWxpdGVyYWxcIiksXG4gICAgICBwcm9wZXJ0eUpTT05TdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcHJvcGVydHkvanNvbi9Ac3RyaW5nLWxpdGVyYWwhXCIpO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNZXRhSlNPTkZpbGVWYWxpZChtZXRhSlNPTkZpbGUpIHtcbiAgbGV0IG1ldGFKU09ORmlsZVZhbGlkID0gZmFsc2U7XG5cbiAgY29uc3QgZG9jdW1lbnROb2RlID0gZG9jdW1lbnROb2RlRnJvbU1ldGFKU09ORmlsZShtZXRhSlNPTkZpbGUpO1xuXG4gIGlmIChkb2N1bWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBlcnJvck5vZGVzID0gZXJyb3JOb2Rlc1F1ZXJ5KGRvY3VtZW50Tm9kZSksXG4gICAgICAgICAgZXJyb3JOb2Rlc0xlbmd0aCA9IGVycm9yTm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKGVycm9yTm9kZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpLFxuICAgICAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSksXG4gICAgICAgICAgICBkZXBlbmRlbmNpZXMgPSBkZXBlbmRlbmNpZXNGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSk7XG5cbiAgICAgIG1ldGFKU09ORmlsZVZhbGlkID0gKCh2ZXJzaW9uICE9PSBudWxsKSAmJiAocmVwb3NpdG9yeSAhPT0gbnVsbCkgJiYgKGRlcGVuZGVuY2llcyAhPT0gbnVsbCkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhSlNPTkZpbGVWYWxpZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZU1ldGFKU09ORmlsZVZlcnNpb24obWV0YUpTT05GaWxlLCB2ZXJzaW9uKSB7XG4gIGNvbnN0IGRvY3VtZW50Tm9kZSA9IGRvY3VtZW50Tm9kZUZyb21NZXRhSlNPTkZpbGUobWV0YUpTT05GaWxlKSxcbiAgICAgICAgcmVwb3NpdG9yeSA9IHJlcG9zaXRvcnlGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSk7XG5cbiAgbGV0IGRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llc0Zyb21Eb2N1bWVudE5vZGUoZG9jdW1lbnROb2RlKTtcblxuICBjb25zdCBzdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgIGRlcGVuZGVuY2llc0pTT04gPSBkZXBlbmRlbmNpZXMudG9KU09OKCk7XG5cbiAgdmVyc2lvbiA9IHN0cmluZzsgIC8vL1xuXG4gIGRlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llc0pTT047ICAvLy9cblxuICBjb25zdCBtZXRhSlNPTiA9IHtcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIHJlcG9zaXRvcnksXG4gICAgICAgICAgZGVwZW5kZW5jaWVzXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGFKU09OU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkobWV0YUpTT04sIG51bGwsIERPVUJMRV9TUEFDRSksXG4gICAgICAgIG1ldGFKU09ORmlsZUNvbnRlbnQgPSBtZXRhSlNPTlN0cmluZzsgLy8vXG5cbiAgbWV0YUpTT05GaWxlLnNldENvbnRlbnQobWV0YUpTT05GaWxlQ29udGVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudE5vZGVGcm9tTWV0YUpTT05GaWxlKG1ldGFKU09ORmlsZSkge1xuICBsZXQgZG9jdW1lbnROb2RlID0gbnVsbDtcblxuICBpZiAobWV0YUpTT05GaWxlICE9PSBudWxsKSB7XG4gICAgY29uc3QgY29udGVudCA9IG1ldGFKU09ORmlsZS5nZXRDb250ZW50KCksXG4gICAgICAgICAgdG9rZW5zID0ganNvbkxleGVyLnRva2VuaXNlKGNvbnRlbnQpLFxuICAgICAgICAgIG5vZGUgPSBqc29uUGFyc2VyLnBhcnNlKHRva2Vucyk7XG5cbiAgICBkb2N1bWVudE5vZGUgPSBub2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gZG9jdW1lbnROb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyc2lvbkZyb21Eb2N1bWVudE5vZGUoZG9jdW1lbnROb2RlKSB7XG4gIGxldCB2ZXJzaW9uID0gbnVsbDtcblxuICBjb25zdCBkb2N1bWVudFByb3BlcnR5Tm9kZXMgPSBkb2N1bWVudFByb3BlcnR5Tm9kZXNGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSk7XG5cbiAgZG9jdW1lbnRQcm9wZXJ0eU5vZGVzLnNvbWUoKGRvY3VtZW50UHJvcGVydHlOb2RlKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlOb2RlID0gZG9jdW1lbnRQcm9wZXJ0eU5vZGUsICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWVGcm9tUHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSk7XG5cbiAgICBpZiAocHJvcGVydHlOYW1lID09PSBWRVJTSU9OX1BST1BFUlRZX05BTUUpIHtcbiAgICAgIGNvbnN0IHN0cmluZ1Byb3BlcnR5VmFsdWUgPSBzdHJpbmdQcm9wZXJ0eVZhbHVlRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUpO1xuXG4gICAgICBpZiAoc3RyaW5nUHJvcGVydHlWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdQcm9wZXJ0eVZhbHVlLCAvLy9cbiAgICAgICAgICAgICAgc3RyaW5nVmVyc2lvblN0cmluZyA9IGlzU3RyaW5nVmVyc2lvblN0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIGlmIChzdHJpbmdWZXJzaW9uU3RyaW5nKSB7XG4gICAgICAgICAgdmVyc2lvbiA9IFZlcnNpb24uZnJvbVN0cmluZyhzdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdmVyc2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcG9zaXRvcnlGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSkge1xuICBsZXQgcmVwb3NpdG9yeSA9IG51bGw7XG5cbiAgY29uc3QgZG9jdW1lbnRQcm9wZXJ0eU5vZGVzID0gZG9jdW1lbnRQcm9wZXJ0eU5vZGVzRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpO1xuXG4gIGRvY3VtZW50UHJvcGVydHlOb2Rlcy5zb21lKChkb2N1bWVudFByb3BlcnR5Tm9kZSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IGRvY3VtZW50UHJvcGVydHlOb2RlLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlOYW1lID0gcHJvcGVydHlOYW1lRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUpO1xuXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gUkVQT1NJVE9SWV9QUk9QRVJUWV9OQU1FKSB7XG4gICAgICBjb25zdCBzdHJpbmdQcm9wZXJ0eVZhbHVlID0gc3RyaW5nUHJvcGVydHlWYWx1ZUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlKTtcblxuICAgICAgaWYgKHN0cmluZ1Byb3BlcnR5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmVwb3NpdG9yeSA9IHN0cmluZ1Byb3BlcnR5VmFsdWU7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXBvc2l0b3J5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVwZW5kZW5jaWVzRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpIHtcbiAgbGV0IGRlcGVuZGVuY2llcyA9IG51bGw7XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlID0gZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpO1xuXG4gIGlmIChkZXBlbmRlbmNpZXNQcm9wZXJ0eU5vZGUgIT09IG51bGwpIHtcbiAgICBkZXBlbmRlbmNpZXMgPSBEZXBlbmRlbmNpZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IGRlcGVuZGVuY2llc1Byb3BlcnR5Tm9kZSwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5Tm9kZXMgPSBwcm9wZXJ0eU5vZGVzUXVlcnkocHJvcGVydHlOb2RlKTtcblxuICAgIHByb3BlcnR5Tm9kZXMuZm9yRWFjaCgocHJvcGVydHlOb2RlKSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmdQcm9wZXJ0eVZhbHVlID0gc3RyaW5nUHJvcGVydHlWYWx1ZUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlKTtcblxuICAgICAgaWYgKHN0cmluZ1Byb3BlcnR5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nUHJvcGVydHlWYWx1ZSwgLy8vXG4gICAgICAgICAgICAgIHN0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmcgPSBpc1N0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICBpZiAoc3RyaW5nU2hvcnRlbmVkVmVyc2lvblN0cmluZykge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlKSxcbiAgICAgICAgICAgICAgICBuYW1lID0gcHJvcGVydHlOYW1lLCAgLy8vXG4gICAgICAgICAgICAgICAgc2hvcnRlbmVkVmVyc2lvbiA9IFNob3J0ZW5lZFZlcnNpb24uZnJvbVN0cmluZyhzdHJpbmcpLFxuICAgICAgICAgICAgICAgIGRlcGVuZGVuY3kgPSBEZXBlbmRlbmN5LmZyb21OYW1lQW5kU2hvcnRlbmVkVmVyc2lvbihuYW1lLCBzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgICAgICAgIGRlcGVuZGVuY2llcy5hZGREZXBlbmRlbmN5KGRlcGVuZGVuY3kpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGVwZW5kZW5jaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVwZW5kZW5jeU5hbWVzRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpIHtcbiAgbGV0IGRlcGVuZGVuY3lOYW1lcyA9IG51bGw7XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlID0gZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpO1xuXG4gIGlmIChkZXBlbmRlbmNpZXNQcm9wZXJ0eU5vZGUgIT09IG51bGwpIHtcbiAgICBkZXBlbmRlbmN5TmFtZXMgPSBbXTtcblxuICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IGRlcGVuZGVuY2llc1Byb3BlcnR5Tm9kZSwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5Tm9kZXMgPSBwcm9wZXJ0eU5vZGVzUXVlcnkocHJvcGVydHlOb2RlKTtcblxuICAgIHByb3BlcnR5Tm9kZXMuZm9yRWFjaCgocHJvcGVydHlOb2RlKSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmdQcm9wZXJ0eVZhbHVlID0gc3RyaW5nUHJvcGVydHlWYWx1ZUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlKTtcblxuICAgICAgaWYgKHN0cmluZ1Byb3BlcnR5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gc3RyaW5nUHJvcGVydHlWYWx1ZSwgLy8vXG4gICAgICAgICAgICAgIHN0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmcgPSBpc1N0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICBpZiAoc3RyaW5nU2hvcnRlbmVkVmVyc2lvblN0cmluZykge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZUZyb21Qcm9wZXJ0eU5vZGUocHJvcGVydHlOb2RlKSxcbiAgICAgICAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IHByb3BlcnR5TmFtZTsgIC8vL1xuXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzLnB1c2goZGVwZW5kZW5jeU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGVwZW5kZW5jeU5hbWVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGlzTWV0YUpTT05GaWxlVmFsaWQsXG4gIHVwZGF0ZU1ldGFKU09ORmlsZVZlcnNpb24sXG4gIGRvY3VtZW50Tm9kZUZyb21NZXRhSlNPTkZpbGUsXG4gIHZlcnNpb25Gcm9tRG9jdW1lbnROb2RlLFxuICByZXBvc2l0b3J5RnJvbURvY3VtZW50Tm9kZSxcbiAgZGVwZW5kZW5jaWVzRnJvbURvY3VtZW50Tm9kZSxcbiAgZGVwZW5kZW5jeU5hbWVzRnJvbURvY3VtZW50Tm9kZVxufTtcblxuZnVuY3Rpb24gcHJvcGVydHlOYW1lRnJvbVByb3BlcnR5Tm9kZShwcm9wZXJ0eU5vZGUpIHtcbiAgY29uc3QgcHJvcGVydHlTdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlID0gcHJvcGVydHlTdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlUXVlcnkocHJvcGVydHlOb2RlKSxcbiAgICAgICAgcHJvcGVydHlTdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlQ29udGVudCA9IHByb3BlcnR5U3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZS5nZXRDb250ZW50KCksXG4gICAgICAgIHByb3BlcnR5TmFtZSA9IHRyaW1Eb3VibGVRdW90ZXMocHJvcGVydHlTdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlQ29udGVudCk7IC8vL1xuXG4gIHJldHVybiBwcm9wZXJ0eU5hbWU7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ1Byb3BlcnR5VmFsdWVGcm9tUHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSkge1xuICBsZXQgc3RyaW5nUHJvcGVydHlWYWx1ZSA9IG51bGw7XG5cbiAgY29uc3QgcHJvcGVydHlKU09OU3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSA9IHByb3BlcnR5SlNPTlN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVRdWVyeShwcm9wZXJ0eU5vZGUpO1xuXG4gIGlmIChwcm9wZXJ0eUpTT05TdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OU3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZUNvbnRlbnQgPSBwcm9wZXJ0eUpTT05TdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlLmdldENvbnRlbnQoKTtcblxuICAgIHN0cmluZ1Byb3BlcnR5VmFsdWUgPSB0cmltRG91YmxlUXVvdGVzKHByb3BlcnR5SlNPTlN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVDb250ZW50KTsgLy8vXG4gIH1cblxuICByZXR1cm4gc3RyaW5nUHJvcGVydHlWYWx1ZTtcbn1cblxuZnVuY3Rpb24gZG9jdW1lbnRQcm9wZXJ0eU5vZGVzRnJvbURvY3VtZW50Tm9kZShkb2N1bWVudE5vZGUpIHtcbiAgY29uc3QgZG9jdW1lbnRQcm9wZXJ0eU5vZGVzID0gZG9jdW1lbnRQcm9wZXJ0eU5vZGVzUXVlcnkoZG9jdW1lbnROb2RlKTtcblxuICByZXR1cm4gZG9jdW1lbnRQcm9wZXJ0eU5vZGVzO1xufVxuXG5mdW5jdGlvbiBkZXBlbmRlbmNpZXNQcm9wZXJ0eU5vZGVGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSkge1xuICBsZXQgZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlID0gbnVsbDtcblxuICBjb25zdCBkb2N1bWVudFByb3BlcnR5Tm9kZXMgPSBkb2N1bWVudFByb3BlcnR5Tm9kZXNGcm9tRG9jdW1lbnROb2RlKGRvY3VtZW50Tm9kZSk7XG5cbiAgZG9jdW1lbnRQcm9wZXJ0eU5vZGVzLnNvbWUoKGRvY3VtZW50UHJvcGVydHlOb2RlKSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlOb2RlID0gZG9jdW1lbnRQcm9wZXJ0eU5vZGUsICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWVGcm9tUHJvcGVydHlOb2RlKHByb3BlcnR5Tm9kZSk7XG5cbiAgICBpZiAocHJvcGVydHlOYW1lID09PSBERVBFTkRFTkNJRVNfUFJPUEVSVFlfTkFNRSkge1xuICAgICAgZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlID0gcHJvcGVydHlOb2RlOyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY2llc1Byb3BlcnR5Tm9kZTtcbn1cbiJdLCJuYW1lcyI6WyJkZXBlbmRlbmNpZXNGcm9tRG9jdW1lbnROb2RlIiwiZGVwZW5kZW5jeU5hbWVzRnJvbURvY3VtZW50Tm9kZSIsImRvY3VtZW50Tm9kZUZyb21NZXRhSlNPTkZpbGUiLCJpc01ldGFKU09ORmlsZVZhbGlkIiwicmVwb3NpdG9yeUZyb21Eb2N1bWVudE5vZGUiLCJ1cGRhdGVNZXRhSlNPTkZpbGVWZXJzaW9uIiwidmVyc2lvbkZyb21Eb2N1bWVudE5vZGUiLCJqc29uTGV4ZXIiLCJKU09OTGV4ZXIiLCJmcm9tTm90aGluZyIsImpzb25QYXJzZXIiLCJKU09OUGFyc2VyIiwiZXJyb3JOb2Rlc1F1ZXJ5Iiwibm9kZXNRdWVyeSIsInByb3BlcnR5Tm9kZXNRdWVyeSIsImRvY3VtZW50UHJvcGVydHlOb2Rlc1F1ZXJ5IiwicHJvcGVydHlTdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJwcm9wZXJ0eUpTT05TdHJpbmdMaXRlcmFsVGVybWluYWxOb2RlUXVlcnkiLCJtZXRhSlNPTkZpbGUiLCJtZXRhSlNPTkZpbGVWYWxpZCIsImRvY3VtZW50Tm9kZSIsImVycm9yTm9kZXMiLCJlcnJvck5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwidmVyc2lvbiIsInJlcG9zaXRvcnkiLCJkZXBlbmRlbmNpZXMiLCJzdHJpbmciLCJ0b1N0cmluZyIsImRlcGVuZGVuY2llc0pTT04iLCJ0b0pTT04iLCJtZXRhSlNPTiIsIm1ldGFKU09OU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsIkRPVUJMRV9TUEFDRSIsIm1ldGFKU09ORmlsZUNvbnRlbnQiLCJzZXRDb250ZW50IiwiY29udGVudCIsImdldENvbnRlbnQiLCJ0b2tlbnMiLCJ0b2tlbmlzZSIsIm5vZGUiLCJwYXJzZSIsImRvY3VtZW50UHJvcGVydHlOb2RlcyIsImRvY3VtZW50UHJvcGVydHlOb2Rlc0Zyb21Eb2N1bWVudE5vZGUiLCJzb21lIiwiZG9jdW1lbnRQcm9wZXJ0eU5vZGUiLCJwcm9wZXJ0eU5vZGUiLCJwcm9wZXJ0eU5hbWUiLCJwcm9wZXJ0eU5hbWVGcm9tUHJvcGVydHlOb2RlIiwiVkVSU0lPTl9QUk9QRVJUWV9OQU1FIiwic3RyaW5nUHJvcGVydHlWYWx1ZSIsInN0cmluZ1Byb3BlcnR5VmFsdWVGcm9tUHJvcGVydHlOb2RlIiwic3RyaW5nVmVyc2lvblN0cmluZyIsImlzU3RyaW5nVmVyc2lvblN0cmluZyIsIlZlcnNpb24iLCJmcm9tU3RyaW5nIiwiUkVQT1NJVE9SWV9QUk9QRVJUWV9OQU1FIiwiZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlIiwiZGVwZW5kZW5jaWVzUHJvcGVydHlOb2RlRnJvbURvY3VtZW50Tm9kZSIsIkRlcGVuZGVuY2llcyIsInByb3BlcnR5Tm9kZXMiLCJmb3JFYWNoIiwic3RyaW5nU2hvcnRlbmVkVmVyc2lvblN0cmluZyIsImlzU3RyaW5nU2hvcnRlbmVkVmVyc2lvblN0cmluZyIsIm5hbWUiLCJzaG9ydGVuZWRWZXJzaW9uIiwiU2hvcnRlbmVkVmVyc2lvbiIsImRlcGVuZGVuY3kiLCJEZXBlbmRlbmN5IiwiZnJvbU5hbWVBbmRTaG9ydGVuZWRWZXJzaW9uIiwiYWRkRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lOYW1lcyIsImRlcGVuZGVuY3lOYW1lIiwicHVzaCIsInByb3BlcnR5U3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSIsInByb3BlcnR5U3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZUNvbnRlbnQiLCJ0cmltRG91YmxlUXVvdGVzIiwicHJvcGVydHlKU09OU3RyaW5nTGl0ZXJhbFRlcm1pbmFsTm9kZSIsInByb3BlcnR5SlNPTlN0cmluZ0xpdGVyYWxUZXJtaW5hbE5vZGVDb250ZW50IiwiREVQRU5ERU5DSUVTX1BST1BFUlRZX05BTUUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNNQTtlQUFBOztRQWhFZ0JBO2VBQUFBOztRQWlDQUM7ZUFBQUE7O1FBbEdBQztlQUFBQTs7UUE3Q0FDO2VBQUFBOztRQXVGQUM7ZUFBQUE7O1FBbEVBQztlQUFBQTs7UUFzQ0FDO2VBQUFBOzs7NkJBakZzQjs4REFFbEI7aUVBQ0c7bUVBQ0U7dUVBQ0k7eUJBRUE7dUJBQ0k7cUJBQ0s7d0JBQ2dDOzZCQUNzQjs7Ozs7O0FBRTVGLElBQU1DLFlBQVlDLHdCQUFTLENBQUNDLFdBQVcsSUFDakNDLGFBQWFDLHlCQUFVLENBQUNGLFdBQVc7QUFFekMsSUFBTUcsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLGFBQzdCQyxxQkFBcUJELElBQUFBLGlCQUFVLEVBQUMsbUNBQ2hDRSw2QkFBNkJGLElBQUFBLGlCQUFVLEVBQUMsbUNBQ3hDRyx5Q0FBeUNDLElBQUFBLGdCQUFTLEVBQUMsOEJBQ25EQyw2Q0FBNkNELElBQUFBLGdCQUFTLEVBQUM7QUFFdEQsU0FBU2Qsb0JBQW9CZ0IsWUFBWTtJQUM5QyxJQUFJQyxvQkFBb0I7SUFFeEIsSUFBTUMsZUFBZW5CLDZCQUE2QmlCO0lBRWxELElBQUlFLGlCQUFpQixNQUFNO1FBQ3pCLElBQU1DLGFBQWFWLGdCQUFnQlMsZUFDN0JFLG1CQUFtQkQsV0FBV0UsTUFBTTtRQUUxQyxJQUFJRCxxQkFBcUIsR0FBRztZQUMxQixJQUFNRSxVQUFVbkIsd0JBQXdCZSxlQUNsQ0ssYUFBYXRC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
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "fileNameFromFilePath", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return fileNameFromFilePath;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ var bottommostNameFromPath = _necessary.pathUtilities.bottommostNameFromPath;
13
+ function fileNameFromFilePath(filePath) {
14
+ var path = filePath, bottommostName = bottommostNameFromPath(path), fileName = bottommostName; //
15
+ return fileName;
16
+ }
17
+
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbmFtZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgcGF0aFV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBib3R0b21tb3N0TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gZmlsZU5hbWVGcm9tRmlsZVBhdGgoZmlsZVBhdGgpIHtcbiAgY29uc3QgcGF0aCA9IGZpbGVQYXRoLCAgLy8vXG4gICAgICAgIGJvdHRvbW1vc3ROYW1lID0gYm90dG9tbW9zdE5hbWVGcm9tUGF0aChwYXRoKSxcbiAgICAgICAgZmlsZU5hbWUgPSBib3R0b21tb3N0TmFtZTsgIC8vXG5cbiAgcmV0dXJuIGZpbGVOYW1lO1xufVxuIl0sIm5hbWVzIjpbImZpbGVOYW1lRnJvbUZpbGVQYXRoIiwiYm90dG9tbW9zdE5hbWVGcm9tUGF0aCIsInBhdGhVdGlsaXRpZXMiLCJmaWxlUGF0aCIsInBhdGgiLCJib3R0b21tb3N0TmFtZSIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNZ0JBOzs7ZUFBQUE7Ozt5QkFKYztBQUU5QixJQUFNLEFBQUVDLHlCQUEyQkMsd0JBQWEsQ0FBeENEO0FBRUQsU0FBU0QscUJBQXFCRyxRQUFRO0lBQzNDLElBQU1DLE9BQU9ELFVBQ1BFLGlCQUFpQkosdUJBQXVCRyxPQUN4Q0UsV0FBV0QsZ0JBQWlCLEVBQUU7SUFFcEMsT0FBT0M7QUFDVCJ9
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get nodeQuery () {
13
+ return nodeQuery;
14
+ },
15
+ get nodesQuery () {
16
+ return nodesQuery;
17
+ }
18
+ });
19
+ var _occamquery = require("occam-query");
20
+ function nodeQuery(expressionString) {
21
+ var query = _occamquery.Query.fromExpressionString(expressionString);
22
+ return function(node) {
23
+ var nodes = query.execute(node);
24
+ node = nodes.shift() || null; ///
25
+ return node;
26
+ };
27
+ }
28
+ function nodesQuery(expressionString) {
29
+ var query = _occamquery.Query.fromExpressionString(expressionString);
30
+ return function(node) {
31
+ var nodes = query.execute(node);
32
+ return nodes;
33
+ };
34
+ }
35
+
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBub2RlUXVlcnkoZXhwcmVzc2lvblN0cmluZykge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gICAgbm9kZSA9IG5vZGVzLnNoaWZ0KCkgfHwgbnVsbDsgLy8vXG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVzUXVlcnkoZXhwcmVzc2lvblN0cmluZykge1xuICBjb25zdCBxdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uU3RyaW5nKGV4cHJlc3Npb25TdHJpbmcpO1xuXG4gIHJldHVybiBmdW5jdGlvbihub2RlKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbIm5vZGVRdWVyeSIsIm5vZGVzUXVlcnkiLCJleHByZXNzaW9uU3RyaW5nIiwicXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uU3RyaW5nIiwibm9kZSIsIm5vZGVzIiwiZXhlY3V0ZSIsInNoaWZ0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFJZ0JBO2VBQUFBOztRQVlBQztlQUFBQTs7OzBCQWRNO0FBRWYsU0FBU0QsVUFBVUUsZ0JBQWdCO0lBQ3hDLElBQU1DLFFBQVFDLGlCQUFLLENBQUNDLG9CQUFvQixDQUFDSDtJQUV6QyxPQUFPLFNBQVNJLElBQUk7UUFDbEIsSUFBTUMsUUFBUUosTUFBTUssT0FBTyxDQUFDRjtRQUU1QkEsT0FBT0MsTUFBTUUsS0FBSyxNQUFNLE1BQU0sR0FBRztRQUVqQyxPQUFPSDtJQUNUO0FBQ0Y7QUFFTyxTQUFTTCxXQUFXQyxnQkFBZ0I7SUFDekMsSUFBTUMsUUFBUUMsaUJBQUssQ0FBQ0Msb0JBQW9CLENBQUNIO0lBRXpDLE9BQU8sU0FBU0ksSUFBSTtRQUNsQixJQUFNQyxRQUFRSixNQUFNSyxPQUFPLENBQUNGO1FBRTVCLE9BQU9DO0lBQ1Q7QUFDRiJ9
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get isStringShortenedVersionString () {
13
+ return isStringShortenedVersionString;
14
+ },
15
+ get isStringVersionString () {
16
+ return isStringVersionString;
17
+ }
18
+ });
19
+ function isStringVersionString(string) {
20
+ return /(?:0|([1-9]\d*))\.(?:0|([1-9]\d*))\.(?:0|([1-9]\d*))/.test(string);
21
+ }
22
+ function isStringShortenedVersionString(string) {
23
+ return /(?:0|([1-9]\d*))\.(?:0|([1-9]\d*))/.test(string);
24
+ }
25
+
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1ZlcnNpb25TdHJpbmcoc3RyaW5nKSB7IHJldHVybiAvKD86MHwoWzEtOV1cXGQqKSlcXC4oPzowfChbMS05XVxcZCopKVxcLig/OjB8KFsxLTldXFxkKikpLy50ZXN0KHN0cmluZyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nU2hvcnRlbmVkVmVyc2lvblN0cmluZyhzdHJpbmcpIHsgcmV0dXJuIC8oPzowfChbMS05XVxcZCopKVxcLig/OjB8KFsxLTldXFxkKikpLy50ZXN0KHN0cmluZyk7IH1cbiJdLCJuYW1lcyI6WyJpc1N0cmluZ1Nob3J0ZW5lZFZlcnNpb25TdHJpbmciLCJpc1N0cmluZ1ZlcnNpb25TdHJpbmciLCJzdHJpbmciLCJ0ZXN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFJZ0JBO2VBQUFBOztRQUZBQztlQUFBQTs7O0FBQVQsU0FBU0Esc0JBQXNCQyxNQUFNO0lBQUksT0FBTyx1REFBdURDLElBQUksQ0FBQ0Q7QUFBUztBQUVySCxTQUFTRiwrQkFBK0JFLE1BQU07SUFBSSxPQUFPLHFDQUFxQ0MsSUFBSSxDQUFDRDtBQUFTIn0=
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get majorNumberFromNumber () {
13
+ return majorNumberFromNumber;
14
+ },
15
+ get majorNumberFromString () {
16
+ return majorNumberFromString;
17
+ },
18
+ get minorNumberFromNumber () {
19
+ return minorNumberFromNumber;
20
+ },
21
+ get minorNumberFromString () {
22
+ return minorNumberFromString;
23
+ },
24
+ get patchNumberFromNumber () {
25
+ return patchNumberFromNumber;
26
+ },
27
+ get patchNumberFromString () {
28
+ return patchNumberFromString;
29
+ }
30
+ });
31
+ var _necessary = require("necessary");
32
+ var _multiplers = require("../multiplers");
33
+ var second = _necessary.arrayUtilities.second;
34
+ function majorNumberFromNumber(number) {
35
+ var majorNumber = number !== null ? Math.floor(number / _multiplers.MAJOR_NUMBER_MULTIPLIER) : 0; ///
36
+ return majorNumber;
37
+ }
38
+ function minorNumberFromNumber(number) {
39
+ var minorNumber = number !== null ? Math.floor(number % _multiplers.MAJOR_NUMBER_MULTIPLIER / _multiplers.MINOR_NUMBER_MULTIPLIER) : 0; ///
40
+ return minorNumber;
41
+ }
42
+ function patchNumberFromNumber(number) {
43
+ var patchNumber = number !== null ? Math.floor(number % _multiplers.MINOR_NUMBER_MULTIPLIER / _multiplers.PATCH_NUMBER_MULTIPLIER) : 0; ///
44
+ return patchNumber;
45
+ }
46
+ function majorNumberFromString(string) {
47
+ var majorNumber = 0;
48
+ if (string) {
49
+ var matches = string.match(/^(\d+)/), secondMatch = second(matches);
50
+ majorNumber = Number(secondMatch); ///
51
+ }
52
+ return majorNumber;
53
+ }
54
+ function minorNumberFromString(string) {
55
+ var minorNumber = 0;
56
+ if (string) {
57
+ var matches = string.match(/^\d+\.(\d+)/), secondMatch = second(matches);
58
+ minorNumber = Number(secondMatch); ///
59
+ }
60
+ return minorNumber;
61
+ }
62
+ function patchNumberFromString(string) {
63
+ var patchNumber = 0;
64
+ if (string) {
65
+ var matches = string.match(/^\d+\.\d+\.(\d+)/), secondMatch = second(matches);
66
+ patchNumber = Number(secondMatch); ///
67
+ }
68
+ return patchNumber;
69
+ }
70
+
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IE1BSk9SX05VTUJFUl9NVUxUSVBMSUVSLCBNSU5PUl9OVU1CRVJfTVVMVElQTElFUiwgUEFUQ0hfTlVNQkVSX01VTFRJUExJRVIgfSBmcm9tIFwiLi4vbXVsdGlwbGVyc1wiO1xuXG5jb25zdCB7IHNlY29uZCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWpvck51bWJlckZyb21OdW1iZXIobnVtYmVyKSB7XG4gIGNvbnN0IG1ham9yTnVtYmVyID0gKG51bWJlciAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihudW1iZXIgLyBNQUpPUl9OVU1CRVJfTVVMVElQTElFUikgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAwOyAgLy8vXG5cbiAgcmV0dXJuIG1ham9yTnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWlub3JOdW1iZXJGcm9tTnVtYmVyKG51bWJlcikge1xuICBjb25zdCBtaW5vck51bWJlciA9IChudW1iZXIgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoKG51bWJlciAlIE1BSk9SX05VTUJFUl9NVUxUSVBMSUVSKSAvIE1JTk9SX05VTUJFUl9NVUxUSVBMSUVSKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDA7ICAvLy9cblxuICByZXR1cm4gbWlub3JOdW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaE51bWJlckZyb21OdW1iZXIobnVtYmVyKSB7XG4gIGNvbnN0IHBhdGNoTnVtYmVyID0gKG51bWJlciAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcigobnVtYmVyICUgTUlOT1JfTlVNQkVSX01VTFRJUExJRVIpIC8gUEFUQ0hfTlVNQkVSX01VTFRJUExJRVIpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgMDsgIC8vL1xuXG4gIHJldHVybiBwYXRjaE51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ham9yTnVtYmVyRnJvbVN0cmluZyhzdHJpbmcpIHtcbiAgbGV0IG1ham9yTnVtYmVyID0gMDtcblxuICBpZiAoc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN0cmluZy5tYXRjaCgvXihcXGQrKS8pLFxuICAgICAgICAgIHNlY29uZE1hdGNoID0gc2Vjb25kKG1hdGNoZXMpO1xuXG4gICAgbWFqb3JOdW1iZXIgPSBOdW1iZXIoc2Vjb25kTWF0Y2gpOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbWFqb3JOdW1iZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5vck51bWJlckZyb21TdHJpbmcoc3RyaW5nKSB7XG4gIGxldCBtaW5vck51bWJlciA9IDA7XG5cbiAgaWYgKHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBzdHJpbmcubWF0Y2goL15cXGQrXFwuKFxcZCspLyksXG4gICAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyk7XG5cbiAgICBtaW5vck51bWJlciA9IE51bWJlcihzZWNvbmRNYXRjaCk7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBtaW5vck51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGNoTnVtYmVyRnJvbVN0cmluZyhzdHJpbmcpIHtcbiAgbGV0IHBhdGNoTnVtYmVyID0gMDtcblxuICBpZiAoc3RyaW5nKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHN0cmluZy5tYXRjaCgvXlxcZCtcXC5cXGQrXFwuKFxcZCspLyksXG4gICAgICAgICAgc2Vjb25kTWF0Y2ggPSBzZWNvbmQobWF0Y2hlcyk7XG5cbiAgICBwYXRjaE51bWJlciA9IE51bWJlcihzZWNvbmRNYXRjaCk7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBwYXRjaE51bWJlcjtcbn1cbiJdLCJuYW1lcyI6WyJtYWpvck51bWJlckZyb21OdW1iZXIiLCJtYWpvck51bWJlckZyb21TdHJpbmciLCJtaW5vck51bWJlckZyb21OdW1iZXIiLCJtaW5vck51bWJlckZyb21TdHJpbmciLCJwYXRjaE51bWJlckZyb21OdW1iZXIiLCJwYXRjaE51bWJlckZyb21TdHJpbmciLCJzZWNvbmQiLCJhcnJheVV0aWxpdGllcyIsIm51bWJlciIsIm1ham9yTnVtYmVyIiwiTWF0aCIsImZsb29yIiwiTUFKT1JfTlVNQkVSX01VTFRJUExJRVIiLCJtaW5vck51bWJlciIsIk1JTk9SX05VTUJFUl9NVUxUSVBMSUVSIiwicGF0Y2hOdW1iZXIiLCJQQVRDSF9OVU1CRVJfTVVMVElQTElFUiIsInN0cmluZyIsIm1hdGNoZXMiLCJtYXRjaCIsInNlY29uZE1hdGNoIiwiTnVtYmVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFRZ0JBO2VBQUFBOztRQXdCQUM7ZUFBQUE7O1FBaEJBQztlQUFBQTs7UUE2QkFDO2VBQUFBOztRQXJCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7O3lCQXhEZTswQkFFMkQ7QUFFMUYsSUFBTSxBQUFFQyxTQUFXQyx5QkFBYyxDQUF6QkQ7QUFFRCxTQUFTTixzQkFBc0JRLE1BQU07SUFDMUMsSUFBTUMsY0FBYyxBQUFDRCxXQUFXLE9BQ1ZFLEtBQUtDLEtBQUssQ0FBQ0gsU0FBU0ksbUNBQXVCLElBQ3pDLEdBQUksR0FBRztJQUUvQixPQUFPSDtBQUNUO0FBRU8sU0FBU1Asc0JBQXNCTSxNQUFNO0lBQzFDLElBQU1LLGNBQWMsQUFBQ0wsV0FBVyxPQUNWRSxLQUFLQyxLQUFLLENBQUMsQUFBQ0gsU0FBU0ksbUNBQXVCLEdBQUlFLG1DQUF1QixJQUNyRSxHQUFJLEdBQUc7SUFFL0IsT0FBT0Q7QUFDVDtBQUVPLFNBQVNULHNCQUFzQkksTUFBTTtJQUMxQyxJQUFNTyxjQUFjLEFBQUNQLFdBQVcsT0FDVkUsS0FBS0MsS0FBSyxDQUFDLEFBQUNILFNBQVNNLG1DQUF1QixHQUFJRSxtQ0FBdUIsSUFDckUsR0FBSSxHQUFHO0lBRS9CLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTZCxzQkFBc0JnQixNQUFNO0lBQzFDLElBQUlSLGNBQWM7SUFFbEIsSUFBSVEsUUFBUTtRQUNWLElBQU1DLFVBQVVELE9BQU9FLEtBQUssQ0FBQyxXQUN2QkMsY0FBY2QsT0FBT1k7UUFFM0JULGNBQWNZLE9BQU9ELGNBQWUsR0FBRztJQUN6QztJQUVBLE9BQU9YO0FBQ1Q7QUFFTyxTQUFTTixzQkFBc0JjLE1BQU07SUFDMUMsSUFBSUosY0FBYztJQUVsQixJQUFJSSxRQUFRO1FBQ1YsSUFBTUMsVUFBVUQsT0FBT0UsS0FBSyxDQUFDLGdCQUN2QkMsY0FBY2QsT0FBT1k7UUFFM0JMLGNBQWNRLE9BQU9ELGNBQWUsR0FBRztJQUN6QztJQUVBLE9BQU9QO0FBQ1Q7QUFFTyxTQUFTUixzQkFBc0JZLE1BQU07SUFDMUMsSUFBSUYsY0FBYztJQUVsQixJQUFJRSxRQUFRO1FBQ1YsSUFBTUMsVUFBVUQsT0FBT0UsS0FBSyxDQUFDLHFCQUN2QkMsY0FBY2QsT0FBT1k7UUFFM0JILGNBQWNNLE9BQU9ELGNBQWUsR0FBRztJQUN6QztJQUVBLE9BQU9MO0FBQ1QifQ==