Socket
Socket
Sign inDemoInstall

@tkskto/vue-component-analyzer

Package Overview
Dependencies
161
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.2.1 to 0.3.0

15

CHANGELOG.md
# Changelog
## 0.3.0
### Updates
- \#75 add silent mode
### Bug Fixes
- \#73 fix a bug in file import process.
- \#74 fix a bug in client JavaScript logic.
### Chores
- \#72 update `ws` 7.4.4 to 7.4.6
## 0.2.1

@@ -4,0 +19,0 @@

12

dist/client.js

@@ -193,11 +193,10 @@ class MyCustomEvent {

renderMetaData() {
let metaString = '';
const fileSize = (this._fileSize / 1024).toFixed(2);
const lastUpdated = this._lastModifiedTime === 0 ? 0 : this._model.getHowManyDaysAgo(new Date(this._lastModifiedTime));
if (fileSize && lastUpdated) {
return `
<span class="file__meta meta__fileSize">FileSize: ${fileSize} KB</span>
<span class="file__meta meta__lastUpdated">LastUpdated: ${lastUpdated} days ago</span>
`;
if (fileSize) {
metaString += `<span class="file__meta meta__fileSize">FileSize: ${fileSize} KB</span>`;
}
return '';
metaString += `<span class="file__meta meta__lastUpdated">LastUpdated: ${lastUpdated} days ago</span>`;
return metaString;
}

@@ -322,3 +321,2 @@ renderDetails() {

this._app.innerHTML = html + text;
console.log('rendered');
}

@@ -325,0 +323,0 @@ }

/*!
@tkskto/vue-component-analyzer v0.2.1
@tkskto/vue-component-analyzer v0.3.0
https://github.com/tkskto/

@@ -13,48 +13,105 @@ Released under the MIT License.

vue-eslint-parser -- 7.6.0
ws -- 7.4.4
ws -- 7.4.6
*/
'use strict';
var fs_1 = require('fs');
var path_1 = require('path');
var vue_eslint_parser_1 = require('vue-eslint-parser');
var http = require('http');
var require$$0 = require('ejs');
var express = require('express');
var webSocket = require('ws');
var opener = require('opener');
var mkdirp = require('mkdirp');
var require$$3 = require('commander');
var globby = require('globby');
var require$$1 = require('fs');
var require$$2 = require('path');
var require$$0 = require('vue-eslint-parser');
var require$$1$1 = require('http');
var require$$2$1 = require('ejs');
var require$$3 = require('express');
var require$$4 = require('ws');
var require$$5 = require('opener');
var require$$6 = require('mkdirp');
var require$$7 = require('commander');
var require$$8 = require('globby');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var fs_1__default = /*#__PURE__*/_interopDefaultLegacy(fs_1);
var path_1__default = /*#__PURE__*/_interopDefaultLegacy(path_1);
var vue_eslint_parser_1__default = /*#__PURE__*/_interopDefaultLegacy(vue_eslint_parser_1);
var http__default = /*#__PURE__*/_interopDefaultLegacy(http);
var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1);
var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
var express__default = /*#__PURE__*/_interopDefaultLegacy(express);
var webSocket__default = /*#__PURE__*/_interopDefaultLegacy(webSocket);
var opener__default = /*#__PURE__*/_interopDefaultLegacy(opener);
var mkdirp__default = /*#__PURE__*/_interopDefaultLegacy(mkdirp);
var require$$1__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$1$1);
var require$$2__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$2$1);
var require$$3__default = /*#__PURE__*/_interopDefaultLegacy(require$$3);
var globby__default = /*#__PURE__*/_interopDefaultLegacy(globby);
var require$$4__default = /*#__PURE__*/_interopDefaultLegacy(require$$4);
var require$$5__default = /*#__PURE__*/_interopDefaultLegacy(require$$5);
var require$$6__default = /*#__PURE__*/_interopDefaultLegacy(require$$6);
var require$$7__default = /*#__PURE__*/_interopDefaultLegacy(require$$7);
var require$$8__default = /*#__PURE__*/_interopDefaultLegacy(require$$8);
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
var _temp = {};
var Constant = {};
Object.defineProperty(Constant, "__esModule", { value: true });
Constant.FORMAT = void 0;
Constant.FORMAT = {
BROWSER: 'browser',
JSON: 'json',
BOTH: 'both',
};
var Model$1 = {};
Object.defineProperty(Model$1, "__esModule", { value: true });
Model$1.model = void 0;
const Constant_1$1 = Constant;
class Model {
constructor() {
this._resourceRoot = 'src';
this._format = Constant_1$1.FORMAT.BROWSER;
this._outDirectory = 'out';
this._port = '8888';
this._isSilentMode = false;
}
get resourceRoot() {
return this._resourceRoot;
}
set resourceRoot(value) {
this._resourceRoot = value;
}
get format() {
return this._format;
}
set format(value) {
this._format = value;
}
get outDirectory() {
return this._outDirectory;
}
set outDirectory(value) {
this._outDirectory = value;
}
get port() {
return this._port;
}
set port(value) {
this._port = value;
}
get isSilentMode() {
return this._isSilentMode;
}
set isSilentMode(value) {
this._isSilentMode = value;
}
}
Model$1.model = new Model();
var utils = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveFile = exports.getDeclarationSyntax = exports.getImportDeclaration = void 0;
const { existsSync } = fs_1__default['default'];
const { resolve, extname, dirname } = path_1__default['default'];
var Analyzer$2 = {};
var utils = {};
Object.defineProperty(utils, "__esModule", { value: true });
utils.resolveFile = utils.getDeclarationSyntax = utils.getImportDeclaration = void 0;
const Model_1$2 = Model$1;
const { existsSync } = require$$1__default['default'];
const { resolve, extname, dirname } = require$$2__default['default'];
const getImportDeclaration = (nodeArr) => {
return nodeArr.filter((node) => node.type === 'ImportDeclaration');
};
exports.getImportDeclaration = getImportDeclaration;
utils.getImportDeclaration = getImportDeclaration;
const getDeclarationSyntax = (tokens, targetKeyName) => {

@@ -96,3 +153,3 @@ let isTargetToken = false;

};
exports.getDeclarationSyntax = getDeclarationSyntax;
utils.getDeclarationSyntax = getDeclarationSyntax;
const resolveFile = (_filename, _currentFileName) => {

@@ -107,3 +164,3 @@ let filename = '';

else if (_filename.startsWith('~') || _filename.startsWith('@')) {
filename = _filename.replace('~', '.').replace('@', '.');
filename = _filename.replace('~', Model_1$2.model.resourceRoot).replace('@', Model_1$2.model.resourceRoot);
}

@@ -125,9 +182,9 @@ if (filename) {

};
exports.resolveFile = resolveFile;
});
utils.resolveFile = resolveFile;
var FileCounter_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileCounter = void 0;
var FileCounter$1 = {};
Object.defineProperty(FileCounter$1, "__esModule", { value: true });
FileCounter$1.FileCounter = void 0;
const path_1$1 = require$$2__default['default'];
class FileCounter {

@@ -138,3 +195,3 @@ constructor() {

add(_filename) {
const filename = path_1__default['default'].resolve(_filename);
const filename = path_1$1.resolve(_filename);
if (Object.prototype.hasOwnProperty.call(this._count, filename)) {

@@ -151,10 +208,10 @@ this._count[filename]++;

}
exports.FileCounter = FileCounter;
});
FileCounter$1.FileCounter = FileCounter;
var VueComponent_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.VueComponent = void 0;
var VueComponent$1 = {};
Object.defineProperty(VueComponent$1, "__esModule", { value: true });
VueComponent$1.VueComponent = void 0;
const vue_eslint_parser_1 = require$$0__default['default'];
const utils_1$1 = utils;
const parserOption = {

@@ -177,3 +234,3 @@ ecmaVersion: 2018,

try {
const propsDeclaration = JSON.parse(utils.getDeclarationSyntax(tokens, 'props'));
const propsDeclaration = JSON.parse(utils_1$1.getDeclarationSyntax(tokens, 'props'));
if (propsDeclaration && propsDeclaration.props) {

@@ -198,7 +255,7 @@ return propsDeclaration.props;

const scriptString = ((_c = scriptBody === null || scriptBody === void 0 ? void 0 : scriptBody.groups) === null || _c === void 0 ? void 0 : _c.script) || '';
const esLintProgram = vue_eslint_parser_1__default['default'].parse(scriptString, parserOption);
const esLintProgram = vue_eslint_parser_1.parse(scriptString, parserOption);
if (esLintProgram.tokens) {
this._props = this.getProps(esLintProgram.tokens);
}
this._importDeclaration = utils.getImportDeclaration(esLintProgram.body);
this._importDeclaration = utils_1$1.getImportDeclaration(esLintProgram.body);
}

@@ -221,25 +278,26 @@ addChildReport(report) {

}
exports.VueComponent = VueComponent;
});
VueComponent$1.VueComponent = VueComponent;
var Analyzer_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.Analyzer = void 0;
Object.defineProperty(Analyzer$2, "__esModule", { value: true });
Analyzer$2.Analyzer = void 0;
const utils_1 = utils;
const fs_1 = require$$1__default['default'];
const path_1 = require$$2__default['default'];
const FileCounter_1 = FileCounter$1;
const VueComponent_1 = VueComponent$1;
const Model_1$1 = Model$1;
const cwd = process.cwd();
class Analyzer {
class Analyzer$1 {
constructor() {
this.getImportDeclarationTree = (fileName, parents, isTest = false) => {
const filename = path_1__default['default'].resolve(cwd, fileName);
const filename = path_1.resolve(cwd, fileName);
const shortFilename = filename.replace(cwd, '');
const stat = fs_1__default['default'].statSync(filename);
const stat = fs_1.statSync(filename);
const ancestorList = parents.concat();
ancestorList.push(fileName);
console.log(`read ${filename}.`);
if (!Model_1$1.model.isSilentMode) {
console.log(`read ${filename}`);
}
this._counter.add(shortFilename);
if (path_1__default['default'].extname(filename) === '' || path_1__default['default'].extname(filename) !== '.vue') {
if (path_1.extname(filename) === '' || path_1.extname(filename) !== '.vue') {
return {

@@ -253,3 +311,3 @@ name: shortFilename,

}
const contents = fs_1__default['default'].readFileSync(filename, 'utf-8');
const contents = fs_1.readFileSync(filename, 'utf-8');
const component = new VueComponent_1.VueComponent(shortFilename, contents, stat);

@@ -260,3 +318,3 @@ try {

if (source) {
const nextFilename = utils.resolveFile(source, filename);
const nextFilename = utils_1.resolveFile(source, filename);
if (nextFilename) {

@@ -285,19 +343,23 @@ if (parents.includes(nextFilename)) {

}
exports.Analyzer = Analyzer;
});
Analyzer$2.Analyzer = Analyzer$1;
const { renderFile } = require$$0__default['default'];
var server = {};
const projectRoot = path_1__default['default'].resolve(__dirname, '..');
Object.defineProperty(server, "__esModule", { value: true });
const path$1 = require$$2__default['default'];
const http = require$$1__default$1['default'];
const { renderFile } = require$$2__default$1['default'];
const express = require$$3__default['default'];
const webSocket = require$$4__default['default'];
const opener = require$$5__default['default'];
const projectRoot = path$1.resolve(__dirname, '..');
const startServer$1 = (port, json) => {
const HOST = '127.0.0.1';
const app = express__default['default']();
const app = express();
app.engine('ejs', renderFile);
app.set('view engine', 'ejs');
app.set('views', `${projectRoot}/views`);
app.use(express__default['default'].static(`${projectRoot}/`));
const server = http__default['default'].createServer(app);
const wss = new webSocket__default['default'].Server({
app.use(express.static(`${projectRoot}/`));
const server = http.createServer(app);
const wss = new webSocket.Server({
server,

@@ -325,3 +387,3 @@ });

console.log('Use \'Ctrl+C\' to close it');
opener__default['default'](url);
opener(url);
wss.on('connection', (ws) => {

@@ -337,8 +399,4 @@ wss.clients.forEach((client) => {

};
var startServer_1 = startServer$1;
server.startServer = startServer$1;
var server = /*#__PURE__*/Object.defineProperty({
startServer: startServer_1
}, '__esModule', {value: true});
var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -353,16 +411,14 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
const { Analyzer } = Analyzer_1;
Object.defineProperty(_temp, "__esModule", { value: true });
const Constant_1 = Constant;
const Model_1 = Model$1;
const { Analyzer } = Analyzer$2;
const { startServer } = server;
const { writeFileSync } = fs_1__default['default'];
const { program } = require$$3__default['default'];
const FORMAT = {
BROWSER: 'browser',
JSON: 'json',
BOTH: 'both',
};
const { writeFileSync } = require$$1__default['default'];
const path = require$$2__default['default'];
const mkdirp = require$$6__default['default'];
const { program } = require$$7__default['default'];
const globby = require$$8__default['default'];
function writeFileExtra(filename, data) {
mkdirp__default['default'](path_1__default['default'].dirname(filename)).then(() => {
mkdirp(path.dirname(filename)).then(() => {
writeFileSync(filename, data);

@@ -376,15 +432,21 @@ }).catch((err) => {

(() => __awaiter(void 0, void 0, void 0, function* () {
console.log('start analyzing.');
try {
program.option('--dir [dir]', 'root directory of src.', 'src');
program.option('-f, --format [type]', 'Add the specified type of report [browser, json or both]', FORMAT.BROWSER);
program.option('-f, --format [type]', 'Add the specified type of report [browser, json or both]', Constant_1.FORMAT.BROWSER);
program.option('-o, --out [dir]', 'output directory (enable with setting --format option to "json" or "both")', 'out');
program.option('-p, --port [number]', 'select a port number for the local server', '8888');
program.option('--silent', 'do not show logs with silent flag');
program.parse(process.argv);
const argv = program.opts();
if (argv.format !== FORMAT.BROWSER && argv.format !== FORMAT.JSON && argv.format !== FORMAT.BOTH) {
Model_1.model.resourceRoot = argv.dir;
Model_1.model.format = argv.format;
Model_1.model.outDirectory = argv.out;
Model_1.model.port = argv.port;
Model_1.model.isSilentMode = argv.silent || false;
if (argv.format !== Constant_1.FORMAT.BROWSER && argv.format !== Constant_1.FORMAT.JSON && argv.format !== Constant_1.FORMAT.BOTH) {
console.error(`not support ${argv.format} format.`);
}
console.log('start analyzing.');
const analyzer = new Analyzer();
const entries = yield globby__default['default']([argv.dir], {
const entries = yield globby([argv.dir], {
expandDirectories: {

@@ -404,11 +466,11 @@ extensions: ['vue'],

};
if (argv.format === FORMAT.BOTH) {
if (argv.format === Constant_1.FORMAT.BOTH) {
startServer(argv.port, result);
writeFileExtra(path_1__default['default'].resolve(process.cwd(), `${argv.out}/result.json`), JSON.stringify(result, null, 4));
writeFileExtra(path.resolve(process.cwd(), `${argv.out}/result.json`), JSON.stringify(result, null, 4));
}
else if (argv.format === FORMAT.BROWSER) {
else if (argv.format === Constant_1.FORMAT.BROWSER) {
startServer(argv.port, result);
}
else if (argv.format === FORMAT.JSON) {
writeFileExtra(path_1__default['default'].resolve(process.cwd(), `${argv.out}/result.json`), JSON.stringify(result, null, 4));
else if (argv.format === Constant_1.FORMAT.JSON) {
writeFileExtra(path.resolve(process.cwd(), `${argv.out}/result.json`), JSON.stringify(result, null, 4));
}

@@ -422,6 +484,2 @@ console.log('finished analyzing.');

var _temp = {
};
module.exports = _temp;
{
"name": "@tkskto/vue-component-analyzer",
"version": "0.2.1",
"version": "0.3.0",
"description": "Analyze dependency tree for Vue.js SFC (Single File Component)",

@@ -55,10 +55,10 @@ "main": "dist/index.js",

"vue-eslint-parser": "7.6.0",
"ws": "7.4.4"
"ws": "7.4.6"
},
"devDependencies": {
"@mitsue/eslint-config": "3.0.0",
"@rollup/plugin-commonjs": "17.1.0",
"@mitsue/eslint-config": "4.0.1",
"@rollup/plugin-commonjs": "19.0.0",
"@rollup/plugin-json": "4.1.0",
"@rollup/plugin-node-resolve": "11.2.0",
"@rollup/plugin-typescript": "8.2.0",
"@rollup/plugin-node-resolve": "13.0.0",
"@rollup/plugin-typescript": "8.2.1",
"@types/express": "4.17.11",

@@ -68,14 +68,14 @@ "@types/mocha": "8.2.2",

"@types/opener": "1.4.0",
"@types/ws": "7.4.0",
"@typescript-eslint/eslint-plugin": "4.18.0",
"@typescript-eslint/parser": "4.18.0",
"eslint": "7.22.0",
"@types/ws": "7.4.4",
"@typescript-eslint/eslint-plugin": "4.25.0",
"@typescript-eslint/parser": "4.25.0",
"eslint": "7.27.0",
"husky": "4.3.8",
"lint-staged": "10.5.4",
"mocha": "8.3.2",
"lint-staged": "11.0.0",
"mocha": "8.4.0",
"nyc": "15.1.0",
"rollup": "2.42.1",
"rollup": "2.50.1",
"rollup-plugin-license": "2.3.0",
"ts-mocha": "8.0.0",
"typescript": "4.2.3"
"typescript": "4.3.2"
},

@@ -82,0 +82,0 @@ "lint-staged": {

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc