tsx-strict 0.4.2 → 0.6.0

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
@@ -9,6 +9,7 @@ Run TypeScript files with TSX while providing real-time type checking.
9
9
  - Intelligent process management
10
10
  - Customizable compiler support
11
11
  - Memory management options
12
+ - Config file support (`tsx-strict.config.ts` / `tsxs.config.ts`)
12
13
 
13
14
  ## Installation
14
15
 
@@ -52,6 +53,40 @@ tsxs --no-type-check app.ts
52
53
  | `--silent` | Suppress output | `false` |
53
54
  | `--no-type-check` | Skip type checking (run tsx directly) | `false` |
54
55
 
56
+ ## Config File
57
+
58
+ Create a `tsx-strict.config.ts` or `tsxs.config.ts` at your project root for persistent configuration. CLI args always take precedence over the config file.
59
+
60
+ ```typescript
61
+ import { defineConfig } from "tsx-strict/config";
62
+
63
+ export default defineConfig({
64
+ watch: true,
65
+ clear: true,
66
+ typeCheck: true,
67
+ compiler: "typescript/bin/tsc",
68
+ tscArgs: ["--strict"],
69
+ tsxArgs: ["--env-file=.env"],
70
+ maxNodeMem: "4096",
71
+ });
72
+ ```
73
+
74
+ ### Watch Options
75
+
76
+ `watch` can be `true` to use defaults, or an object for full control:
77
+
78
+ ```typescript
79
+ import { defineConfig } from "tsx-strict/config";
80
+
81
+ export default defineConfig({
82
+ watch: {
83
+ include: ["src/**"],
84
+ ignore: ["**/*.test.ts", /generated/, (path) => path.includes("dist")],
85
+ extensions: ["ts", "tsx", "js"],
86
+ },
87
+ });
88
+ ```
89
+
55
90
  ## How It Works
56
91
 
57
92
  Runs `tsc --noEmit` for type checking and `tsx` for execution. Restarts tsx only when type checking passes and kills previous instances to prevent conflicts.
package/dist/cli.js CHANGED
@@ -27,7 +27,8 @@ program
27
27
  .option("-p, --path <path>", "tsconfig.json path", "tsconfig.json")
28
28
  .option("--tsc-args <args...>", "Additional tsc arguments")
29
29
  .option("--tsx-args <args...>", "Additional tsx arguments")
