chore: not done yet
This commit is contained in:
parent
b34d9c34c7
commit
9943d7ec55
116
packages/dox/.gitignore
vendored
116
packages/dox/.gitignore
vendored
|
@ -1,116 +0,0 @@
|
|||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.lcov
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Microbundle cache
|
||||
.rpt2_cache/
|
||||
.rts2_cache_cjs/
|
||||
.rts2_cache_es/
|
||||
.rts2_cache_umd/
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
.env.test
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
.parcel-cache
|
||||
|
||||
# Next.js build output
|
||||
.next
|
||||
out
|
||||
|
||||
# Nuxt.js build / generate output
|
||||
.nuxt
|
||||
dist
|
||||
|
||||
# Gatsby files
|
||||
.cache/
|
||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
||||
# public
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# Stores VSCode versions used for testing VSCode extensions
|
||||
.vscode-test
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
|
@ -1,2 +0,0 @@
|
|||
'@flecks/core': {}
|
||||
'@flecks/fleck': {}
|
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
"name": "@flecks/dox",
|
||||
"private": true,
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "flecks build",
|
||||
"clean": "flecks clean",
|
||||
"lint": "flecks lint",
|
||||
"test": "flecks test"
|
||||
},
|
||||
"files": [
|
||||
"build",
|
||||
"index.js",
|
||||
"index.js.map",
|
||||
"src"
|
||||
],
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.17.2",
|
||||
"@babel/traverse": "^7.17.0",
|
||||
"@babel/types": "^7.17.0",
|
||||
"@flecks/core": "^1.0.0",
|
||||
"glob": "^7.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@flecks/fleck": "^1.0.0"
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
export {parseCode, parseFleck} from './parser';
|
|
@ -1,126 +0,0 @@
|
|||
import {readFile} from 'fs/promises';
|
||||
import {dirname, join} from 'path';
|
||||
|
||||
import {transformAsync} from '@babel/core';
|
||||
import traverse from '@babel/traverse';
|
||||
import {
|
||||
isIdentifier,
|
||||
isMemberExpression,
|
||||
isStringLiteral,
|
||||
isThisExpression,
|
||||
} from '@babel/types';
|
||||
import glob from 'glob';
|
||||
|
||||
const flecksCorePath = dirname(__non_webpack_require__.resolve('@flecks/core/package.json'));
|
||||
|
||||
const FlecksInvocations = (state, filename) => ({
|
||||
CallExpression(path) {
|
||||
if (isMemberExpression(path.node.callee)) {
|
||||
if (
|
||||
(isIdentifier(path.node.callee.object) && 'flecks' === path.node.callee.object.name)
|
||||
|| (
|
||||
(
|
||||
isThisExpression(path.node.callee.object)
|
||||
&& (filename === join(flecksCorePath, 'src', 'flecks.js'))
|
||||
)
|
||||
)
|
||||
) {
|
||||
if (isIdentifier(path.node.callee.property)) {
|
||||
if (path.node.callee.property.name.match(/^invoke.*/)) {
|
||||
if (path.node.arguments.length > 0) {
|
||||
if (isStringLiteral(path.node.arguments[0])) {
|
||||
state.invocations.push({
|
||||
filename,
|
||||
hook: path.node.arguments[0].value,
|
||||
line: path.node.loc.start.line,
|
||||
type: path.node.callee.property.name,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if ('up' === path.node.callee.property.name) {
|
||||
if (path.node.arguments.length > 0) {
|
||||
if (isStringLiteral(path.node.arguments[0])) {
|
||||
state.invocations.push({
|
||||
filename,
|
||||
hook: path.node.arguments[0].value,
|
||||
line: path.node.loc.start.line,
|
||||
type: 'invokeSequentialAsync',
|
||||
});
|
||||
state.invocations.push({
|
||||
filename,
|
||||
hook: '@flecks/core/starting',
|
||||
line: path.node.loc.start.line,
|
||||
type: 'invokeFlat',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if ('gather' === path.node.callee.property.name) {
|
||||
if (path.node.arguments.length > 0) {
|
||||
if (isStringLiteral(path.node.arguments[0])) {
|
||||
state.invocations.push({
|
||||
filename,
|
||||
hook: path.node.arguments[0].value,
|
||||
line: path.node.loc.start.line,
|
||||
type: 'invokeReduce',
|
||||
});
|
||||
state.invocations.push({
|
||||
filename,
|
||||
hook: `${path.node.arguments[0].value}.decorate`,
|
||||
line: path.node.loc.start.line,
|
||||
type: 'invokeComposed',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const parseCode = async (code, state, filename = '<inline>') => {
|
||||
const config = {
|
||||
ast: true,
|
||||
code: false,
|
||||
configFile: join(__dirname, '..', '..', 'core', 'src', 'build', 'babel.config.js'),
|
||||
};
|
||||
const {ast} = await transformAsync(code, config);
|
||||
traverse(ast, FlecksInvocations(state, filename));
|
||||
};
|
||||
|
||||
export const parseFile = async (filename, state) => {
|
||||
const buffer = await readFile(filename);
|
||||
return parseCode(buffer.toString('utf8'), state, filename);
|
||||
};
|
||||
|
||||
const fleckSources = (path) => (
|
||||
new Promise((r, e) => (
|
||||
glob(
|
||||
join(path, 'src', '**', '*.js'),
|
||||
(error, result) => (error ? e(error) : r(result)),
|
||||
)
|
||||
))
|
||||
);
|
||||
|
||||
export const parseFleck = async (path, state) => {
|
||||
const sources = await fleckSources(path);
|
||||
await Promise.all(sources.map((source) => parseFile(source, state)));
|
||||
};
|
||||
|
||||
const state = {
|
||||
invocations: [],
|
||||
};
|
||||
(async () => {
|
||||
const path = flecksCorePath;
|
||||
await parseFleck(path, state);
|
||||
state.invocations.forEach(({
|
||||
filename,
|
||||
hook,
|
||||
line,
|
||||
type,
|
||||
}) => {
|
||||
console.log(`${type}('${hook}') in ${filename}:${line}`);
|
||||
});
|
||||
})();
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user