domain-driver 0.1.0 → 0.3.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 (85) hide show
  1. package/README.md +159 -145
  2. package/dist/cli.js +208 -0
  3. package/dist/commands/action.js +118 -0
  4. package/dist/commands/component.js +18 -19
  5. package/dist/commands/container.js +10 -31
  6. package/dist/commands/controller.js +85 -0
  7. package/dist/commands/feature.js +59 -51
  8. package/dist/commands/hints.js +28 -0
  9. package/dist/commands/hook.js +10 -111
  10. package/dist/commands/repository.js +17 -115
  11. package/dist/commands/resolve.js +61 -0
  12. package/dist/commands/schema.js +22 -69
  13. package/dist/commands/service.js +15 -113
  14. package/dist/commands/sides.js +34 -0
  15. package/dist/commands/target.js +32 -0
  16. package/dist/commands/types.js +9 -17
  17. package/dist/commands/update.js +148 -0
  18. package/dist/commands/write.js +66 -0
  19. package/dist/index.js +8 -122
  20. package/dist/init/content.js +73 -0
  21. package/dist/init/init.js +66 -0
  22. package/dist/init/markers.js +21 -0
  23. package/dist/postinstall.js +80 -0
  24. package/dist/stack/detect.js +125 -0
  25. package/dist/stack/profiles/nest.js +18 -0
  26. package/dist/stack/profiles/next-frontend.js +28 -0
  27. package/dist/stack/profiles/next-fullstack.js +44 -0
  28. package/dist/stack/profiles/node.js +17 -0
  29. package/dist/stack/profiles/react.js +19 -0
  30. package/dist/stack/registry.js +63 -0
  31. package/dist/stack/types.js +24 -0
  32. package/dist/templates/actions.js +68 -0
  33. package/dist/templates/backend/server-repository.js +22 -0
  34. package/dist/templates/context.js +52 -0
  35. package/dist/templates/controllers/express.js +60 -0
  36. package/dist/templates/controllers/fastify.js +54 -0
  37. package/dist/templates/controllers/generic.js +30 -0
  38. package/dist/templates/controllers/hono.js +52 -0
  39. package/dist/templates/controllers/nest.js +63 -0
  40. package/dist/templates/controllers/next-action-route.js +40 -0
  41. package/dist/templates/controllers/next-route.js +62 -0
  42. package/dist/templates/controllers/node.js +46 -0
  43. package/dist/templates/controllers/shape.js +28 -0
  44. package/dist/templates/frontend/client-repository.js +38 -0
  45. package/dist/templates/frontend/component.js +18 -0
  46. package/dist/templates/frontend/container.js +28 -0
  47. package/{src/commands/hook.ts → dist/templates/frontend/hook.js} +28 -41
  48. package/dist/templates/frontend/page.js +26 -0
  49. package/dist/templates/nest/dto.js +12 -0
  50. package/dist/templates/nest/injectable.js +4 -0
  51. package/dist/templates/nest/module.js +41 -0
  52. package/dist/templates/service.js +40 -0
  53. package/dist/templates/shared/schema.js +13 -0
  54. package/dist/templates/shared/types.js +12 -0
  55. package/dist/templates/signatures.js +15 -0
  56. package/dist/update/cache.js +80 -0
  57. package/dist/update/check.js +47 -0
  58. package/dist/update/install-mode.js +96 -0
  59. package/dist/update/package-manager.js +99 -0
  60. package/dist/update/registry.js +77 -0
  61. package/dist/update/version.js +70 -0
  62. package/dist/utils/alias.js +80 -0
  63. package/dist/utils/fs.js +70 -0
  64. package/dist/utils/imports.js +61 -0
  65. package/dist/utils/naming.js +31 -0
  66. package/dist/utils/paths.js +44 -0
  67. package/package.json +27 -6
  68. package/scripts/postinstall.js +7 -0
  69. package/.github/workflows/publish.yml +0 -28
  70. package/dist/utils.js +0 -132
  71. package/src/__tests__/utils.test.ts +0 -128
  72. package/src/commands/__tests__/feature.test.ts +0 -85
  73. package/src/commands/__tests__/imports.test.ts +0 -115
  74. package/src/commands/__tests__/individual.test.ts +0 -137
  75. package/src/commands/component.ts +0 -33
  76. package/src/commands/container.ts +0 -42
  77. package/src/commands/feature.ts +0 -74
  78. package/src/commands/repository.ts +0 -95
  79. package/src/commands/schema.ts +0 -47
  80. package/src/commands/service.ts +0 -93
  81. package/src/commands/types.ts +0 -25
  82. package/src/index.ts +0 -126
  83. package/src/utils.ts +0 -115
  84. package/tsconfig.json +0 -13
  85. package/vitest.config.ts +0 -7
@@ -0,0 +1,80 @@
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.CACHE_TTL_MS = exports.CACHE_FILE = void 0;
37
+ exports.cacheDir = cacheDir;
38
+ exports.readCache = readCache;
39
+ exports.writeCache = writeCache;
40
+ exports.isFresh = isFresh;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ exports.CACHE_FILE = 'update-check.json';
44
+ exports.CACHE_TTL_MS = 24 * 60 * 60 * 1000;
45
+ function cacheDir(env, homedir) {
46
+ if (env.DOMAIN_DRIVER_CACHE_DIR)
47
+ return env.DOMAIN_DRIVER_CACHE_DIR;
48
+ if (env.XDG_CACHE_HOME)
49
+ return path.join(env.XDG_CACHE_HOME, 'domain-driver');
50
+ return path.join(homedir, '.cache', 'domain-driver');
51
+ }
52
+ function isCache(value) {
53
+ if (typeof value !== 'object' || value === null)
54
+ return false;
55
+ const { latest, checkedAt } = value;
56
+ const latestOk = latest === null || typeof latest === 'string';
57
+ const checkedOk = typeof checkedAt === 'string' && !Number.isNaN(Date.parse(checkedAt));
58
+ return latestOk && checkedOk;
59
+ }
60
+ function readCache(dir) {
61
+ try {
62
+ const parsed = JSON.parse(fs.readFileSync(path.join(dir, exports.CACHE_FILE), 'utf-8'));
63
+ return isCache(parsed) ? Object.freeze({ latest: parsed.latest, checkedAt: parsed.checkedAt }) : null;
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ function writeCache(dir, cache) {
70
+ try {
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ fs.writeFileSync(path.join(dir, exports.CACHE_FILE), JSON.stringify(cache));
73
+ }
74
+ catch {
75
+ // The cache is advisory; never fail a command over it.
76
+ }
77
+ }
78
+ function isFresh(cache, now, ttlMs = exports.CACHE_TTL_MS) {
79
+ return now - Date.parse(cache.checkedAt) < ttlMs;
80
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldCheck = shouldCheck;
4
+ exports.formatNotice = formatNotice;
5
+ exports.latestVersion = latestVersion;
6
+ exports.checkForUpdate = checkForUpdate;
7
+ const cache_1 = require("./cache");
8
+ const registry_1 = require("./registry");
9
+ const version_1 = require("./version");
10
+ const UNSET_VALUES = new Set(['', '0', 'false']);
11
+ function isSet(value) {
12
+ return value !== undefined && !UNSET_VALUES.has(value);
13
+ }
14
+ function shouldCheck(env, isTTY, commandName) {
15
+ if (isSet(env.CI))
16
+ return false;
17
+ if (isSet(env.DOMAIN_DRIVER_NO_UPDATE_CHECK))
18
+ return false;
19
+ if (env.NO_UPDATE_NOTIFIER !== undefined)
20
+ return false;
21
+ if (!isTTY)
22
+ return false;
23
+ return commandName !== 'update';
24
+ }
25
+ function formatNotice(latest, current) {
26
+ return `ℹ️ domain-driver ${latest} is available (you have ${current}). Run: domain-driver update`;
27
+ }
28
+ async function latestVersion(deps) {
29
+ const dir = (0, cache_1.cacheDir)(deps.env, deps.homedir);
30
+ const cached = (0, cache_1.readCache)(dir);
31
+ if (!deps.force && cached !== null && (0, cache_1.isFresh)(cached, deps.now()))
32
+ return cached.latest;
33
+ const latest = await (0, registry_1.fetchLatestVersion)(deps.fetchImpl);
34
+ (0, cache_1.writeCache)(dir, { latest, checkedAt: new Date(deps.now()).toISOString() });
35
+ return latest;
36
+ }
37
+ async function checkForUpdate(deps) {
38
+ try {
39
+ const latest = await latestVersion(deps);
40
+ if (latest !== null && (0, version_1.isNewer)(latest, deps.current))
41
+ return formatNotice(latest, deps.current);
42
+ return null;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
@@ -0,0 +1,96 @@
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.detectInstallMode = detectInstallMode;
37
+ const path = __importStar(require("path"));
38
+ const MAX_ANCESTORS = 6;
39
+ function detectInstallMode(binPath, readFile) {
40
+ const segments = binPath.split(path.sep);
41
+ const index = findInstallIndex(segments);
42
+ if (index === null)
43
+ return Object.freeze({ mode: 'global', root: null });
44
+ // npx unpacks into <cache>/_npx/<hash>/node_modules/domain-driver, so _npx sits three segments before the package.
45
+ if (segments[index - 3] === '_npx')
46
+ return Object.freeze({ mode: 'npx', root: null });
47
+ const installRoot = rootFrom(segments, index);
48
+ const projectRoot = findProjectRoot(installRoot, readFile);
49
+ if (projectRoot !== null)
50
+ return Object.freeze({ mode: 'local', root: projectRoot });
51
+ return hasPackageJson(installRoot, readFile)
52
+ ? Object.freeze({ mode: 'unknown', root: installRoot })
53
+ : Object.freeze({ mode: 'global', root: null });
54
+ }
55
+ function findInstallIndex(segments) {
56
+ for (let index = segments.length - 1; index > 0; index -= 1) {
57
+ if (segments[index - 1] === 'node_modules' && segments[index] === 'domain-driver')
58
+ return index;
59
+ }
60
+ return null;
61
+ }
62
+ function rootFrom(segments, index) {
63
+ const root = segments.slice(0, index - 1).join(path.sep);
64
+ return root === '' ? path.sep : root;
65
+ }
66
+ function findProjectRoot(start, readFile) {
67
+ let current = start;
68
+ for (let level = 0; level <= MAX_ANCESTORS; level += 1) {
69
+ if (dependsOnDomainDriver(current, readFile))
70
+ return current;
71
+ const parent = path.dirname(current);
72
+ if (parent === current)
73
+ return null;
74
+ current = parent;
75
+ }
76
+ return null;
77
+ }
78
+ function dependsOnDomainDriver(root, readFile) {
79
+ try {
80
+ const parsed = JSON.parse(readFile(path.join(root, 'package.json')));
81
+ const pkg = (parsed ?? {});
82
+ return 'domain-driver' in (pkg.dependencies ?? {}) || 'domain-driver' in (pkg.devDependencies ?? {});
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ function hasPackageJson(root, readFile) {
89
+ try {
90
+ readFile(path.join(root, 'package.json'));
91
+ return true;
92
+ }
93
+ catch {
94
+ return false;
95
+ }
96
+ }
@@ -0,0 +1,99 @@
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.detectPackageManager = detectPackageManager;
37
+ exports.updateCommand = updateCommand;
38
+ const path = __importStar(require("path"));
39
+ const PACKAGE = 'domain-driver@latest';
40
+ function detectPackageManager(root, fsLike) {
41
+ const declared = declaredManager(root, fsLike);
42
+ if (declared !== null)
43
+ return declared;
44
+ const has = (name) => fsLike.exists(path.join(root, name));
45
+ if (has('bun.lock') || has('bun.lockb'))
46
+ return 'bun';
47
+ if (has('pnpm-lock.yaml'))
48
+ return 'pnpm';
49
+ if (has('yarn.lock'))
50
+ return yarnFlavourFromLock(root, fsLike);
51
+ return 'npm';
52
+ }
53
+ function declaredManager(root, fsLike) {
54
+ try {
55
+ const parsed = JSON.parse(fsLike.readFile(path.join(root, 'package.json')));
56
+ const declared = parsed?.packageManager;
57
+ if (typeof declared !== 'string')
58
+ return null;
59
+ const [name, version = ''] = declared.split('@');
60
+ if (name === 'npm' || name === 'pnpm' || name === 'bun')
61
+ return name;
62
+ if (name !== 'yarn')
63
+ return null;
64
+ if (version === '')
65
+ return yarnFlavourFromLock(root, fsLike);
66
+ return version.startsWith('1.') || version === '1' ? 'yarn-classic' : 'yarn-berry';
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ function yarnFlavourFromLock(root, fsLike) {
73
+ try {
74
+ const header = fsLike.readFile(path.join(root, 'yarn.lock')).split('\n').slice(0, 3).join('\n');
75
+ return header.includes('yarn lockfile v1') ? 'yarn-classic' : 'yarn-berry';
76
+ }
77
+ catch {
78
+ return 'yarn-berry';
79
+ }
80
+ }
81
+ function build(command, ...args) {
82
+ return Object.freeze({ command, args: Object.freeze(args), display: [command, ...args].join(' ') });
83
+ }
84
+ function updateCommand(mode, manager) {
85
+ if (mode === 'global')
86
+ return build('npm', 'install', '-g', PACKAGE);
87
+ switch (manager) {
88
+ case 'npm':
89
+ return build('npm', 'install', PACKAGE);
90
+ case 'pnpm':
91
+ return build('pnpm', 'update', PACKAGE);
92
+ case 'yarn-classic':
93
+ return build('yarn', 'upgrade', PACKAGE);
94
+ case 'yarn-berry':
95
+ return build('yarn', 'up', PACKAGE);
96
+ case 'bun':
97
+ return build('bun', 'update', PACKAGE);
98
+ }
99
+ }
@@ -0,0 +1,77 @@
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.nodeFetch = exports.FETCH_TIMEOUT_MS = exports.DIST_TAGS_URL = void 0;
37
+ exports.fetchLatestVersion = fetchLatestVersion;
38
+ const http = __importStar(require("http"));
39
+ const https = __importStar(require("https"));
40
+ exports.DIST_TAGS_URL = 'https://registry.npmjs.org/-/package/domain-driver/dist-tags';
41
+ exports.FETCH_TIMEOUT_MS = 1500;
42
+ const nodeFetch = (url, init) => new Promise((resolve, reject) => {
43
+ const client = url.startsWith('https:') ? https : http;
44
+ const request = client.get(url, { signal: init?.signal, headers: { accept: 'application/json' } }, (response) => {
45
+ let body = '';
46
+ response.setEncoding('utf-8');
47
+ response.on('data', (chunk) => {
48
+ body += chunk;
49
+ });
50
+ response.on('end', () => {
51
+ const status = response.statusCode ?? 0;
52
+ resolve({ ok: status >= 200 && status < 300, status, json: async () => JSON.parse(body) });
53
+ });
54
+ response.on('error', reject);
55
+ });
56
+ request.on('socket', (socket) => socket.unref());
57
+ request.on('error', reject);
58
+ });
59
+ exports.nodeFetch = nodeFetch;
60
+ async function fetchLatestVersion(fetchImpl = exports.nodeFetch, timeoutMs = exports.FETCH_TIMEOUT_MS) {
61
+ const controller = new AbortController();
62
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
63
+ try {
64
+ const response = await fetchImpl(exports.DIST_TAGS_URL, { signal: controller.signal });
65
+ if (!response.ok)
66
+ return null;
67
+ const body = await response.json();
68
+ const latest = body?.latest;
69
+ return typeof latest === 'string' ? latest : null;
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ finally {
75
+ clearTimeout(timer);
76
+ }
77
+ }
@@ -0,0 +1,70 @@
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.currentVersion = currentVersion;
37
+ exports.parseVersion = parseVersion;
38
+ exports.isNewer = isNewer;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const FALLBACK_VERSION = '0.0.0';
42
+ const VERSION_PATTERN = /^(\d+)\.(\d+)\.(\d+)$/;
43
+ const readUtf8 = (filePath) => fs.readFileSync(filePath, 'utf-8');
44
+ function currentVersion(readFile = readUtf8) {
45
+ try {
46
+ const parsed = JSON.parse(readFile(path.join(__dirname, '..', '..', 'package.json')));
47
+ const version = parsed.version;
48
+ return typeof version === 'string' ? version : FALLBACK_VERSION;
49
+ }
50
+ catch {
51
+ return FALLBACK_VERSION;
52
+ }
53
+ }
54
+ function parseVersion(value) {
55
+ const match = VERSION_PATTERN.exec(value.trim());
56
+ if (!match)
57
+ return null;
58
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
59
+ }
60
+ function isNewer(latest, current) {
61
+ const next = parseVersion(latest);
62
+ const now = parseVersion(current);
63
+ if (next === null || now === null)
64
+ return false;
65
+ for (let index = 0; index < 3; index += 1) {
66
+ if (next[index] !== now[index])
67
+ return next[index] > now[index];
68
+ }
69
+ return false;
70
+ }
@@ -0,0 +1,80 @@
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.resetAliasCache = resetAliasCache;
37
+ exports.detectAlias = detectAlias;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const WILDCARD_TARGET = /^(?:\.\/)?(.*?)\/?\*$/;
41
+ let cached;
42
+ function resetAliasCache() {
43
+ cached = undefined;
44
+ }
45
+ function detectAlias() {
46
+ if (cached !== undefined)
47
+ return cached;
48
+ cached = readAlias(path.join(process.cwd(), 'tsconfig.json'));
49
+ return cached;
50
+ }
51
+ function readAlias(tsconfigPath) {
52
+ if (!fs.existsSync(tsconfigPath))
53
+ return null;
54
+ try {
55
+ const raw = fs.readFileSync(tsconfigPath, 'utf-8');
56
+ const stripped = raw.replace(/\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '');
57
+ const tsconfig = JSON.parse(stripped);
58
+ return findWildcardAlias(tsconfig.compilerOptions?.paths ?? {});
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ function findWildcardAlias(paths) {
65
+ for (const [key, targets] of Object.entries(paths)) {
66
+ if (!key.endsWith('/*'))
67
+ continue;
68
+ const root = targets.map(aliasRoot).find((candidate) => candidate !== null);
69
+ if (root !== undefined && root !== null) {
70
+ return Object.freeze({ prefix: key.slice(0, -1), root });
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ function aliasRoot(target) {
76
+ const match = WILDCARD_TARGET.exec(target);
77
+ if (!match)
78
+ return null;
79
+ return match[1] === '' ? '.' : match[1];
80
+ }
@@ -0,0 +1,70 @@
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.writeFileSafe = writeFileSafe;
37
+ exports.mkdirSafe = mkdirSafe;
38
+ exports.fileExists = fileExists;
39
+ exports.isDirectory = isDirectory;
40
+ exports.readTextFile = readTextFile;
41
+ const fs = __importStar(require("fs"));
42
+ function writeFileSafe(filePath, content) {
43
+ try {
44
+ fs.writeFileSync(filePath, content);
45
+ }
46
+ catch (error) {
47
+ const message = error instanceof Error ? error.message : 'Unknown error';
48
+ throw new Error(`Failed to write ${filePath}: ${message}`);
49
+ }
50
+ }
51
+ function mkdirSafe(dirPath) {
52
+ try {
53
+ fs.mkdirSync(dirPath, { recursive: true });
54
+ }
55
+ catch (error) {
56
+ const message = error instanceof Error ? error.message : 'Unknown error';
57
+ throw new Error(`Failed to create directory ${dirPath}: ${message}`);
58
+ }
59
+ }
60
+ function fileExists(filePath) {
61
+ return fs.existsSync(filePath);
62
+ }
63
+ function isDirectory(target) {
64
+ return fs.existsSync(target) && fs.statSync(target).isDirectory();
65
+ }
66
+ function readTextFile(filePath) {
67
+ if (!fs.existsSync(filePath))
68
+ return null;
69
+ return fs.readFileSync(filePath, 'utf-8');
70
+ }
@@ -0,0 +1,61 @@
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.resolveImport = resolveImport;
37
+ const path = __importStar(require("path"));
38
+ const alias_1 = require("./alias");
39
+ function resolveImport(fromFile, toFile) {
40
+ const target = stripExtension(toFile);
41
+ const aliased = aliasImport(target);
42
+ if (aliased !== null)
43
+ return aliased;
44
+ const relative = toPosix(path.relative(path.dirname(fromFile), target));
45
+ return relative.startsWith('.') ? relative : `./${relative}`;
46
+ }
47
+ function aliasImport(target) {
48
+ const alias = (0, alias_1.detectAlias)();
49
+ if (!alias)
50
+ return null;
51
+ const rootAbs = path.resolve(process.cwd(), alias.root);
52
+ const relative = path.relative(rootAbs, target);
53
+ const inside = relative !== '' && !relative.startsWith('..') && !path.isAbsolute(relative);
54
+ return inside ? `${alias.prefix}${toPosix(relative)}` : null;
55
+ }
56
+ function stripExtension(file) {
57
+ return file.replace(/\.tsx?$/, '');
58
+ }
59
+ function toPosix(target) {
60
+ return target.split(path.sep).join('/');
61
+ }