@runtyped/type-compiler 1.0.20-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 (84) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +4 -0
  3. package/compiler-debug.ts +38 -0
  4. package/deepkit-compiler-debug.js +5 -0
  5. package/deepkit-type-install.js +5 -0
  6. package/dist/cjs/compiler-debug.d.ts +1 -0
  7. package/dist/cjs/compiler-debug.js +28 -0
  8. package/dist/cjs/compiler-debug.js.map +1 -0
  9. package/dist/cjs/index.d.ts +7 -0
  10. package/dist/cjs/index.js +36 -0
  11. package/dist/cjs/index.js.map +1 -0
  12. package/dist/cjs/install-transformer.d.ts +7 -0
  13. package/dist/cjs/install-transformer.js +77 -0
  14. package/dist/cjs/install-transformer.js.map +1 -0
  15. package/dist/cjs/src/compiler.d.ts +313 -0
  16. package/dist/cjs/src/compiler.js +2506 -0
  17. package/dist/cjs/src/compiler.js.map +1 -0
  18. package/dist/cjs/src/config.d.ts +83 -0
  19. package/dist/cjs/src/config.js +248 -0
  20. package/dist/cjs/src/config.js.map +1 -0
  21. package/dist/cjs/src/debug.d.ts +9 -0
  22. package/dist/cjs/src/debug.js +26 -0
  23. package/dist/cjs/src/debug.js.map +1 -0
  24. package/dist/cjs/src/loader.d.ts +18 -0
  25. package/dist/cjs/src/loader.js +55 -0
  26. package/dist/cjs/src/loader.js.map +1 -0
  27. package/dist/cjs/src/plugin.d.ts +14 -0
  28. package/dist/cjs/src/plugin.js +46 -0
  29. package/dist/cjs/src/plugin.js.map +1 -0
  30. package/dist/cjs/src/reflection-ast.d.ts +46 -0
  31. package/dist/cjs/src/reflection-ast.js +335 -0
  32. package/dist/cjs/src/reflection-ast.js.map +1 -0
  33. package/dist/cjs/src/resolver.d.ts +27 -0
  34. package/dist/cjs/src/resolver.js +88 -0
  35. package/dist/cjs/src/resolver.js.map +1 -0
  36. package/dist/cjs/src/ts-types.d.ts +17 -0
  37. package/dist/cjs/src/ts-types.js +6 -0
  38. package/dist/cjs/src/ts-types.js.map +1 -0
  39. package/dist/esm/compiler-debug.d.ts +1 -0
  40. package/dist/esm/compiler-debug.js +26 -0
  41. package/dist/esm/compiler-debug.js.map +1 -0
  42. package/dist/esm/index.d.ts +7 -0
  43. package/dist/esm/index.js +19 -0
  44. package/dist/esm/index.js.map +1 -0
  45. package/dist/esm/install-transformer.d.ts +7 -0
  46. package/dist/esm/install-transformer.js +75 -0
  47. package/dist/esm/install-transformer.js.map +1 -0
  48. package/dist/esm/src/compiler.d.ts +313 -0
  49. package/dist/esm/src/compiler.js +2463 -0
  50. package/dist/esm/src/compiler.js.map +1 -0
  51. package/dist/esm/src/config.d.ts +83 -0
  52. package/dist/esm/src/config.js +238 -0
  53. package/dist/esm/src/config.js.map +1 -0
  54. package/dist/esm/src/debug.d.ts +9 -0
  55. package/dist/esm/src/debug.js +21 -0
  56. package/dist/esm/src/debug.js.map +1 -0
  57. package/dist/esm/src/loader.d.ts +18 -0
  58. package/dist/esm/src/loader.js +48 -0
  59. package/dist/esm/src/loader.js.map +1 -0
  60. package/dist/esm/src/plugin.d.ts +14 -0
  61. package/dist/esm/src/plugin.js +40 -0
  62. package/dist/esm/src/plugin.js.map +1 -0
  63. package/dist/esm/src/reflection-ast.d.ts +46 -0
  64. package/dist/esm/src/reflection-ast.js +284 -0
  65. package/dist/esm/src/reflection-ast.js.map +1 -0
  66. package/dist/esm/src/resolver.d.ts +27 -0
  67. package/dist/esm/src/resolver.js +80 -0
  68. package/dist/esm/src/resolver.js.map +1 -0
  69. package/dist/esm/src/ts-types.d.ts +17 -0
  70. package/dist/esm/src/ts-types.js +5 -0
  71. package/dist/esm/src/ts-types.js.map +1 -0
  72. package/index.ts +22 -0
  73. package/install-transformer.ts +84 -0
  74. package/package.json +59 -0
  75. package/src/compiler.ts +3003 -0
  76. package/src/config.ts +331 -0
  77. package/src/debug.ts +22 -0
  78. package/src/loader.ts +58 -0
  79. package/src/plugin.ts +58 -0
  80. package/src/reflection-ast.ts +335 -0
  81. package/src/resolver.ts +113 -0
  82. package/src/ts-types.ts +28 -0
  83. package/tsconfig.esm.json +16 -0
  84. package/tsconfig.json +27 -0
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This script installs the deepkit/type transformer (that extracts automatically types and adds the correct @t decorator) to the typescript node_modules.
5
+ *
6
+ * The critical section that needs adjustment is in the `function getScriptTransformers` in `node_modules/typescript/lib/tsc.js`.
7
+ */
8
+
9
+ import { dirname, join, relative } from 'path';
10
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
11
+
12
+ let to = process.argv[2] || process.cwd();
13
+
14
+ function getPatchId(id: string): string {
15
+ return 'deepkit_type_patch_' + id;
16
+ }
17
+
18
+ function getCode(deepkitDistPath: string, varName: string, id: string): string {
19
+ return `
20
+ //${getPatchId(id)}
21
+ try {
22
+ var typeTransformer;
23
+ try {
24
+ typeTransformer = require('@runtyped/type-compiler');
25
+ } catch (error) {
26
+ typeTransformer = require(${JSON.stringify(deepkitDistPath)});
27
+ }
28
+ if (typeTransformer) {
29
+ if (!customTransformers) ${varName} = {};
30
+ if (!${varName}.before) ${varName}.before = [];
31
+ let alreadyPatched = false;
32
+ for (let fn of ${varName}.before) {
33
+ if (fn && fn.name === 'deepkitTransformer') alreadyPatched = true;
34
+ }
35
+ if (!alreadyPatched) {
36
+ if (!${varName}.before.includes(typeTransformer.transformer)) ${varName}.before.push(typeTransformer.transformer);
37
+
38
+ if (!${varName}.afterDeclarations) ${varName}.afterDeclarations = [];
39
+ if (!${varName}.afterDeclarations.includes(typeTransformer.declarationTransformer)) {
40
+ ${varName}.afterDeclarations.push(typeTransformer.declarationTransformer);
41
+ }
42
+ }
43
+ }
44
+ } catch (e) {
45
+ }
46
+ //${getPatchId(id)}-end
47
+ `;
48
+ }
49
+
50
+ function isPatched(code: string, id: string) {
51
+ return code.includes(getPatchId(id));
52
+ }
53
+
54
+ function patchGetTransformers(deepkitDistPath: string, code: string): string {
55
+ const id = 'patchGetTransformers';
56
+ if (isPatched(code, id)) return '';
57
+
58
+ const find = /function getTransformers\([^)]+\)\s*{/;
59
+ if (!code.match(find)) return '';
60
+
61
+ code = code.replace(find, function (a) {
62
+ return a + '\n ' + getCode(deepkitDistPath, 'customTransformers', id);
63
+ });
64
+
65
+ return code;
66
+ }
67
+
68
+ if (to + '/dist/cjs' === __dirname) {
69
+ to = join(to, '..'); //we exclude type-compiler/node_modules
70
+ }
71
+
72
+ const typeScriptPath = dirname(require.resolve('typescript', { paths: [to] }));
73
+ const deepkitDistPath = relative(typeScriptPath, __dirname);
74
+
75
+ const paths = ['tsc.js', '_tsc.js', 'typescript.js'];
76
+
77
+ for (const fileName of paths) {
78
+ const file = join(typeScriptPath, fileName);
79
+ if (!existsSync(file)) continue;
80
+ const content = patchGetTransformers(deepkitDistPath, readFileSync(file, 'utf8'));
81
+ if (!content) continue;
82
+ writeFileSync(file, content);
83
+ console.log('Deepkit Type: Injected TypeScript transformer at', file);
84
+ }
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@runtyped/type-compiler",
3
+ "version": "1.0.20-alpha.1",
4
+ "description": "@runtyped/type compiler/Typescript transformer",
5
+ "type": "commonjs",
6
+ "main": "./dist/cjs/index.js",
7
+ "module": "./dist/esm/index.js",
8
+ "types": "./dist/cjs/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/cjs/index.d.ts",
12
+ "require": "./dist/cjs/index.js",
13
+ "default": "./dist/esm/index.js"
14
+ },
15
+ "./plugin": {
16
+ "types": "./dist/cjs/plugin.d.ts",
17
+ "require": "./dist/cjs/plugin.js",
18
+ "default": "./dist/esm/plugin.js"
19
+ }
20
+ },
21
+ "bin": {
22
+ "runtyped-compiler-debug": "deepkit-compiler-debug.js",
23
+ "runtyped-type-install": "deepkit-type-install.js"
24
+ },
25
+ "sideEffects": false,
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "scripts": {
30
+ "build": "echo '{\"type\": \"module\"}' > ./dist/esm/package.json",
31
+ "install": "rm -rf node_modules/typescript && node ./deepkit-type-install.js || exit 0"
32
+ },
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "git+https://github.com/runtyped/runtyped.git"
36
+ },
37
+ "authors": [
38
+ "Marc J. Schmidt <marc@marcjschmidt.de>",
39
+ "Jacopo Scazzosi <jacopo@scazzosi.com>"
40
+ ],
41
+ "license": "MIT",
42
+ "peerDependencies": {
43
+ "typescript": "*"
44
+ },
45
+ "devDependencies": {
46
+ "@runtyped/expect": "1.0.20-alpha.1",
47
+ "@types/micromatch": "^4.0.10"
48
+ },
49
+ "dependencies": {
50
+ "@runtyped/type-spec": "1.0.20-alpha.1",
51
+ "@marcj/ts-clone-node": "^2.2.0",
52
+ "@rollup/pluginutils": "^5.3.0",
53
+ "@typescript/vfs": "1.6.4",
54
+ "get-tsconfig": "^4.14.0",
55
+ "lz-string": "^1.5.0",
56
+ "micromatch": "^4.0.8",
57
+ "strip-json-comments": "^5.0.3"
58
+ }
59
+ }