@cmmn/tools 2.2.2 → 3.0.0-alpha-1

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.
Files changed (203) hide show
  1. package/.swcrc +20 -0
  2. package/dist/esm/bin.js +9 -0
  3. package/dist/esm/bin.js.map +1 -0
  4. package/dist/esm/bundlers/createBundler.js +9 -0
  5. package/dist/esm/bundlers/createBundler.js.map +1 -0
  6. package/dist/esm/bundlers/plugins/minify.js +34 -0
  7. package/dist/esm/bundlers/plugins/minify.js.map +1 -0
  8. package/dist/esm/bundlers/plugins/wasm.js +43 -0
  9. package/dist/esm/bundlers/plugins/wasm.js.map +1 -0
  10. package/dist/esm/bundlers/rolldown-bundler.js +153 -0
  11. package/dist/esm/bundlers/rolldown-bundler.js.map +1 -0
  12. package/dist/esm/bundlers/types.js +3 -0
  13. package/dist/esm/bundlers/types.js.map +1 -0
  14. package/dist/esm/bundlers/vite.builder.js +117 -0
  15. package/dist/esm/bundlers/vite.builder.js.map +1 -0
  16. package/dist/esm/bundlers/vite.bundler.js +56 -0
  17. package/dist/esm/bundlers/vite.bundler.js.map +1 -0
  18. package/dist/esm/commands/bundle.js +100 -0
  19. package/dist/esm/commands/bundle.js.map +1 -0
  20. package/dist/esm/commands/cert.js +26 -0
  21. package/dist/esm/commands/cert.js.map +1 -0
  22. package/dist/esm/commands/ci.js +14 -0
  23. package/dist/esm/commands/ci.js.map +1 -0
  24. package/dist/esm/commands/clean.js +18 -0
  25. package/dist/esm/commands/clean.js.map +1 -0
  26. package/dist/esm/commands/compile.js +60 -0
  27. package/dist/esm/commands/compile.js.map +1 -0
  28. package/dist/esm/commands/deploy.js +61 -0
  29. package/dist/esm/commands/deploy.js.map +1 -0
  30. package/dist/esm/commands/dev.js +36 -0
  31. package/dist/esm/commands/dev.js.map +1 -0
  32. package/dist/esm/commands/format.js +44 -0
  33. package/dist/esm/commands/format.js.map +1 -0
  34. package/dist/esm/commands/gen.js +36 -0
  35. package/dist/esm/commands/gen.js.map +1 -0
  36. package/dist/esm/commands/host.js +21 -0
  37. package/dist/esm/commands/host.js.map +1 -0
  38. package/dist/esm/commands/index.js +12 -0
  39. package/dist/esm/commands/index.js.map +1 -0
  40. package/dist/esm/commands/lint.js +45 -0
  41. package/dist/esm/commands/lint.js.map +1 -0
  42. package/dist/esm/commands/nginx.js +62 -0
  43. package/dist/esm/commands/nginx.js.map +1 -0
  44. package/dist/esm/commands/publish.js +37 -0
  45. package/dist/esm/commands/publish.js.map +1 -0
  46. package/dist/esm/commands/typings.js +66 -0
  47. package/dist/esm/commands/typings.js.map +1 -0
  48. package/dist/esm/commands/version.js +34 -0
  49. package/dist/esm/commands/version.js.map +1 -0
  50. package/dist/esm/dev-server/asset-collection.js +18 -0
  51. package/dist/esm/dev-server/asset-collection.js.map +1 -0
  52. package/dist/esm/dev-server/bundle.json.builder.js +47 -0
  53. package/dist/esm/dev-server/bundle.json.builder.js.map +1 -0
  54. package/dist/esm/dev-server/dependencyServer.js +96 -0
  55. package/dist/esm/dev-server/dependencyServer.js.map +1 -0
  56. package/dist/esm/dev-server/dev-server.js +49 -0
  57. package/dist/esm/dev-server/dev-server.js.map +1 -0
  58. package/dist/esm/dev-server/plugins/minify.js +34 -0
  59. package/dist/esm/dev-server/plugins/minify.js.map +1 -0
  60. package/dist/esm/dev-server/plugins/wasm.js +30 -0
  61. package/dist/esm/dev-server/plugins/wasm.js.map +1 -0
  62. package/dist/esm/dev-server/resolver.js +55 -0
  63. package/dist/esm/dev-server/resolver.js.map +1 -0
  64. package/dist/esm/dev-server/rolldown-dependency-builder.js +150 -0
  65. package/dist/esm/dev-server/rolldown-dependency-builder.js.map +1 -0
  66. package/dist/esm/dev-server/target-runnner.js +72 -0
  67. package/dist/esm/dev-server/target-runnner.js.map +1 -0
  68. package/dist/esm/dev-server/target-web-server.js +78 -0
  69. package/dist/esm/dev-server/target-web-server.js.map +1 -0
  70. package/dist/esm/dev-server/targetServer.js +29 -0
  71. package/dist/esm/dev-server/targetServer.js.map +1 -0
  72. package/dist/esm/dev-server/vite.builder.js +183 -0
  73. package/dist/esm/dev-server/vite.builder.js.map +1 -0
  74. package/dist/esm/dev-server/wasm-resolver.js +25 -0
  75. package/dist/esm/dev-server/wasm-resolver.js.map +1 -0
  76. package/dist/esm/helpers/fastify-compress.js +26 -0
  77. package/dist/esm/helpers/fastify-compress.js.map +1 -0
  78. package/dist/esm/helpers/flags.js +22 -0
  79. package/dist/esm/helpers/flags.js.map +1 -0
  80. package/dist/esm/helpers/getProjects.js +49 -0
  81. package/dist/esm/helpers/getProjects.js.map +1 -0
  82. package/dist/esm/helpers/getTSConfig.js +32 -0
  83. package/dist/esm/helpers/getTSConfig.js.map +1 -0
  84. package/dist/esm/helpers/target.js +230 -0
  85. package/dist/esm/helpers/target.js.map +1 -0
  86. package/dist/esm/helpers/terminal.js +117 -0
  87. package/dist/esm/helpers/terminal.js.map +1 -0
  88. package/dist/esm/helpers/ts-resolve-plugin.js +139 -0
  89. package/dist/esm/helpers/ts-resolve-plugin.js.map +1 -0
  90. package/dist/esm/helpers/watcher.js +35 -0
  91. package/dist/esm/helpers/watcher.js.map +1 -0
  92. package/dist/esm/index.js +5 -0
  93. package/dist/esm/index.js.map +1 -0
  94. package/dist/esm/model/bundle.js +75 -0
  95. package/dist/esm/model/bundle.js.map +1 -0
  96. package/dist/esm/model/flags.js +27 -0
  97. package/dist/esm/model/flags.js.map +1 -0
  98. package/dist/esm/model/monorepo.js +74 -0
  99. package/dist/esm/model/monorepo.js.map +1 -0
  100. package/dist/esm/model/pack.js +131 -0
  101. package/dist/esm/model/pack.js.map +1 -0
  102. package/dist/esm/model/resolver.js +100 -0
  103. package/dist/esm/model/resolver.js.map +1 -0
  104. package/dist/esm/model/target.js +111 -0
  105. package/dist/esm/model/target.js.map +1 -0
  106. package/dist/esm/servers/bundle-server.js +20 -0
  107. package/dist/esm/servers/bundle-server.js.map +1 -0
  108. package/dist/esm/servers/dev-server.js +70 -0
  109. package/dist/esm/servers/dev-server.js.map +1 -0
  110. package/dist/esm/servers/pack-server.js +20 -0
  111. package/dist/esm/servers/pack-server.js.map +1 -0
  112. package/dist/esm/servers/target-runnner.js +80 -0
  113. package/dist/esm/servers/target-runnner.js.map +1 -0
  114. package/dist/esm/servers/vite-dev-server.js +61 -0
  115. package/dist/esm/servers/vite-dev-server.js.map +1 -0
  116. package/dist/esm/specs/dependency-builder-specs.js +164 -0
  117. package/dist/esm/specs/dependency-builder-specs.js.map +1 -0
  118. package/dist/esm/specs/dev-server.specs.js +73 -0
  119. package/dist/esm/specs/dev-server.specs.js.map +1 -0
  120. package/dist/esm/specs/monorepo.specs.js +35 -0
  121. package/dist/esm/specs/monorepo.specs.js.map +1 -0
  122. package/dist/esm/specs/resolver.specs.js +57 -0
  123. package/dist/esm/specs/resolver.specs.js.map +1 -0
  124. package/dist/esm/specs/rolldown.specs.js +278 -0
  125. package/dist/esm/specs/rolldown.specs.js.map +1 -0
  126. package/dist/esm/specs/target-specs.js +108 -0
  127. package/dist/esm/specs/target-specs.js.map +1 -0
  128. package/dist/esm/specs/vite-bundler.specs.js +75 -0
  129. package/dist/esm/specs/vite-bundler.specs.js.map +1 -0
  130. package/dist/esm/test/test.js +30 -0
  131. package/dist/esm/test/test.js.map +1 -0
  132. package/dist/ts.buildinfo +1 -0
  133. package/dist/typings/bin.d.ts +2 -0
  134. package/dist/typings/bundlers/plugins/minify.d.ts +6 -0
  135. package/dist/typings/bundlers/plugins/wasm.d.ts +5 -0
  136. package/dist/typings/bundlers/rolldown-bundler.d.ts +18 -0
  137. package/dist/typings/bundlers/types.d.ts +4 -0
  138. package/dist/typings/bundlers/vite.builder.d.ts +12 -0
  139. package/dist/typings/bundlers/vite.bundler.d.ts +9 -0
  140. package/dist/typings/commands/bundle.d.ts +2 -0
  141. package/dist/typings/commands/cert.d.ts +1 -0
  142. package/dist/typings/commands/clean.d.ts +2 -0
  143. package/dist/typings/commands/compile.d.ts +2 -0
  144. package/dist/typings/commands/dev.d.ts +2 -0
  145. package/dist/typings/commands/format.d.ts +5 -0
  146. package/dist/typings/commands/gen.d.ts +1 -0
  147. package/dist/typings/commands/host.d.ts +1 -0
  148. package/dist/typings/commands/index.d.ts +10 -0
  149. package/dist/typings/commands/lint.d.ts +5 -0
  150. package/dist/typings/commands/nginx.d.ts +6 -0
  151. package/dist/typings/commands/publish.d.ts +2 -0
  152. package/dist/typings/commands/typings.d.ts +4 -0
  153. package/dist/typings/commands/version.d.ts +1 -0
  154. package/dist/typings/helpers/fastify-compress.d.ts +6 -0
  155. package/dist/typings/helpers/getTSConfig.d.ts +11 -0
  156. package/dist/typings/helpers/terminal.d.ts +22 -0
  157. package/dist/typings/helpers/watcher.d.ts +7 -0
  158. package/dist/typings/index.d.ts +4 -0
  159. package/dist/typings/model/bundle.d.ts +34 -0
  160. package/dist/typings/model/flags.d.ts +15 -0
  161. package/dist/typings/model/monorepo.d.ts +18 -0
  162. package/dist/typings/model/pack.d.ts +45 -0
  163. package/dist/typings/model/resolver.d.ts +38 -0
  164. package/dist/typings/model/target.d.ts +27 -0
  165. package/dist/typings/servers/bundle-server.d.ts +10 -0
  166. package/dist/typings/servers/dev-server.d.ts +16 -0
  167. package/dist/typings/servers/pack-server.d.ts +9 -0
  168. package/dist/typings/servers/target-runnner.d.ts +13 -0
  169. package/dist/typings/servers/vite-dev-server.d.ts +18 -0
  170. package/dist/typings/specs/dev-server.specs.d.ts +1 -0
  171. package/dist/typings/specs/monorepo.specs.d.ts +1 -0
  172. package/dist/typings/specs/resolver.specs.d.ts +1 -0
  173. package/dist/typings/specs/rolldown.specs.d.ts +1 -0
  174. package/dist/typings/specs/target-specs.d.ts +1 -0
  175. package/dist/typings/specs/vite-bundler.specs.d.ts +1 -0
  176. package/dist/typings/test/test.d.ts +16 -0
  177. package/{compile → helpers}/tsconfig.json +12 -9
  178. package/node/hooks-dev.js +72 -0
  179. package/node/register-dev.js +3 -0
  180. package/node/register.js +14 -0
  181. package/package.json +50 -40
  182. package/readme.md +2 -2
  183. package/tsconfig.json +14 -0
  184. package/LICENSE +0 -21
  185. package/bin.js +0 -21
  186. package/bundle/bundle.js +0 -46
  187. package/bundle/esbuild.config.js +0 -178
  188. package/bundle/getConfigs.js +0 -62
  189. package/compile/compile.js +0 -53
  190. package/compile/ts-resolve-plugin.js +0 -235
  191. package/compile/typings.d.ts +0 -19
  192. package/gen/component.ts.tpl +0 -16
  193. package/gen/gen.js +0 -27
  194. package/gen/style.less.tpl +0 -3
  195. package/gen/template.ts.tpl +0 -8
  196. package/helpers/getTSConfig.js +0 -19
  197. package/serve/readme.md +0 -8
  198. package/serve/serve.js +0 -109
  199. package/spawn/index.js +0 -81
  200. package/test/index.d.ts +0 -18
  201. package/test/index.js +0 -16
  202. package/test/jest.config.js +0 -32
  203. package/test/pathsToModuleNameMapper.js +0 -46
