create-checkly 7.15.0 → 8.0.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.
Files changed (54) hide show
  1. package/LICENSE +201 -0
  2. package/bin/run +4 -5
  3. package/dist/actions/creates.js +8 -12
  4. package/dist/actions/creates.js.map +1 -1
  5. package/dist/actions/dependencies.d.ts +1 -1
  6. package/dist/actions/dependencies.js +15 -21
  7. package/dist/actions/dependencies.js.map +1 -1
  8. package/dist/actions/git.js +11 -15
  9. package/dist/actions/git.js.map +1 -1
  10. package/dist/actions/playwright.js +14 -19
  11. package/dist/actions/playwright.js.map +1 -1
  12. package/dist/actions/template.js +12 -16
  13. package/dist/actions/template.js.map +1 -1
  14. package/dist/commands/bootstrap.js +30 -34
  15. package/dist/commands/bootstrap.js.map +1 -1
  16. package/dist/loader/index.d.ts +5 -6
  17. package/dist/loader/index.js +5 -16
  18. package/dist/loader/index.js.map +1 -1
  19. package/dist/loader/jiti.d.ts +1 -1
  20. package/dist/loader/jiti.js +14 -50
  21. package/dist/loader/jiti.js.map +1 -1
  22. package/dist/loader/loader.d.ts +1 -1
  23. package/dist/loader/loader.js +4 -9
  24. package/dist/loader/loader.js.map +1 -1
  25. package/dist/loader/match.js +3 -7
  26. package/dist/loader/match.js.map +1 -1
  27. package/dist/loader/mixed.d.ts +1 -1
  28. package/dist/loader/mixed.js +4 -8
  29. package/dist/loader/mixed.js.map +1 -1
  30. package/dist/loader/native.d.ts +1 -1
  31. package/dist/loader/native.js +5 -42
  32. package/dist/loader/native.js.map +1 -1
  33. package/dist/utils/directory.js +22 -39
  34. package/dist/utils/directory.js.map +1 -1
  35. package/dist/utils/fileloader.js +3 -6
  36. package/dist/utils/fileloader.js.map +1 -1
  37. package/dist/utils/fullname.js +8 -12
  38. package/dist/utils/fullname.js.map +1 -1
  39. package/dist/utils/installation.js +30 -38
  40. package/dist/utils/installation.js.map +1 -1
  41. package/dist/utils/messages.js +19 -26
  42. package/dist/utils/messages.js.map +1 -1
  43. package/dist/utils/playwright-config-template.js +2 -6
  44. package/dist/utils/playwright-config-template.js.map +1 -1
  45. package/dist/utils/prompts.js +30 -43
  46. package/dist/utils/prompts.js.map +1 -1
  47. package/dist/utils/terminal.js +3 -7
  48. package/dist/utils/terminal.js.map +1 -1
  49. package/dist/utils/which-pm.js +1 -4
  50. package/dist/utils/which-pm.js.map +1 -1
  51. package/package.json +20 -31
  52. package/dist/loader/ts-node.d.ts +0 -25
  53. package/dist/loader/ts-node.js +0 -131
  54. package/dist/loader/ts-node.js.map +0 -1
