@elliots/typical 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -53,10 +53,17 @@ See ./samples/esm and ./samples/tsc and ./samples/ttsx
53
53
  Quickest way to try it out is to use ttsx:
54
54
 
55
55
  ```bash
56
- npm add github:elliots/typical
56
+ npm add @elliots/typical
57
57
  npx ttsx your-script.ts
58
58
  ```
59
59
 
60
+ or globally:
61
+
62
+ ```bash
63
+ npm add -g @elliots/typical
64
+ ttsx your-script.ts
65
+ ```
66
+
60
67
  ## Example
61
68
 
62
69
  This code will run without errors when compiled normally, but will throw an error when using Typical.
package/bin/typical ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import('../dist/src/cli.js');
@@ -323,6 +323,8 @@ export class TypicalTransformer {
323
323
  // Transform return statements - use explicit type or infer from type checker
324
324
  let transformedStatements = visitedBody.statements;
325
325
  let returnType = func.type;
326
+ // Check if this is an async function
327
+ const isAsync = func.modifiers?.some((mod) => mod.kind === ts.SyntaxKind.AsyncKeyword);
326
328
  // If no explicit return type, try to infer it from the type checker
327
329
  let returnTypeForString;
328
330
  if (!returnType) {
@@ -337,14 +339,45 @@ export class TypicalTransformer {
337
339
  // For explicit return types, get the Type from the TypeNode
338
340
  returnTypeForString = typeChecker.getTypeFromTypeNode(returnType);
339
341
  }
342
+ // For async functions, unwrap Promise<T> to get T
343
+ // The return statement in an async function returns T, not Promise<T>
344
+ if (isAsync && returnType && returnTypeForString) {
345
+ const promiseSymbol = returnTypeForString.getSymbol();
346
+ if (promiseSymbol && promiseSymbol.getName() === "Promise") {
347
+ // Get the type argument of Promise<T>
348
+ const typeArgs = returnTypeForString.typeArguments;
349
+ if (typeArgs && typeArgs.length > 0) {
350
+ returnTypeForString = typeArgs[0];
351
+ // Also update the TypeNode to match
352
+ if (ts.isTypeReferenceNode(returnType) && returnType.typeArguments && returnType.typeArguments.length > 0) {
353
+ returnType = returnType.typeArguments[0];
354
+ }
355
+ else {
356
+ // Create a new type node from the unwrapped type
357
+ returnType = typeChecker.typeToTypeNode(returnTypeForString, func, ts.NodeBuilderFlags.InTypeAlias);
358
+ }
359
+ }
360
+ }
361
+ }
340
362
  if (returnType && returnTypeForString) {
341
363
  const returnTransformer = (node) => {
342
364
  if (ts.isReturnStatement(node) && node.expression) {
365
+ // For async functions, we need to await the expression before validating
366
+ // because the return expression might be a Promise
367
+ let expressionToValidate = node.expression;
368
+ if (isAsync) {
369
+ // Check if the expression is already an await expression
370
+ const isAlreadyAwaited = ts.isAwaitExpression(node.expression);
371
+ if (!isAlreadyAwaited) {
372
+ // Wrap in await: return validate(await expr)
373
+ expressionToValidate = ctx.factory.createAwaitExpression(node.expression);
374
+ }
375
+ }
343
376
  if (this.config.reusableValidators) {
344
377
  // Use reusable validators - always use typeToString
345
378
  const returnTypeText = typeChecker.typeToString(returnTypeForString);
346
379
  const validatorName = this.getOrCreateValidator(returnTypeText, returnType);
347
- const validatorCall = ctx.factory.createCallExpression(ctx.factory.createIdentifier(validatorName), undefined, [node.expression]);
380
+ const validatorCall = ctx.factory.createCallExpression(ctx.factory.createIdentifier(validatorName), undefined, [expressionToValidate]);
348
381
  return ctx.factory.updateReturnStatement(node, validatorCall);
349
382
  }
350
383
  else {
@@ -352,7 +385,7 @@ export class TypicalTransformer {
352
385
  const typiaIdentifier = ctx.factory.createIdentifier("typia");
353
386
  const assertIdentifier = ctx.factory.createIdentifier("assert");
354
387
  const propertyAccess = ctx.factory.createPropertyAccessExpression(typiaIdentifier, assertIdentifier);
355
- const callExpression = ctx.factory.createCallExpression(propertyAccess, [returnType], [node.expression]);
388
+ const callExpression = ctx.factory.createCallExpression(propertyAccess, [returnType], [expressionToValidate]);
356
389
  return ctx.factory.updateReturnStatement(node, callExpression);
357
390
  }
358
391
  }
@@ -1 +1 @@
1
- {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/transformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/transformer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@elliots/typical",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Runtime safe TypeScript transformer using typia",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "typical": "dist/cli.js",
8
+ "typical": "bin/typical",
9
9
  "ttsx": "bin/ttsx",
10
10
  "ttsc": "bin/ttsc"
11
11
  },
@@ -17,7 +17,8 @@
17
17
  },
18
18
  "files": [
19
19
  "dist/src",
20
- "bin"
20
+ "bin",
21
+ "src"
21
22
  ],
22
23
  "scripts": {
23
24
  "build": "tsc",
package/src/cli.ts ADDED
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Command } from 'commander';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { TypicalTransformer } from './transformer.js';
7
+ import * as ts from 'typescript';
8
+ import { loadConfig } from './config.js';
9
+ import { shouldIncludeFile } from './file-filter.js';
10
+
11
+ const program = new Command();
12
+
13
+ program
14
+ .name('typical')
15
+ .description('Runtime safe TypeScript transformer using typia')
16
+ .version('0.1.0');
17
+
18
+ program
19
+ .command('transform')
20
+ .description('Transform a TypeScript file with runtime validation')
21
+ .argument('<file>', 'TypeScript file to transform')
22
+ .option('-o, --output <file>', 'Output file')
23
+ .option('-c, --config <file>', 'Config file path', 'typical.json')
24
+ .option('-m, --mode <mode>', 'Transformation mode: basic, typia, js', 'basic')
25
+ .action(async (file: string, options: { output?: string; config?: string; mode?: 'basic' | 'typia' | 'js' }) => {
26
+ try {
27
+ const config = loadConfig(options.config);
28
+ const transformer = new TypicalTransformer(config);
29
+
30
+ if (!fs.existsSync(file)) {
31
+ console.error(`File not found: ${file}`);
32
+ process.exit(1);
33
+ }
34
+
35
+ console.log(`Transforming ${file}...`);
36
+ const transformedCode = transformer.transform(path.resolve(file), options.mode ?? 'basic');
37
+
38
+ const outputFilename = options.output ? path.resolve(options.output) : options.mode === 'js' ? file + '.js' : file + '.transformed.ts';
39
+
40
+ const outputFile = options.output ? path.resolve(options.output) : file + '.transformed.ts';
41
+ fs.writeFileSync(outputFile, transformedCode);
42
+
43
+ console.log(`Transformed code written to ${outputFile}`);
44
+ } catch (error) {
45
+ console.error('Transformation failed:', error);
46
+ process.exit(1);
47
+ }
48
+ });
49
+
50
+ // program
51
+ // .command('build')
52
+ // .description('Transform all TypeScript files in the project')
53
+ // .option('-c, --config <file>', 'Config file path')
54
+ // .option('--dry-run', 'Show what would be transformed without making changes')
55
+ // .action(async (options: { config?: string, dryRun?: boolean }) => {
56
+ // try {
57
+ // const transformer = new TypicalTransformer();
58
+
59
+ // const { glob } = await import('glob');
60
+
61
+ // const config = loadConfig(options.config);
62
+
63
+ // if (!config.include || config.include.length === 0) {
64
+ // console.error('No include patterns specified in config');
65
+ // process.exit(1);
66
+ // }
67
+
68
+ // const files: string[] = [];
69
+
70
+ // for (const pattern of config.include) {
71
+ // const matched = await glob(pattern, {
72
+ // ignore: config.exclude,
73
+ // absolute: true
74
+ // });
75
+ // files.push(...matched);
76
+ // }
77
+
78
+ // console.log(`Found ${files.length} files to transform`);
79
+
80
+ // if (options.dryRun) {
81
+ // files.forEach(file => console.log(`Would transform: ${file}`));
82
+ // return;
83
+ // }
84
+
85
+ // let transformed = 0;
86
+
87
+ // for (const file of files) {
88
+ // // Double-check with our shared filtering logic
89
+ // if (!shouldIncludeFile(file, config)) {
90
+ // console.log(`Skipping ${file} (excluded by filters)`);
91
+ // continue;
92
+ // }
93
+
94
+ // try {
95
+ // console.log(`Transforming ${file}...`);
96
+ // const transformedCode = transformer.transformFile(file, ts);
97
+ // fs.writeFileSync(file, transformedCode);
98
+ // transformed++;
99
+ // } catch (error) {
100
+ // console.error(`Failed to transform ${file}:`, error);
101
+ // }
102
+ // }
103
+
104
+ // console.log(`Successfully transformed ${transformed}/${files.length} files`);
105
+ // } catch (error) {
106
+ // console.error('Build failed:', error);
107
+ // process.exit(1);
108
+ // }
109
+ // });
110
+
111
+ program.parse();
package/src/config.ts ADDED
@@ -0,0 +1,35 @@
1
+ export interface TypicalConfig {
2
+ include?: string[];
3
+ exclude?: string[];
4
+ reusableValidators?: boolean;
5
+ }
6
+
7
+ export const defaultConfig: TypicalConfig = {
8
+ include: ["**/*.ts", "**/*.tsx"],
9
+ exclude: ["node_modules/**", "**/*.d.ts", "dist/**", "build/**"],
10
+ reusableValidators: true,
11
+ };
12
+
13
+ import fs from 'fs';
14
+ import path from 'path';
15
+
16
+ export function loadConfig(configPath?: string): TypicalConfig {
17
+ const configFile = configPath || path.join(process.cwd(), 'typical.json');
18
+
19
+ if (fs.existsSync(configFile)) {
20
+ try {
21
+ const configContent = fs.readFileSync(configFile, 'utf8');
22
+ const userConfig: Partial<TypicalConfig> = JSON.parse(configContent);
23
+
24
+ return {
25
+ ...defaultConfig,
26
+ ...userConfig,
27
+ };
28
+ } catch (error) {
29
+ console.warn(`Failed to parse config file ${configFile}:`, error);
30
+ return defaultConfig;
31
+ }
32
+ }
33
+
34
+ return defaultConfig;
35
+ }
@@ -0,0 +1,2 @@
1
+ import { register } from 'node:module';
2
+ register('./esm-loader.js', { parentURL: import.meta.url });
@@ -0,0 +1,26 @@
1
+ import { fileURLToPath } from "url";
2
+ import { TypicalTransformer } from "./transformer.js";
3
+
4
+ const transformer = new TypicalTransformer();
5
+
6
+ /**
7
+ * Load hook - transforms TypeScript files on the fly
8
+ */
9
+ export async function load(url: string, context: any, nextLoad: any) {
10
+ if (!url.endsWith(".ts")) {
11
+ return nextLoad(url, context);
12
+ }
13
+ const filePath = fileURLToPath(url);
14
+
15
+ try {
16
+ const transformedCode = transformer.transform(filePath, 'js');
17
+ return {
18
+ format: "module",
19
+ source: transformedCode,
20
+ shortCircuit: true,
21
+ };
22
+ } catch (error) {
23
+ console.error(`Error transforming ${filePath}:`, error);
24
+ throw error;
25
+ }
26
+ }
@@ -0,0 +1,44 @@
1
+ import * as path from 'path';
2
+ import { minimatch } from 'minimatch';
3
+ import { TypicalConfig } from './config.js';
4
+
5
+ /**
6
+ * Determines if a file should be transformed based on include/exclude patterns
7
+ */
8
+ export function shouldTransformFile(fileName: string, config: TypicalConfig): boolean {
9
+ const relativePath = path.relative(process.cwd(), fileName);
10
+
11
+ // Check include patterns
12
+ const isIncluded = config.include?.some(pattern => {
13
+ return minimatch(relativePath, pattern);
14
+ }) ?? true;
15
+
16
+ if (!isIncluded) return false;
17
+
18
+ // Check exclude patterns
19
+ const isExcluded = config.exclude?.some(pattern => {
20
+ return minimatch(relativePath, pattern);
21
+ }) ?? false;
22
+
23
+ return !isExcluded;
24
+ }
25
+
26
+ /**
27
+ * Checks if a file is a TypeScript file that can be transformed
28
+ */
29
+ export function isTransformableTypeScriptFile(fileName: string): boolean {
30
+ // Only transform TypeScript files
31
+ if (!/\.(ts|tsx)$/.test(fileName)) return false;
32
+
33
+ // Skip declaration files
34
+ if (fileName.endsWith('.d.ts')) return false;
35
+
36
+ return true;
37
+ }
38
+
39
+ /**
40
+ * Combined check for both file type and include/exclude patterns
41
+ */
42
+ export function shouldIncludeFile(fileName: string, config: TypicalConfig): boolean {
43
+ return isTransformableTypeScriptFile(fileName) && shouldTransformFile(fileName, config);
44
+ }
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { TypicalTransformer } from './transformer.js';
2
+ export { loadConfig, defaultConfig, TypicalConfig } from './config.js';
@@ -0,0 +1,25 @@
1
+ // logs all readFile and readFileSync calls (for debugging)
2
+
3
+ const fs = require("fs");
4
+ const fsp = require("fs/promises");
5
+
6
+ // monkeypatch promises/readFile
7
+ const origFspReadFile = fsp.readFile;
8
+ fsp.readFile = async function (path, ...args) {
9
+ console.log("fsp.readFile", path);
10
+ return origFspReadFile.call(this, path, ...args);
11
+ };
12
+
13
+ // monkeypatch readFile
14
+ const origFsReadFile = fs.readFile;
15
+ fs.readFile = async function (path, ...args) {
16
+ console.log("fs.readFile", path);
17
+ return origFsReadFile.call(this, path, ...args);
18
+ };
19
+
20
+ // monkeypatch readFileSync
21
+ const origFsReadFileSync = fs.readFileSync;
22
+ fs.readFileSync = function (path, ...args) {
23
+ console.log("fs.readFileSync", path);
24
+ return origFsReadFileSync.call(this, path, ...args);
25
+ };
@@ -0,0 +1,52 @@
1
+ // monkeypatch fs.readFileSync to automatically add @elliots/typical/tsc-plugin to tsconfig.json (if not present)
2
+
3
+ const fs = require("fs");
4
+ const stripJsonComments = require('strip-json-comments').default;
5
+
6
+ const origFsReadFileSync = fs.readFileSync;
7
+
8
+ fs.readFileSync = function (path, ...args) {
9
+ const result = origFsReadFileSync.call(this, path, ...args);
10
+
11
+ if (typeof path === "string" && path.endsWith("/tsconfig.json")) {
12
+ try {
13
+
14
+ const json = stripJsonComments(result.toString(), { trailingCommas: true });
15
+
16
+ const config = JSON.parse(json);
17
+
18
+ if (!config.compilerOptions) {
19
+ config.compilerOptions = {};
20
+ }
21
+
22
+ if (!config.compilerOptions.plugins) {
23
+ config.compilerOptions.plugins = [];
24
+ }
25
+
26
+ const hasTypical = config.compilerOptions.plugins.some(
27
+ (plugin) => plugin.transform === "@elliots/typical/tsc-plugin"
28
+ );
29
+
30
+ if (!hasTypical) {
31
+ if (fs.existsSync("./dist/src/tsc-plugin.js")) {
32
+ console.log("DEV MODE: Adding ./dist/src/tsc-plugin.js to tsconfig.json");
33
+ config.compilerOptions.plugins.push({
34
+ transform: "./dist/src/tsc-plugin.js",
35
+ });
36
+ } else {
37
+ config.compilerOptions.plugins.push({
38
+ transform: "@elliots/typical/tsc-plugin",
39
+ });
40
+ }
41
+ }
42
+
43
+ // console.log("patched config", JSON.stringify(config, null, 2));
44
+
45
+ return JSON.stringify(config, null, 2);
46
+ } catch (e) {
47
+ console.error("ERROR patching tsconfig.json to add @elliots/typical/tsc-plugin", e);
48
+ throw e;
49
+ }
50
+ }
51
+ return result;
52
+ };
package/src/setup.ts ADDED
@@ -0,0 +1,29 @@
1
+ import type ts from "typescript";
2
+
3
+ export function setupTsProgram(tsInstance: typeof ts): ts.Program {
4
+ // Find tsconfig.json
5
+ const tsConfigPath = tsInstance.findConfigFile(
6
+ process.cwd(),
7
+ tsInstance.sys.fileExists,
8
+ "tsconfig.json"
9
+ );
10
+ if (!tsConfigPath) {
11
+ throw new Error("Could not find tsconfig.json");
12
+ }
13
+
14
+ // Load and parse tsconfig.json
15
+ const configFile = tsInstance.readConfigFile(tsConfigPath, tsInstance.sys.readFile);
16
+ const parsedConfig = tsInstance.parseJsonConfigFileContent(
17
+ configFile.config,
18
+ tsInstance.sys,
19
+ process.cwd()
20
+ );
21
+
22
+ // Create the TypeScript program with all project files
23
+ const tsProgram = tsInstance.createProgram(
24
+ parsedConfig.fileNames,
25
+ parsedConfig.options
26
+ );
27
+
28
+ return tsProgram;
29
+ }