package/gen/gen.js DELETED
@@ -1,27 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import {fileURLToPath} from 'url';
4
- import {execSync} from "child_process";
5
-
6
- const currentDir = '__dirname' in global ? __dirname : path.dirname(fileURLToPath(import.meta.url));
7
-
8
- const templateTpl = fs.readFileSync(path.join(currentDir, './template.ts.tpl'), 'utf8');
9
- const componentTpl = fs.readFileSync(path.join(currentDir, './component.ts.tpl'), 'utf8');
10
- const styleTpl = fs.readFileSync(path.join(currentDir, './style.less.tpl'), 'utf8');
11
-
12
-
13
- export function gen(name, directory, nested = false) {
14
- const Name = name.replace(/^./, c => c.toUpperCase());
15
- name = Name.replace(/[A-Z]/g, (c, i) => (i ? '-' : '') + c.toLowerCase());
16
- process.chdir(directory);
17
- if (nested) {
18
- fs.mkdirSync(name);
19
- process.chdir(name);
20
- }
21
- fs.writeFileSync(name + '.component.ts', componentTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8');
22
- fs.writeFileSync(name + '.template.ts', templateTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8');
23
- fs.writeFileSync(name + '.style.less', styleTpl.replace(/\$Name\$/g, Name).replace(/\$name\$/g, name), 'utf8');
24
- execSync(`git add ${name}.component.ts`);
25
- execSync(`git add ${name}.template.ts`);
26
- execSync(`git add ${name}.style.less`);
27
- }
@@ -1,3 +0,0 @@
1
- $name$ {
2
- display: block;
3
- }
@@ -1,8 +0,0 @@
1
- import {ITemplate} from "@cmmn/ui";
2
-
3
- export const template: ITemplate<IState, IEvents> = (html, state, events) => html`
4
- `;
5
-
6
- export type IState = {}
7
-
8
- export type IEvents = {}
@@ -1,19 +0,0 @@
1
- import ts from "typescript";
2
-
3
- export function getTSConfig(directory = process.cwd()) {
4
- const configPath = ts.findConfigFile(directory, ts.sys.fileExists, 'tsconfig.json');
5
- const readConfigFileResult = ts.readConfigFile(configPath, ts.sys.readFile);
6
- if (readConfigFileResult.error) {
7
- throw readConfigFileResult.error;
8
- }
9
- return readConfigFileResult.config;
10
- }
11
-
12
- export function getTSCompilerOptions(directory = process.cwd()) {
13
- const jsonConfig = getTSConfig(directory);
14
- const convertResult = ts.convertCompilerOptionsFromJson(jsonConfig.compilerOptions, './');
15
- if (convertResult.errors && convertResult.errors.length > 0) {
16
- throw convertResult.errors;
17
- }
18
- return convertResult.options;
19
- }
package/serve/readme.md DELETED
@@ -1,8 +0,0 @@
1
- # serve
2
- ### запускает сервер, который отдает статический контент
3
- в бразуер загружаются es-модули как таковые, с import {...} from "some-external-module"
4
- браузер видит, что ему нужно загрузить еще модули и смотрит в специальный json importmaps который лежит в head. Там маппинг вроде @gm/ -> /external/@gm/ что означает что все модули начинающиеся на @gm/ резолвятся через указанный path.
5
- serve теперь тоже "умный". Он во-первых "маунтит" все модули из проекта в external, так что /external/@gm/domain-api зарезолвится в (root)/packages/api/dist/bundle/index.js например, и watch этот файл. Во-вторых, на все остальные запросы на /external он начинает резолвить файлы (эта фигня оч противно теперь работает в node) и отдавать js. При этом он их не watch, а просто отдает.
6
- К чему это привело: все модули загружаются на сайт независимо, а поэтому их можно собирать независимо. Модули маленькие => собираются быстро. Изменения в одном модуле могут не обновлять другие (теоретически, если не изменился .d.ts, но я еще не поборол tsc в этом)
7
-
8
- **chunk**: react собирается в отдельный чанк => модуль main.js маленький
package/serve/serve.js DELETED
@@ -1,109 +0,0 @@
1
- import {getConfigOptions} from "../bundle/getConfigs.js";
2
- import path from "path";
3
- import fs from "fs";
4
- import liveServer from "live-server";
5
- import {resolve, moduleResolve} from 'import-meta-resolve';
6
- import uri2path from "file-uri-to-path";
7
-
8
- export async function serve(...options) {
9
- const configs = await getConfigOptions({
10
- project: options.includes('-b'),
11
- });
12
- configs.filter(x => x.port).forEach(async (x,i) => {
13
- const absRoot = path.join(x.rootDir, x.outDir ?? 'dist/bundle');
14
- const root = path.relative(process.cwd(), absRoot);
15
- const server = await liveServer.start({
16
- root: root,
17
- file: 'index.html',
18
- port: process.env.PORT ? (+process.env.PORT + i) : x.port,
19
- open: false,
20
- watch: configs.map(x => path.join(x.rootDir, x.outDir ?? 'dist/bundle')).join(','),
21
- mount: x.mount && Object.entries(x.mount)
22
- .map(([from, to]) => [from, path.resolve(x.rootDir, to)]),
23
- // .concat(configs.map(x => [`/external/${x.package}`,
24
- // path.join(x.rootDir, x.outDir ?? `dist/bundle/${x.name}.js`)])),
25
- proxy: Object.entries(x.proxy ?? {}),
26
- middleware: [resolveESModule(x.rootDir, configs)].filter(x => x)
27
- });
28
-
29
- })
30
-
31
- }
32
- function getModuleName(path) {
33
- if (!path.startsWith('/node_modules/'))
34
- return null;
35
- return path.substring('/node_modules/'.length);
36
- }
37
-
38
- const mappingCache = {};
39
-
40
- async function resolveModule(module, root){
41
- const conditions = ['browser', 'main', 'module', 'import', 'node', 'default'];
42
- for (let condition of conditions) {
43
- try {
44
- return moduleResolve(module, root, new Set([condition]), true);
45
- }catch (e){
46
- }
47
- }
48
- throw new Error(`Failed resolve ${module} from ${root}`);
49
- }
50
- // for resolve modules and files inside modules
51
- async function getFileName(moduleName, root) {
52
- // console.log(moduleName, root);
53
- if (moduleName in mappingCache)
54
- return mappingCache[moduleName];
55
- let file;
56
- if (moduleName.match('\.[cm]?js(.map)?$')) {
57
- const module = moduleName.match(/^(@[^/]+\/)?[^/]+/)[0];
58
- const main = await resolveModule(module, root);
59
- const file = main.href.replace(new RegExp('node_modules/' + module + '.*$'), 'node_modules/' + moduleName);
60
- return mappingCache[moduleName] = file;
61
- } else {
62
- console.log(moduleName, root);
63
- const file = await resolveModule(moduleName, root);
64
- return mappingCache[moduleName] = file.href;
65
- }
66
- }
67
- const resolveESModule = (rootDir, configs) => async function (req, res, next) {
68
- const name = getModuleName(req.url);
69
- if (!name) {
70
- return next();
71
- }
72
- // if (configs.some(x => x.package === name))
73
- // return next();
74
- const root = 'file://' + process.cwd() + '/package.json';
75
- try {
76
- const uri = await getFileName(name, root);
77
- const file = uri2path(uri);
78
- const stat = fs.statSync(file);
79
- const relative = path.relative(rootDir, file)
80
- .replaceAll(path.sep, '/')
81
- .replace(/^.*\/node_modules/, '/node_modules');
82
- if (req.url !== relative){
83
- mappingCache[getModuleName(relative)] = uri;
84
- res.writeHead(302, {
85
- Location: relative
86
- });
87
- res.end();
88
- return;
89
- }
90
- res.writeHead(200, {
91
- 'Content-Type': 'application/javascript',
92
- 'Content-Length': stat.size
93
- });
94
-
95
- var readStream = fs.createReadStream(file);
96
- // We replaced all the event handlers with a simple call to readStream.pipe()
97
- readStream.pipe(res);
98
- await new Promise(resolve => readStream.on('end', resolve));
99
- readStream.close();
100
- } catch (e) {
101
- console.error(e.message);
102
- res.writeHead(404, {
103
- 'Content-Type': 'text',
104
- });
105
- res.write(e.message);
106
- }
107
- res.end();
108
- return;
109
- }
package/spawn/index.js DELETED
@@ -1,81 +0,0 @@
1
- import cp from "child_process";
2
- import {platform} from "os";
3
-
4
- export function spawn(...options){
5
- const commands = [];
6
- for (let i = 0; i < options.length; i++) {
7
- if (options[i].startsWith('-')){
8
- commands[commands.length - 1].push(options[i]);
9
- }else{
10
- commands.push([options[i]]);
11
- }
12
- }
13
- for (let command of commands) {
14
- console.log('run: ', command.join(' '));
15
- spawnCommand('npx cmmn '+command.join(' '), command[0]+'\t', {
16
- color: 'red',
17
- shell: true,
18
- stdio: "pipe"
19
- });
20
- }
21
- }
22
-
23
-
24
- /**
25
- * @param command {string}
26
- * @param prefix {string}
27
- * @param options {cp.SpawnOptions}
28
- */
29
- export const spawnCommand = (command, prefix, options) => {
30
- if (!options?.stdio && (platform() === 'linux')) {
31
- options = { ...(options ?? {}), stdio: 'inherit' };
32
- }
33
- const proc = cp.spawn(command, options);
34
- if (options?.stdio !== 'inherit') {
35
- if (prefix) {
36
- proc.stdin.pipe(process.stdin);
37
- pipe(proc.stdout, process.stdout, prefix);
38
- pipe(proc.stderr, process.stderr, prefix);
39
- } else {
40
- proc.stdin.pipe(process.stdin);
41
- proc.stdout.pipe(process.stdout);
42
- proc.stderr.pipe(process.stderr);
43
- }
44
- }
45
- return proc;
46
- }
47
- function pipe(stream, target, prefix){
48
- let _offset = 0;
49
- const _NEWLINE = '\n'.charCodeAt(0);
50
- const _prefix = Buffer.from(prefix, 'utf-8');
51
- const _buffer = Buffer.alloc(1024 * 128);
52
- const addBytes = (bytes) => {
53
- for (const byte of bytes) {
54
- _buffer[_offset] = byte;
55
- _offset += 1;
56
- }
57
- }
58
- const addBuffer = (buf) => {
59
- buf.copy(_buffer, _offset);
60
- _offset += buf.length;
61
- }
62
- const flush = () => {
63
- if (_offset > 0) {
64
- target.write(_buffer.slice(0, _offset));
65
- _offset = 0;
66
- }
67
- }
68
- addBuffer(_prefix);
69
- stream.on('readable', () => {
70
- const data = stream.read();
71
- if (data) {
72
- for (const [ , byte ] of data.entries()) {
73
- addBytes([byte]);
74
- if (byte === _NEWLINE) {
75
- flush();
76
- addBuffer(_prefix);
77
- }
78
- }
79
- }
80
- });
81
- }
package/test/index.d.ts DELETED
@@ -1,18 +0,0 @@
1
- export {suite, test, timeout,} from "@testdeck/jest";
2
- export {expect} from "earl";
3
- import * as sinonModule from "sinon";
4
-
5
- export type AssertionExt = Assertion & {
6
- toEqual: Assertion["eql"]
7
- }
8
- export const sinon = sinonModule;
9
-
10
- declare module 'earl' {
11
- interface Validators<T> {
12
- // Note that `this: Validators<number>` ensures that
13
- // the validator is only callable for numbers.
14
- toBeInstanceOf<V>(this: Validators<T>, type: V): T extends V ? true : false;
15
- toBe: Validators<T>["toEqual"];
16
- toHaveProperty<TProp, TValue>(this: Validators<T>, prop: TProp, value: TValue): T extends Record<TProp, TValue> ? true: false;
17
- }
18
- }
package/test/index.js DELETED
@@ -1,16 +0,0 @@
1
- import * as test from "node:test";
2
- Object.assign(globalThis, test);
3
- export {suite, test, timeout,} from "@testdeck/jest";
4
- import { expect as expectBase, registerValidator, isEqual, formatCompact} from "earl";
5
- // import * as globals from "@jest/globals";
6
- export * as sinon from "sinon";
7
- registerValidator("toHaveProperty", (control, prop, value) => {
8
- const actualInline = formatCompact(control.actual)
9
- const actualValue = formatCompact(control.actual[prop])
10
- control.assert({
11
- success: control.actual[prop] === value,
12
- reason: `The value ${actualInline}[${prop}] = ${actualValue} is not equal to ${value}, but is expected to be eqaul`,
13
- negatedReason: `The value ${actualInline}[${prop}] = ${actualValue} is equal to ${value}, but is expected not to be eqaul`,
14
- })
15
- })
16
- export const expect = expectBase;
@@ -1,32 +0,0 @@
1
- import {getTSCompilerOptions} from "../helpers/getTSConfig.js";
2
- import {pathsToModuleNameMapper} from "./pathsToModuleNameMapper.js";
3
-
4
- const options = getTSCompilerOptions(process.cwd());
5
-
6
- export default {
7
- transform: {
8
- '^.+\\.tsx?$': ['@swc/jest', {
9
- jsc: {
10
- parser: {
11
- syntax: "typescript",
12
- // tsx: true, // If you use react
13
- dynamicImport: true,
14
- decorators: true,
15
- },
16
- target: "es2021",
17
- transform: {
18
- decoratorMetadata: true,
19
- },
20
- paths: options.paths,
21
- baseUrl: process.cwd()
22
- },
23
- }],
24
- },
25
- roots: [process.cwd()],
26
- moduleNameMapper: pathsToModuleNameMapper(options.paths ?? {}, {
27
- prefix: '<rootDir>'
28
- }),
29
- extensionsToTreatAsEsm: ['.ts', '.tsx', '.jsx?'],
30
- }
31
-
32
-
@@ -1,46 +0,0 @@
1
- // we don't need to escape all chars, so commented out is the real one
2
- // const escapeRegex = (str: string) => str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
3
- const escapeRegex = (str) => str.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&')
4
-
5
- export const pathsToModuleNameMapper = (mapping, { prefix = '', useESM = false }= {}) => {
6
- const jestMap = {}
7
- for (const fromPath of Object.keys(mapping)) {
8
- const toPaths = mapping[fromPath]
9
- // check that we have only one target path
10
- if (toPaths.length === 0) {
11
- continue
12
- }
13
-
14
- // split with '*'
15
- const segments = fromPath.split(/\*/g)
16
- if (segments.length === 1) {
17
- const paths = toPaths.map((target) => {
18
- const enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? `${prefix}/` : prefix
19
-
20
- return `${enrichedPrefix}${target}`
21
- })
22
- const cjsPattern = `^${escapeRegex(fromPath)}$`
23
- jestMap[cjsPattern] = paths.length === 1 ? paths[0] : paths
24
- } else if (segments.length === 2) {
25
- const paths = toPaths.map((target) => {
26
- const enrichedTarget =
27
- target.startsWith('./') && prefix !== '' ? target.substring(target.indexOf('/') + 1) : target
28
- const enrichedPrefix = prefix !== '' && !prefix.endsWith('/') ? `${prefix}/` : prefix
29
-
30
- return `${enrichedPrefix}${enrichedTarget.replace(/\*/g, '$1')}`
31
- })
32
- if (useESM) {
33
- const esmPattern = `^${escapeRegex(segments[0])}(.*)${escapeRegex(segments[1])}\\.js$`
34
- jestMap[esmPattern] = paths.length === 1 ? paths[0] : paths
35
- }
36
- const cjsPattern = `^${escapeRegex(segments[0])}(.*)${escapeRegex(segments[1])}$`
37
- jestMap[cjsPattern] = paths.length === 1 ? paths[0] : paths
38
- }
39
- }
40
-
41
- if (useESM) {
42
- jestMap['^(\\.{1,2}/.*)\\.js$'] = '$1'
43
- }
44
-
45
- return jestMap
46
- }