dependency-cruiser 10.0.2 → 10.0.6

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 (48) hide show
  1. package/bin/depcruise-fmt.js +3 -3
  2. package/bin/dependency-cruise.js +3 -3
  3. package/bin/wrap-stream-in-html.js +1 -5
  4. package/package.json +32 -55
  5. package/src/cli/defaults.js +15 -0
  6. package/src/cli/format.js +0 -1
  7. package/src/cli/index.js +1 -1
  8. package/src/cli/init-config/config.js.template.js +1 -106
  9. package/src/cli/init-config/index.js +3 -2
  10. package/src/cli/init-config/normalize-init-options.js +2 -2
  11. package/src/cli/init-config/write-config.js +3 -2
  12. package/src/cli/init-config/write-run-scripts-to-manifest.js +1 -1
  13. package/src/cli/normalize-options.js +1 -1
  14. package/src/cli/tools/wrap-stream-in-html.js +25 -20
  15. package/src/cli/validate-node-environment.js +3 -3
  16. package/src/config-utl/extract-babel-config.js +2 -3
  17. package/src/config-utl/extract-ts-config.js +5 -7
  18. package/src/enrich/derive/reachable/index.js +2 -8
  19. package/src/extract/ast-extractors/extract-typescript-deps.js +4 -7
  20. package/src/extract/ast-extractors/swc-dependency-visitor.js +14 -11
  21. package/src/extract/parse/to-swc-ast.js +3 -4
  22. package/src/extract/parse/to-typescript-ast.js +3 -4
  23. package/src/extract/transpile/babel-wrap.js +2 -2
  24. package/src/extract/transpile/coffeescript-wrap.js +5 -4
  25. package/src/extract/transpile/livescript-wrap.js +5 -5
  26. package/src/extract/transpile/meta.js +1 -1
  27. package/src/extract/transpile/svelte-wrap.js +3 -1
  28. package/src/extract/transpile/typescript-wrap.js +3 -4
  29. package/src/extract/transpile/vue-template-wrap.js +3 -1
  30. package/src/main/index.js +1 -1
  31. package/src/main/options/defaults.js +10 -0
  32. package/src/main/options/normalize.js +1 -1
  33. package/src/main/rule-set/validate.js +1 -1
  34. package/src/meta.js +18 -0
  35. package/src/report/dot/default-theme.js +145 -0
  36. package/src/report/dot/dot.template.js +1 -199
  37. package/src/report/dot/theming.js +3 -3
  38. package/src/report/error-html/error-html.template.js +1 -132
  39. package/src/report/error-html/utl.js +1 -1
  40. package/src/report/html/html.template.js +1 -118
  41. package/src/schema/README.md +2 -2
  42. package/src/schema/configuration.schema.js +441 -0
  43. package/src/schema/cruise-result.schema.js +595 -0
  44. package/src/cli/defaults.json +0 -15
  45. package/src/main/options/defaults.json +0 -10
  46. package/src/report/dot/default-theme.json +0 -145
  47. package/src/schema/configuration.schema.json +0 -697
  48. package/src/schema/cruise-result.schema.json +0 -988
