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