@webex/jsdoctrinetest 3.0.0-beta.13 → 3.0.0-beta.15

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`.
@@ -59,7 +59,8 @@ function build(value) {
59
59
  function literal(l) {
60
60
  /* eslint complexity: [0] */
61
61
  // eslint-disable-next-line prefer-const
62
- var f, i;
62
+ var f;
63
+ var i;
63
64
 
64
65
  switch ((0, _typeof2.default)(l)) {
65
66
  case 'boolean':
@@ -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,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;EACA,IAAIC,CAAJ;;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"}
package/dist/extract.js CHANGED
@@ -125,10 +125,10 @@ function isJSDocComment(comment) {
125
125
  } // eslint-disable-next-line
126
126
 
127
127
 
128
- return (comment.type === "CommentBlock" || // estree
128
+ return (comment.type === 'CommentBlock' || // estree
129
129
  // eslint-disable-next-line
130
- comment.type === "Block" // get-comments / traditional
130
+ comment.type === "Block") && // get-comments / traditional
131
131
  // eslint-disable-next-line
132
- ) && asterisks && asterisks[1].length === 1;
132
+ asterisks && asterisks[1].length === 1;
133
133
  }
134
134
  //# 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.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,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 +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,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"}
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,KAAT,CAAeC,IAAf,EAAqBC,OAArB,EAA8B;EAC3C,OAAO,IAAAC,cAAA,EACLF,IADK,EAEL,wBAASC,OAAT,EAAkB;IAChBE,2BAA2B,EAAE,IADb;IAEhBC,UAAU,EAAE,QAFI;IAGhBC,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;EAHO,CAAlB,CAFK,CAAP;AAuBD"}
@@ -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,iBAAA,mGAAnC;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,SAAT,OAAoD;EAAA,IAAhCC,OAAgC,QAAhCA,OAAgC;EAAA,IAAvBC,IAAuB,QAAvBA,IAAuB;EAAA,IAAjBC,QAAiB,QAAjBA,QAAiB;EAAA,IAAPC,IAAO,QAAPA,IAAO;EACjE,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,CACElB,0BAA0B,CAAC;YACzBmB,QAAQ,EAAER,IAAI,CAACC,IADU;YAEzBQ,UAAU,EAAEN;UAFa,CAAD,CAD5B;QAMD;MACF;IACF;EAhBW,CAAd;EAmBA,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/jsdoctrinetest",
3
- "version": "3.0.0-beta.13",
3
+ "version": "3.0.0-beta.15",
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.13",
44
+ "@webex/test-helper-chai": "3.0.0-beta.15",
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