30
- .option("--no-type-check", "Skip type checking (run tsx directly)", true)
30
+ .option("-n, --no-type-check", "Skip type checking (run tsx directly)", true)
31
+ .option("--maxNodeMem <maxNodeMem>", "Sets up max node memory", "4096")
31
32
  .action(async (file, options) => {
32
33
  try {
33
34
  await (0, index_1.runTsxStrict)(file, options);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,mCAAuC;AACvC,mBAAiB;AACjB,2BAAkC;AAClC,gDAAwB;AAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CACjE,CAAC;AACF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,SAAS,OAAO,CAAC,KAAU,EAAE,QAAa;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,KAAK,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3E,MAAM,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,CAAC;KACjD,MAAM,CAAC,uBAAuB,EAAE,UAAU,EAAE,oBAAoB,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,CAAC;KAClE,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;KAC1D,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,IAAI,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AACL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,mCAAuC;AACvC,mBAAiB;AACjB,2BAAkC;AAClC,gDAAwB;AAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CACjE,CAAC;AACF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,SAAS,OAAO,CAAC,KAAU,EAAE,QAAa;IACxC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC5C,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,KAAK,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3E,MAAM,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,CAAC;KACjD,MAAM,CAAC,uBAAuB,EAAE,UAAU,EAAE,oBAAoB,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,CAAC;KAClE,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,EAAE,IAAI,CAAC;KAC5E,MAAM,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ProgramOptions } from ".";
2
+ export type WatchOptions = {
3
+ include?: string[];
4
+ ignore?: (string | RegExp | ((path: string) => boolean))[];
5
+ extensions?: string[];
6
+ };
7
+ export type TsxStrictConfig = ProgramOptions & {
8
+ watch?: boolean | WatchOptions;
9
+ };
10
+ export declare function defineConfig(config: TsxStrictConfig): TsxStrictConfig;
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,CAAC;AAEnC,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC7C,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;CAChC,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAErE"}
package/dist/config.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = defineConfig;
4
+ function defineConfig(config) {
5
+ return config;
6
+ }
7
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAYA,oCAEC;AAFD,SAAgB,YAAY,CAAC,MAAuB;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,3 +1,4 @@
1
- export declare function setupFileWatcher(restartTsx: () => void): void;
1
+ import { TsxStrictConfig } from "./config";
2
+ export declare function setupFileWatcher(restartTsx: () => void, config?: Partial<TsxStrictConfig>): void;
2
3
  export declare function stopFileWatcher(): void;
3
4
  //# sourceMappingURL=file-watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"AAMA,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,IAAI,QAuDtD;AAED,wBAAgB,eAAe,SAK9B"}
1
+ {"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAgB,MAAM,UAAU,CAAC;AAIzD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,IAAI,EACtB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,QA+DtC;AAED,wBAAgB,eAAe,SAK9B"}
@@ -9,13 +9,16 @@ const chokidar_1 = __importDefault(require("chokidar"));
9
9
  const sheu_1 = __importDefault(require("./sheu"));
10
10
  const _1 = require(".");
11
11
  let fileWatcher = null;
12
- function setupFileWatcher(restartTsx) {
12
+ function setupFileWatcher(restartTsx, config = {}) {
13
13
  if (fileWatcher) {
14
14
  fileWatcher.close();
15
15
  fileWatcher = null;
16
16
  }
17
- fileWatcher = chokidar_1.default.watch([process.cwd()], {
18
- ignored: [/node_modules/, /.build/, /dist/],
17
+ const watchOptions = typeof config.watch === "object"
18
+ ? config.watch
19
+ : {};
20
+ fileWatcher = chokidar_1.default.watch(watchOptions.include ?? [process.cwd()], {
21
+ ignored: [/node_modules/, /.build/, /dist/, ...(watchOptions.ignore ?? [])],
19
22
  ignoreInitial: true,
20
23
  persistent: true,
21
24
  });
@@ -23,7 +26,9 @@ function setupFileWatcher(restartTsx) {
23
26
  fileWatcher.on("all", (event, path) => {
24
27
  if (event === "ready" ||
25
28
  isRestarting ||
26
- (!/\.(ts|js|jsx|tsx|mts|cts|mjs|cjs)$/.test(path) &&
29
+ (!(watchOptions.extensions
30
+ ? new RegExp(`\\.(${watchOptions.extensions.join("|")})$`).test(path)
31
+ : /\.(ts|js|jsx|tsx|mts|cts|mjs|cjs)$/.test(path)) &&
27
32
  !path.includes(".env")))
28
33
  return;
29
34
  isRestarting = true;
@@ -41,6 +46,7 @@ function setupFileWatcher(restartTsx) {
41
46
  else
42
47
  setTimeout(() => {
43
48
  if (status.hasTsErrors) {
49
+ console.log("");
44
50
  sheu_1.default.warn(`Waiting for TypeScript errors to be fixed in order to restart`, { timestamp: true });
45
51
  }
46
52
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":";;;;;AAMA,4CAuDC;AAED,0CAKC;AApED,wDAA+C;AAC/C,kDAA0B;AAC1B,wBAA8B;AAE9B,IAAI,WAAW,GAAqB,IAAI,CAAC;AAEzC,SAAgB,gBAAgB,CAAC,UAAsB;IACrD,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,WAAW,GAAG,kBAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;QAC5C,OAAO,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC;QAC3C,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACpC,IACE,KAAK,KAAK,OAAO;YACjB,YAAY;YACZ,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/C,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEzB,OAAO;QACT,YAAY,GAAG,IAAI,CAAC;QAEpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,CAAC,CAAC,IAAI,CAAC;QAEX,MAAM,MAAM,GAAG,IAAA,YAAS,GAAE,CAAC;QAE3B,IAAI,CAAC,MAAM,EAAE,WAAW;YACtB,cAAI,CAAC,IAAI,CAAC,uCAAuC,IAAI,EAAE,EAAE;gBACvD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;;YAEH,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,cAAI,CAAC,IAAI,CACP,+DAA+D,EAC/D,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,cAAI,CAAC,IAAI,CAAC,uCAAuC,IAAI,EAAE,EAAE;wBACvD,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QAEV,UAAU,CAAC,GAAG,EAAE;YACd,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,UAAU,EAAE,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,eAAe;IAC7B,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,KAAK,EAAE,CAAC;QACpB,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env tsx
2
2
  export declare let tsxKiller: (() => Promise<void>) | null;
3
3
  export declare function setTsxKiller(value: typeof tsxKiller): void;
4
4
  export declare function getTsxKiller(): (() => Promise<void>) | null;
@@ -8,5 +8,16 @@ export declare let status: {
8
8
  export declare function getStatus(): {
9
9
  hasTsErrors?: boolean;
10
10
  } & Record<string, any>;
11
- export declare function runTsxStrict(file: string, options: Record<string, any>): Promise<void>;
11
+ export type ProgramOptions = {
12
+ watch: boolean;
13
+ include?: string | undefined;
14
+ clear: boolean;
15
+ compiler: string;
16
+ path: string;
17
+ tscArgs?: string[] | undefined;
18
+ tsxArgs?: string[] | undefined;
19
+ typeCheck: boolean;
20
+ maxNodeMem: string;
21
+ };
22
+ export declare function runTsxStrict(file: string, options: ProgramOptions): Promise<void>;
12
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAYA,eAAO,IAAI,SAAS,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAW,CAAC;AAE1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,SAAS,QAEnD;AAED,wBAAgB,YAAY,WANC,OAAO,CAAC,IAAI,CAAC,SAQzC;AAED,eAAO,IAAI,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,CAAC;AAExE,wBAAgB,SAAS;kBAFU,OAAO;wBAIzC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAuK5E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAaA,eAAO,IAAI,SAAS,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAW,CAAC;AAE1D,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,SAAS,QAEnD;AAED,wBAAgB,YAAY,WANC,OAAO,CAAC,IAAI,CAAC,SAQzC;AAED,eAAO,IAAI,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,CAAC;AAExE,wBAAgB,SAAS;kBAFU,OAAO;wBAIzC;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,iBA6HvE"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env tsx
2
2
  "use strict";
3
3
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
4
  if (k2 === undefined) k2 = k;
@@ -50,6 +50,7 @@ const readline_1 = require("readline");
50
50
  const killer_1 = require("./killer");
51
51
  const compiler_provider_1 = require("./compiler-provider");
52
52
  const file_watcher_1 = require("./file-watcher");
53
+ const config_loader_1 = require("./utils/config-loader");
53
54
  let firstTime = true;
54
55
  exports.tsxKiller = null;
55
56
  function setTsxKiller(value) {
@@ -63,26 +64,30 @@ function getStatus() {
63
64
  return exports.status;
64
65
  }
65
66
  async function runTsxStrict(file, options) {
66
- const { clear = true, typeCheck = true, compiler, watch = false, tscArgs = "", tsxArgs = "", maxNodeMem, } = options;
67
+ const fileConfig = await (0, config_loader_1.loadConfig)();
68
+ const { clear = true, typeCheck = true, compiler, watch = false, tscArgs = [], tsxArgs = [], maxNodeMem, } = { ...options, ...fileConfig };
67
69
  exports.status = { ...options, ...exports.status };
70
+ const sendSignal = (msg) => process.send && process.send(msg);
71
+ const Signal = {
72
+ emitStarted: () => sendSignal("started"),
73
+ emitFirstSuccess: () => sendSignal("first_success"),
74
+ emitSuccess: () => sendSignal("success"),
75
+ emitFail: () => sendSignal("compile_errors"),
76
+ emitFile: (path) => sendSignal(`file_emitted:${path}`),
77
+ };
68
78
  function runTsxCommand() {
69
79
  const tsxArgsArray = [];
70
80
  tsxArgsArray.push(file);
71
- if (tsxArgs.trim()) {
72
- const additionalArgs = tsxArgs
73
- .trim()
74
- .split(/\s+/)
75
- .filter((arg) => arg.length > 0);
76
- const uniqueArgs = Array.from(new Set([...tsxArgsArray, ...additionalArgs]));
77
- tsxArgsArray.length = 0;
78
- tsxArgsArray.push(...uniqueArgs);
79
- }
81
+ const uniqueArgs = Array.from(new Set([...tsxArgsArray, ...tsxArgs]));
82
+ tsxArgsArray.length = 0;
83
+ tsxArgsArray.push(...uniqueArgs);
80
84
  const tsxCommand = `${process.env.npm_lifecycle_script === "npx" ? "npx " : ""}tsx ${tsxArgsArray.join(" ")}`;
81
85
  if (exports.tsxKiller)
82
86
  ((0, exports.tsxKiller)?.()).then(() => (exports.tsxKiller = (0, runner_1.run)(tsxCommand)));
83
87
  else
84
88
  exports.tsxKiller = (0, runner_1.run)(tsxCommand);
85
89
  }
90
+ // tsx starts immediately, no waiting for tsc
86
91
  runTsxCommand();
87
92
  if (!typeCheck)
88
93
  return;
@@ -91,108 +96,71 @@ async function runTsxStrict(file, options) {
91
96
  tscArgsArray.push((0, compiler_provider_1.getCompilerPath)(compiler));
92
97
  tscArgsArray.push(...(0, compiler_provider_1.getTscArgs)(file));
93
98
  tscArgsArray.push("--noEmit");
94
- if (watch)
95
- tscArgsArray.push("--watch");
96
- if (tscArgs.trim()) {
97
- const additionalArgs = tscArgs
98
- .trim()
99
- .split(/\s+/)
100
- .filter((arg) => arg.length > 0);
101
- const uniqueArgs = Array.from(new Set([...tscArgsArray, ...additionalArgs]));
102
- tscArgsArray.length = 0;
103
- tscArgsArray.push(...uniqueArgs);
104
- }
105
- const tscProcess = (0, cross_spawn_1.default)("node", [...nodeArgs, ...tscArgsArray]);
106
- if (!tscProcess.stdout)
107
- throw new Error("Unable to read Typescript stdout");
108
- if (!tscProcess.stderr)
109
- throw new Error("Unable to read Typescript stderr");
110
- tscProcess.on("exit", (_, signal) => {
111
- if (signal !== null)
112
- process.kill(process.pid, signal);
113
- });
114
- tscProcess.stderr.pipe(process.stderr);
115
- let compilationId = 0;
116
- let compilationErrorSinceStart = false;
99
+ // No --watch — tsc is always a fresh single-pass process
100
+ const uniqueArgs = Array.from(new Set([...tscArgsArray, ...tscArgs]));
101
+ tscArgsArray.length = 0;
102
+ tscArgsArray.push(...uniqueArgs);
117
103
  exports.status.hasTsErrors = false;
118
- function restartTsx() {
119
- compilationId++;
120
- (0, killer_1.killProcesses)(compilationId).then((previousCompilationId) => {
121
- if (previousCompilationId !== compilationId)
122
- return;
123
- if (compilationErrorSinceStart)
124
- Signal.emitFail();
125
- else {
126
- Signal.emitSuccess();
127
- runTsxCommand();
128
- }
104
+ let currentTscProcess = null;
105
+ function spawnTscProcess() {
106
+ if (currentTscProcess)
107
+ currentTscProcess.kill();
108
+ const tscProcess = (0, cross_spawn_1.default)("node", [...nodeArgs, ...tscArgsArray]);
109
+ currentTscProcess = tscProcess;
110
+ if (!tscProcess.stdout)
111
+ throw new Error("Unable to read Typescript stdout");
112
+ if (!tscProcess.stderr)
113
+ throw new Error("Unable to read Typescript stderr");
114
+ tscProcess.on("exit", (_, signal) => {
115
+ if (signal !== null)
116
+ process.kill(process.pid, signal);
129
117
  });
130
- }
131
- if (watch)
132
- (0, file_watcher_1.setupFileWatcher)(restartTsx);
133
- const rl = (0, readline_1.createInterface)({ input: tscProcess.stdout });
134
- rl.on("line", function (line) {
135
- (0, stdout_manipulator_1.print)(line, {
136
- clear,
137
- });
138
- const state = (0, stdout_manipulator_1.detectState)(line);
139
- const compilationStarted = state.compilationStarted;
140
- const compilationError = state.compilationError;
141
- const compilationCompleteWithoutError = state.compilationCompleteWithoutError;
142
- if (compilationCompleteWithoutError)
143
- exports.status.hasTsErrors = false;
144
- if (compilationError) {
145
- exports.status.hasTsErrors = true;
146
- compilationId++;
147
- (0, killer_1.killProcesses)(compilationId).then((previousCompilationId) => {
148
- if (previousCompilationId !== compilationId)
149
- return;
150
- Signal.emitStarted();
151
- });
152
- }
153
- compilationErrorSinceStart =
154
- (!compilationStarted && compilationErrorSinceStart) || compilationError;
155
- if (state.fileEmitted !== null)
156
- Signal.emitFile(state.fileEmitted);
157
- if (compilationCompleteWithoutError && !exports.status.hasTsErrors && !firstTime) {
158
- compilationId++;
159
- (0, killer_1.killProcesses)(compilationId).then((previousCompilationId) => {
160
- if (previousCompilationId !== compilationId)
161
- return;
162
- if (compilationErrorSinceStart)
163
- Signal.emitFail();
118
+ tscProcess.stderr.pipe(process.stderr);
119
+ const rl = (0, readline_1.createInterface)({ input: tscProcess.stdout });
120
+ rl.on("line", function (line) {
121
+ (0, stdout_manipulator_1.print)(line, { clear });
122
+ const state = (0, stdout_manipulator_1.detectState)(line);
123
+ if (state.compilationCompleteWithoutError) {
124
+ exports.status.hasTsErrors = false;
125
+ if (firstTime) {
126
+ firstTime = false;
127
+ Signal.emitFirstSuccess();
128
+ }
164
129
  else {
165
130
  Signal.emitSuccess();
166
131
  runTsxCommand();
167
132
  }
168
- });
169
- }
170
- else if (firstTime &&
171
- compilationCompleteWithoutError &&
172
- !exports.status.hasTsErrors) {
173
- firstTime = false;
174
- Signal.emitFirstSuccess();
175
- }
176
- });
133
+ }
134
+ if (state.compilationError && !exports.status.hasTsErrors) {
135
+ exports.status.hasTsErrors = true;
136
+ // tsc found errors — kill tsx immediately
137
+ if (exports.tsxKiller)
138
+ (0, exports.tsxKiller)();
139
+ Signal.emitFail();
140
+ }
141
+ if (state.fileEmitted !== null)
142
+ Signal.emitFile(state.fileEmitted);
143
+ });
144
+ }
145
+ function restartTsx() {
146
+ if (!exports.status.hasTsErrors)
147
+ runTsxCommand();
148
+ spawnTscProcess();
149
+ }
150
+ if (watch)
151
+ (0, file_watcher_1.setupFileWatcher)(restartTsx, fileConfig);
152
+ // Initial tsc run (tsx already started above)
153
+ spawnTscProcess();
177
154
  if (typeof process.on === "function")
178
155
  process.on("message", (msg) => {
179
156
  if (msg === "run-on-success-command" && exports.tsxKiller)
180
157
  (0, exports.tsxKiller)().then(runTsxCommand);
181
158
  });
182
- const sendSignal = (msg) => process.send && process.send(msg);
183
- const Signal = {
184
- emitStarted: () => sendSignal("started"),
185
- emitFirstSuccess: () => sendSignal("first_success"),
186
- emitSuccess: () => sendSignal("success"),
187
- emitFail: () => sendSignal("compile_errors"),
188
- emitFile: (path) => sendSignal(`file_emitted:${path}`),
189
- };
190
159
  (0, node_cleanup_1.default)((_exitCode, signal) => {
191
- if (signal)
192
- tscProcess.kill(signal);
160
+ if (signal && currentTscProcess)
161
+ currentTscProcess.kill(signal);
193
162
  (0, file_watcher_1.stopFileWatcher)();
194
163
  (0, killer_1.killProcesses)(0).then(() => process.exit());
195
- // don't call cleanup handler again
196
164
  (0, node_cleanup_1.uninstall)();
197
165
  return false;
198
166
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oCAEC;AAED,oCAEC;AAID,8BAEC;AAcD,oCA6HC;AApKD,6DAAsD;AACtD,8DAAgC;AAChC,qCAA+B;AAC/B,6DAA0D;AAC1D,uCAA2C;AAC3C,qCAAyC;AACzC,2DAAkE;AAClE,iDAAmE;AACnE,yDAAmD;AAEnD,IAAI,SAAS,GAAG,IAAI,CAAC;AACV,QAAA,SAAS,GAAiC,IAAI,CAAC;AAE1D,SAAgB,YAAY,CAAC,KAAuB;IAClD,iBAAS,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,iBAAS,CAAC;AACnB,CAAC;AAEU,QAAA,MAAM,GAAoD,EAAE,CAAC;AAExE,SAAgB,SAAS;IACvB,OAAO,cAAM,CAAC;AAChB,CAAC;AAcM,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,OAAuB;IACtE,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAU,GAAE,CAAC;IACtC,MAAM,EACJ,KAAK,GAAG,IAAI,EACZ,SAAS,GAAG,IAAI,EAChB,QAAQ,EACR,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,EAAE,EACZ,OAAO,GAAG,EAAE,EACZ,UAAU,GACX,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IAElC,cAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,cAAM,EAAyB,CAAC;IAE1D,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG;QACb,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QACxC,gBAAgB,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QACnD,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QACxC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC5C,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,IAAI,EAAE,CAAC;KAC/D,CAAC;IAEF,SAAS,aAAa;QACpB,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAEjC,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAE9G,IAAI,iBAAS;YAAE,CAAA,IAAA,iBAAS,CAAA,EAAE,EAAE,CAAA,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAS,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;YAClE,iBAAS,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,6CAA6C;IAC7C,aAAa,EAAE,CAAC;IAEhB,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1E,YAAY,CAAC,IAAI,CAAC,IAAA,mCAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,YAAY,CAAC,IAAI,CAAC,GAAG,IAAA,8BAAU,EAAC,IAAI,CAAC,CAAC,CAAC;IACvC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,yDAAyD;IAEzD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACxB,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAEjC,cAAM,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,IAAI,iBAAiB,GAAoC,IAAI,CAAC;IAE9D,SAAS,eAAe;QACtB,IAAI,iBAAiB;YAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAA,qBAAK,EAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;QACjE,iBAAiB,GAAG,UAAU,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAE5E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAgB,EAAE,MAAqB,EAAE,EAAE;YAChE,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAa,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvC,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;YAC1B,IAAA,0BAAK,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvB,MAAM,KAAK,GAAG,IAAA,gCAAW,EAAC,IAAI,CAAC,CAAC;YAEhC,IAAI,KAAK,CAAC,+BAA+B,EAAE,CAAC;gBAC1C,cAAM,CAAC,WAAW,GAAG,KAAK,CAAC;gBAC3B,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,WAAW,EAAE,CAAC;oBACrB,aAAa,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,cAAM,CAAC,WAAW,EAAE,CAAC;gBAClD,cAAM,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,0CAA0C;gBAC1C,IAAI,iBAAS;oBAAE,IAAA,iBAAS,GAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI;gBAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,UAAU;QACjB,IAAI,CAAC,cAAM,CAAC,WAAW;YAAE,aAAa,EAAE,CAAC;QACzC,eAAe,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QAAE,IAAA,+BAAgB,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEpD,8CAA8C;IAC9C,eAAe,EAAE,CAAC;IAElB,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU;QAClC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,EAAE;YACpC,IAAI,GAAG,KAAK,wBAAwB,IAAI,iBAAS;gBAC/C,IAAA,iBAAS,GAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IAEL,IAAA,sBAAW,EAAC,CAAC,SAAwB,EAAE,MAAqB,EAAE,EAAE;QAC9D,IAAI,MAAM,IAAI,iBAAiB;YAAE,iBAAiB,CAAC,IAAI,CAAC,MAAa,CAAC,CAAC;QACvE,IAAA,8BAAe,GAAE,CAAC;QAClB,IAAA,sBAAa,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAA,wBAAS,GAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TsxStrictConfig } from "../config";
2
+ export declare function loadConfig(): Promise<Partial<TsxStrictConfig>>;
3
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAa5C,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAWpE"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ const fs_1 = require("fs");
38
+ const path_1 = require("path");
39
+ const CONFIG_FILES = [
40
+ "tsx-strict.config.ts",
41
+ "tsx-strict.config.js",
42
+ "tsx-strict.config.mjs",
43
+ "tsxs.config.ts",
44
+ "tsxs.config.js",
45
+ "tsxs.config.mjs",
46
+ ];
47
+ let config;
48
+ async function loadConfig() {
49
+ if (config)
50
+ return config;
51
+ for (const file of CONFIG_FILES) {
52
+ const fullPath = (0, path_1.join)(process.cwd(), file);
53
+ if ((0, fs_1.existsSync)(fullPath)) {
54
+ const mod = await Promise.resolve(`${fullPath}`).then(s => __importStar(require(s)));
55
+ config = mod.default ?? mod;
56
+ }
57
+ }
58
+ return config || {};
59
+ }
60
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,gCAWC;AA1BD,2BAAgC;AAChC,+BAA4B;AAG5B,MAAM,YAAY,GAAG;IACnB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC;AAEF,IAAI,MAAuB,CAAC;AAErB,KAAK,UAAU,UAAU;IAC9B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,yBAAa,QAAQ,uCAAC,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tsx-strict",
3
- "version": "0.4.2",
3
+ "version": "0.6.0",
4
4
  "description": "TSX runner with automatic Type-checking",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,6 +8,12 @@
8
8
  "tsx-strict": "./bin/tsx-strict.js",
9
9
  "tsxs": "./bin/tsx-strict.js"
10
10
  },
11
+ "exports": {
12
+ "./config": {
13
+ "types": "./dist/config.d.ts",
14
+ "import": "./dist/config.js"
15
+ }
16
+ },
11
17
  "scripts": {
12
18
  "build": "npx rimraf dist && tsc",
13
19
  "prepublishOnly": "npm run build",
@@ -35,7 +41,7 @@
35
41
  "bugs": {
36
42
  "url": "https://github.com/uanela/tsx-strict/issues"
37
43
  },
38
- "homepage": "https://github.com/uanela/tsx-strict#readme",
44
+ "homepage": "https://github.com/uanela/tsx-strict",
39
45
  "files": ["dist", "bin", "README.md", "LICENSE"],
40
46
  "engines": {
41
47
  "node": ">=20.0.0"
@@ -44,6 +50,7 @@
44
50
  "tsx": "^4.20.5"
45
51
  },
46
52
  "devDependencies": {
53
+ "@commander-js/extra-typings": "^14.0.0",
47
54
  "@types/cross-spawn": "^6.0.6",
48
55
  "@types/jest": "^30.0.0",
49
56
  "@types/node": "^18.0.0",