ts-transformers-plantain
Some custom typescript transformers.
install
yarn add ts-transformers-plantain
features
executedCodeTransformer
For every statements, prepend a console log of file name and line number, so when the statement is executed, the file name and line number will be logged in console.
for example:
[executed code]demo/index.tsx:1:1
[executed code]demo/index.tsx:2:3
[executed code]demo/index.tsx:3:3
logger can be disabled by executed-code:disable
in comment.
children logger can be disabled by executed-code:disable-children
in comment.
codeTimeTransformer
For example:
[code time]demo/index.tsx:3:3: 1ms
[code time]demo/index.tsx:3:3: 1ms
[code time]demo/index.tsx:1:1: 16ms
logger can be disabled by code-time:disable
in comment.
children logger can be disabled by code-time:disable-children
in comment.
codeTimeTransformerFactory({ threshold: 1000 })
can be used to log only when code time >= the threshold (>=1000ms
for this example)
lastExecutingCodeTransformer
It can be used to record last executing code before exception, it's useful for environment without stacktrace or clear error message, eg, ExtendScript.
For example:
demo/index.tsx:16:3
logger can be disabled by last-executing-code:disable
in comment.
children logger can be disabled by last-executing-code:disable-children
in comment
codeMemoryNodeJsTransformer
For example:
[code memory nodejs]demo/index.tsx:10:3: +0.02MB -> 2.02MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.35MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.62MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.63MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.64MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.65MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.67MB
[code memory nodejs]demo/index.tsx:10:3: +0.01MB -> 2.68MB
[code memory nodejs]demo/index.tsx:4:1: +0.71MB -> 2.71MB
logger can be disabled by code-memory-nodejs:disable
in comment.
children logger can be disabled by code-memory-nodejs:disable-children
in comment.
codeMemoryBrowserTransformer
For example:
[code memory browser]demo/index.tsx:10:3: +0.02MB -> 2.02MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.35MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.62MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.63MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.64MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.65MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.67MB
[code memory browser]demo/index.tsx:10:3: +0.01MB -> 2.68MB
[code memory browser]demo/index.tsx:4:1: +0.71MB -> 2.71MB
logger can be disabled by code-memory-browser:disable
in comment.
children logger can be disabled by code-memory-browser:disable-children
in comment.
executedCodeCoverageTransformer
This transformer will collect all executed code line number, _showCodeCoverage()
will print the result in console, eg:
[executed code coverage]demo/index.tsx: 12 / 21 57.14% 27,31,32,34,39,42,45,48,55
[executed code coverage]total: 12 / 21 57.14%
jsxElementPositionTransformer
This transformer will add code position in data-_position
for all jsx elements, for example:
React.createElement("button", { onClick: () => console.info(1), "data-_position": 'demo/index.tsx:55:1' });
safeOptimizationTransformer
This transformer will do some safe optiomizaiton, for example:
const a = 'aa'.length // -> const a = 2
usage
with ttypescript
"plugins": [
{
"transform": "ts-transformers-plantain",
"import": "executedCodeTransformer",
"type": "raw"
},
]
with ts-loader
import { executedCodeTransformer } from "ts-transformers-plantain"
{
test: /\.ts$/,
loader: 'ts-loader',
options: {
transpileOnly: true,
getCustomTransformers: (program) => ({
before: [executedCodeTransformer]
})
}
}