@digilogiclabs/create-saas-app 2.1.0 → 2.2.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/CHANGELOG.md +7 -0
- package/README.md +975 -891
- package/dist/.tsbuildinfo +1 -1
- package/dist/generators/template-generator.d.ts +11 -0
- package/dist/generators/template-generator.d.ts.map +1 -1
- package/dist/generators/template-generator.js +360 -16
- package/dist/generators/template-generator.js.map +1 -1
- package/dist/index.js +1837 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/shared/admin/web/app/admin/layout.tsx +34 -0
- package/dist/templates/shared/admin/web/components/admin-nav.tsx +48 -0
- package/dist/templates/shared/audit/web/lib/audit.ts +24 -0
- package/dist/templates/shared/auth/keycloak/web/app/api/auth/federated-logout/route.ts +173 -0
- package/dist/templates/shared/auth/keycloak/web/auth.config.ts +84 -0
- package/dist/templates/shared/auth/keycloak/web/auth.ts +26 -0
- package/dist/templates/shared/beta/web/app/api/beta-settings/route.ts +25 -0
- package/dist/templates/shared/beta/web/app/api/validate-beta-code/route.ts +67 -0
- package/dist/templates/shared/beta/web/lib/beta/settings.ts +31 -0
- package/dist/templates/shared/cache/web/lib/cache.ts +44 -0
- package/dist/templates/shared/config/web/lib/config.ts +112 -0
- package/dist/templates/shared/config/web/next.config.mjs +62 -0
- package/dist/templates/shared/contact/web/app/api/contact/route.ts +113 -0
- package/dist/templates/shared/contact/web/app/contact/page.tsx +195 -0
- package/dist/templates/shared/cookie-consent/web/components/cookie-consent.tsx +54 -0
- package/dist/templates/shared/database/postgresql/web/drizzle.config.ts +16 -0
- package/dist/templates/shared/database/postgresql/web/lib/db/drizzle.ts +39 -0
- package/dist/templates/shared/database/postgresql/web/lib/db/schema.ts +33 -0
- package/dist/templates/shared/database/supabase/web/lib/supabase/client.ts +12 -0
- package/dist/templates/shared/database/supabase/web/lib/supabase/server.ts +31 -0
- package/dist/templates/shared/database/supabase/web/lib/supabase/service.ts +15 -0
- package/dist/templates/shared/email/web/lib/email/branding.ts +18 -0
- package/dist/templates/shared/email/web/lib/email/client.ts +96 -0
- package/dist/templates/shared/error-pages/web/app/error.tsx +70 -0
- package/dist/templates/shared/error-pages/web/app/global-error.tsx +102 -0
- package/dist/templates/shared/error-pages/web/app/not-found.tsx +39 -0
- package/dist/templates/shared/health/web/app/api/health/route.ts +68 -0
- package/dist/templates/shared/legal/web/app/(legal)/privacy/page.tsx +205 -0
- package/dist/templates/shared/legal/web/app/(legal)/terms/page.tsx +154 -0
- package/dist/templates/shared/legal/web/lib/legal-config.ts +50 -0
- package/dist/templates/shared/loading/web/app/loading.tsx +5 -0
- package/dist/templates/shared/loading/web/components/skeleton.tsx +95 -0
- package/dist/templates/shared/middleware/web/middleware.ts +68 -0
- package/dist/templates/shared/observability/web/lib/observability.ts +135 -0
- package/dist/templates/shared/payments/web/app/api/webhooks/stripe/route.ts +109 -0
- package/dist/templates/shared/platform/web/lib/platform.ts +37 -0
- package/dist/templates/shared/redis/web/lib/rate-limit-store.ts +18 -0
- package/dist/templates/shared/redis/web/lib/redis.ts +48 -0
- package/dist/templates/shared/security/web/lib/api-security.ts +318 -0
- package/dist/templates/shared/seo/web/app/api/og/route.tsx +97 -0
- package/dist/templates/shared/seo/web/app/robots.ts +53 -0
- package/dist/templates/shared/seo/web/app/sitemap.ts +53 -0
- package/dist/templates/shared/utils/web/lib/api-response.ts +71 -0
- package/dist/templates/shared/utils/web/lib/utils.ts +85 -0
- package/package.json +5 -4
- package/src/templates/shared/admin/web/app/admin/layout.tsx +34 -0
- package/src/templates/shared/admin/web/components/admin-nav.tsx +48 -0
- package/src/templates/shared/audit/web/lib/audit.ts +24 -0
- package/src/templates/shared/auth/keycloak/web/app/api/auth/federated-logout/route.ts +173 -0
- package/src/templates/shared/auth/keycloak/web/auth.config.ts +84 -0
- package/src/templates/shared/auth/keycloak/web/auth.ts +26 -0
- package/src/templates/shared/beta/web/app/api/beta-settings/route.ts +25 -0
- package/src/templates/shared/beta/web/app/api/validate-beta-code/route.ts +67 -0
- package/src/templates/shared/beta/web/lib/beta/settings.ts +31 -0
- package/src/templates/shared/cache/web/lib/cache.ts +44 -0
- package/src/templates/shared/config/web/lib/config.ts +112 -0
- package/src/templates/shared/config/web/next.config.mjs +62 -0
- package/src/templates/shared/contact/web/app/api/contact/route.ts +113 -0
- package/src/templates/shared/contact/web/app/contact/page.tsx +195 -0
- package/src/templates/shared/cookie-consent/web/components/cookie-consent.tsx +54 -0
- package/src/templates/shared/database/postgresql/web/drizzle.config.ts +16 -0
- package/src/templates/shared/database/postgresql/web/lib/db/drizzle.ts +39 -0
- package/src/templates/shared/database/postgresql/web/lib/db/schema.ts +33 -0
- package/src/templates/shared/database/supabase/web/lib/supabase/client.ts +12 -0
- package/src/templates/shared/database/supabase/web/lib/supabase/server.ts +31 -0
- package/src/templates/shared/database/supabase/web/lib/supabase/service.ts +15 -0
- package/src/templates/shared/email/web/lib/email/branding.ts +18 -0
- package/src/templates/shared/email/web/lib/email/client.ts +96 -0
- package/src/templates/shared/error-pages/web/app/error.tsx +70 -0
- package/src/templates/shared/error-pages/web/app/global-error.tsx +102 -0
- package/src/templates/shared/error-pages/web/app/not-found.tsx +39 -0
- package/src/templates/shared/health/web/app/api/health/route.ts +68 -0
- package/src/templates/shared/legal/web/app/(legal)/privacy/page.tsx +205 -0
- package/src/templates/shared/legal/web/app/(legal)/terms/page.tsx +154 -0
- package/src/templates/shared/legal/web/lib/legal-config.ts +50 -0
- package/src/templates/shared/loading/web/app/loading.tsx +5 -0
- package/src/templates/shared/loading/web/components/skeleton.tsx +95 -0
- package/src/templates/shared/middleware/web/middleware.ts +68 -0
- package/src/templates/shared/observability/web/lib/observability.ts +135 -0
- package/src/templates/shared/payments/web/app/api/webhooks/stripe/route.ts +109 -0
- package/src/templates/shared/platform/web/lib/platform.ts +37 -0
- package/src/templates/shared/redis/web/lib/rate-limit-store.ts +18 -0
- package/src/templates/shared/redis/web/lib/redis.ts +48 -0
- package/src/templates/shared/security/web/lib/api-security.ts +318 -0
- package/src/templates/shared/seo/web/app/api/og/route.tsx +97 -0
- package/src/templates/shared/seo/web/app/robots.ts +53 -0
- package/src/templates/shared/seo/web/app/sitemap.ts +53 -0
- package/src/templates/shared/utils/web/lib/api-response.ts +71 -0
- package/src/templates/shared/utils/web/lib/utils.ts +85 -0
- package/dist/cli/commands/add.d.ts +0 -6
- package/dist/cli/commands/add.d.ts.map +0 -1
- package/dist/cli/commands/add.js +0 -39
- package/dist/cli/commands/add.js.map +0 -1
- package/dist/cli/commands/create.d.ts +0 -45
- package/dist/cli/commands/create.d.ts.map +0 -1
- package/dist/cli/commands/create.js +0 -175
- package/dist/cli/commands/create.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -4
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -20
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -6
- package/dist/cli/commands/update.d.ts.map +0 -1
- package/dist/cli/commands/update.js +0 -68
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -61
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/prompts/index.d.ts +0 -2
- package/dist/cli/prompts/index.d.ts.map +0 -1
- package/dist/cli/prompts/index.js +0 -18
- package/dist/cli/prompts/index.js.map +0 -1
- package/dist/cli/prompts/project-setup.d.ts +0 -5
- package/dist/cli/prompts/project-setup.d.ts.map +0 -1
- package/dist/cli/prompts/project-setup.js +0 -351
- package/dist/cli/prompts/project-setup.js.map +0 -1
- package/dist/cli/utils/git.d.ts +0 -9
- package/dist/cli/utils/git.d.ts.map +0 -1
- package/dist/cli/utils/git.js +0 -77
- package/dist/cli/utils/git.js.map +0 -1
- package/dist/cli/utils/index.d.ts +0 -5
- package/dist/cli/utils/index.d.ts.map +0 -1
- package/dist/cli/utils/index.js +0 -21
- package/dist/cli/utils/index.js.map +0 -1
- package/dist/cli/utils/logger.d.ts +0 -16
- package/dist/cli/utils/logger.d.ts.map +0 -1
- package/dist/cli/utils/logger.js +0 -55
- package/dist/cli/utils/logger.js.map +0 -1
- package/dist/cli/utils/package-manager.d.ts +0 -8
- package/dist/cli/utils/package-manager.d.ts.map +0 -1
- package/dist/cli/utils/package-manager.js +0 -92
- package/dist/cli/utils/package-manager.js.map +0 -1
- package/dist/cli/utils/spinner.d.ts +0 -7
- package/dist/cli/utils/spinner.d.ts.map +0 -1
- package/dist/cli/utils/spinner.js +0 -48
- package/dist/cli/utils/spinner.js.map +0 -1
- package/dist/cli/validators/dependencies.d.ts +0 -15
- package/dist/cli/validators/dependencies.d.ts.map +0 -1
- package/dist/cli/validators/dependencies.js +0 -108
- package/dist/cli/validators/dependencies.js.map +0 -1
- package/dist/cli/validators/index.d.ts +0 -3
- package/dist/cli/validators/index.d.ts.map +0 -1
- package/dist/cli/validators/index.js +0 -19
- package/dist/cli/validators/index.js.map +0 -1
- package/dist/cli/validators/project-name.d.ts +0 -5
- package/dist/cli/validators/project-name.d.ts.map +0 -1
- package/dist/cli/validators/project-name.js +0 -151
- package/dist/cli/validators/project-name.js.map +0 -1
- package/dist/generators/file-processor.d.ts +0 -28
- package/dist/generators/file-processor.d.ts.map +0 -1
- package/dist/generators/file-processor.js +0 -224
- package/dist/generators/file-processor.js.map +0 -1
- package/dist/generators/index.d.ts +0 -4
- package/dist/generators/index.d.ts.map +0 -1
- package/dist/generators/index.js +0 -20
- package/dist/generators/index.js.map +0 -1
- package/dist/generators/package-installer.d.ts +0 -29
- package/dist/generators/package-installer.d.ts.map +0 -1
- package/dist/generators/package-installer.js +0 -177
- package/dist/generators/package-installer.js.map +0 -1
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.detectPackageManager = detectPackageManager;
|
|
7
|
-
exports.getInstallCommand = getInstallCommand;
|
|
8
|
-
exports.getAddCommand = getAddCommand;
|
|
9
|
-
exports.getRunCommand = getRunCommand;
|
|
10
|
-
exports.isPackageManagerAvailable = isPackageManagerAvailable;
|
|
11
|
-
exports.getPackageManagerDisplayName = getPackageManagerDisplayName;
|
|
12
|
-
const execa_1 = __importDefault(require("execa"));
|
|
13
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
14
|
-
const path_1 = __importDefault(require("path"));
|
|
15
|
-
async function detectPackageManager(projectPath) {
|
|
16
|
-
const cwd = projectPath || process.cwd();
|
|
17
|
-
// Check for lock files
|
|
18
|
-
const lockFiles = [
|
|
19
|
-
{ file: 'pnpm-lock.yaml', manager: 'pnpm' },
|
|
20
|
-
{ file: 'yarn.lock', manager: 'yarn' },
|
|
21
|
-
{ file: 'package-lock.json', manager: 'npm' },
|
|
22
|
-
];
|
|
23
|
-
for (const { file, manager } of lockFiles) {
|
|
24
|
-
if (await fs_extra_1.default.pathExists(path_1.default.join(cwd, file))) {
|
|
25
|
-
return manager;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// Check for package manager availability
|
|
29
|
-
const managers = ['pnpm', 'yarn', 'npm'];
|
|
30
|
-
for (const manager of managers) {
|
|
31
|
-
try {
|
|
32
|
-
await (0, execa_1.default)(manager, ['--version']);
|
|
33
|
-
return manager;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// Continue to next manager
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Default to npm
|
|
40
|
-
return 'npm';
|
|
41
|
-
}
|
|
42
|
-
async function getInstallCommand(packageManager) {
|
|
43
|
-
switch (packageManager) {
|
|
44
|
-
case 'yarn':
|
|
45
|
-
return ['yarn', 'install'];
|
|
46
|
-
case 'pnpm':
|
|
47
|
-
return ['pnpm', 'install'];
|
|
48
|
-
default:
|
|
49
|
-
return ['npm', 'install'];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async function getAddCommand(packageManager, packages, dev = false) {
|
|
53
|
-
const devFlag = dev ? (packageManager === 'npm' ? '--save-dev' : '-D') : '';
|
|
54
|
-
switch (packageManager) {
|
|
55
|
-
case 'yarn':
|
|
56
|
-
return ['yarn', 'add', ...(dev ? ['-D'] : []), ...packages];
|
|
57
|
-
case 'pnpm':
|
|
58
|
-
return ['pnpm', 'add', ...(dev ? ['-D'] : []), ...packages];
|
|
59
|
-
default:
|
|
60
|
-
return ['npm', 'install', ...(devFlag ? [devFlag] : []), ...packages];
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
async function getRunCommand(packageManager, script) {
|
|
64
|
-
switch (packageManager) {
|
|
65
|
-
case 'yarn':
|
|
66
|
-
return ['yarn', script];
|
|
67
|
-
case 'pnpm':
|
|
68
|
-
return ['pnpm', script];
|
|
69
|
-
default:
|
|
70
|
-
return ['npm', 'run', script];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async function isPackageManagerAvailable(packageManager) {
|
|
74
|
-
try {
|
|
75
|
-
await (0, execa_1.default)(packageManager, ['--version']);
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function getPackageManagerDisplayName(packageManager) {
|
|
83
|
-
switch (packageManager) {
|
|
84
|
-
case 'yarn':
|
|
85
|
-
return 'Yarn';
|
|
86
|
-
case 'pnpm':
|
|
87
|
-
return 'pnpm';
|
|
88
|
-
default:
|
|
89
|
-
return 'npm';
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=package-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/cli/utils/package-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Ora } from 'ora';
|
|
2
|
-
export declare function spinner(text: string): Ora;
|
|
3
|
-
export declare function createSpinner(text: string): Ora;
|
|
4
|
-
export declare function successSpinner(text: string): Ora;
|
|
5
|
-
export declare function errorSpinner(text: string): Ora;
|
|
6
|
-
export declare function warnSpinner(text: string): Ora;
|
|
7
|
-
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG/B,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAMzC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM/C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAMhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAM7C"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.spinner = spinner;
|
|
7
|
-
exports.createSpinner = createSpinner;
|
|
8
|
-
exports.successSpinner = successSpinner;
|
|
9
|
-
exports.errorSpinner = errorSpinner;
|
|
10
|
-
exports.warnSpinner = warnSpinner;
|
|
11
|
-
const ora_1 = __importDefault(require("ora"));
|
|
12
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
-
function spinner(text) {
|
|
14
|
-
return (0, ora_1.default)({
|
|
15
|
-
text: chalk_1.default.gray(text),
|
|
16
|
-
spinner: 'dots',
|
|
17
|
-
color: 'cyan',
|
|
18
|
-
}).start();
|
|
19
|
-
}
|
|
20
|
-
function createSpinner(text) {
|
|
21
|
-
return (0, ora_1.default)({
|
|
22
|
-
text: chalk_1.default.gray(text),
|
|
23
|
-
spinner: 'dots',
|
|
24
|
-
color: 'cyan',
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function successSpinner(text) {
|
|
28
|
-
return (0, ora_1.default)({
|
|
29
|
-
text: chalk_1.default.green(text),
|
|
30
|
-
spinner: 'dots',
|
|
31
|
-
color: 'green',
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
function errorSpinner(text) {
|
|
35
|
-
return (0, ora_1.default)({
|
|
36
|
-
text: chalk_1.default.red(text),
|
|
37
|
-
spinner: 'dots',
|
|
38
|
-
color: 'red',
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
function warnSpinner(text) {
|
|
42
|
-
return (0, ora_1.default)({
|
|
43
|
-
text: chalk_1.default.yellow(text),
|
|
44
|
-
spinner: 'dots',
|
|
45
|
-
color: 'yellow',
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=spinner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/cli/utils/spinner.ts"],"names":[],"mappings":";;;;;AAGA,0BAMC;AAED,sCAMC;AAED,wCAMC;AAED,oCAMC;AAED,kCAMC;AAzCD,8CAA+B;AAC/B,kDAA0B;AAE1B,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;AACb,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACxC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,OAAO,IAAA,aAAG,EAAC;QACT,IAAI,EAAE,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC;QACxB,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface DependencyInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
version: string;
|
|
4
|
-
latest?: string;
|
|
5
|
-
outdated?: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function validateNodeVersion(): Promise<boolean>;
|
|
8
|
-
export declare function checkPackageExists(packageName: string): Promise<boolean>;
|
|
9
|
-
export declare function getLatestVersion(packageName: string): Promise<string | null>;
|
|
10
|
-
export declare function validateDependencies(dependencies: string[]): Promise<DependencyInfo[]>;
|
|
11
|
-
export declare function validateVersionRange(version: string): boolean;
|
|
12
|
-
export declare function isValidSemver(version: string): boolean;
|
|
13
|
-
export declare function compareVersions(version1: string, version2: string): number;
|
|
14
|
-
export declare function getVersionSuggestion(currentVersion: string, latestVersion: string): string;
|
|
15
|
-
//# sourceMappingURL=dependencies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/dependencies.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAY5D;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO9E;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOlF;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B5F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAwB1F"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateNodeVersion = validateNodeVersion;
|
|
7
|
-
exports.checkPackageExists = checkPackageExists;
|
|
8
|
-
exports.getLatestVersion = getLatestVersion;
|
|
9
|
-
exports.validateDependencies = validateDependencies;
|
|
10
|
-
exports.validateVersionRange = validateVersionRange;
|
|
11
|
-
exports.isValidSemver = isValidSemver;
|
|
12
|
-
exports.compareVersions = compareVersions;
|
|
13
|
-
exports.getVersionSuggestion = getVersionSuggestion;
|
|
14
|
-
const semver_1 = __importDefault(require("semver"));
|
|
15
|
-
const execa_1 = __importDefault(require("execa"));
|
|
16
|
-
const logger_1 = require("../utils/logger");
|
|
17
|
-
async function validateNodeVersion() {
|
|
18
|
-
const nodeVersion = process.version;
|
|
19
|
-
const minVersion = '16.0.0';
|
|
20
|
-
if (!semver_1.default.gte(nodeVersion, minVersion)) {
|
|
21
|
-
logger_1.logger.error(`Node.js version ${minVersion} or higher is required. Current version: ${nodeVersion}`);
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
async function checkPackageExists(packageName) {
|
|
27
|
-
try {
|
|
28
|
-
await (0, execa_1.default)('npm', ['view', packageName, 'version']);
|
|
29
|
-
return true;
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async function getLatestVersion(packageName) {
|
|
36
|
-
try {
|
|
37
|
-
const result = await (0, execa_1.default)('npm', ['view', packageName, 'version']);
|
|
38
|
-
return result.stdout.trim();
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async function validateDependencies(dependencies) {
|
|
45
|
-
const results = [];
|
|
46
|
-
for (const dep of dependencies) {
|
|
47
|
-
const [name, version] = dep.includes('@') && !dep.startsWith('@') ? dep.split('@') : [dep, 'latest'];
|
|
48
|
-
try {
|
|
49
|
-
const latest = await getLatestVersion(name);
|
|
50
|
-
if (!latest) {
|
|
51
|
-
logger_1.logger.warn(`Package "${name}" not found in npm registry`);
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
const resolvedVersion = version === 'latest' ? latest : version;
|
|
55
|
-
const outdated = version !== 'latest' && semver_1.default.lt(resolvedVersion, latest);
|
|
56
|
-
results.push({
|
|
57
|
-
name,
|
|
58
|
-
version: resolvedVersion,
|
|
59
|
-
latest,
|
|
60
|
-
outdated,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
logger_1.logger.warn(`Failed to validate package "${name}":`, error);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return results;
|
|
68
|
-
}
|
|
69
|
-
function validateVersionRange(version) {
|
|
70
|
-
try {
|
|
71
|
-
return semver_1.default.validRange(version) !== null;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function isValidSemver(version) {
|
|
78
|
-
return semver_1.default.valid(version) !== null;
|
|
79
|
-
}
|
|
80
|
-
function compareVersions(version1, version2) {
|
|
81
|
-
try {
|
|
82
|
-
return semver_1.default.compare(version1, version2);
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
return 0;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
function getVersionSuggestion(currentVersion, latestVersion) {
|
|
89
|
-
if (!isValidSemver(currentVersion) || !isValidSemver(latestVersion)) {
|
|
90
|
-
return latestVersion;
|
|
91
|
-
}
|
|
92
|
-
const current = semver_1.default.parse(currentVersion);
|
|
93
|
-
const latest = semver_1.default.parse(latestVersion);
|
|
94
|
-
if (!current || !latest) {
|
|
95
|
-
return latestVersion;
|
|
96
|
-
}
|
|
97
|
-
// If major version is different, suggest latest
|
|
98
|
-
if (current.major !== latest.major) {
|
|
99
|
-
return `^${latestVersion}`;
|
|
100
|
-
}
|
|
101
|
-
// If minor version is different, suggest latest minor
|
|
102
|
-
if (current.minor !== latest.minor) {
|
|
103
|
-
return `~${latestVersion}`;
|
|
104
|
-
}
|
|
105
|
-
// If only patch is different, suggest exact latest
|
|
106
|
-
return latestVersion;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=dependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/cli/validators/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,19 +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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./project-name"), exports);
|
|
18
|
-
__exportStar(require("./dependencies"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/validators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,iDAA+B"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function validateProjectName(name: string): boolean;
|
|
2
|
-
export declare function validateProjectPath(projectPath: string): Promise<boolean>;
|
|
3
|
-
export declare function sanitizeProjectName(name: string): string;
|
|
4
|
-
export declare function suggestProjectName(name: string): string;
|
|
5
|
-
//# sourceMappingURL=project-name.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../src/cli/validators/project-name.ts"],"names":[],"mappings":"AAKA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAiGzD;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkC/E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgBvD"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.validateProjectName = validateProjectName;
|
|
7
|
-
exports.validateProjectPath = validateProjectPath;
|
|
8
|
-
exports.sanitizeProjectName = sanitizeProjectName;
|
|
9
|
-
exports.suggestProjectName = suggestProjectName;
|
|
10
|
-
const validate_npm_package_name_1 = __importDefault(require("validate-npm-package-name"));
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
-
const logger_1 = require("../utils/logger");
|
|
14
|
-
function validateProjectName(name) {
|
|
15
|
-
// Check if name is empty
|
|
16
|
-
if (!name || name.trim().length === 0) {
|
|
17
|
-
logger_1.logger.error('Project name cannot be empty');
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
// Check npm package name validity
|
|
21
|
-
const validation = (0, validate_npm_package_name_1.default)(name);
|
|
22
|
-
if (!validation.validForNewPackages) {
|
|
23
|
-
logger_1.logger.error('Invalid project name:');
|
|
24
|
-
if (validation.errors) {
|
|
25
|
-
validation.errors.forEach((error) => logger_1.logger.error(` • ${error}`));
|
|
26
|
-
}
|
|
27
|
-
if (validation.warnings) {
|
|
28
|
-
validation.warnings.forEach((warning) => logger_1.logger.warn(` • ${warning}`));
|
|
29
|
-
}
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
// Check for reserved names
|
|
33
|
-
const reservedNames = [
|
|
34
|
-
'node_modules',
|
|
35
|
-
'package.json',
|
|
36
|
-
'package-lock.json',
|
|
37
|
-
'yarn.lock',
|
|
38
|
-
'pnpm-lock.yaml',
|
|
39
|
-
'.git',
|
|
40
|
-
'.gitignore',
|
|
41
|
-
'README.md',
|
|
42
|
-
'LICENSE',
|
|
43
|
-
'src',
|
|
44
|
-
'dist',
|
|
45
|
-
'build',
|
|
46
|
-
'public',
|
|
47
|
-
'static',
|
|
48
|
-
'assets',
|
|
49
|
-
'components',
|
|
50
|
-
'pages',
|
|
51
|
-
'app',
|
|
52
|
-
'lib',
|
|
53
|
-
'utils',
|
|
54
|
-
'hooks',
|
|
55
|
-
'types',
|
|
56
|
-
'styles',
|
|
57
|
-
'config',
|
|
58
|
-
'test',
|
|
59
|
-
'tests',
|
|
60
|
-
'__tests__',
|
|
61
|
-
'spec',
|
|
62
|
-
'specs',
|
|
63
|
-
'docs',
|
|
64
|
-
'documentation',
|
|
65
|
-
];
|
|
66
|
-
if (reservedNames.includes(name.toLowerCase())) {
|
|
67
|
-
logger_1.logger.error(`Project name "${name}" is reserved. Please choose a different name.`);
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
// Check for common problematic patterns
|
|
71
|
-
if (name.startsWith('.')) {
|
|
72
|
-
logger_1.logger.error('Project name cannot start with a dot');
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
if (name.startsWith('-')) {
|
|
76
|
-
logger_1.logger.error('Project name cannot start with a hyphen');
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
if (name.endsWith('-')) {
|
|
80
|
-
logger_1.logger.error('Project name cannot end with a hyphen');
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
if (name.includes('..')) {
|
|
84
|
-
logger_1.logger.error('Project name cannot contain consecutive dots');
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
if (name.includes('//')) {
|
|
88
|
-
logger_1.logger.error('Project name cannot contain consecutive slashes');
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
// Check length
|
|
92
|
-
if (name.length > 214) {
|
|
93
|
-
logger_1.logger.error('Project name is too long (max 214 characters)');
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
async function validateProjectPath(projectPath) {
|
|
99
|
-
try {
|
|
100
|
-
// Check if directory already exists
|
|
101
|
-
if (await fs_extra_1.default.pathExists(projectPath)) {
|
|
102
|
-
const stats = await fs_extra_1.default.stat(projectPath);
|
|
103
|
-
if (stats.isDirectory()) {
|
|
104
|
-
const files = await fs_extra_1.default.readdir(projectPath);
|
|
105
|
-
if (files.length > 0) {
|
|
106
|
-
logger_1.logger.error(`Directory "${path_1.default.basename(projectPath)}" already exists and is not empty`);
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
logger_1.logger.error(`A file with the name "${path_1.default.basename(projectPath)}" already exists`);
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
// Check if parent directory is writable
|
|
116
|
-
const parentDir = path_1.default.dirname(projectPath);
|
|
117
|
-
try {
|
|
118
|
-
await fs_extra_1.default.access(parentDir, fs_extra_1.default.constants.W_OK);
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
logger_1.logger.error(`Cannot write to directory "${parentDir}"`);
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
logger_1.logger.error('Failed to validate project path:', error);
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
function sanitizeProjectName(name) {
|
|
132
|
-
return name
|
|
133
|
-
.toLowerCase()
|
|
134
|
-
.replace(/[^a-z0-9-]/g, '-')
|
|
135
|
-
.replace(/^-+|-+$/g, '')
|
|
136
|
-
.replace(/-+/g, '-');
|
|
137
|
-
}
|
|
138
|
-
function suggestProjectName(name) {
|
|
139
|
-
const sanitized = sanitizeProjectName(name);
|
|
140
|
-
if (validateProjectName(sanitized)) {
|
|
141
|
-
return sanitized;
|
|
142
|
-
}
|
|
143
|
-
// If still invalid, add a prefix
|
|
144
|
-
const suggested = `my-${sanitized}`;
|
|
145
|
-
if (validateProjectName(suggested)) {
|
|
146
|
-
return suggested;
|
|
147
|
-
}
|
|
148
|
-
// Last resort
|
|
149
|
-
return 'my-saas-app';
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=project-name.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../src/cli/validators/project-name.ts"],"names":[],"mappings":";;;;;AAKA,kDAiGC;AAED,kDAkCC;AAED,kDAMC;AAED,gDAgBC;AApKD,0FAA+D;AAC/D,gDAAwB;AACxB,wDAA0B;AAC1B,4CAAyC;AAEzC,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,yBAAyB;IACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,eAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kCAAkC;IAClC,MAAM,UAAU,GAAG,IAAA,mCAAsB,EAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACpC,eAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAG;QACpB,cAAc;QACd,cAAc;QACd,mBAAmB;QACnB,WAAW;QACX,gBAAgB;QAChB,MAAM;QACN,YAAY;QACZ,WAAW;QACX,SAAS;QACT,KAAK;QACL,MAAM;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,KAAK;QACL,KAAK;QACL,OAAO;QACP,OAAO;QACP,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,MAAM;QACN,OAAO;QACP,WAAW;QACX,MAAM;QACN,OAAO;QACP,MAAM;QACN,eAAe;KAChB,CAAC;IAEF,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC/C,eAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,gDAAgD,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wCAAwC;IACxC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,eAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,eAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,eAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe;IACf,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,eAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,IAAI,CAAC;QACH,oCAAoC;QACpC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAE5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,eAAM,CAAC,KAAK,CAAC,cAAc,cAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;oBAC1F,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,yBAAyB,cAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;gBACpF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,eAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,GAAG,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC;IACjC,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;IAEpC,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,cAAc;IACd,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface FileProcessorOptions {
|
|
2
|
-
templateVariables: Record<string, unknown>;
|
|
3
|
-
fileExtensions: string[];
|
|
4
|
-
ignorePatterns: string[];
|
|
5
|
-
preserveBinaryFiles: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare class FileProcessor {
|
|
8
|
-
private options;
|
|
9
|
-
constructor(options?: Partial<FileProcessorOptions>);
|
|
10
|
-
processFile(sourcePath: string, targetPath: string): Promise<void>;
|
|
11
|
-
processDirectory(sourceDir: string, targetDir: string): Promise<void>;
|
|
12
|
-
private processTemplateFile;
|
|
13
|
-
private copyBinaryFile;
|
|
14
|
-
private shouldProcessAsTemplate;
|
|
15
|
-
private shouldIgnoreFile;
|
|
16
|
-
private getFilesRecursively;
|
|
17
|
-
setTemplateVariables(variables: Record<string, unknown>): void;
|
|
18
|
-
addFileExtension(extension: string): void;
|
|
19
|
-
addIgnorePattern(pattern: string): void;
|
|
20
|
-
validateTemplate(templatePath: string): Promise<boolean>;
|
|
21
|
-
getTemplateInfo(templatePath: string): Promise<{
|
|
22
|
-
name: string;
|
|
23
|
-
description: string;
|
|
24
|
-
version: string;
|
|
25
|
-
dependencies: string[];
|
|
26
|
-
} | null>;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=file-processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../../src/generators/file-processor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAyC1C,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlE,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAyBpE,mBAAmB;YAanB,cAAc;YAUd,uBAAuB;IA8BrC,OAAO,CAAC,gBAAgB;YAeV,mBAAmB;IAoB1B,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BxD,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1D,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,GAAG,IAAI,CAAC;CAqBV"}
|