payload 3.0.0-alpha.34 → 3.0.0-alpha.36
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/bin.js +18 -0
- package/dist/bin/generateTypes.d.ts.map +1 -1
- package/dist/bin/generateTypes.js +1 -10
- package/dist/bin/index.d.ts +1 -1
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +21 -23
- package/dist/bin/migrate.d.ts +7 -1
- package/dist/bin/migrate.d.ts.map +1 -1
- package/dist/bin/migrate.js +3 -13
- package/dist/bin/register/clientExtensions.d.ts +2 -0
- package/dist/bin/register/clientExtensions.d.ts.map +1 -0
- package/dist/bin/register/clientExtensions.js +13 -0
- package/dist/bin/register/index.d.ts +34 -0
- package/dist/bin/register/index.d.ts.map +1 -0
- package/dist/bin/register/index.js +95 -0
- package/dist/bin/register/read-default-tsconfig.d.ts +4 -0
- package/dist/bin/register/read-default-tsconfig.d.ts.map +1 -0
- package/dist/bin/register/read-default-tsconfig.js +92 -0
- package/dist/bin/register/register.d.ts +15 -0
- package/dist/bin/register/register.d.ts.map +1 -0
- package/dist/bin/register/register.js +92 -0
- package/dist/config/createClientConfig.d.ts +1241 -1
- package/dist/config/createClientConfig.d.ts.map +1 -1
- package/dist/config/createClientConfig.js +98 -50
- package/dist/config/find.d.ts +1 -2
- package/dist/config/find.d.ts.map +1 -1
- package/dist/config/find.js +2 -3
- package/dist/config/load.d.ts +3 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +25 -9
- package/dist/config/types.d.ts +1 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +6 -2
- package/dist/globals/operations/local/update.d.ts.map +1 -0
- package/package.json +7 -3
- package/bin.cjs +0 -41
- package/dist/config/clientFiles.d.ts +0 -2
- package/dist/config/clientFiles.d.ts.map +0 -1
- package/dist/config/clientFiles.js +0 -13
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { transform, transformSync } from '@swc-node/core';
|
|
2
|
+
import { SourcemapMap, installSourceMapSupport } from '@swc-node/sourcemap-support';
|
|
3
|
+
import { getTsconfig } from 'get-tsconfig';
|
|
4
|
+
import { platform } from 'os';
|
|
5
|
+
import { resolve } from 'path';
|
|
6
|
+
import { addHook } from 'pirates';
|
|
7
|
+
import * as ts from 'typescript';
|
|
8
|
+
import { tsCompilerOptionsToSwcConfig } from './read-default-tsconfig.js';
|
|
9
|
+
const DEFAULT_EXTENSIONS = [
|
|
10
|
+
'.js',
|
|
11
|
+
'.jsx',
|
|
12
|
+
'.es6',
|
|
13
|
+
'.es',
|
|
14
|
+
'.mjs',
|
|
15
|
+
'.ts',
|
|
16
|
+
'.tsx'
|
|
17
|
+
];
|
|
18
|
+
const PLATFORM = platform();
|
|
19
|
+
const injectInlineSourceMap = ({ code, filename, map })=>{
|
|
20
|
+
if (map) {
|
|
21
|
+
SourcemapMap.set(filename, map);
|
|
22
|
+
const base64Map = Buffer.from(map, 'utf8').toString('base64');
|
|
23
|
+
const sourceMapContent = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64Map}`;
|
|
24
|
+
return `${code}\n${sourceMapContent}`;
|
|
25
|
+
}
|
|
26
|
+
return code;
|
|
27
|
+
};
|
|
28
|
+
export function compile(sourcecode, filename, options, async = false) {
|
|
29
|
+
if (filename.endsWith('.d.ts')) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
if (options.files && options.files.length) {
|
|
33
|
+
if (PLATFORM === 'win32' && options.files.every((file)=>filename !== resolve(process.cwd(), file))) {
|
|
34
|
+
return sourcecode;
|
|
35
|
+
}
|
|
36
|
+
if (PLATFORM !== 'win32' && options.files.every((file)=>!filename.endsWith(file))) {
|
|
37
|
+
return sourcecode;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (options && typeof options.fallbackToTs === 'function' && options.fallbackToTs(filename)) {
|
|
41
|
+
delete options.fallbackToTs;
|
|
42
|
+
const { outputText, sourceMapText } = ts.transpileModule(sourcecode, {
|
|
43
|
+
compilerOptions: options,
|
|
44
|
+
fileName: filename
|
|
45
|
+
});
|
|
46
|
+
return injectInlineSourceMap({
|
|
47
|
+
code: outputText,
|
|
48
|
+
filename,
|
|
49
|
+
map: sourceMapText
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
let swcRegisterConfig;
|
|
53
|
+
if (process.env.SWCRC) {
|
|
54
|
+
// when SWCRC environment variable is set to true it will use swcrc file
|
|
55
|
+
swcRegisterConfig = {
|
|
56
|
+
swc: {
|
|
57
|
+
swcrc: true
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
} else {
|
|
61
|
+
swcRegisterConfig = tsCompilerOptionsToSwcConfig(options, filename);
|
|
62
|
+
}
|
|
63
|
+
if (async) {
|
|
64
|
+
return transform(sourcecode, filename, swcRegisterConfig).then(({ code, map })=>{
|
|
65
|
+
return injectInlineSourceMap({
|
|
66
|
+
code,
|
|
67
|
+
filename,
|
|
68
|
+
map
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
const { code, map } = transformSync(sourcecode, filename, swcRegisterConfig);
|
|
73
|
+
return injectInlineSourceMap({
|
|
74
|
+
code,
|
|
75
|
+
filename,
|
|
76
|
+
map
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export function register(options = {}, hookOpts = {}) {
|
|
81
|
+
const locatedConfig = getTsconfig();
|
|
82
|
+
const tsconfig = locatedConfig.config.compilerOptions;
|
|
83
|
+
options = tsconfig;
|
|
84
|
+
// options.module = ts.ModuleKind.CommonJS
|
|
85
|
+
installSourceMapSupport();
|
|
86
|
+
return addHook((code, filename)=>compile(code, filename, options), {
|
|
87
|
+
exts: DEFAULT_EXTENSIONS,
|
|
88
|
+
...hookOpts
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vcmVnaXN0ZXIvcmVnaXN0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPcHRpb25zIH0gZnJvbSAnQHN3Yy1ub2RlL2NvcmUnXG5cbmltcG9ydCB7IHRyYW5zZm9ybSwgdHJhbnNmb3JtU3luYyB9IGZyb20gJ0Bzd2Mtbm9kZS9jb3JlJ1xuaW1wb3J0IHsgU291cmNlbWFwTWFwLCBpbnN0YWxsU291cmNlTWFwU3VwcG9ydCB9IGZyb20gJ0Bzd2Mtbm9kZS9zb3VyY2VtYXAtc3VwcG9ydCdcbmltcG9ydCB7IGdldFRzY29uZmlnIH0gZnJvbSAnZ2V0LXRzY29uZmlnJ1xuaW1wb3J0IHsgcGxhdGZvcm0gfSBmcm9tICdvcydcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgYWRkSG9vayB9IGZyb20gJ3BpcmF0ZXMnXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0J1xuXG5pbXBvcnQgeyB0c0NvbXBpbGVyT3B0aW9uc1RvU3djQ29uZmlnIH0gZnJvbSAnLi9yZWFkLWRlZmF1bHQtdHNjb25maWcuanMnXG5cbmNvbnN0IERFRkFVTFRfRVhURU5TSU9OUyA9IFsnLmpzJywgJy5qc3gnLCAnLmVzNicsICcuZXMnLCAnLm1qcycsICcudHMnLCAnLnRzeCddXG5jb25zdCBQTEFURk9STSA9IHBsYXRmb3JtKClcblxuY29uc3QgaW5qZWN0SW5saW5lU291cmNlTWFwID0gKHtcbiAgY29kZSxcbiAgZmlsZW5hbWUsXG4gIG1hcCxcbn06IHtcbiAgY29kZTogc3RyaW5nXG4gIGZpbGVuYW1lOiBzdHJpbmdcbiAgbWFwOiBzdHJpbmcgfCB1bmRlZmluZWRcbn0pOiBzdHJpbmcgPT4ge1xuICBpZiAobWFwKSB7XG4gICAgU291cmNlbWFwTWFwLnNldChmaWxlbmFtZSwgbWFwKVxuICAgIGNvbnN0IGJhc2U2NE1hcCA9IEJ1ZmZlci5mcm9tKG1hcCwgJ3V0ZjgnKS50b1N0cmluZygnYmFzZTY0JylcbiAgICBjb25zdCBzb3VyY2VNYXBDb250ZW50ID0gYC8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwke2Jhc2U2NE1hcH1gXG4gICAgcmV0dXJuIGAke2NvZGV9XFxuJHtzb3VyY2VNYXBDb250ZW50fWBcbiAgfVxuICByZXR1cm4gY29kZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShcbiAgc291cmNlY29kZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMgJiB7IGZhbGxiYWNrVG9Ucz86IChmaWxlbmFtZTogc3RyaW5nKSA9PiBib29sZWFuIH0sXG4pOiBzdHJpbmdcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUoXG4gIHNvdXJjZWNvZGU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zICYgeyBmYWxsYmFja1RvVHM/OiAoZmlsZW5hbWU6IHN0cmluZykgPT4gYm9vbGVhbiB9LFxuICBhc3luYzogZmFsc2UsXG4pOiBzdHJpbmdcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUoXG4gIHNvdXJjZWNvZGU6IHN0cmluZyxcbiAgZmlsZW5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zICYgeyBmYWxsYmFja1RvVHM/OiAoZmlsZW5hbWU6IHN0cmluZykgPT4gYm9vbGVhbiB9LFxuICBhc3luYzogdHJ1ZSxcbik6IFByb21pc2U8c3RyaW5nPlxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShcbiAgc291cmNlY29kZTogc3RyaW5nLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMgJiB7IGZhbGxiYWNrVG9Ucz86IChmaWxlbmFtZTogc3RyaW5nKSA9PiBib29sZWFuIH0sXG4gIGFzeW5jOiBib29sZWFuLFxuKTogUHJvbWlzZTxzdHJpbmc+IHwgc3RyaW5nXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlKFxuICBzb3VyY2Vjb2RlOiBzdHJpbmcsXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyAmIHsgZmFsbGJhY2tUb1RzPzogKGZpbGVuYW1lOiBzdHJpbmcpID0+IGJvb2xlYW4gfSxcbiAgYXN5bmMgPSBmYWxzZSxcbikge1xuICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5kLnRzJykpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuICBpZiAob3B0aW9ucy5maWxlcyAmJiAob3B0aW9ucy5maWxlcyBhcyBzdHJpbmdbXSkubGVuZ3RoKSB7XG4gICAgaWYgKFxuICAgICAgUExBVEZPUk0gPT09ICd3aW4zMicgJiZcbiAgICAgIChvcHRpb25zLmZpbGVzIGFzIHN0cmluZ1tdKS5ldmVyeSgoZmlsZSkgPT4gZmlsZW5hbWUgIT09IHJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gc291cmNlY29kZVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBQTEFURk9STSAhPT0gJ3dpbjMyJyAmJlxuICAgICAgKG9wdGlvbnMuZmlsZXMgYXMgc3RyaW5nW10pLmV2ZXJ5KChmaWxlKSA9PiAhZmlsZW5hbWUuZW5kc1dpdGgoZmlsZSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gc291cmNlY29kZVxuICAgIH1cbiAgfVxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5mYWxsYmFja1RvVHMgPT09ICdmdW5jdGlvbicgJiYgb3B0aW9ucy5mYWxsYmFja1RvVHMoZmlsZW5hbWUpKSB7XG4gICAgZGVsZXRlIG9wdGlvbnMuZmFsbGJhY2tUb1RzXG4gICAgY29uc3QgeyBvdXRwdXRUZXh0LCBzb3VyY2VNYXBUZXh0IH0gPSB0cy50cmFuc3BpbGVNb2R1bGUoc291cmNlY29kZSwge1xuICAgICAgY29tcGlsZXJPcHRpb25zOiBvcHRpb25zLFxuICAgICAgZmlsZU5hbWU6IGZpbGVuYW1lLFxuICAgIH0pXG4gICAgcmV0dXJuIGluamVjdElubGluZVNvdXJjZU1hcCh7IGNvZGU6IG91dHB1dFRleHQsIGZpbGVuYW1lLCBtYXA6IHNvdXJjZU1hcFRleHQgfSlcbiAgfVxuXG4gIGxldCBzd2NSZWdpc3RlckNvbmZpZzogT3B0aW9uc1xuICBpZiAocHJvY2Vzcy5lbnYuU1dDUkMpIHtcbiAgICAvLyB3aGVuIFNXQ1JDIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCB0byB0cnVlIGl0IHdpbGwgdXNlIHN3Y3JjIGZpbGVcbiAgICBzd2NSZWdpc3RlckNvbmZpZyA9IHtcbiAgICAgIHN3Yzoge1xuICAgICAgICBzd2NyYzogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3Y1JlZ2lzdGVyQ29uZmlnID0gdHNDb21waWxlck9wdGlvbnNUb1N3Y0NvbmZpZyhvcHRpb25zLCBmaWxlbmFtZSlcbiAgfVxuXG4gIGlmIChhc3luYykge1xuICAgIHJldHVybiB0cmFuc2Zvcm0oc291cmNlY29kZSwgZmlsZW5hbWUsIHN3Y1JlZ2lzdGVyQ29uZmlnKS50aGVuKCh7IGNvZGUsIG1hcCB9KSA9PiB7XG4gICAgICByZXR1cm4gaW5qZWN0SW5saW5lU291cmNlTWFwKHsgY29kZSwgZmlsZW5hbWUsIG1hcCB9KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBjb2RlLCBtYXAgfSA9IHRyYW5zZm9ybVN5bmMoc291cmNlY29kZSwgZmlsZW5hbWUsIHN3Y1JlZ2lzdGVyQ29uZmlnKVxuICAgIHJldHVybiBpbmplY3RJbmxpbmVTb3VyY2VNYXAoeyBjb2RlLCBmaWxlbmFtZSwgbWFwIH0pXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyKG9wdGlvbnM6IFBhcnRpYWw8dHMuQ29tcGlsZXJPcHRpb25zPiA9IHt9LCBob29rT3B0cyA9IHt9KSB7XG4gIGNvbnN0IGxvY2F0ZWRDb25maWcgPSBnZXRUc2NvbmZpZygpXG4gIGNvbnN0IHRzY29uZmlnID0gbG9jYXRlZENvbmZpZy5jb25maWcuY29tcGlsZXJPcHRpb25zIGFzIHVua25vd24gYXMgdHMuQ29tcGlsZXJPcHRpb25zXG4gIG9wdGlvbnMgPSB0c2NvbmZpZ1xuICAvLyBvcHRpb25zLm1vZHVsZSA9IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlNcbiAgaW5zdGFsbFNvdXJjZU1hcFN1cHBvcnQoKVxuICByZXR1cm4gYWRkSG9vaygoY29kZSwgZmlsZW5hbWUpID0+IGNvbXBpbGUoY29kZSwgZmlsZW5hbWUsIG9wdGlvbnMpLCB7XG4gICAgZXh0czogREVGQVVMVF9FWFRFTlNJT05TLFxuICAgIC4uLmhvb2tPcHRzLFxuICB9KVxufVxuIl0sIm5hbWVzIjpbInRyYW5zZm9ybSIsInRyYW5zZm9ybVN5bmMiLCJTb3VyY2VtYXBNYXAiLCJpbnN0YWxsU291cmNlTWFwU3VwcG9ydCIsImdldFRzY29uZmlnIiwicGxhdGZvcm0iLCJyZXNvbHZlIiwiYWRkSG9vayIsInRzIiwidHNDb21waWxlck9wdGlvbnNUb1N3Y0NvbmZpZyIsIkRFRkFVTFRfRVhURU5TSU9OUyIsIlBMQVRGT1JNIiwiaW5qZWN0SW5saW5lU291cmNlTWFwIiwiY29kZSIsImZpbGVuYW1lIiwibWFwIiwic2V0IiwiYmFzZTY0TWFwIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwic291cmNlTWFwQ29udGVudCIsImNvbXBpbGUiLCJzb3VyY2Vjb2RlIiwib3B0aW9ucyIsImFzeW5jIiwiZW5kc1dpdGgiLCJmaWxlcyIsImxlbmd0aCIsImV2ZXJ5IiwiZmlsZSIsInByb2Nlc3MiLCJjd2QiLCJmYWxsYmFja1RvVHMiLCJvdXRwdXRUZXh0Iiwic291cmNlTWFwVGV4dCIsInRyYW5zcGlsZU1vZHVsZSIsImNvbXBpbGVyT3B0aW9ucyIsImZpbGVOYW1lIiwic3djUmVnaXN0ZXJDb25maWciLCJlbnYiLCJTV0NSQyIsInN3YyIsInN3Y3JjIiwidGhlbiIsInJlZ2lzdGVyIiwiaG9va09w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
|