@@ -1,118 +1 @@
1
- var Handlebars = require("handlebars/runtime"); var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};
2
- templates['html.template.hbs'] = template({"1":function(container,depth0,helpers,partials,data) {
3
- var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
4
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
5
- return parent[propertyName];
6
- }
7
- return undefined
8
- };
9
-
10
- return "<th>\n <div"
11
- + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"coreModule") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.program(4, data, 0),"data":data,"loc":{"start":{"line":192,"column":14},"end":{"line":193,"column":59}}})) != null ? stack1 : "")
12
- + ">"
13
- + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"source") || (depth0 != null ? lookupProperty(depth0,"source") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"source","hash":{},"data":data,"loc":{"start":{"line":193,"column":60},"end":{"line":193,"column":70}}}) : helper)))
14
- + "</div>\n </th>";
15
- },"2":function(container,depth0,helpers,partials,data) {
16
- return " class=\"cell-core-module\" ";
17
- },"4":function(container,depth0,helpers,partials,data) {
18
- var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
19
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
20
- return parent[propertyName];
21
- }
22
- return undefined
23
- };
24
-
25
- return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"couldNotResolve") : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":192,"column":66},"end":{"line":193,"column":52}}})) != null ? stack1 : "");
26
- },"5":function(container,depth0,helpers,partials,data) {
27
- return "\n class=\"cell-unresolvable-module\" ";
28
- },"7":function(container,depth0,helpers,partials,data,blockParams,depths) {
29
- var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
30
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
31
- return parent[propertyName];
32
- }
33
- return undefined
34
- }, buffer =
35
- " <tr>\n <td\n class=\"first-cell"
36
- + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"coreModule") : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0, blockParams, depths),"inverse":container.program(10, data, 0, blockParams, depths),"data":data,"loc":{"start":{"line":202,"column":27},"end":{"line":202,"column":132}}})) != null ? stack1 : "")
37
- + "\">\n "
38
- + alias4(((helper = (helper = lookupProperty(helpers,"source") || (depth0 != null ? lookupProperty(depth0,"source") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"source","hash":{},"data":data,"loc":{"start":{"line":203,"column":10},"end":{"line":203,"column":20}}}) : helper)))
39
- + "</td>\n ";
40
- stack1 = ((helper = (helper = lookupProperty(helpers,"incidences") || (depth0 != null ? lookupProperty(depth0,"incidences") : depth0)) != null ? helper : alias2),(options={"name":"incidences","hash":{},"fn":container.program(13, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":204,"column":8},"end":{"line":206,"column":40}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
41
- if (!lookupProperty(helpers,"incidences")) { stack1 = container.hooks.blockHelperMissing.call(depth0,stack1,options)}
42
- if (stack1 != null) { buffer += stack1; }
43
- return buffer + "\n <td\n class=\"first-cell"
44
- + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"coreModule") : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0, blockParams, depths),"inverse":container.program(10, data, 0, blockParams, depths),"data":data,"loc":{"start":{"line":208,"column":27},"end":{"line":208,"column":132}}})) != null ? stack1 : "")
45
- + "\">\n "
46
- + alias4(((helper = (helper = lookupProperty(helpers,"source") || (depth0 != null ? lookupProperty(depth0,"source") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"source","hash":{},"data":data,"loc":{"start":{"line":209,"column":10},"end":{"line":209,"column":20}}}) : helper)))
47
- + "</td>\n </tr>\n";
48
- },"8":function(container,depth0,helpers,partials,data) {
49
- return " cell-core-module";
50
- },"10":function(container,depth0,helpers,partials,data) {
51
- var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {
52
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
53
- return parent[propertyName];
54
- }
55
- return undefined
56
- };
57
-
58
- return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"couldNotResolve") : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":202,"column":70},"end":{"line":202,"column":125}}})) != null ? stack1 : "");
59
- },"11":function(container,depth0,helpers,partials,data) {
60
- return " cell-unresolvable-module";
61
- },"13":function(container,depth0,helpers,partials,data,blockParams,depths) {
62
- var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {
63
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
64
- return parent[propertyName];
65
- }
66
- return undefined
67
- };
68
-
69
- return "<td class=\"cell cell-"
70
- + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"incidence") || (depth0 != null ? lookupProperty(depth0,"incidence") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"incidence","hash":{},"data":data,"loc":{"start":{"line":204,"column":44},"end":{"line":204,"column":57}}}) : helper)))
71
- + "\" "
72
- + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"hasRelation") : depth0),{"name":"if","hash":{},"fn":container.program(14, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":204,"column":59},"end":{"line":206,"column":19}}})) != null ? stack1 : "")
73
- + "></td>";
74
- },"14":function(container,depth0,helpers,partials,data,blockParams,depths) {
75
- var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {
76
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
77
- return parent[propertyName];
78
- }
79
- return undefined
80
- };
81
-
82
- return " title=\""
83
- + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"rule") : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":204,"column":86},"end":{"line":205,"column":11}}})) != null ? stack1 : "")
84
- + alias2(container.lambda((depths[1] != null ? lookupProperty(depths[1],"source") : depths[1]), depth0))
85
- + " ->\n "
86
- + alias2(((helper = (helper = lookupProperty(helpers,"to") || (depth0 != null ? lookupProperty(depth0,"to") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(alias1,{"name":"to","hash":{},"data":data,"loc":{"start":{"line":206,"column":4},"end":{"line":206,"column":10}}}) : helper)))
87
- + "\" ";
88
- },"15":function(container,depth0,helpers,partials,data) {
89
- var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {
90
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
91
- return parent[propertyName];
92
- }
93
- return undefined
94
- };
95
-
96
- return container.escapeExpression(((helper = (helper = lookupProperty(helpers,"rule") || (depth0 != null ? lookupProperty(depth0,"rule") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"rule","hash":{},"data":data,"loc":{"start":{"line":204,"column":99},"end":{"line":204,"column":107}}}) : helper)))
97
- + ":\n ";
98
- },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) {
99
- var stack1, helper, options, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.hooks.blockHelperMissing, lookupProperty = container.lookupProperty || function(parent, propertyName) {
100
- if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
101
- return parent[propertyName];
102
- }
103
- return undefined
104
- }, buffer =
105
- "<!DOCTYPE html>\n<html>\n\n<head>\n <meta charset=\"utf-8\">\n <title>dependency-cruiser output</title>\n <style media=\"screen\">\n html {\n font-family: sans-serif;\n font-size: 10pt;\n }\n\n table {\n overflow: hidden;\n }\n\n table,\n td.controls {\n transition-duration: 0.3s;\n }\n\n table,\n th,\n td {\n border: solid black 1px;\n border-collapse: collapse;\n font-size: inherit;\n }\n\n td,\n th {\n position: relative;\n }\n\n th {\n text-align: start;\n vertical-align: bottom;\n max-width: 1em;\n max-height: 30em;\n height: 20em;\n font-weight: normal;\n white-space: nowrap;\n overflow: hidden;\n }\n\n th div {\n transform: rotateZ(-90deg);\n transform-origin: 0.5em;\n text-align: start;\n height: 1em;\n width: 30em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n td {\n text-align: center;\n }\n\n td.first-cell {\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n td.top-left {\n border-top: solid 1px transparent;\n border-left: solid 1px transparent;\n }\n\n td.top-right {\n border-top: solid 1px transparent;\n border-right: solid 1px transparent;\n }\n\n td.bottom-left {\n border-bottom: solid 1px transparent;\n border-left: solid 1px transparent;\n }\n\n td.bottom-right {\n border-bottom: solid 1px transparent;\n border-right: solid 1px transparent;\n }\n\n tbody tr:hover {\n background-color: lightgrey;\n }\n\n td:hover::after,\n td:focus::after,\n th:hover::after,\n th:focus::after {\n background-color: #00000077;\n content: \"\";\n height: 5000px;\n left: 0;\n position: absolute;\n top: -2500px;\n width: 100%;\n z-index: -1;\n }\n\n #table-rotated:target {\n transform: rotateZ(45deg);\n transform-origin: bottom left;\n }\n\n #table-rotated:target #unrotate {\n opacity: 1;\n }\n\n #table-rotated:target #rotate {\n opacity: 0;\n }\n\n #unrotate {\n opacity: 0;\n }\n\n #rotate {\n opacity: 1;\n }\n\n .controls {\n opacity: 0.2;\n vertical-align: bottom;\n padding: 0.5em;\n }\n\n .controls:hover {\n opacity: 1;\n }\n\n .controls a {\n font-style: normal;\n text-decoration: none;\n background-color: #eee;\n padding: 0.2em 0.5em 0.2em 0.5em;\n }\n\n .cell-core-module {\n color: grey;\n font-style: italic;\n }\n\n .cell-unresolvable-module {\n color: red;\n font-style: italic;\n }\n\n .cell-true {\n background-color: black;\n opacity: 0.5;\n }\n\n .cell-false {\n background-color: white;\n opacity: 0.5;\n }\n\n .cell-error {\n background-color: red;\n opacity: 0.5;\n }\n\n .cell-warn {\n background-color: orange;\n opacity: 0.5;\n }\n\n .cell-info {\n background-color: blue;\n opacity: 0.5;\n }\n </style>\n</head>\n\n<body>\n <table id=\"table-rotated\">\n <thead>\n <tr>\n <td class=\"controls top-left\">\n <a id=\"rotate\" href=\"#table-rotated\">rotate</a>\n <a id=\"unrotate\" href=\"#\">rotate back</a>\n </td>\n ";
106
- stack1 = ((helper = (helper = lookupProperty(helpers,"modules") || (depth0 != null ? lookupProperty(depth0,"modules") : depth0)) != null ? helper : alias2),(options={"name":"modules","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":191,"column":8},"end":{"line":194,"column":25}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
107
- if (!lookupProperty(helpers,"modules")) { stack1 = alias4.call(depth0,stack1,options)}
108
- if (stack1 != null) { buffer += stack1; }
109
- buffer += "\n <td class=\"top-right\"></td>\n </tr>\n </thead>\n <tbody>\n";
110
- stack1 = ((helper = (helper = lookupProperty(helpers,"modules") || (depth0 != null ? lookupProperty(depth0,"modules") : depth0)) != null ? helper : alias2),(options={"name":"modules","hash":{},"fn":container.program(7, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":199,"column":6},"end":{"line":211,"column":18}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
111
- if (!lookupProperty(helpers,"modules")) { stack1 = alias4.call(depth0,stack1,options)}
112
- if (stack1 != null) { buffer += stack1; }
113
- buffer += " </tbody>\n <tfoot>\n <tr>\n <td class=\"bottom-left\"></td>\n ";
114
- stack1 = ((helper = (helper = lookupProperty(helpers,"modules") || (depth0 != null ? lookupProperty(depth0,"modules") : depth0)) != null ? helper : alias2),(options={"name":"modules","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":216,"column":8},"end":{"line":219,"column":25}}}),(typeof helper === alias3 ? helper.call(alias1,options) : helper));
115
- if (!lookupProperty(helpers,"modules")) { stack1 = alias4.call(depth0,stack1,options)}
116
- if (stack1 != null) { buffer += stack1; }
117
- return buffer + "\n <td class=\"bottom-right\"></td>\n </tr>\n </tfoot>\n </table>\n</body>\n</html>";
118
- },"useData":true,"useDepths":true});
1
+ var Handlebars=require("handlebars/runtime"),template=Handlebars.template,templates=Handlebars.templates=Handlebars.templates||{};templates["html.template.hbs"]=template({1:function(n,e,l,t,o){var r,a=null!=e?e:n.nullContext||{},c=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return"<th>\n <div"+(null!=(r=c(l,"if").call(a,null!=e?c(e,"coreModule"):e,{name:"if",hash:{},fn:n.program(2,o,0),inverse:n.program(4,o,0),data:o,loc:{start:{line:192,column:14},end:{line:193,column:59}}}))?r:"")+">"+n.escapeExpression("function"==typeof(e=null!=(e=c(l,"source")||(null!=e?c(e,"source"):e))?e:n.hooks.helperMissing)?e.call(a,{name:"source",hash:{},data:o,loc:{start:{line:193,column:60},end:{line:193,column:70}}}):e)+"</div>\n </th>"},2:function(n,e,l,t,o){return' class="cell-core-module" '},4:function(n,e,l,t,o){var r=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return null!=(o=r(l,"if").call(null!=e?e:n.nullContext||{},null!=e?r(e,"couldNotResolve"):e,{name:"if",hash:{},fn:n.program(5,o,0),inverse:n.noop,data:o,loc:{start:{line:192,column:66},end:{line:193,column:52}}}))?o:""},5:function(n,e,l,t,o){return'\n class="cell-unresolvable-module" '},7:function(n,e,l,t,o,r,a){var c=null!=e?e:n.nullContext||{},i=n.hooks.helperMissing,s="function",u=n.escapeExpression,d=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]},p=' <tr>\n <td\n class="first-cell'+(null!=(h=d(l,"if").call(c,null!=e?d(e,"coreModule"):e,{name:"if",hash:{},fn:n.program(8,o,0,r,a),inverse:n.program(10,o,0,r,a),data:o,loc:{start:{line:202,column:27},end:{line:202,column:132}}}))?h:"")+'">\n '+u(typeof(m=null!=(m=d(l,"source")||(null!=e?d(e,"source"):e))?m:i)==s?m.call(c,{name:"source",hash:{},data:o,loc:{start:{line:203,column:10},end:{line:203,column:20}}}):m)+"</td>\n ",m=null!=(m=d(l,"incidences")||(null!=e?d(e,"incidences"):e))?m:i,f={name:"incidences",hash:{},fn:n.program(13,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:204,column:8},end:{line:206,column:40}}},h=typeof m==s?m.call(c,f):m;return null!=(h=!d(l,"incidences")?n.hooks.blockHelperMissing.call(e,h,f):h)&&(p+=h),p+'\n <td\n class="first-cell'+(null!=(h=d(l,"if").call(c,null!=e?d(e,"coreModule"):e,{name:"if",hash:{},fn:n.program(8,o,0,r,a),inverse:n.program(10,o,0,r,a),data:o,loc:{start:{line:208,column:27},end:{line:208,column:132}}}))?h:"")+'">\n '+u(typeof(m=null!=(m=d(l,"source")||(null!=e?d(e,"source"):e))?m:i)==s?m.call(c,{name:"source",hash:{},data:o,loc:{start:{line:209,column:10},end:{line:209,column:20}}}):m)+"</td>\n </tr>\n"},8:function(n,e,l,t,o){return" cell-core-module"},10:function(n,e,l,t,o){var r=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return null!=(o=r(l,"if").call(null!=e?e:n.nullContext||{},null!=e?r(e,"couldNotResolve"):e,{name:"if",hash:{},fn:n.program(11,o,0),inverse:n.noop,data:o,loc:{start:{line:202,column:70},end:{line:202,column:125}}}))?o:""},11:function(n,e,l,t,o){return" cell-unresolvable-module"},13:function(n,e,l,t,o,r,a){var c,i=null!=e?e:n.nullContext||{},s=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return'<td class="cell cell-'+n.escapeExpression("function"==typeof(c=null!=(c=s(l,"incidence")||(null!=e?s(e,"incidence"):e))?c:n.hooks.helperMissing)?c.call(i,{name:"incidence",hash:{},data:o,loc:{start:{line:204,column:44},end:{line:204,column:57}}}):c)+'" '+(null!=(o=s(l,"if").call(i,null!=e?s(e,"hasRelation"):e,{name:"if",hash:{},fn:n.program(14,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:204,column:59},end:{line:206,column:19}}}))?o:"")+"></td>"},14:function(n,e,l,t,o,r,a){var c=null!=e?e:n.nullContext||{},i=n.escapeExpression,s=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return' title="'+(null!=(r=s(l,"if").call(c,null!=e?s(e,"rule"):e,{name:"if",hash:{},fn:n.program(15,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:204,column:86},end:{line:205,column:11}}}))?r:"")+i(n.lambda(null!=a[1]?s(a[1],"source"):a[1],e))+" ->\n "+i("function"==typeof(e=null!=(e=s(l,"to")||(null!=e?s(e,"to"):e))?e:n.hooks.helperMissing)?e.call(c,{name:"to",hash:{},data:o,loc:{start:{line:206,column:4},end:{line:206,column:10}}}):e)+'" '},15:function(n,e,l,t,o){var r=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]};return n.escapeExpression("function"==typeof(r=null!=(r=r(l,"rule")||(null!=e?r(e,"rule"):e))?r:n.hooks.helperMissing)?r.call(null!=e?e:n.nullContext||{},{name:"rule",hash:{},data:o,loc:{start:{line:204,column:99},end:{line:204,column:107}}}):r)+":\n "},compiler:[8,">= 4.3.0"],main:function(n,e,l,t,o,r,a){var c=null!=e?e:n.nullContext||{},i=n.hooks.helperMissing,s="function",u=n.hooks.blockHelperMissing,d=n.lookupProperty||function(n,e){if(Object.prototype.hasOwnProperty.call(n,e))return n[e]},p='<!DOCTYPE html>\n<html>\n\n<head>\n <meta charset="utf-8">\n <title>dependency-cruiser output</title>\n <style media="screen">\n html {\n font-family: sans-serif;\n font-size: 10pt;\n }\n\n table {\n overflow: hidden;\n }\n\n table,\n td.controls {\n transition-duration: 0.3s;\n }\n\n table,\n th,\n td {\n border: solid black 1px;\n border-collapse: collapse;\n font-size: inherit;\n }\n\n td,\n th {\n position: relative;\n }\n\n th {\n text-align: start;\n vertical-align: bottom;\n max-width: 1em;\n max-height: 30em;\n height: 20em;\n font-weight: normal;\n white-space: nowrap;\n overflow: hidden;\n }\n\n th div {\n transform: rotateZ(-90deg);\n transform-origin: 0.5em;\n text-align: start;\n height: 1em;\n width: 30em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n td {\n text-align: center;\n }\n\n td.first-cell {\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n td.top-left {\n border-top: solid 1px transparent;\n border-left: solid 1px transparent;\n }\n\n td.top-right {\n border-top: solid 1px transparent;\n border-right: solid 1px transparent;\n }\n\n td.bottom-left {\n border-bottom: solid 1px transparent;\n border-left: solid 1px transparent;\n }\n\n td.bottom-right {\n border-bottom: solid 1px transparent;\n border-right: solid 1px transparent;\n }\n\n tbody tr:hover {\n background-color: lightgrey;\n }\n\n td:hover::after,\n td:focus::after,\n th:hover::after,\n th:focus::after {\n background-color: #00000077;\n content: "";\n height: 5000px;\n left: 0;\n position: absolute;\n top: -2500px;\n width: 100%;\n z-index: -1;\n }\n\n #table-rotated:target {\n transform: rotateZ(45deg);\n transform-origin: bottom left;\n }\n\n #table-rotated:target #unrotate {\n opacity: 1;\n }\n\n #table-rotated:target #rotate {\n opacity: 0;\n }\n\n #unrotate {\n opacity: 0;\n }\n\n #rotate {\n opacity: 1;\n }\n\n .controls {\n opacity: 0.2;\n vertical-align: bottom;\n padding: 0.5em;\n }\n\n .controls:hover {\n opacity: 1;\n }\n\n .controls a {\n font-style: normal;\n text-decoration: none;\n background-color: #eee;\n padding: 0.2em 0.5em 0.2em 0.5em;\n }\n\n .cell-core-module {\n color: grey;\n font-style: italic;\n }\n\n .cell-unresolvable-module {\n color: red;\n font-style: italic;\n }\n\n .cell-true {\n background-color: black;\n opacity: 0.5;\n }\n\n .cell-false {\n background-color: white;\n opacity: 0.5;\n }\n\n .cell-error {\n background-color: red;\n opacity: 0.5;\n }\n\n .cell-warn {\n background-color: orange;\n opacity: 0.5;\n }\n\n .cell-info {\n background-color: blue;\n opacity: 0.5;\n }\n </style>\n</head>\n\n<body>\n <table id="table-rotated">\n <thead>\n <tr>\n <td class="controls top-left">\n <a id="rotate" href="#table-rotated">rotate</a>\n <a id="unrotate" href="#">rotate back</a>\n </td>\n ',m=null!=(m=d(l,"modules")||(null!=e?d(e,"modules"):e))?m:i,f={name:"modules",hash:{},fn:n.program(1,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:191,column:8},end:{line:194,column:25}}},h=typeof m==s?m.call(c,f):m;return null!=(h=!d(l,"modules")?u.call(e,h,f):h)&&(p+=h),p+='\n <td class="top-right"></td>\n </tr>\n </thead>\n <tbody>\n',m=null!=(m=d(l,"modules")||(null!=e?d(e,"modules"):e))?m:i,f={name:"modules",hash:{},fn:n.program(7,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:199,column:6},end:{line:211,column:18}}},h=typeof m==s?m.call(c,f):m,null!=(h=!d(l,"modules")?u.call(e,h,f):h)&&(p+=h),p+=' </tbody>\n <tfoot>\n <tr>\n <td class="bottom-left"></td>\n ',m=null!=(m=d(l,"modules")||(null!=e?d(e,"modules"):e))?m:i,f={name:"modules",hash:{},fn:n.program(1,o,0,r,a),inverse:n.noop,data:o,loc:{start:{line:216,column:8},end:{line:219,column:25}}},h=typeof m==s?m.call(c,f):m,null!=(h=!d(l,"modules")?u.call(e,h,f):h)&&(p+=h),p+'\n <td class="bottom-right"></td>\n </tr>\n </tfoot>\n </table>\n</body>\n</html>'},useData:!0,useDepths:!0});
@@ -1,5 +1,5 @@
1
- - The JSON schemas here are generated with `tools/generate-schemas.utl.js`.
1
+ - The JSON schemas here are generated with `tools/generate-schemas.utl.mjs`.
2
2
  - If you need to modify the schemas:
3
3
  - do so in [`tools/schema/`](../../tools/schema)
4
4
  - re-run the schema generation script (either by running `make` or
5
- `node tools/generate-schemas.utl.js`)
5
+ `node tools/generate-schemas.utl.mjs`)
@@ -0,0 +1,441 @@
1
+ /* generated - don't edit */
2
+
3
+ module.exports = {
4
+ title: "dependency-cruiser configuration",
5
+ $schema: "http://json-schema.org/draft-07/schema#",
6
+ $id: "https://dependency-cruiser.js.org/schema/configuration.schema.json",
7
+ type: "object",
8
+ additionalProperties: false,
9
+ properties: {
10
+ $schema: { type: "string" },
11
+ forbidden: {
12
+ type: "array",
13
+ items: { $ref: "#/definitions/ForbiddenRuleType" },
14
+ },
15
+ allowed: {
16
+ type: "array",
17
+ items: { $ref: "#/definitions/AllowedRuleType" },
18
+ },
19
+ allowedSeverity: { $ref: "#/definitions/SeverityType" },
20
+ required: {
21
+ type: "array",
22
+ items: { $ref: "#/definitions/RequiredRuleType" },
23
+ },
24
+ options: { $ref: "#/definitions/OptionsType" },
25
+ extends: { $ref: "#/definitions/ExtendsType" },
26
+ },
27
+ definitions: {
28
+ RuleSetType: {
29
+ type: "object",
30
+ additionalProperties: false,
31
+ properties: {
32
+ forbidden: {
33
+ type: "array",
34
+ items: { $ref: "#/definitions/ForbiddenRuleType" },
35
+ },
36
+ allowed: {
37
+ type: "array",
38
+ items: { $ref: "#/definitions/AllowedRuleType" },
39
+ },
40
+ allowedSeverity: { $ref: "#/definitions/SeverityType" },
41
+ required: {
42
+ type: "array",
43
+ items: { $ref: "#/definitions/RequiredRuleType" },
44
+ },
45
+ },
46
+ },
47
+ AllowedRuleType: {
48
+ oneOf: [
49
+ { $ref: "#/definitions/RegularAllowedRuleType" },
50
+ { $ref: "#/definitions/ReachabilityAllowedRuleType" },
51
+ ],
52
+ },
53
+ RegularAllowedRuleType: {
54
+ type: "object",
55
+ required: ["from", "to"],
56
+ additionalProperties: false,
57
+ properties: {
58
+ comment: { type: "string" },
59
+ from: { $ref: "#/definitions/FromRestrictionType" },
60
+ to: { $ref: "#/definitions/ToRestrictionType" },
61
+ },
62
+ },
63
+ ReachabilityAllowedRuleType: {
64
+ type: "object",
65
+ required: ["from", "to"],
66
+ additionalProperties: false,
67
+ properties: {
68
+ comment: { type: "string" },
69
+ from: { $ref: "#/definitions/ReachabilityFromRestrictionType" },
70
+ to: { $ref: "#/definitions/ReachabilityToRestrictionType" },
71
+ },
72
+ },
73
+ ForbiddenRuleType: {
74
+ oneOf: [
75
+ { $ref: "#/definitions/RegularForbiddenRuleType" },
76
+ { $ref: "#/definitions/ReachabilityForbiddenRuleType" },
77
+ { $ref: "#/definitions/DependentsForbiddenRuleType" },
78
+ ],
79
+ },
80
+ RegularForbiddenRuleType: {
81
+ type: "object",
82
+ required: ["from", "to"],
83
+ additionalProperties: false,
84
+ properties: {
85
+ name: { type: "string" },
86
+ severity: { $ref: "#/definitions/SeverityType" },
87
+ comment: { type: "string" },
88
+ from: { $ref: "#/definitions/FromRestrictionType" },
89
+ to: { $ref: "#/definitions/ToRestrictionType" },
90
+ },
91
+ },
92
+ DependentsForbiddenRuleType: {
93
+ type: "object",
94
+ required: ["module", "from"],
95
+ additionalProperties: false,
96
+ properties: {
97
+ name: { type: "string" },
98
+ severity: { $ref: "#/definitions/SeverityType" },
99
+ comment: { type: "string" },
100
+ module: { $ref: "#/definitions/DependentsModuleRestrictionType" },
101
+ from: { $ref: "#/definitions/DependentsFromRestrictionType" },
102
+ },
103
+ },
104
+ ReachabilityForbiddenRuleType: {
105
+ type: "object",
106
+ required: ["from", "to"],
107
+ additionalProperties: false,
108
+ properties: {
109
+ name: { type: "string" },
110
+ severity: { $ref: "#/definitions/SeverityType" },
111
+ comment: { type: "string" },
112
+ from: { $ref: "#/definitions/ReachabilityFromRestrictionType" },
113
+ to: { $ref: "#/definitions/ReachabilityToRestrictionType" },
114
+ },
115
+ },
116
+ RequiredRuleType: {
117
+ type: "object",
118
+ required: ["module", "to"],
119
+ additionalProperties: false,
120
+ properties: {
121
+ name: { type: "string" },
122
+ severity: { $ref: "#/definitions/SeverityType" },
123
+ comment: { type: "string" },
124
+ module: { $ref: "#/definitions/RequiredModuleRestrictionType" },
125
+ to: { $ref: "#/definitions/RequiredToRestrictionType" },
126
+ },
127
+ },
128
+ FromRestrictionType: {
129
+ type: "object",
130
+ additionalProperties: false,
131
+ properties: {
132
+ path: { $ref: "#/definitions/REAsStringsType" },
133
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
134
+ orphan: { type: "boolean" },
135
+ },
136
+ },
137
+ ReachabilityFromRestrictionType: {
138
+ type: "object",
139
+ additionalProperties: false,
140
+ properties: {
141
+ path: { $ref: "#/definitions/REAsStringsType" },
142
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
143
+ },
144
+ },
145
+ ToRestrictionType: {
146
+ type: "object",
147
+ additionalProperties: false,
148
+ properties: {
149
+ path: { $ref: "#/definitions/REAsStringsType" },
150
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
151
+ couldNotResolve: { type: "boolean" },
152
+ circular: { type: "boolean" },
153
+ dynamic: { type: "boolean" },
154
+ exoticallyRequired: { type: "boolean" },
155
+ exoticRequire: { $ref: "#/definitions/REAsStringsType" },
156
+ exoticRequireNot: { $ref: "#/definitions/REAsStringsType" },
157
+ preCompilationOnly: { type: "boolean" },
158
+ dependencyTypes: {
159
+ type: "array",
160
+ items: { $ref: "#/definitions/DependencyTypeType" },
161
+ },
162
+ moreThanOneDependencyType: { type: "boolean" },
163
+ license: { $ref: "#/definitions/REAsStringsType" },
164
+ licenseNot: { $ref: "#/definitions/REAsStringsType" },
165
+ },
166
+ },
167
+ DependentsModuleRestrictionType: {
168
+ required: [],
169
+ type: "object",
170
+ additionalProperties: false,
171
+ properties: {
172
+ path: { $ref: "#/definitions/REAsStringsType" },
173
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
174
+ numberOfDependentsLessThan: {
175
+ type: "integer",
176
+ minimum: 0,
177
+ maximum: 100,
178
+ },
179
+ numberOfDependentsMoreThan: {
180
+ type: "integer",
181
+ minimum: 0,
182
+ maximum: 100,
183
+ },
184
+ },
185
+ },
186
+ DependentsFromRestrictionType: {
187
+ required: [],
188
+ type: "object",
189
+ additionalProperties: false,
190
+ properties: {
191
+ path: { $ref: "#/definitions/REAsStringsType" },
192
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
193
+ },
194
+ },
195
+ ReachabilityToRestrictionType: {
196
+ required: ["reachable"],
197
+ type: "object",
198
+ additionalProperties: false,
199
+ properties: {
200
+ path: { $ref: "#/definitions/REAsStringsType" },
201
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
202
+ reachable: { type: "boolean" },
203
+ },
204
+ },
205
+ RequiredModuleRestrictionType: {
206
+ required: [],
207
+ type: "object",
208
+ additionalProperties: false,
209
+ properties: {
210
+ path: { $ref: "#/definitions/REAsStringsType" },
211
+ pathNot: { $ref: "#/definitions/REAsStringsType" },
212
+ },
213
+ },
214
+ RequiredToRestrictionType: {
215
+ required: [],
216
+ type: "object",
217
+ additionalProperties: false,
218
+ properties: { path: { $ref: "#/definitions/REAsStringsType" } },
219
+ },
220
+ DependencyTypeType: {
221
+ type: "string",
222
+ enum: [
223
+ "aliased",
224
+ "core",
225
+ "deprecated",
226
+ "local",
227
+ "localmodule",
228
+ "npm",
229
+ "npm-bundled",
230
+ "npm-dev",
231
+ "npm-no-pkg",
232
+ "npm-optional",
233
+ "npm-peer",
234
+ "npm-unknown",
235
+ "undetermined",
236
+ "unknown",
237
+ ],
238
+ },
239
+ REAsStringsType: {
240
+ oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }],
241
+ },
242
+ SeverityType: { type: "string", enum: ["error", "warn", "info", "ignore"] },
243
+ OptionsType: {
244
+ type: "object",
245
+ additionalProperties: false,
246
+ properties: {
247
+ doNotFollow: {
248
+ oneOf: [
249
+ { $ref: "#/definitions/REAsStringsType" },
250
+ { $ref: "#/definitions/CompoundDoNotFollowType" },
251
+ ],
252
+ },
253
+ exclude: {
254
+ oneOf: [
255
+ { $ref: "#/definitions/REAsStringsType" },
256
+ { $ref: "#/definitions/CompoundExcludeType" },
257
+ ],
258
+ },
259
+ includeOnly: {
260
+ oneOf: [
261
+ { $ref: "#/definitions/REAsStringsType" },
262
+ { $ref: "#/definitions/CompoundIncludeOnlyType" },
263
+ ],
264
+ },
265
+ focus: {
266
+ oneOf: [
267
+ { $ref: "#/definitions/REAsStringsType" },
268
+ { $ref: "#/definitions/CompoundFocusType" },
269
+ ],
270
+ },
271
+ collapse: {
272
+ oneOf: [
273
+ { type: "string" },
274
+ { type: "integer", minimum: 1, maximum: 9 },
275
+ ],
276
+ },
277
+ maxDepth: { type: "integer", minimum: 0, maximum: 99 },
278
+ moduleSystems: { $ref: "#/definitions/ModuleSystemsType" },
279
+ prefix: { type: "string" },
280
+ preserveSymlinks: { type: "boolean" },
281
+ combinedDependencies: { type: "boolean" },
282
+ tsConfig: {
283
+ type: "object",
284
+ additionalProperties: false,
285
+ properties: { fileName: { type: "string" } },
286
+ },
287
+ tsPreCompilationDeps: {
288
+ oneOf: [{ type: "boolean" }, { type: "string", enum: ["specify"] }],
289
+ },
290
+ externalModuleResolutionStrategy: {
291
+ type: "string",
292
+ enum: ["node_modules", "yarn-pnp"],
293
+ },
294
+ forceDeriveDependents: { type: "boolean" },
295
+ webpackConfig: {
296
+ type: "object",
297
+ additionalProperties: false,
298
+ properties: {
299
+ fileName: { type: "string" },
300
+ env: { oneOf: [{ type: "object" }, { type: "string" }] },
301
+ arguments: { type: "object" },
302
+ },
303
+ },
304
+ enhancedResolveOptions: {
305
+ type: "object",
306
+ additionalProperties: false,
307
+ properties: {
308
+ exportsFields: { type: "array", items: { type: "string" } },
309
+ conditionNames: { type: "array", items: { type: "string" } },
310
+ extensions: { type: "array", items: { type: "string" } },
311
+ cachedInputFileSystem: {
312
+ type: "object",
313
+ additionalProperties: false,
314
+ properties: {
315
+ cacheDuration: {
316
+ type: "integer",
317
+ minimum: 0,
318
+ maximum: 1800000,
319
+ },
320
+ },
321
+ },
322
+ },
323
+ },
324
+ babelConfig: {
325
+ type: "object",
326
+ additionalProperties: false,
327
+ properties: { fileName: { type: "string" } },
328
+ },
329
+ parser: { type: "string", enum: ["acorn", "swc", "tsc"] },
330
+ exoticRequireStrings: { type: "array", items: { type: "string" } },
331
+ reporterOptions: { $ref: "#/definitions/ReporterOptionsType" },
332
+ progress: {
333
+ type: "object",
334
+ additionalProperties: false,
335
+ properties: {
336
+ type: {
337
+ type: "string",
338
+ enum: ["cli-feedback", "performance-log", "none"],
339
+ },
340
+ },
341
+ },
342
+ baseDir: { type: "string" },
343
+ },
344
+ },
345
+ ModuleSystemType: { type: "string", enum: ["cjs", "es6", "amd", "tsd"] },
346
+ ModuleSystemsType: {
347
+ type: "array",
348
+ items: { $ref: "#/definitions/ModuleSystemType" },
349
+ },
350
+ CompoundExcludeType: {
351
+ type: "object",
352
+ additionalProperties: false,
353
+ properties: {
354
+ path: { $ref: "#/definitions/REAsStringsType" },
355
+ dynamic: { type: "boolean" },
356
+ },
357
+ },
358
+ CompoundDoNotFollowType: {
359
+ type: "object",
360
+ additionalProperties: false,
361
+ properties: {
362
+ path: { $ref: "#/definitions/REAsStringsType" },
363
+ dependencyTypes: {
364
+ type: "array",
365
+ items: { $ref: "#/definitions/DependencyTypeType" },
366
+ },
367
+ },
368
+ },
369
+ CompoundIncludeOnlyType: {
370
+ type: "object",
371
+ additionalProperties: false,
372
+ properties: { path: { $ref: "#/definitions/REAsStringsType" } },
373
+ },
374
+ CompoundFocusType: {
375
+ type: "object",
376
+ additionalProperties: false,
377
+ properties: { path: { $ref: "#/definitions/REAsStringsType" } },
378
+ },
379
+ ReporterOptionsType: {
380
+ type: "object",
381
+ additionalProperties: false,
382
+ properties: {
383
+ anon: { $ref: "#/definitions/AnonReporterOptionsType" },
384
+ archi: { $ref: "#/definitions/DotReporterOptionsType" },
385
+ dot: { $ref: "#/definitions/DotReporterOptionsType" },
386
+ ddot: { $ref: "#/definitions/DotReporterOptionsType" },
387
+ flat: { $ref: "#/definitions/DotReporterOptionsType" },
388
+ },
389
+ },
390
+ AnonReporterOptionsType: {
391
+ type: "object",
392
+ additionalProperties: false,
393
+ properties: { wordlist: { type: "array", items: { type: "string" } } },
394
+ },
395
+ DotReporterOptionsType: {
396
+ type: "object",
397
+ additionalProperties: false,
398
+ properties: {
399
+ collapsePattern: { $ref: "#/definitions/REAsStringsType" },
400
+ filters: { $ref: "#/definitions/ReporterFiltersType" },
401
+ theme: { $ref: "#/definitions/DotThemeType" },
402
+ },
403
+ },
404
+ DotThemeType: {
405
+ type: "object",
406
+ additionalProperties: false,
407
+ properties: {
408
+ replace: { type: "boolean" },
409
+ graph: { type: "object" },
410
+ node: { type: "object" },
411
+ edge: { type: "object" },
412
+ modules: { $ref: "#/definitions/DotThemeArrayType" },
413
+ dependencies: { $ref: "#/definitions/DotThemeArrayType" },
414
+ },
415
+ },
416
+ DotThemeArrayType: {
417
+ type: "array",
418
+ items: { $ref: "#/definitions/DotThemeEntryType" },
419
+ },
420
+ DotThemeEntryType: {
421
+ type: "object",
422
+ additionalProperties: false,
423
+ properties: {
424
+ criteria: { type: "object" },
425
+ attributes: { type: "object" },
426
+ },
427
+ },
428
+ ReporterFiltersType: {
429
+ type: "object",
430
+ additionalProperties: false,
431
+ properties: {
432
+ exclude: { $ref: "#/definitions/CompoundExcludeType" },
433
+ includeOnly: { $ref: "#/definitions/CompoundIncludeOnlyType" },
434
+ focus: { $ref: "#/definitions/CompoundFocusType" },
435
+ },
436
+ },
437
+ ExtendsType: {
438
+ oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }],
439
+ },
440
+ },
441
+ };