@@ -1,99 +1,86 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROJECT_TEMPLATES = void 0;
4
- exports.askInitializeProject = askInitializeProject;
5
- exports.askProjectDirectory = askProjectDirectory;
6
- exports.askTemplate = askTemplate;
7
- exports.askCreateInitialBrowserCheck = askCreateInitialBrowserCheck;
8
- exports.askUserWebsite = askUserWebsite;
9
- exports.askInstallDependencies = askInstallDependencies;
10
- exports.askInitializeGit = askInitializeGit;
11
- exports.askCopyPlaywrightProject = askCopyPlaywrightProject;
12
- exports.askPlaywrightConfigPath = askPlaywrightConfigPath;
13
- const tslib_1 = require("tslib");
14
- const fs = tslib_1.__importStar(require("fs"));
15
- const path = tslib_1.__importStar(require("path"));
16
- const chalk_1 = tslib_1.__importDefault(require("chalk"));
17
- const prompts_1 = tslib_1.__importDefault(require("prompts"));
18
- const directory_1 = require("../utils/directory");
19
- exports.PROJECT_TEMPLATES = [
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import chalk from 'chalk';
4
+ import prompts from 'prompts';
5
+ import { generateProjectName, isValidProjectDirectory } from '../utils/directory.js';
6
+ export const PROJECT_TEMPLATES = [
20
7
  { value: 'advanced-project', title: 'An advanced TypeScript project with multiple examples and best practices (recommended)' },
21
8
  { value: 'advanced-project-js', title: 'An advanced JavaScript project with multiple examples and best practices' },
22
9
  { value: 'boilerplate-project', title: 'A boilerplate TypeScript project with basic config' },
23
10
  { value: 'boilerplate-project-js', title: 'A boilerplate JavaScript project with basic config' },
24
11
  ];
25
- function askInitializeProject(onCancel) {
26
- return (0, prompts_1.default)({
12
+ export function askInitializeProject(onCancel) {
13
+ return prompts({
27
14
  type: 'confirm',
28
15
  name: 'initializeProject',
29
16
  message: 'It looks like you are already in a project, would you like to initialize?',
30
17
  initial: true,
31
18
  }, { onCancel });
32
19
  }
33
- function askProjectDirectory(onCancel) {
34
- return (0, prompts_1.default)({
20
+ export function askProjectDirectory(onCancel) {
21
+ return prompts({
35
22
  type: 'text',
36
23
  name: 'projectDirectory',
37
24
  message: 'Where do you want to create your new project?',
38
- initial: (0, directory_1.generateProjectName)(),
25
+ initial: generateProjectName(),
39
26
  format: val => path.resolve(val),
40
27
  validate(dirName) {
41
28
  const absolutePath = path.resolve(dirName);
42
- if (!(0, directory_1.isValidProjectDirectory)(absolutePath)) {
43
- return `"${chalk_1.default.bold(absolutePath)}" is not empty!`;
29
+ if (!isValidProjectDirectory(absolutePath)) {
30
+ return `"${chalk.bold(absolutePath)}" is not empty!`;
44
31
  }
45
32
  return true;
46
33
  },
47
34
  }, { onCancel });
48
35
  }
49
- function askTemplate(onCancel) {
50
- return (0, prompts_1.default)({
36
+ export function askTemplate(onCancel) {
37
+ return prompts({
51
38
  type: 'select',
52
39
  name: 'template',
53
40
  message: 'Which template would you like to use for your new project?',
54
- choices: exports.PROJECT_TEMPLATES,
41
+ choices: PROJECT_TEMPLATES,
55
42
  }, { onCancel });
56
43
  }
57
- function askCreateInitialBrowserCheck(onCancel) {
58
- return (0, prompts_1.default)({
44
+ export function askCreateInitialBrowserCheck(onCancel) {
45
+ return prompts({
59
46
  type: 'confirm',
60
47
  name: 'createInitialBrowserCheck',
61
48
  message: 'Would you like to create a custom Playwright-based Browser Check to check a URL?',
62
49
  initial: true,
63
50
  }, { onCancel });
64
51
  }
65
- function askUserWebsite(onCancel) {
66
- return (0, prompts_1.default)({
52
+ export function askUserWebsite(onCancel) {
53
+ return prompts({
67
54
  type: 'text',
68
55
  name: 'userWebsite',
69
56
  message: 'Please provide the URL of the site you want to check.',
70
57
  }, { onCancel });
71
58
  }
72
- function askInstallDependencies(onCancel = () => true) {
73
- return (0, prompts_1.default)({
59
+ export function askInstallDependencies(onCancel = () => true) {
60
+ return prompts({
74
61
  type: 'confirm',
75
62
  name: 'installDependencies',
76
63
  message: 'Would you like to install NPM dependencies? (recommended)',
77
64
  initial: true,
78
65
  }, { onCancel });
79
66
  }
80
- function askInitializeGit(onCancel = () => true) {
81
- return (0, prompts_1.default)({
67
+ export function askInitializeGit(onCancel = () => true) {
68
+ return prompts({
82
69
  type: 'confirm',
83
70
  name: 'initializeGit',
84
71
  message: 'Would you like to initialize a new git repo? (optional)',
85
72
  initial: true,
86
73
  }, { onCancel });
87
74
  }
88
- function askCopyPlaywrightProject(onCancel) {
89
- return (0, prompts_1.default)({
75
+ export function askCopyPlaywrightProject(onCancel) {
76
+ return prompts({
90
77
  type: 'confirm',
91
78
  name: 'shouldCopyPlaywrightConfig',
92
79
  message: 'Would you like to copy your Playwright settings to your Checkly config file?',
93
80
  initial: true,
94
81
  }, { onCancel });
95
82
  }
96
- async function askPlaywrightConfigPath(candidates, projectDir, onCancel) {
83
+ export async function askPlaywrightConfigPath(candidates, projectDir, onCancel) {
97
84
  // Nothing to suggest, fallthrough to custom input.
98
85
  if (candidates.length === 0) {
99
86
  return askCustomPlaywrightConfigPath(projectDir, onCancel);
@@ -108,7 +95,7 @@ async function askPlaywrightConfigPath(candidates, projectDir, onCancel) {
108
95
  { title: 'Custom path', value: CUSTOM_VALUE },
109
96
  { title: 'Skip', value: SKIP_VALUE },
110
97
  ];
111
- const { playwrightConfigPath } = await (0, prompts_1.default)({
98
+ const { playwrightConfigPath } = await prompts({
112
99
  type: 'select',
113
100
  name: 'playwrightConfigPath',
114
101
  message: 'Which Playwright config file would you like to use?',
@@ -124,14 +111,14 @@ async function askPlaywrightConfigPath(candidates, projectDir, onCancel) {
124
111
  return { playwrightConfigPath };
125
112
  }
126
113
  async function askCustomPlaywrightConfigPath(projectDir, onCancel) {
127
- const { playwrightConfigPath } = await (0, prompts_1.default)({
114
+ const { playwrightConfigPath } = await prompts({
128
115
  type: 'text',
129
116
  name: 'playwrightConfigPath',
130
117
  message: 'Enter the path to your Playwright config file:',
131
118
  validate(val) {
132
119
  const resolved = path.resolve(projectDir, val);
133
120
  if (!fs.existsSync(resolved)) {
134
- return `File not found: ${chalk_1.default.bold(resolved)}`;
121
+ return `File not found: ${chalk.bold(resolved)}`;
135
122
  }
136
123
  return true;
137
124
  },
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/utils/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.spinner = spinner;
4
- const tslib_1 = require("tslib");
5
- const ora_1 = tslib_1.__importDefault(require("ora"));
6
- function spinner(text) {
7
- return (0, ora_1.default)({
1
+ import ora from 'ora';
2
+ export function spinner(text) {
3
+ return ora({
8
4
  text: `${text}`,
9
5
  stream: process.stdout,
10
6
  }).start();
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/utils/terminal.ts"],"names":[],"mappings":";;AAGA,0BAKC;;AAPD,sDAAqB;AAErB,SAAgB,OAAO,CAAE,IAAY;IACnC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,GAAG,IAAI,EAAE;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,KAAK,EAAE,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/utils/terminal.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,MAAM,UAAU,OAAO,CAAE,IAAY;IACnC,OAAO,GAAG,CAAC;QACT,IAAI,EAAE,GAAG,IAAI,EAAE;QACf,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,KAAK,EAAE,CAAA;AACZ,CAAC"}
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPackageManager = getPackageManager;
4
1
  function pmFromUserAgent(userAgent) {
5
2
  const pmSpec = userAgent.split(' ')[0];
6
3
  const separatorPos = pmSpec.lastIndexOf('/');
@@ -10,7 +7,7 @@ function pmFromUserAgent(userAgent) {
10
7
  version: pmSpec.substring(separatorPos + 1),
11
8
  };
12
9
  }
13
- function getPackageManager() {
10
+ export function getPackageManager() {
14
11
  if (!process.env.npm_config_user_agent) {
15
12
  return undefined;
16
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"which-pm.js","sourceRoot":"","sources":["../../src/utils/which-pm.ts"],"names":[],"mappings":";;AAUA,8CAKC;AAfD,SAAS,eAAe,CAAE,SAAiB;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IAC9C,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC3C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;KAC5C,CAAA;AACH,CAAC;AAED,SAAgB,iBAAiB;IAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACvC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAC3D,CAAC"}
1
+ {"version":3,"file":"which-pm.js","sourceRoot":"","sources":["../../src/utils/which-pm.ts"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAE,SAAiB;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;IAC9C,OAAO;QACL,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC3C,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACvC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,21 +1,13 @@
1
1
  {
2
2
  "name": "create-checkly",
3
- "version": "7.15.0",
3
+ "version": "8.0.0",
4
+ "type": "module",
4
5
  "description": "Checkly Create CLI",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
7
8
  "private": false,
8
9
  "engines": {
9
- "node": "^18.19.0 || >=20.5.0"
10
- },
11
- "scripts": {
12
- "clean": "rimraf ./dist ./tsconfig.tsbuildinfo",
13
- "prepack": "echo \"Warning: no oclif manifest configured\"",
14
- "prepare": "npm run clean && tsc --build",
15
- "test": "vitest",
16
- "test:e2e": "vitest -c ./vitest.config.e2e.mts",
17
- "start": "node ./index.mjs",
18
- "watch": "tsc --watch"
10
+ "node": "^20.19.0 || >=22.12.0"
19
11
  },
20
12
  "repository": {
21
13
  "type": "git",
@@ -53,18 +45,18 @@
53
45
  },
54
46
  "homepage": "https://github.com/checkly/checkly-cli#readme",
55
47
  "dependencies": {
56
- "@oclif/core": "^4.11.1",
57
- "@oclif/plugin-help": "^6.2.46",
58
- "@oclif/plugin-warn-if-update-available": "^3.1.62",
59
- "axios": "^1.16.0",
60
- "chalk": "^4.1.2",
48
+ "@oclif/core": "^4.11.3",
49
+ "@oclif/plugin-help": "^6.2.49",
50
+ "@oclif/plugin-warn-if-update-available": "^3.1.65",
51
+ "axios": "^1.16.1",
52
+ "chalk": "^5.6.2",
61
53
  "debug": "^4.4.3",
62
- "execa": "^5.1.1",
54
+ "execa": "^9.6.1",
63
55
  "giget": "^3.2.0",
64
56
  "jiti": "^2.7.0",
65
57
  "json5": "^2.2.3",
66
- "ora": "^5.4.1",
67
- "passwd-user": "^3.0.0",
58
+ "ora": "^9.4.0",
59
+ "passwd-user": "^4.0.0",
68
60
  "prompts": "^2.4.2",
69
61
  "recast": "^0.23.11",
70
62
  "unique-names-generator": "^4.7.1"
@@ -73,20 +65,17 @@
73
65
  "@types/debug": "^4.1.13",
74
66
  "@types/node": "^22.19.17",
75
67
  "@types/prompts": "^2.4.9",
76
- "@types/uuid": "^10.0.0",
77
68
  "cross-env": "^10.1.0",
78
- "rimraf": "^5.0.10",
79
- "ts-node": "^10.9.2",
69
+ "rimraf": "^6.1.3",
80
70
  "typescript": "^6.0.3",
81
- "uuid": "^11.1.1",
71
+ "uuid": "^14.0.0",
82
72
  "vitest": "^3.2.4"
83
73
  },
84
- "peerDependencies": {
85
- "ts-node": ">=10"
86
- },
87
- "peerDependenciesMeta": {
88
- "ts-node": {
89
- "optional": true
90
- }
74
+ "scripts": {
75
+ "clean": "rimraf ./dist ./tsconfig.tsbuildinfo",
76
+ "test": "vitest",
77
+ "test:e2e": "vitest -c ./vitest.config.e2e.mts",
78
+ "start": "node ./index.mjs",
79
+ "watch": "tsc --watch"
91
80
  }
92
- }
81
+ }
@@ -1,25 +0,0 @@
1
- import { FileLoader, FileLoaderOptions } from './loader';
2
- interface TSNodeService {
3
- enabled(enabled?: boolean): boolean;
4
- }
5
- export declare class UninitializedTSNodeFileLoaderState extends FileLoader {
6
- private static init?;
7
- loadFile<T = unknown>(filePath: string): Promise<T>;
8
- }
9
- export declare class FailedTSNodeFileLoaderState extends FileLoader {
10
- error: Error;
11
- constructor(error: Error);
12
- loadFile<T = unknown>(filePath: string): Promise<T>;
13
- }
14
- export declare class InitializedTSNodeFileLoaderState extends FileLoader {
15
- service: TSNodeService;
16
- constructor(service: TSNodeService);
17
- loadFile<T = unknown>(filePath: string): Promise<T>;
18
- }
19
- export type TSNodeFileLoaderOptions = FileLoaderOptions;
20
- export declare class TSNodeFileLoader extends FileLoader {
21
- static state: FileLoader;
22
- constructor(options?: TSNodeFileLoaderOptions);
23
- loadFile<T = unknown>(filePath: string): Promise<T>;
24
- }
25
- export {};
@@ -1,131 +0,0 @@
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.TSNodeFileLoader = exports.InitializedTSNodeFileLoaderState = exports.FailedTSNodeFileLoaderState = exports.UninitializedTSNodeFileLoaderState = void 0;
37
- const loader_1 = require("./loader");
38
- const match_1 = require("./match");
39
- class UninitializedTSNodeFileLoaderState extends loader_1.FileLoader {
40
- static init;
41
- async loadFile(filePath) {
42
- UninitializedTSNodeFileLoaderState.init ??= (async () => {
43
- try {
44
- const tsNodeExports = await Promise.resolve().then(() => __importStar(require('ts-node')));
45
- const compilerOptions = {
46
- module: 'CommonJS',
47
- };
48
- try {
49
- const ts = await Promise.resolve().then(() => __importStar(require('typescript')));
50
- // TS 6 deprecated moduleResolution "node10" (the implicit default for module "CommonJS"),
51
- // which causes ts-node to error. Suppress until we drop ts-node in favor of jiti.
52
- if (parseInt(ts.version) >= 6) {
53
- compilerOptions.ignoreDeprecations = '6.0';
54
- }
55
- }
56
- catch {
57
- // typescript not installed — skip version check
58
- }
59
- const service = tsNodeExports.register({
60
- moduleTypes: {
61
- '**/*': 'cjs',
62
- },
63
- compilerOptions,
64
- });
65
- TSNodeFileLoader.state = new InitializedTSNodeFileLoaderState(service);
66
- }
67
- catch (err) {
68
- TSNodeFileLoader.state = new FailedTSNodeFileLoaderState(err);
69
- }
70
- })();
71
- await UninitializedTSNodeFileLoaderState.init;
72
- return await TSNodeFileLoader.state.loadFile(filePath);
73
- }
74
- }
75
- exports.UninitializedTSNodeFileLoaderState = UninitializedTSNodeFileLoaderState;
76
- class FailedTSNodeFileLoaderState extends loader_1.FileLoader {
77
- error;
78
- constructor(error) {
79
- super();
80
- this.error = error;
81
- }
82
- // eslint-disable-next-line @typescript-eslint/no-unused-vars, require-await
83
- async loadFile(filePath) {
84
- throw new loader_1.UnsupportedFileLoaderError('TSNodeFileLoader is not supported', {
85
- cause: this.error,
86
- });
87
- }
88
- }
89
- exports.FailedTSNodeFileLoaderState = FailedTSNodeFileLoaderState;
90
- class InitializedTSNodeFileLoaderState extends loader_1.FileLoader {
91
- service;
92
- constructor(service) {
93
- super();
94
- this.service = service;
95
- }
96
- // eslint-disable-next-line require-await
97
- async loadFile(filePath) {
98
- try {
99
- this.service.enabled(true);
100
- // eslint-disable-next-line @typescript-eslint/no-require-imports
101
- const moduleExports = require(filePath);
102
- return moduleExports;
103
- }
104
- catch (err) {
105
- if (err.message?.includes('Unable to compile TypeScript')) {
106
- throw new Error(`Unable to load file '${filePath}' with 'ts-node' (hint: consider installing 'jiti' for improved TypeScript support)\n${err.stack}`, {
107
- cause: err,
108
- });
109
- }
110
- throw err;
111
- }
112
- finally {
113
- this.service.enabled(false);
114
- }
115
- }
116
- }
117
- exports.InitializedTSNodeFileLoaderState = InitializedTSNodeFileLoaderState;
118
- class TSNodeFileLoader extends loader_1.FileLoader {
119
- static state = new UninitializedTSNodeFileLoaderState();
120
- constructor(options) {
121
- super({
122
- match: match_1.FileMatch.standardFiles().complement(),
123
- ...options,
124
- });
125
- }
126
- async loadFile(filePath) {
127
- return await TSNodeFileLoader.state.loadFile(filePath);
128
- }
129
- }
130
- exports.TSNodeFileLoader = TSNodeFileLoader;
131
- //# sourceMappingURL=ts-node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ts-node.js","sourceRoot":"","sources":["../../src/loader/ts-node.ts"],"names":[],"mappings":"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"}