@webex/jsdoctrinetest 3.0.0-beta.9 → 3.0.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,8 +28,8 @@ Assuming your source code is in `./src` and you've got code like
28
28
  * @returns {boolean}
29
29
  */
30
30
  exports.fn = function fn() {
31
- return true
32
- }
31
+ return true;
32
+ };
33
33
  ```
34
34
 
35
35
  The following command will create a run a mocha spec asserting the result of `fn()` is `true`.
@@ -1,96 +1,76 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.build = build;
12
9
  exports.test = test;
13
-
14
10
  var _parseInt2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-int"));
15
-
16
11
  var _isNan = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/number/is-nan"));
17
-
18
12
  var _parseFloat2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/parse-float"));
19
-
20
13
  var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
21
-
22
14
  var _template = _interopRequireDefault(require("@babel/template"));
23
-
24
15
  var _types = require("@babel/types");
25
-
26
16
  /*!
27
17
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
28
18
  */
19
+
29
20
  var pattern = /^\s*?=>( async)?\s*/;
30
21
  var tpl = (0, _template.default)("\n (function() {\n var assert = require('assert');\n assert.equal(result, ASSERTION);\n })();\n");
22
+
31
23
  /**
32
24
  * Indicates whether the specified value defines a literal assertion
33
25
  * @param {string} value
34
26
  * @returns {Boolean}
35
27
  */
36
-
37
28
  function test(value) {
38
29
  return pattern.test(value);
39
30
  }
31
+
40
32
  /**
41
33
  * Builds a literal assertion
42
34
  * @param {string} value
43
35
  * @returns {ast}
44
36
  */
45
-
46
-
47
37
  function build(value) {
48
38
  return tpl({
49
39
  ASSERTION: literal(value.replace(pattern, ''))
50
40
  });
51
41
  }
42
+
52
43
  /**
53
44
  * Coerces a string into a type
54
45
  * @param {string} l
55
46
  * @returns {Literal}
56
47
  */
57
-
58
-
59
48
  function literal(l) {
60
49
  /* eslint complexity: [0] */
61
50
  // eslint-disable-next-line prefer-const
62
- var f, i;
63
-
51
+ var f;
52
+ var i;
64
53
  switch ((0, _typeof2.default)(l)) {
65
54
  case 'boolean':
66
55
  return (0, _types.booleanLiteral)(l);
67
-
68
56
  case 'number':
69
57
  return (0, _types.numericLiteral)(l);
70
-
71
58
  case 'string':
72
59
  if (l === 'true') {
73
60
  return (0, _types.booleanLiteral)(true);
74
61
  }
75
-
76
62
  if (l === 'false') {
77
63
  return (0, _types.booleanLiteral)(false);
78
64
  }
79
-
80
65
  i = (0, _parseInt2.default)(l, 10);
81
-
82
66
  if (!(0, _isNan.default)(i)) {
83
67
  return (0, _types.numericLiteral)(i);
84
68
  }
85
-
86
69
  f = (0, _parseFloat2.default)(l);
87
-
88
70
  if (!(0, _isNan.default)(f)) {
89
71
  return (0, _types.numericLiteral)(f);
90
72
  }
91
-
92
73
  return (0, _types.stringLiteral)(l);
93
-
94
74
  default:
95
75
  throw new Error('Unsupported literal type');
96
76
  }
@@ -1 +1 @@
1
- {"version":3,"names":["pattern","tpl","template","test","value","build","ASSERTION","literal","replace","l","f","i","booleanLiteral","numericLiteral","stringLiteral","Error"],"sources":["literal.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport template from '@babel/template';\nimport {\n booleanLiteral,\n numericLiteral,\n stringLiteral\n} from '@babel/types';\n\nconst pattern = /^\\s*?=>( async)?\\s*/;\n\nconst tpl = template(`\n (function() {\n var assert = require('assert');\n assert.equal(result, ASSERTION);\n })();\n`);\n\n/**\n * Indicates whether the specified value defines a literal assertion\n * @param {string} value\n * @returns {Boolean}\n */\nexport function test(value) {\n return pattern.test(value);\n}\n\n/**\n * Builds a literal assertion\n * @param {string} value\n * @returns {ast}\n */\nexport function build(value) {\n return tpl({\n ASSERTION: literal(value.replace(pattern, ''))\n });\n}\n\n/**\n * Coerces a string into a type\n * @param {string} l\n * @returns {Literal}\n */\nfunction literal(l) {\n /* eslint complexity: [0] */\n // eslint-disable-next-line prefer-const\n let f, i;\n\n switch (typeof l) {\n case 'boolean':\n return booleanLiteral(l);\n case 'number':\n return numericLiteral(l);\n case 'string':\n if (l === 'true') {\n return booleanLiteral(true);\n }\n if (l === 'false') {\n return booleanLiteral(false);\n }\n i = parseInt(l, 10);\n if (!Number.isNaN(i)) {\n return numericLiteral(i);\n }\n f = parseFloat(l);\n if (!Number.isNaN(f)) {\n return numericLiteral(f);\n }\n\n return stringLiteral(l);\n default:\n throw new Error('Unsupported literal type');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA;;AACA;;AALA;AACA;AACA;AASA,IAAMA,OAAO,GAAG,qBAAhB;AAEA,IAAMC,GAAG,GAAG,IAAAC,iBAAA,4GAAZ;AAOA;AACA;AACA;AACA;AACA;;AACO,SAASC,IAAT,CAAcC,KAAd,EAAqB;EAC1B,OAAOJ,OAAO,CAACG,IAAR,CAAaC,KAAb,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,KAAT,CAAeD,KAAf,EAAsB;EAC3B,OAAOH,GAAG,CAAC;IACTK,SAAS,EAAEC,OAAO,CAACH,KAAK,CAACI,OAAN,CAAcR,OAAd,EAAuB,EAAvB,CAAD;EADT,CAAD,CAAV;AAGD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASO,OAAT,CAAiBE,CAAjB,EAAoB;EAClB;EACA;EACA,IAAIC,CAAJ,EAAOC,CAAP;;EAEA,8BAAeF,CAAf;IACE,KAAK,SAAL;MACE,OAAO,IAAAG,qBAAA,EAAeH,CAAf,CAAP;;IACF,KAAK,QAAL;MACE,OAAO,IAAAI,qBAAA,EAAeJ,CAAf,CAAP;;IACF,KAAK,QAAL;MACE,IAAIA,CAAC,KAAK,MAAV,EAAkB;QAChB,OAAO,IAAAG,qBAAA,EAAe,IAAf,CAAP;MACD;;MACD,IAAIH,CAAC,KAAK,OAAV,EAAmB;QACjB,OAAO,IAAAG,qBAAA,EAAe,KAAf,CAAP;MACD;;MACDD,CAAC,GAAG,wBAASF,CAAT,EAAY,EAAZ,CAAJ;;MACA,IAAI,CAAC,oBAAaE,CAAb,CAAL,EAAsB;QACpB,OAAO,IAAAE,qBAAA,EAAeF,CAAf,CAAP;MACD;;MACDD,CAAC,GAAG,0BAAWD,CAAX,CAAJ;;MACA,IAAI,CAAC,oBAAaC,CAAb,CAAL,EAAsB;QACpB,OAAO,IAAAG,qBAAA,EAAeH,CAAf,CAAP;MACD;;MAED,OAAO,IAAAI,oBAAA,EAAcL,CAAd,CAAP;;IACF;MACE,MAAM,IAAIM,KAAJ,CAAU,0BAAV,CAAN;EAvBJ;AAyBD"}
1
+ {"version":3,"names":["pattern","tpl","template","test","value","build","ASSERTION","literal","replace","l","f","i","booleanLiteral","numericLiteral","stringLiteral","Error"],"sources":["literal.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport template from '@babel/template';\nimport {booleanLiteral, numericLiteral, stringLiteral} from '@babel/types';\n\nconst pattern = /^\\s*?=>( async)?\\s*/;\n\nconst tpl = template(`\n (function() {\n var assert = require('assert');\n assert.equal(result, ASSERTION);\n })();\n`);\n\n/**\n * Indicates whether the specified value defines a literal assertion\n * @param {string} value\n * @returns {Boolean}\n */\nexport function test(value) {\n return pattern.test(value);\n}\n\n/**\n * Builds a literal assertion\n * @param {string} value\n * @returns {ast}\n */\nexport function build(value) {\n return tpl({\n ASSERTION: literal(value.replace(pattern, '')),\n });\n}\n\n/**\n * Coerces a string into a type\n * @param {string} l\n * @returns {Literal}\n */\nfunction literal(l) {\n /* eslint complexity: [0] */\n // eslint-disable-next-line prefer-const\n let f;\n let i;\n\n switch (typeof l) {\n case 'boolean':\n return booleanLiteral(l);\n case 'number':\n return numericLiteral(l);\n case 'string':\n if (l === 'true') {\n return booleanLiteral(true);\n }\n if (l === 'false') {\n return booleanLiteral(false);\n }\n i = parseInt(l, 10);\n if (!Number.isNaN(i)) {\n return numericLiteral(i);\n }\n f = parseFloat(l);\n if (!Number.isNaN(f)) {\n return numericLiteral(f);\n }\n\n return stringLiteral(l);\n default:\n throw new Error('Unsupported literal type');\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAIA;AACA;AALA;AACA;AACA;;AAKA,IAAMA,OAAO,GAAG,qBAAqB;AAErC,IAAMC,GAAG,GAAG,IAAAC,iBAAQ,4GAKlB;;AAEF;AACA;AACA;AACA;AACA;AACO,SAASC,IAAI,CAACC,KAAK,EAAE;EAC1B,OAAOJ,OAAO,CAACG,IAAI,CAACC,KAAK,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,KAAK,CAACD,KAAK,EAAE;EAC3B,OAAOH,GAAG,CAAC;IACTK,SAAS,EAAEC,OAAO,CAACH,KAAK,CAACI,OAAO,CAACR,OAAO,EAAE,EAAE,CAAC;EAC/C,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASO,OAAO,CAACE,CAAC,EAAE;EAClB;EACA;EACA,IAAIC,CAAC;EACL,IAAIC,CAAC;EAEL,8BAAeF,CAAC;IACd,KAAK,SAAS;MACZ,OAAO,IAAAG,qBAAc,EAACH,CAAC,CAAC;IAC1B,KAAK,QAAQ;MACX,OAAO,IAAAI,qBAAc,EAACJ,CAAC,CAAC;IAC1B,KAAK,QAAQ;MACX,IAAIA,CAAC,KAAK,MAAM,EAAE;QAChB,OAAO,IAAAG,qBAAc,EAAC,IAAI,CAAC;MAC7B;MACA,IAAIH,CAAC,KAAK,OAAO,EAAE;QACjB,OAAO,IAAAG,qBAAc,EAAC,KAAK,CAAC;MAC9B;MACAD,CAAC,GAAG,wBAASF,CAAC,EAAE,EAAE,CAAC;MACnB,IAAI,CAAC,oBAAaE,CAAC,CAAC,EAAE;QACpB,OAAO,IAAAE,qBAAc,EAACF,CAAC,CAAC;MAC1B;MACAD,CAAC,GAAG,0BAAWD,CAAC,CAAC;MACjB,IAAI,CAAC,oBAAaC,CAAC,CAAC,EAAE;QACpB,OAAO,IAAAG,qBAAc,EAACH,CAAC,CAAC;MAC1B;MAEA,OAAO,IAAAI,oBAAa,EAACL,CAAC,CAAC;IACzB;MACE,MAAM,IAAIM,KAAK,CAAC,0BAA0B,CAAC;EAAC;AAElD"}
package/dist/extract.js CHANGED
@@ -1,25 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = extract;
12
-
13
9
  var _fs = _interopRequireDefault(require("fs"));
14
-
15
10
  var _traverse = _interopRequireDefault(require("@babel/traverse"));
16
-
17
11
  var _doctrine = _interopRequireDefault(require("doctrine"));
18
-
19
12
  var _types = require("@babel/types");
20
-
21
13
  var _parse = _interopRequireDefault(require("./parse"));
22
-
23
14
  /*!
24
15
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
25
16
  */
@@ -45,7 +36,6 @@ function extract(transform, filename) {
45
36
  var code = _fs.default.readFileSync(filename, {
46
37
  encoding: 'utf8'
47
38
  });
48
-
49
39
  var ast = (0, _parse.default)(code, {
50
40
  sourceFilename: filename
51
41
  });
@@ -61,7 +51,6 @@ function extract(transform, filename) {
61
51
  recoverable: true,
62
52
  lineNumbers: true
63
53
  });
64
-
65
54
  if (result.tags) {
66
55
  result.tags.forEach(function (tag) {
67
56
  if (tag.title === 'example') {
@@ -83,7 +72,6 @@ function extract(transform, filename) {
83
72
  if (done) {
84
73
  return;
85
74
  }
86
-
87
75
  path.pushContainer('body', results);
88
76
  done = true;
89
77
  }
@@ -92,22 +80,19 @@ function extract(transform, filename) {
92
80
  });
93
81
  return ast;
94
82
  }
83
+
95
84
  /**
96
85
  * Extracts the name from the specified node
97
86
  * @param {Node} node
98
87
  * @returns {string}
99
88
  */
100
-
101
-
102
89
  function getNodeName(node) {
103
90
  if (node.id) {
104
91
  return node.id.name;
105
92
  }
106
-
107
93
  if (node.key) {
108
94
  return node.key.name;
109
95
  }
110
-
111
96
  throw new Error('Could not find name for node');
112
97
  }
113
98
  /**
@@ -115,20 +100,19 @@ function getNodeName(node) {
115
100
  * @param {CommentBlock} comment
116
101
  * @returns {Boolean}
117
102
  */
118
-
119
-
120
103
  function isJSDocComment(comment) {
121
104
  var asterisks = comment.value.match(/^(\*+)/);
122
-
123
105
  if (comment.value.startsWith('/*') && comment.value.endsWith('*/')) {
124
106
  return false;
125
- } // eslint-disable-next-line
126
-
107
+ }
127
108
 
128
- return (comment.type === "CommentBlock" || // estree
129
109
  // eslint-disable-next-line
130
- comment.type === "Block" // get-comments / traditional
110
+ return (comment.type === 'CommentBlock' ||
111
+ // estree
112
+ // eslint-disable-next-line
113
+ comment.type === "Block") &&
114
+ // get-comments / traditional
131
115
  // eslint-disable-next-line
132
- ) && asterisks && asterisks[1].length === 1;
116
+ asterisks && asterisks[1].length === 1;
133
117
  }
134
118
  //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["extract","transform","filename","code","fs","readFileSync","encoding","ast","parse","sourceFilename","results","done","traverse","enter","path","node","leadingComments","filter","isJSDocComment","forEach","comment","result","doctrine","value","unwrap","sloppy","recoverable","lineNumbers","tags","tag","title","push","description","name","getNodeName","loc","type","Program","exit","isProgram","pushContainer","id","key","Error","asterisks","match","startsWith","endsWith","length"],"sources":["extract.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n\nimport fs from 'fs';\n\nimport traverse from '@babel/traverse';\nimport doctrine from 'doctrine';\nimport {isProgram} from '@babel/types';\n\nimport parse from './parse';\n/**\n * transform function which operates on each discovered example block\n * @callback transformCallback\n * @param {Object} options\n * @param {ast} options.comment\n * @param {string} options.name\n * @param {string} options.filename\n * @param {string} options.type\n */\n\n/**\n * Extracts comment blocks from the source code in the specified file\n * @param {transformCallback} transform\n * @param {string} filename\n * @returns {Array<ast>}\n */\nexport default function extract(transform, filename) {\n // eslint-disable-next-line no-sync\n const code = fs.readFileSync(filename, {encoding: 'utf8'});\n\n const ast = parse(code, {sourceFilename: filename});\n\n const results = [];\n\n let done = false;\n\n traverse(ast, {\n enter(path) {\n if (path.node.leadingComments) {\n path.node.leadingComments\n .filter(isJSDocComment)\n .forEach((comment) => {\n const result = doctrine.parse(comment.value, {\n unwrap: true,\n sloppy: true,\n recoverable: true,\n lineNumbers: true\n });\n\n if (result.tags) {\n result.tags.forEach((tag) => {\n if (tag.title === 'example') {\n results.push(transform({\n comment: tag.description,\n name: getNodeName(path.node),\n filename: path.node.loc.filename,\n type: path.node.type\n }));\n }\n });\n }\n });\n }\n },\n Program: {\n exit(path) {\n if (isProgram(path)) {\n if (done) {\n return;\n }\n path.pushContainer('body', results);\n done = true;\n }\n }\n }\n });\n\n return ast;\n}\n\n/**\n * Extracts the name from the specified node\n * @param {Node} node\n * @returns {string}\n */\nfunction getNodeName(node) {\n if (node.id) {\n return node.id.name;\n }\n\n if (node.key) {\n return node.key.name;\n }\n\n throw new Error('Could not find name for node');\n}\n/**\n * Indicates if the specified comment block is a doc block\n * @param {CommentBlock} comment\n * @returns {Boolean}\n */\nfunction isJSDocComment(comment) {\n const asterisks = comment.value.match(/^(\\*+)/);\n\n if (comment.value.startsWith('/*') && comment.value.endsWith('*/')) {\n return false;\n }\n\n // eslint-disable-next-line\n return (comment.type === `CommentBlock` || // estree\n // eslint-disable-next-line\n comment.type === `Block`) // get-comments / traditional\n // eslint-disable-next-line\n && asterisks && asterisks[ 1 ].length === 1;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["extract","transform","filename","code","fs","readFileSync","encoding","ast","parse","sourceFilename","results","done","traverse","enter","path","node","leadingComments","filter","isJSDocComment","forEach","comment","result","doctrine","value","unwrap","sloppy","recoverable","lineNumbers","tags","tag","title","push","description","name","getNodeName","loc","type","Program","exit","isProgram","pushContainer","id","key","Error","asterisks","match","startsWith","endsWith","length"],"sources":["extract.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport fs from 'fs';\n\nimport traverse from '@babel/traverse';\nimport doctrine from 'doctrine';\nimport {isProgram} from '@babel/types';\n\nimport parse from './parse';\n/**\n * transform function which operates on each discovered example block\n * @callback transformCallback\n * @param {Object} options\n * @param {ast} options.comment\n * @param {string} options.name\n * @param {string} options.filename\n * @param {string} options.type\n */\n\n/**\n * Extracts comment blocks from the source code in the specified file\n * @param {transformCallback} transform\n * @param {string} filename\n * @returns {Array<ast>}\n */\nexport default function extract(transform, filename) {\n // eslint-disable-next-line no-sync\n const code = fs.readFileSync(filename, {encoding: 'utf8'});\n\n const ast = parse(code, {sourceFilename: filename});\n\n const results = [];\n\n let done = false;\n\n traverse(ast, {\n enter(path) {\n if (path.node.leadingComments) {\n path.node.leadingComments.filter(isJSDocComment).forEach((comment) => {\n const result = doctrine.parse(comment.value, {\n unwrap: true,\n sloppy: true,\n recoverable: true,\n lineNumbers: true,\n });\n\n if (result.tags) {\n result.tags.forEach((tag) => {\n if (tag.title === 'example') {\n results.push(\n transform({\n comment: tag.description,\n name: getNodeName(path.node),\n filename: path.node.loc.filename,\n type: path.node.type,\n })\n );\n }\n });\n }\n });\n }\n },\n Program: {\n exit(path) {\n if (isProgram(path)) {\n if (done) {\n return;\n }\n path.pushContainer('body', results);\n done = true;\n }\n },\n },\n });\n\n return ast;\n}\n\n/**\n * Extracts the name from the specified node\n * @param {Node} node\n * @returns {string}\n */\nfunction getNodeName(node) {\n if (node.id) {\n return node.id.name;\n }\n\n if (node.key) {\n return node.key.name;\n }\n\n throw new Error('Could not find name for node');\n}\n/**\n * Indicates if the specified comment block is a doc block\n * @param {CommentBlock} comment\n * @returns {Boolean}\n */\nfunction isJSDocComment(comment) {\n const asterisks = comment.value.match(/^(\\*+)/);\n\n if (comment.value.startsWith('/*') && comment.value.endsWith('*/')) {\n return false;\n }\n\n // eslint-disable-next-line\n return (\n (comment.type === 'CommentBlock' || // estree\n // eslint-disable-next-line\n comment.type === `Block`) && // get-comments / traditional\n // eslint-disable-next-line\n asterisks &&\n asterisks[1].length === 1\n );\n}\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,64 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
-
5
4
  var _path = _interopRequireDefault(require("path"));
6
-
7
5
  var _generator = _interopRequireDefault(require("@babel/generator"));
8
-
9
6
  var _extract = _interopRequireDefault(require("./extract"));
10
-
11
7
  var _transform = _interopRequireDefault(require("./transform"));
12
-
13
8
  /*!
14
9
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
15
10
  */
16
11
 
17
12
  /* eslint require-jsdoc: [0] */
18
-
19
13
  /* eslint no-console: [0] */
14
+
20
15
  function isNodeModule(filename) {
21
16
  return filename.includes('node_modules') && !filename.includes('packages/node_modules');
22
17
  }
23
-
24
18
  function inject(module, filename) {
25
19
  var _generate = (0, _generator.default)((0, _extract.default)(_transform.default, filename), {
26
- compact: false,
27
- quotes: 'single'
28
- }),
29
- code = _generate.code;
30
-
20
+ compact: false,
21
+ quotes: 'single'
22
+ }),
23
+ code = _generate.code;
31
24
  if (process.env.JSDOCTRINETEST_VERBOSE) {
32
25
  console.log(filename);
33
26
  console.log(code);
34
27
  console.log();
35
28
  }
36
-
37
29
  module._compile(code, filename);
38
30
  }
39
-
40
31
  function enableSpecInjection() {
41
32
  var dir;
42
33
  var load = require.extensions['.js'];
43
-
44
34
  require.extensions['.js'] = function loadWithSpecs(m, filename) {
45
35
  if (isNodeModule(filename)) {
46
36
  return load(m, filename);
47
- } // this is really janky, but so far seems to properly ensure we only load
37
+ }
38
+ // this is really janky, but so far seems to properly ensure we only load
48
39
  // files in the directories specified to mocha
49
-
50
-
51
40
  if (!dir) {
52
41
  dir = _path.default.dirname(filename);
53
42
  }
54
-
55
43
  if (!filename.includes(dir)) {
56
44
  return load(m, filename);
57
45
  }
58
-
59
46
  return inject(m, filename);
60
47
  };
61
48
  }
62
-
63
49
  enableSpecInjection();
64
50
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["isNodeModule","filename","includes","inject","module","generate","extract","transform","compact","quotes","code","process","env","JSDOCTRINETEST_VERBOSE","console","log","_compile","enableSpecInjection","dir","load","require","extensions","loadWithSpecs","m","path","dirname"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint require-jsdoc: [0] */\n/* eslint no-console: [0] */\n\nimport path from 'path';\n\nimport generate from '@babel/generator';\n\nimport extract from './extract';\nimport transform from './transform';\n\nfunction isNodeModule(filename) {\n return filename.includes('node_modules') && !filename.includes('packages/node_modules');\n}\n\nfunction inject(module, filename) {\n const {code} = generate(extract(transform, filename), {\n compact: false,\n quotes: 'single'\n });\n\n if (process.env.JSDOCTRINETEST_VERBOSE) {\n console.log(filename);\n console.log(code);\n console.log();\n }\n module._compile(code, filename);\n}\n\nfunction enableSpecInjection() {\n let dir;\n const load = require.extensions['.js'];\n\n require.extensions['.js'] = function loadWithSpecs(m, filename) {\n if (isNodeModule(filename)) {\n return load(m, filename);\n }\n // this is really janky, but so far seems to properly ensure we only load\n // files in the directories specified to mocha\n if (!dir) {\n dir = path.dirname(filename);\n }\n\n if (!filename.includes(dir)) {\n return load(m, filename);\n }\n\n return inject(m, filename);\n };\n}\n\nenableSpecInjection();\n"],"mappings":";;;;AAOA;;AAEA;;AAEA;;AACA;;AAZA;AACA;AACA;;AAEA;;AACA;AASA,SAASA,YAAT,CAAsBC,QAAtB,EAAgC;EAC9B,OAAOA,QAAQ,CAACC,QAAT,CAAkB,cAAlB,KAAqC,CAACD,QAAQ,CAACC,QAAT,CAAkB,uBAAlB,CAA7C;AACD;;AAED,SAASC,MAAT,CAAgBC,MAAhB,EAAwBH,QAAxB,EAAkC;EAChC,gBAAe,IAAAI,kBAAA,EAAS,IAAAC,gBAAA,EAAQC,kBAAR,EAAmBN,QAAnB,CAAT,EAAuC;IACpDO,OAAO,EAAE,KAD2C;IAEpDC,MAAM,EAAE;EAF4C,CAAvC,CAAf;EAAA,IAAOC,IAAP,aAAOA,IAAP;;EAKA,IAAIC,OAAO,CAACC,GAAR,CAAYC,sBAAhB,EAAwC;IACtCC,OAAO,CAACC,GAAR,CAAYd,QAAZ;IACAa,OAAO,CAACC,GAAR,CAAYL,IAAZ;IACAI,OAAO,CAACC,GAAR;EACD;;EACDX,MAAM,CAACY,QAAP,CAAgBN,IAAhB,EAAsBT,QAAtB;AACD;;AAED,SAASgB,mBAAT,GAA+B;EAC7B,IAAIC,GAAJ;EACA,IAAMC,IAAI,GAAGC,OAAO,CAACC,UAAR,CAAmB,KAAnB,CAAb;;EAEAD,OAAO,CAACC,UAAR,CAAmB,KAAnB,IAA4B,SAASC,aAAT,CAAuBC,CAAvB,EAA0BtB,QAA1B,EAAoC;IAC9D,IAAID,YAAY,CAACC,QAAD,CAAhB,EAA4B;MAC1B,OAAOkB,IAAI,CAACI,CAAD,EAAItB,QAAJ,CAAX;IACD,CAH6D,CAI9D;IACA;;;IACA,IAAI,CAACiB,GAAL,EAAU;MACRA,GAAG,GAAGM,aAAA,CAAKC,OAAL,CAAaxB,QAAb,CAAN;IACD;;IAED,IAAI,CAACA,QAAQ,CAACC,QAAT,CAAkBgB,GAAlB,CAAL,EAA6B;MAC3B,OAAOC,IAAI,CAACI,CAAD,EAAItB,QAAJ,CAAX;IACD;;IAED,OAAOE,MAAM,CAACoB,CAAD,EAAItB,QAAJ,CAAb;EACD,CAfD;AAgBD;;AAEDgB,mBAAmB"}
1
+ {"version":3,"names":["isNodeModule","filename","includes","inject","module","generate","extract","transform","compact","quotes","code","process","env","JSDOCTRINETEST_VERBOSE","console","log","_compile","enableSpecInjection","dir","load","require","extensions","loadWithSpecs","m","path","dirname"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint require-jsdoc: [0] */\n/* eslint no-console: [0] */\n\nimport path from 'path';\n\nimport generate from '@babel/generator';\n\nimport extract from './extract';\nimport transform from './transform';\n\nfunction isNodeModule(filename) {\n return filename.includes('node_modules') && !filename.includes('packages/node_modules');\n}\n\nfunction inject(module, filename) {\n const {code} = generate(extract(transform, filename), {\n compact: false,\n quotes: 'single',\n });\n\n if (process.env.JSDOCTRINETEST_VERBOSE) {\n console.log(filename);\n console.log(code);\n console.log();\n }\n module._compile(code, filename);\n}\n\nfunction enableSpecInjection() {\n let dir;\n const load = require.extensions['.js'];\n\n require.extensions['.js'] = function loadWithSpecs(m, filename) {\n if (isNodeModule(filename)) {\n return load(m, filename);\n }\n // this is really janky, but so far seems to properly ensure we only load\n // files in the directories specified to mocha\n if (!dir) {\n dir = path.dirname(filename);\n }\n\n if (!filename.includes(dir)) {\n return load(m, filename);\n }\n\n return inject(m, filename);\n };\n}\n\nenableSpecInjection();\n"],"mappings":";;;AAOA;AAEA;AAEA;AACA;AAZA;AACA;AACA;;AAEA;AACA;;AASA,SAASA,YAAY,CAACC,QAAQ,EAAE;EAC9B,OAAOA,QAAQ,CAACC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAACD,QAAQ,CAACC,QAAQ,CAAC,uBAAuB,CAAC;AACzF;AAEA,SAASC,MAAM,CAACC,MAAM,EAAEH,QAAQ,EAAE;EAChC,gBAAe,IAAAI,kBAAQ,EAAC,IAAAC,gBAAO,EAACC,kBAAS,EAAEN,QAAQ,CAAC,EAAE;MACpDO,OAAO,EAAE,KAAK;MACdC,MAAM,EAAE;IACV,CAAC,CAAC;IAHKC,IAAI,aAAJA,IAAI;EAKX,IAAIC,OAAO,CAACC,GAAG,CAACC,sBAAsB,EAAE;IACtCC,OAAO,CAACC,GAAG,CAACd,QAAQ,CAAC;IACrBa,OAAO,CAACC,GAAG,CAACL,IAAI,CAAC;IACjBI,OAAO,CAACC,GAAG,EAAE;EACf;EACAX,MAAM,CAACY,QAAQ,CAACN,IAAI,EAAET,QAAQ,CAAC;AACjC;AAEA,SAASgB,mBAAmB,GAAG;EAC7B,IAAIC,GAAG;EACP,IAAMC,IAAI,GAAGC,OAAO,CAACC,UAAU,CAAC,KAAK,CAAC;EAEtCD,OAAO,CAACC,UAAU,CAAC,KAAK,CAAC,GAAG,SAASC,aAAa,CAACC,CAAC,EAAEtB,QAAQ,EAAE;IAC9D,IAAID,YAAY,CAACC,QAAQ,CAAC,EAAE;MAC1B,OAAOkB,IAAI,CAACI,CAAC,EAAEtB,QAAQ,CAAC;IAC1B;IACA;IACA;IACA,IAAI,CAACiB,GAAG,EAAE;MACRA,GAAG,GAAGM,aAAI,CAACC,OAAO,CAACxB,QAAQ,CAAC;IAC9B;IAEA,IAAI,CAACA,QAAQ,CAACC,QAAQ,CAACgB,GAAG,CAAC,EAAE;MAC3B,OAAOC,IAAI,CAACI,CAAC,EAAEtB,QAAQ,CAAC;IAC1B;IAEA,OAAOE,MAAM,CAACoB,CAAC,EAAEtB,QAAQ,CAAC;EAC5B,CAAC;AACH;AAEAgB,mBAAmB,EAAE"}
@@ -1,24 +1,20 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = generateSpec;
12
-
13
9
  var _types = require("@babel/types");
14
-
15
10
  var _template = _interopRequireDefault(require("@babel/template"));
16
-
17
11
  /*!
18
12
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
19
13
  */
14
+
20
15
  var makeDescribeBlock = (0, _template.default)("\n describe(DESCRIBED_THING, function() {\n IT_BLOCK\n });\n");
21
16
  var makeItBlock = (0, _template.default)("\n it(DOES_A_THING, function() {\n STATEMENTS\n });\n");
17
+
22
18
  /**
23
19
  * Wraps a test case in a Mocha it-block
24
20
  * @param {Object} a
@@ -26,14 +22,11 @@ var makeItBlock = (0, _template.default)("\n it(DOES_A_THING, function() {\n
26
22
  * @param {Object} a.testCase
27
23
  * @returns {[type]}
28
24
  */
29
-
30
25
  function generateSpec(a) {
31
26
  var itLine = a.name;
32
-
33
27
  if (a.type.toLowerCase().includes('function')) {
34
28
  itLine += '()';
35
29
  }
36
-
37
30
  var d = makeDescribeBlock({
38
31
  DESCRIBED_THING: (0, _types.stringLiteral)(a.filename),
39
32
  IT_BLOCK: makeItBlock({
@@ -1 +1 @@
1
- {"version":3,"names":["makeDescribeBlock","template","makeItBlock","generateSpec","a","itLine","name","type","toLowerCase","includes","d","DESCRIBED_THING","stringLiteral","filename","IT_BLOCK","DOES_A_THING","STATEMENTS","testCase"],"sources":["mocha-template.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {stringLiteral} from '@babel/types';\nimport template from '@babel/template';\n\nconst makeDescribeBlock = template(`\n describe(DESCRIBED_THING, function() {\n IT_BLOCK\n });\n`);\n\nconst makeItBlock = template(`\n it(DOES_A_THING, function() {\n STATEMENTS\n });\n`);\n\n/**\n * Wraps a test case in a Mocha it-block\n * @param {Object} a\n * @param {string} a.name\n * @param {Object} a.testCase\n * @returns {[type]}\n */\nexport default function generateSpec(a) {\n let itLine = a.name;\n\n if (a.type.toLowerCase().includes('function')) {\n itLine += '()';\n }\n\n const d = makeDescribeBlock({\n DESCRIBED_THING: stringLiteral(a.filename),\n IT_BLOCK: makeItBlock({\n DOES_A_THING: stringLiteral(itLine),\n STATEMENTS: a.testCase\n })\n });\n\n return d;\n}\n"],"mappings":";;;;;;;;;;;;AAIA;;AACA;;AALA;AACA;AACA;AAKA,IAAMA,iBAAiB,GAAG,IAAAC,iBAAA,sEAA1B;AAMA,IAAMC,WAAW,GAAG,IAAAD,iBAAA,+DAApB;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASE,YAAT,CAAsBC,CAAtB,EAAyB;EACtC,IAAIC,MAAM,GAAGD,CAAC,CAACE,IAAf;;EAEA,IAAIF,CAAC,CAACG,IAAF,CAAOC,WAAP,GAAqBC,QAArB,CAA8B,UAA9B,CAAJ,EAA+C;IAC7CJ,MAAM,IAAI,IAAV;EACD;;EAED,IAAMK,CAAC,GAAGV,iBAAiB,CAAC;IAC1BW,eAAe,EAAE,IAAAC,oBAAA,EAAcR,CAAC,CAACS,QAAhB,CADS;IAE1BC,QAAQ,EAAEZ,WAAW,CAAC;MACpBa,YAAY,EAAE,IAAAH,oBAAA,EAAcP,MAAd,CADM;MAEpBW,UAAU,EAAEZ,CAAC,CAACa;IAFM,CAAD;EAFK,CAAD,CAA3B;EAQA,OAAOP,CAAP;AACD"}
1
+ {"version":3,"names":["makeDescribeBlock","template","makeItBlock","generateSpec","a","itLine","name","type","toLowerCase","includes","d","DESCRIBED_THING","stringLiteral","filename","IT_BLOCK","DOES_A_THING","STATEMENTS","testCase"],"sources":["mocha-template.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {stringLiteral} from '@babel/types';\nimport template from '@babel/template';\n\nconst makeDescribeBlock = template(`\n describe(DESCRIBED_THING, function() {\n IT_BLOCK\n });\n`);\n\nconst makeItBlock = template(`\n it(DOES_A_THING, function() {\n STATEMENTS\n });\n`);\n\n/**\n * Wraps a test case in a Mocha it-block\n * @param {Object} a\n * @param {string} a.name\n * @param {Object} a.testCase\n * @returns {[type]}\n */\nexport default function generateSpec(a) {\n let itLine = a.name;\n\n if (a.type.toLowerCase().includes('function')) {\n itLine += '()';\n }\n\n const d = makeDescribeBlock({\n DESCRIBED_THING: stringLiteral(a.filename),\n IT_BLOCK: makeItBlock({\n DOES_A_THING: stringLiteral(itLine),\n STATEMENTS: a.testCase,\n }),\n });\n\n return d;\n}\n"],"mappings":";;;;;;;;AAIA;AACA;AALA;AACA;AACA;;AAKA,IAAMA,iBAAiB,GAAG,IAAAC,iBAAQ,sEAIhC;AAEF,IAAMC,WAAW,GAAG,IAAAD,iBAAQ,+DAI1B;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASE,YAAY,CAACC,CAAC,EAAE;EACtC,IAAIC,MAAM,GAAGD,CAAC,CAACE,IAAI;EAEnB,IAAIF,CAAC,CAACG,IAAI,CAACC,WAAW,EAAE,CAACC,QAAQ,CAAC,UAAU,CAAC,EAAE;IAC7CJ,MAAM,IAAI,IAAI;EAChB;EAEA,IAAMK,CAAC,GAAGV,iBAAiB,CAAC;IAC1BW,eAAe,EAAE,IAAAC,oBAAa,EAACR,CAAC,CAACS,QAAQ,CAAC;IAC1CC,QAAQ,EAAEZ,WAAW,CAAC;MACpBa,YAAY,EAAE,IAAAH,oBAAa,EAACP,MAAM,CAAC;MACnCW,UAAU,EAAEZ,CAAC,CAACa;IAChB,CAAC;EACH,CAAC,CAAC;EAEF,OAAOP,CAAC;AACV"}
package/dist/parse.js CHANGED
@@ -1,19 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = parse;
12
-
13
9
  var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
14
-
15
10
  var _babylon = require("babylon");
16
-
17
11
  /*!
18
12
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
19
13
  */
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["parse","code","options","babelParse","allowImportExportEverywhere","sourceType","plugins"],"sources":["parse.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {parse as babelParse} from 'babylon';\nimport {defaults} from 'lodash';\n\n/**\n * Wrapper around babylon's parse with defaults set\n * @param {string} code\n * @param {object} options\n * @returns {ast}\n */\nexport default function parse(code, options) {\n return babelParse(code, defaults(options, {\n allowImportExportEverywhere: true,\n sourceType: 'module',\n plugins: [\n 'jsx',\n 'flow',\n 'asyncFunctions',\n 'classConstructorCall',\n 'doExpressions',\n 'trailingFunctionCommas',\n 'objectRestSpread',\n 'decorators',\n 'classProperties',\n 'exportExtensions',\n 'exponentiationOperator',\n 'asyncGenerators',\n 'functionBind',\n 'functionSent'\n ]\n }));\n}\n"],"mappings":";;;;;;;;;;;;;;AAIA;;AAJA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,KAAT,CAAeC,IAAf,EAAqBC,OAArB,EAA8B;EAC3C,OAAO,IAAAC,cAAA,EAAWF,IAAX,EAAiB,wBAASC,OAAT,EAAkB;IACxCE,2BAA2B,EAAE,IADW;IAExCC,UAAU,EAAE,QAF4B;IAGxCC,OAAO,EAAE,CACP,KADO,EAEP,MAFO,EAGP,gBAHO,EAIP,sBAJO,EAKP,eALO,EAMP,wBANO,EAOP,kBAPO,EAQP,YARO,EASP,iBATO,EAUP,kBAVO,EAWP,wBAXO,EAYP,iBAZO,EAaP,cAbO,EAcP,cAdO;EAH+B,CAAlB,CAAjB,CAAP;AAoBD"}
1
+ {"version":3,"names":["parse","code","options","babelParse","allowImportExportEverywhere","sourceType","plugins"],"sources":["parse.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {parse as babelParse} from 'babylon';\nimport {defaults} from 'lodash';\n\n/**\n * Wrapper around babylon's parse with defaults set\n * @param {string} code\n * @param {object} options\n * @returns {ast}\n */\nexport default function parse(code, options) {\n return babelParse(\n code,\n defaults(options, {\n allowImportExportEverywhere: true,\n sourceType: 'module',\n plugins: [\n 'jsx',\n 'flow',\n 'asyncFunctions',\n 'classConstructorCall',\n 'doExpressions',\n 'trailingFunctionCommas',\n 'objectRestSpread',\n 'decorators',\n 'classProperties',\n 'exportExtensions',\n 'exponentiationOperator',\n 'asyncGenerators',\n 'functionBind',\n 'functionSent',\n ],\n })\n );\n}\n"],"mappings":";;;;;;;;;AAIA;AAJA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,KAAK,CAACC,IAAI,EAAEC,OAAO,EAAE;EAC3C,OAAO,IAAAC,cAAU,EACfF,IAAI,EACJ,wBAASC,OAAO,EAAE;IAChBE,2BAA2B,EAAE,IAAI;IACjCC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAE,CACP,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,cAAc,EACd,cAAc;EAElB,CAAC,CAAC,CACH;AACH"}
package/dist/transform.js CHANGED
@@ -1,31 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = transform;
12
-
13
9
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
14
-
15
10
  var _template = _interopRequireDefault(require("@babel/template"));
16
-
17
11
  var _traverse = _interopRequireDefault(require("@babel/traverse"));
18
-
19
12
  var _parse = _interopRequireDefault(require("./parse"));
20
-
21
13
  var _mochaTemplate = _interopRequireDefault(require("./mocha-template"));
22
-
23
14
  var _literal = require("./assertions/literal");
24
-
25
15
  /*!
26
16
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
27
17
  */
18
+
28
19
  var assertionStatementTemplate = (0, _template.default)("\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n");
20
+
29
21
  /**
30
22
  * @param {Object} options
31
23
  * @param {ast} options.comment
@@ -34,18 +26,16 @@ var assertionStatementTemplate = (0, _template.default)("\n return Promise.reso
34
26
  * @param {string} options.type
35
27
  * @returns {ast}
36
28
  */
37
-
38
29
  function transform(_ref) {
39
30
  var comment = _ref.comment,
40
- name = _ref.name,
41
- filename = _ref.filename,
42
- type = _ref.type;
31
+ name = _ref.name,
32
+ filename = _ref.filename,
33
+ type = _ref.type;
43
34
  var ast = (0, _parse.default)(comment);
44
35
  (0, _traverse.default)(ast, {
45
36
  enter: function enter(path) {
46
37
  if (path.node.trailingComments) {
47
38
  var assertions = path.node.trailingComments.map(makeAsserter);
48
-
49
39
  if (assertions.length) {
50
40
  (0, _deleteProperty.default)(path.node, 'trailingComments');
51
41
  path.replaceWith(assertionStatementTemplate({
@@ -63,18 +53,16 @@ function transform(_ref) {
63
53
  type: type
64
54
  });
65
55
  }
56
+
66
57
  /**
67
58
  * Takes a trailing comment from an example block and changes it to an assertion
68
59
  * @param {CommentBlock} comment
69
60
  * @returns {ast}
70
61
  */
71
-
72
-
73
62
  function makeAsserter(comment) {
74
63
  if ((0, _literal.test)(comment.value)) {
75
64
  return (0, _literal.build)(comment.value);
76
65
  }
77
-
78
66
  return null;
79
67
  }
80
68
  //# sourceMappingURL=transform.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["assertionStatementTemplate","template","transform","comment","name","filename","type","ast","parse","traverse","enter","path","node","trailingComments","assertions","map","makeAsserter","length","replaceWith","ORIGINAL","ASSERTIONS","generateSpec","testCase","literalAssertionTest","value","buildLiteralAssertion"],"sources":["transform.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n\nimport template from '@babel/template';\nimport traverse from '@babel/traverse';\n\nimport parse from './parse';\nimport generateSpec from './mocha-template';\nimport {\n build as buildLiteralAssertion,\n test as literalAssertionTest\n} from './assertions/literal';\n\nconst assertionStatementTemplate = template(`\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n`);\n\n/**\n * @param {Object} options\n * @param {ast} options.comment\n * @param {string} options.name\n * @param {string} options.filename\n * @param {string} options.type\n * @returns {ast}\n */\nexport default function transform({\n comment, name, filename, type\n}) {\n const ast = parse(comment);\n\n traverse(ast, {\n enter(path) {\n if (path.node.trailingComments) {\n const assertions = path.node.trailingComments.map(makeAsserter);\n\n if (assertions.length) {\n Reflect.deleteProperty(path.node, 'trailingComments');\n\n path.replaceWith(assertionStatementTemplate({\n ORIGINAL: path.node,\n ASSERTIONS: assertions\n }));\n }\n }\n }\n });\n\n return generateSpec({\n testCase: ast,\n name,\n filename,\n type\n });\n}\n\n/**\n * Takes a trailing comment from an example block and changes it to an assertion\n * @param {CommentBlock} comment\n * @returns {ast}\n */\nfunction makeAsserter(comment) {\n if (literalAssertionTest(comment.value)) {\n return buildLiteralAssertion(comment.value);\n }\n\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;AAKA;;AACA;;AAEA;;AACA;;AACA;;AAVA;AACA;AACA;AAaA,IAAMA,0BAA0B,GAAG,IAAAC,iBAAA,mGAAnC;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,SAAT,OAEZ;EAAA,IADDC,OACC,QADDA,OACC;EAAA,IADQC,IACR,QADQA,IACR;EAAA,IADcC,QACd,QADcA,QACd;EAAA,IADwBC,IACxB,QADwBA,IACxB;EACD,IAAMC,GAAG,GAAG,IAAAC,cAAA,EAAML,OAAN,CAAZ;EAEA,IAAAM,iBAAA,EAASF,GAAT,EAAc;IACZG,KADY,iBACNC,IADM,EACA;MACV,IAAIA,IAAI,CAACC,IAAL,CAAUC,gBAAd,EAAgC;QAC9B,IAAMC,UAAU,GAAGH,IAAI,CAACC,IAAL,CAAUC,gBAAV,CAA2BE,GAA3B,CAA+BC,YAA/B,CAAnB;;QAEA,IAAIF,UAAU,CAACG,MAAf,EAAuB;UACrB,6BAAuBN,IAAI,CAACC,IAA5B,EAAkC,kBAAlC;UAEAD,IAAI,CAACO,WAAL,CAAiBlB,0BAA0B,CAAC;YAC1CmB,QAAQ,EAAER,IAAI,CAACC,IAD2B;YAE1CQ,UAAU,EAAEN;UAF8B,CAAD,CAA3C;QAID;MACF;IACF;EAdW,CAAd;EAiBA,OAAO,IAAAO,sBAAA,EAAa;IAClBC,QAAQ,EAAEf,GADQ;IAElBH,IAAI,EAAJA,IAFkB;IAGlBC,QAAQ,EAARA,QAHkB;IAIlBC,IAAI,EAAJA;EAJkB,CAAb,CAAP;AAMD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASU,YAAT,CAAsBb,OAAtB,EAA+B;EAC7B,IAAI,IAAAoB,aAAA,EAAqBpB,OAAO,CAACqB,KAA7B,CAAJ,EAAyC;IACvC,OAAO,IAAAC,cAAA,EAAsBtB,OAAO,CAACqB,KAA9B,CAAP;EACD;;EAED,OAAO,IAAP;AACD"}
1
+ {"version":3,"names":["assertionStatementTemplate","template","transform","comment","name","filename","type","ast","parse","traverse","enter","path","node","trailingComments","assertions","map","makeAsserter","length","replaceWith","ORIGINAL","ASSERTIONS","generateSpec","testCase","literalAssertionTest","value","buildLiteralAssertion"],"sources":["transform.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport template from '@babel/template';\nimport traverse from '@babel/traverse';\n\nimport parse from './parse';\nimport generateSpec from './mocha-template';\nimport {build as buildLiteralAssertion, test as literalAssertionTest} from './assertions/literal';\n\nconst assertionStatementTemplate = template(`\n return Promise.resolve(ORIGINAL)\n .then(function(result) {\n ASSERTIONS\n })\n`);\n\n/**\n * @param {Object} options\n * @param {ast} options.comment\n * @param {string} options.name\n * @param {string} options.filename\n * @param {string} options.type\n * @returns {ast}\n */\nexport default function transform({comment, name, filename, type}) {\n const ast = parse(comment);\n\n traverse(ast, {\n enter(path) {\n if (path.node.trailingComments) {\n const assertions = path.node.trailingComments.map(makeAsserter);\n\n if (assertions.length) {\n Reflect.deleteProperty(path.node, 'trailingComments');\n\n path.replaceWith(\n assertionStatementTemplate({\n ORIGINAL: path.node,\n ASSERTIONS: assertions,\n })\n );\n }\n }\n },\n });\n\n return generateSpec({\n testCase: ast,\n name,\n filename,\n type,\n });\n}\n\n/**\n * Takes a trailing comment from an example block and changes it to an assertion\n * @param {CommentBlock} comment\n * @returns {ast}\n */\nfunction makeAsserter(comment) {\n if (literalAssertionTest(comment.value)) {\n return buildLiteralAssertion(comment.value);\n }\n\n return null;\n}\n"],"mappings":";;;;;;;;;AAIA;AACA;AAEA;AACA;AACA;AATA;AACA;AACA;;AASA,IAAMA,0BAA0B,GAAG,IAAAC,iBAAQ,mGAKzC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,SAAS,OAAkC;EAAA,IAAhCC,OAAO,QAAPA,OAAO;IAAEC,IAAI,QAAJA,IAAI;IAAEC,QAAQ,QAARA,QAAQ;IAAEC,IAAI,QAAJA,IAAI;EAC9D,IAAMC,GAAG,GAAG,IAAAC,cAAK,EAACL,OAAO,CAAC;EAE1B,IAAAM,iBAAQ,EAACF,GAAG,EAAE;IACZG,KAAK,iBAACC,IAAI,EAAE;MACV,IAAIA,IAAI,CAACC,IAAI,CAACC,gBAAgB,EAAE;QAC9B,IAAMC,UAAU,GAAGH,IAAI,CAACC,IAAI,CAACC,gBAAgB,CAACE,GAAG,CAACC,YAAY,CAAC;QAE/D,IAAIF,UAAU,CAACG,MAAM,EAAE;UACrB,6BAAuBN,IAAI,CAACC,IAAI,EAAE,kBAAkB,CAAC;UAErDD,IAAI,CAACO,WAAW,CACdlB,0BAA0B,CAAC;YACzBmB,QAAQ,EAAER,IAAI,CAACC,IAAI;YACnBQ,UAAU,EAAEN;UACd,CAAC,CAAC,CACH;QACH;MACF;IACF;EACF,CAAC,CAAC;EAEF,OAAO,IAAAO,sBAAY,EAAC;IAClBC,QAAQ,EAAEf,GAAG;IACbH,IAAI,EAAJA,IAAI;IACJC,QAAQ,EAARA,QAAQ;IACRC,IAAI,EAAJA;EACF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASU,YAAY,CAACb,OAAO,EAAE;EAC7B,IAAI,IAAAoB,aAAoB,EAACpB,OAAO,CAACqB,KAAK,CAAC,EAAE;IACvC,OAAO,IAAAC,cAAqB,EAACtB,OAAO,CAACqB,KAAK,CAAC;EAC7C;EAEA,OAAO,IAAI;AACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/jsdoctrinetest",
3
- "version": "3.0.0-beta.9",
3
+ "version": "3.0.0-beta.91",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "contributors": [
@@ -41,7 +41,7 @@
41
41
  "@babel/types": "^7.14.9"
42
42
  },
43
43
  "dependencies": {
44
- "@webex/test-helper-chai": "3.0.0-beta.9",
44
+ "@webex/test-helper-chai": "3.0.0-beta.91",
45
45
  "babylon": "^6.18.0",
46
46
  "doctrine": "^2.1.0",
47
47
  "lodash": "^4.17.21"
@@ -3,11 +3,7 @@
3
3
  */
4
4
 
5
5
  import template from '@babel/template';
6
- import {
7
- booleanLiteral,
8
- numericLiteral,
9
- stringLiteral
10
- } from '@babel/types';
6
+ import {booleanLiteral, numericLiteral, stringLiteral} from '@babel/types';
11
7
 
12
8
  const pattern = /^\s*?=>( async)?\s*/;
13
9
 
@@ -34,7 +30,7 @@ export function test(value) {
34
30
  */
35
31
  export function build(value) {
36
32
  return tpl({
37
- ASSERTION: literal(value.replace(pattern, ''))
33
+ ASSERTION: literal(value.replace(pattern, '')),
38
34
  });
39
35
  }
40
36
 
@@ -46,7 +42,8 @@ export function build(value) {
46
42
  function literal(l) {
47
43
  /* eslint complexity: [0] */
48
44
  // eslint-disable-next-line prefer-const
49
- let f, i;
45
+ let f;
46
+ let i;
50
47
 
51
48
  switch (typeof l) {
52
49
  case 'boolean':
package/src/extract.js CHANGED
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
 
5
-
6
5
  import fs from 'fs';
7
6
 
8
7
  import traverse from '@babel/traverse';
@@ -39,29 +38,29 @@ export default function extract(transform, filename) {
39
38
  traverse(ast, {
40
39
  enter(path) {
41
40
  if (path.node.leadingComments) {
42
- path.node.leadingComments
43
- .filter(isJSDocComment)
44
- .forEach((comment) => {
45
- const result = doctrine.parse(comment.value, {
46
- unwrap: true,
47
- sloppy: true,
48
- recoverable: true,
49
- lineNumbers: true
50
- });
41
+ path.node.leadingComments.filter(isJSDocComment).forEach((comment) => {
42
+ const result = doctrine.parse(comment.value, {
43
+ unwrap: true,
44
+ sloppy: true,
45
+ recoverable: true,
46
+ lineNumbers: true,
47
+ });
51
48
 
52
- if (result.tags) {
53
- result.tags.forEach((tag) => {
54
- if (tag.title === 'example') {
55
- results.push(transform({
49
+ if (result.tags) {
50
+ result.tags.forEach((tag) => {
51
+ if (tag.title === 'example') {
52
+ results.push(
53
+ transform({
56
54
  comment: tag.description,
57
55
  name: getNodeName(path.node),
58
56
  filename: path.node.loc.filename,
59
- type: path.node.type
60
- }));
61
- }
62
- });
63
- }
64
- });
57
+ type: path.node.type,
58
+ })
59
+ );
60
+ }
61
+ });
62
+ }
63
+ });
65
64
  }
66
65
  },
67
66
  Program: {
@@ -73,8 +72,8 @@ export default function extract(transform, filename) {
73
72
  path.pushContainer('body', results);
74
73
  done = true;
75
74
  }
76
- }
77
- }
75
+ },
76
+ },
78
77
  });
79
78
 
80
79
  return ast;
@@ -109,9 +108,12 @@ function isJSDocComment(comment) {
109
108
  }
110
109
 
111
110
  // eslint-disable-next-line
112
- return (comment.type === `CommentBlock` || // estree
113
- // eslint-disable-next-line
114
- comment.type === `Block`) // get-comments / traditional
111
+ return (
112
+ (comment.type === 'CommentBlock' || // estree
113
+ // eslint-disable-next-line
114
+ comment.type === `Block`) && // get-comments / traditional
115
115
  // eslint-disable-next-line
116
- && asterisks && asterisks[ 1 ].length === 1;
116
+ asterisks &&
117
+ asterisks[1].length === 1
118
+ );
117
119
  }
package/src/index.js CHANGED
@@ -19,7 +19,7 @@ function isNodeModule(filename) {
19
19
  function inject(module, filename) {
20
20
  const {code} = generate(extract(transform, filename), {
21
21
  compact: false,
22
- quotes: 'single'
22
+ quotes: 'single',
23
23
  });
24
24
 
25
25
  if (process.env.JSDOCTRINETEST_VERBOSE) {
@@ -35,8 +35,8 @@ export default function generateSpec(a) {
35
35
  DESCRIBED_THING: stringLiteral(a.filename),
36
36
  IT_BLOCK: makeItBlock({
37
37
  DOES_A_THING: stringLiteral(itLine),
38
- STATEMENTS: a.testCase
39
- })
38
+ STATEMENTS: a.testCase,
39
+ }),
40
40
  });
41
41
 
42
42
  return d;
package/src/parse.js CHANGED
@@ -12,24 +12,27 @@ import {defaults} from 'lodash';
12
12
  * @returns {ast}
13
13
  */
14
14
  export default function parse(code, options) {
15
- return babelParse(code, defaults(options, {
16
- allowImportExportEverywhere: true,
17
- sourceType: 'module',
18
- plugins: [
19
- 'jsx',
20
- 'flow',
21
- 'asyncFunctions',
22
- 'classConstructorCall',
23
- 'doExpressions',
24
- 'trailingFunctionCommas',
25
- 'objectRestSpread',
26
- 'decorators',
27
- 'classProperties',
28
- 'exportExtensions',
29
- 'exponentiationOperator',
30
- 'asyncGenerators',
31
- 'functionBind',
32
- 'functionSent'
33
- ]
34
- }));
15
+ return babelParse(
16
+ code,
17
+ defaults(options, {
18
+ allowImportExportEverywhere: true,
19
+ sourceType: 'module',
20
+ plugins: [
21
+ 'jsx',
22
+ 'flow',
23
+ 'asyncFunctions',
24
+ 'classConstructorCall',
25
+ 'doExpressions',
26
+ 'trailingFunctionCommas',
27
+ 'objectRestSpread',
28
+ 'decorators',
29
+ 'classProperties',
30
+ 'exportExtensions',
31
+ 'exponentiationOperator',
32
+ 'asyncGenerators',
33
+ 'functionBind',
34
+ 'functionSent',
35
+ ],
36
+ })
37
+ );
35
38
  }
package/src/transform.js CHANGED
@@ -2,16 +2,12 @@
2
2
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
3
  */
4
4
 
5
-
6
5
  import template from '@babel/template';
7
6
  import traverse from '@babel/traverse';
8
7
 
9
8
  import parse from './parse';
10
9
  import generateSpec from './mocha-template';
11
- import {
12
- build as buildLiteralAssertion,
13
- test as literalAssertionTest
14
- } from './assertions/literal';
10
+ import {build as buildLiteralAssertion, test as literalAssertionTest} from './assertions/literal';
15
11
 
16
12
  const assertionStatementTemplate = template(`
17
13
  return Promise.resolve(ORIGINAL)
@@ -28,9 +24,7 @@ const assertionStatementTemplate = template(`
28
24
  * @param {string} options.type
29
25
  * @returns {ast}
30
26
  */
31
- export default function transform({
32
- comment, name, filename, type
33
- }) {
27
+ export default function transform({comment, name, filename, type}) {
34
28
  const ast = parse(comment);
35
29
 
36
30
  traverse(ast, {
@@ -41,20 +35,22 @@ export default function transform({
41
35
  if (assertions.length) {
42
36
  Reflect.deleteProperty(path.node, 'trailingComments');
43
37
 
44
- path.replaceWith(assertionStatementTemplate({
45
- ORIGINAL: path.node,
46
- ASSERTIONS: assertions
47
- }));
38
+ path.replaceWith(
39
+ assertionStatementTemplate({
40
+ ORIGINAL: path.node,
41
+ ASSERTIONS: assertions,
42
+ })
43
+ );
48
44
  }
49
45
  }
50
- }
46
+ },
51
47
  });
52
48
 
53
49
  return generateSpec({
54
50
  testCase: ast,
55
51
  name,
56
52
  filename,
57
- type
53
+ type,
58
54
  });
59
55
  }
60
56