@linktr.ee/linkapp 0.0.37 → 0.0.39
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/dev-server/featured/main.tsx +1 -1
- package/dev-server/preview/{preview.tsx → Preview.tsx} +1 -1
- package/dev-server/sheet/main.tsx +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +84 -59
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +66 -84
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/deploy.d.ts +15 -10
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +26 -199
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +124 -171
- package/dist/commands/dev.js.map +1 -1
- package/dist/lib/config/resolve-config-path.d.ts +19 -0
- package/dist/lib/config/resolve-config-path.d.ts.map +1 -0
- package/dist/lib/config/resolve-config-path.js +54 -0
- package/dist/lib/config/resolve-config-path.js.map +1 -0
- package/dist/lib/deploy/artifacts.d.ts +21 -0
- package/dist/lib/deploy/artifacts.d.ts.map +1 -0
- package/dist/lib/deploy/artifacts.js +35 -0
- package/dist/lib/deploy/artifacts.js.map +1 -0
- package/dist/lib/deploy/confirmation.d.ts +12 -0
- package/dist/lib/deploy/confirmation.d.ts.map +1 -0
- package/dist/lib/deploy/confirmation.js +30 -0
- package/dist/lib/deploy/confirmation.js.map +1 -0
- package/dist/lib/deploy/context.d.ts +44 -0
- package/dist/lib/deploy/context.d.ts.map +1 -0
- package/dist/lib/deploy/context.js +39 -0
- package/dist/lib/deploy/context.js.map +1 -0
- package/dist/lib/deploy/deploy-output.d.ts +10 -0
- package/dist/lib/deploy/deploy-output.d.ts.map +1 -0
- package/dist/lib/deploy/deploy-output.js +79 -0
- package/dist/lib/deploy/deploy-output.js.map +1 -0
- package/dist/lib/deploy/deploy-phases.d.ts +41 -0
- package/dist/lib/deploy/deploy-phases.d.ts.map +1 -0
- package/dist/lib/deploy/deploy-phases.js +116 -0
- package/dist/lib/deploy/deploy-phases.js.map +1 -0
- package/dist/lib/deploy/deploy-utils.d.ts +53 -0
- package/dist/lib/deploy/deploy-utils.d.ts.map +1 -0
- package/dist/lib/deploy/deploy-utils.js +149 -0
- package/dist/lib/deploy/deploy-utils.js.map +1 -0
- package/dist/lib/deploy/execution.d.ts +24 -0
- package/dist/lib/deploy/execution.d.ts.map +1 -0
- package/dist/lib/deploy/execution.js +29 -0
- package/dist/lib/deploy/execution.js.map +1 -0
- package/dist/lib/deploy/output.d.ts +16 -0
- package/dist/lib/deploy/output.d.ts.map +1 -0
- package/dist/lib/deploy/output.js +115 -0
- package/dist/lib/deploy/output.js.map +1 -0
- package/dist/lib/deploy/pack-project.js +2 -2
- package/dist/lib/deploy/pack-project.js.map +1 -1
- package/dist/lib/deploy/preflight.d.ts +9 -0
- package/dist/lib/deploy/preflight.d.ts.map +1 -0
- package/dist/lib/deploy/preflight.js +59 -0
- package/dist/lib/deploy/preflight.js.map +1 -0
- package/dist/lib/deploy/validation.d.ts.map +1 -1
- package/dist/lib/deploy/validation.js +6 -8
- package/dist/lib/deploy/validation.js.map +1 -1
- package/dist/lib/utils/constants.d.ts +42 -0
- package/dist/lib/utils/constants.d.ts.map +1 -0
- package/dist/lib/utils/constants.js +42 -0
- package/dist/lib/utils/constants.js.map +1 -0
- package/dist/lib/utils/errors.d.ts +49 -0
- package/dist/lib/utils/errors.d.ts.map +1 -0
- package/dist/lib/utils/errors.js +70 -0
- package/dist/lib/utils/errors.js.map +1 -0
- package/dist/lib/utils/formatters.d.ts +34 -0
- package/dist/lib/utils/formatters.d.ts.map +1 -0
- package/dist/lib/utils/formatters.js +59 -0
- package/dist/lib/utils/formatters.js.map +1 -0
- package/dist/lib/utils/output.d.ts +46 -0
- package/dist/lib/utils/output.d.ts.map +1 -0
- package/dist/lib/utils/output.js +66 -0
- package/dist/lib/utils/output.js.map +1 -0
- package/dist/sdk/use-open-popup.d.ts +23 -0
- package/dist/sdk/use-open-popup.d.ts.map +1 -0
- package/dist/sdk/use-open-popup.js +29 -0
- package/dist/sdk/use-open-popup.js.map +1 -0
- package/package.json +3 -28
- package/runtime/index.html +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-phases.js","sourceRoot":"","sources":["../../../src/lib/deploy/deploy-phases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the path to linkapp.config.ts in a project.
|
|
3
|
+
*/
|
|
4
|
+
export declare function resolveConfigPath(projectPath: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Extracts the LinkApp ID from a configuration file.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getLinkAppIdFromConfig(configPath: string): Promise<string>;
|
|
9
|
+
export declare function writeLine(message?: string): void;
|
|
10
|
+
export declare function writeSection(title: string, length?: number): void;
|
|
11
|
+
export declare function writeSeparator(length?: number): void;
|
|
12
|
+
export declare const DISPLAY: {
|
|
13
|
+
readonly FILE_PREVIEW_LIMIT: 8;
|
|
14
|
+
readonly SEPARATOR_LENGTH: 50;
|
|
15
|
+
};
|
|
16
|
+
export declare const TIMESTAMP: {
|
|
17
|
+
readonly SECONDS_TO_MS_THRESHOLD: 10000000000;
|
|
18
|
+
};
|
|
19
|
+
export declare const URLS: {
|
|
20
|
+
readonly buildStatus: (linkTypeId: string, buildId: string) => string;
|
|
21
|
+
readonly adminCreateLink: {
|
|
22
|
+
readonly production: (linkTypeId: string) => string;
|
|
23
|
+
readonly qa: (linkTypeId: string) => string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare function formatTimestamp(timestamp: number | undefined): string | null;
|
|
27
|
+
export declare function formatElapsedTime(ms: number): string;
|
|
28
|
+
export declare function displayFileList(files: string[], title: string): void;
|
|
29
|
+
export declare function pluralize(count: number, singular: string, plural?: string): string;
|
|
30
|
+
export declare class DeploymentError extends Error {
|
|
31
|
+
readonly exitCode: number;
|
|
32
|
+
userMessage?: string;
|
|
33
|
+
constructor(message: string, exitCode?: number, userMessage?: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class AuthenticationError extends DeploymentError {
|
|
36
|
+
readonly environment: 'production' | 'qa';
|
|
37
|
+
constructor(environment: 'production' | 'qa');
|
|
38
|
+
}
|
|
39
|
+
export declare class ValidationError extends DeploymentError {
|
|
40
|
+
constructor(message: string, details?: string[]);
|
|
41
|
+
}
|
|
42
|
+
export declare class DeploymentCancelledError extends DeploymentError {
|
|
43
|
+
constructor();
|
|
44
|
+
}
|
|
45
|
+
export interface APIError {
|
|
46
|
+
statusCode: number;
|
|
47
|
+
messages: string[];
|
|
48
|
+
responseData?: {
|
|
49
|
+
error?: string;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare function isAPIError(error: unknown): error is APIError;
|
|
53
|
+
//# sourceMappingURL=deploy-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/deploy-utils.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BhF;AAMD,wBAAgB,SAAS,CAAC,OAAO,SAAK,GAAG,IAAI,CAE5C;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI,CAI7D;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAK,GAAG,IAAI,CAEhD;AAMD,eAAO,MAAM,OAAO;;;CAGV,CAAA;AAEV,eAAO,MAAM,SAAS;;CAEZ,CAAA;AAEV,eAAO,MAAM,IAAI;uCACW,MAAM,WAAW,MAAM;;0CAGtB,MAAM;kCAEd,MAAM;;CAGjB,CAAA;AAMV,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAO5E;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAYpE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlF;AAMD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,QAAQ,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;gBAEf,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,EAAE,WAAW,CAAC,EAAE,MAAM;CAQhE;AAED,qBAAa,mBAAoB,SAAQ,eAAe;aAC1B,WAAW,EAAE,YAAY,GAAG,IAAI;gBAAhC,WAAW,EAAE,YAAY,GAAG,IAAI;CAK7D;AAED,qBAAa,eAAgB,SAAQ,eAAe;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;CAOhD;AAED,qBAAa,wBAAyB,SAAQ,eAAe;;CAK5D;AAED,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAQ5D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// CONFIG PATH RESOLUTION
|
|
6
|
+
// ============================================================================
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the path to linkapp.config.ts in a project.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveConfigPath(projectPath) {
|
|
11
|
+
const rootConfigPath = join(projectPath, 'linkapp.config.ts');
|
|
12
|
+
const nestedConfigPath = join(projectPath, '.config', 'linkapp.config.ts');
|
|
13
|
+
if (existsSync(rootConfigPath))
|
|
14
|
+
return rootConfigPath;
|
|
15
|
+
if (existsSync(nestedConfigPath))
|
|
16
|
+
return nestedConfigPath;
|
|
17
|
+
throw new Error('Configuration file not found. Expected linkapp.config.ts in project root or .config directory.');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Extracts the LinkApp ID from a configuration file.
|
|
21
|
+
*/
|
|
22
|
+
export async function getLinkAppIdFromConfig(configPath) {
|
|
23
|
+
const { createJiti } = await import('jiti');
|
|
24
|
+
const jiti = createJiti(import.meta.url, {
|
|
25
|
+
interopDefault: true,
|
|
26
|
+
moduleCache: false,
|
|
27
|
+
});
|
|
28
|
+
try {
|
|
29
|
+
const config = jiti(configPath);
|
|
30
|
+
if (!config?.manifest?.name) {
|
|
31
|
+
throw new Error('manifest.name is required in linkapp.config.ts');
|
|
32
|
+
}
|
|
33
|
+
return config.manifest.name
|
|
34
|
+
.toLowerCase()
|
|
35
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
36
|
+
.replace(/^-+|-+$/g, '');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof Error && error.message.includes('manifest.name is required')) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Failed to load linkapp.config.ts: ${error instanceof Error ? error.message : String(error)}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// OUTPUT UTILITIES
|
|
47
|
+
// ============================================================================
|
|
48
|
+
export function writeLine(message = '') {
|
|
49
|
+
process.stdout.write(`${message}\n`);
|
|
50
|
+
}
|
|
51
|
+
export function writeSection(title, length = 50) {
|
|
52
|
+
writeLine(pc.bold(pc.cyan(`\n→ ${title}`)));
|
|
53
|
+
writeLine(pc.dim('─'.repeat(length)));
|
|
54
|
+
writeLine();
|
|
55
|
+
}
|
|
56
|
+
export function writeSeparator(length = 50) {
|
|
57
|
+
writeLine(pc.dim('─'.repeat(length)));
|
|
58
|
+
}
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// CONSTANTS
|
|
61
|
+
// ============================================================================
|
|
62
|
+
export const DISPLAY = {
|
|
63
|
+
FILE_PREVIEW_LIMIT: 8,
|
|
64
|
+
SEPARATOR_LENGTH: 50,
|
|
65
|
+
};
|
|
66
|
+
export const TIMESTAMP = {
|
|
67
|
+
SECONDS_TO_MS_THRESHOLD: 10000000000,
|
|
68
|
+
};
|
|
69
|
+
export const URLS = {
|
|
70
|
+
buildStatus: (linkTypeId, buildId) => `https://linkapp-ci.replit.app/?linkTypeId=${linkTypeId}&buildId=${buildId}`,
|
|
71
|
+
adminCreateLink: {
|
|
72
|
+
production: (linkTypeId) => `https://linktr.ee/admin?action=create-link&linkType=${linkTypeId}`,
|
|
73
|
+
qa: (linkTypeId) => `https://qa.linktr.ee/admin?action=create-link&linkType=${linkTypeId}`,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
// ============================================================================
|
|
77
|
+
// FORMATTERS
|
|
78
|
+
// ============================================================================
|
|
79
|
+
export function formatTimestamp(timestamp) {
|
|
80
|
+
if (!timestamp)
|
|
81
|
+
return null;
|
|
82
|
+
const timestampMs = timestamp < TIMESTAMP.SECONDS_TO_MS_THRESHOLD ? timestamp * 1000 : timestamp;
|
|
83
|
+
return new Date(timestampMs).toLocaleString();
|
|
84
|
+
}
|
|
85
|
+
export function formatElapsedTime(ms) {
|
|
86
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
87
|
+
}
|
|
88
|
+
export function displayFileList(files, title) {
|
|
89
|
+
writeLine();
|
|
90
|
+
writeLine(pc.bold(title));
|
|
91
|
+
const filesToShow = files.slice(0, DISPLAY.FILE_PREVIEW_LIMIT);
|
|
92
|
+
for (const file of filesToShow) {
|
|
93
|
+
writeLine(pc.dim(` • ${file}`));
|
|
94
|
+
}
|
|
95
|
+
if (files.length > DISPLAY.FILE_PREVIEW_LIMIT) {
|
|
96
|
+
writeLine(pc.dim(` • ... and ${files.length - DISPLAY.FILE_PREVIEW_LIMIT} more files`));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export function pluralize(count, singular, plural) {
|
|
100
|
+
const word = count === 1 ? singular : plural ?? `${singular}s`;
|
|
101
|
+
return `${count} ${word}`;
|
|
102
|
+
}
|
|
103
|
+
// ============================================================================
|
|
104
|
+
// ERRORS
|
|
105
|
+
// ============================================================================
|
|
106
|
+
export class DeploymentError extends Error {
|
|
107
|
+
exitCode;
|
|
108
|
+
userMessage;
|
|
109
|
+
constructor(message, exitCode = 1, userMessage) {
|
|
110
|
+
super(message);
|
|
111
|
+
this.name = 'DeploymentError';
|
|
112
|
+
this.exitCode = exitCode;
|
|
113
|
+
if (userMessage !== undefined) {
|
|
114
|
+
this.userMessage = userMessage;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export class AuthenticationError extends DeploymentError {
|
|
119
|
+
environment;
|
|
120
|
+
constructor(environment) {
|
|
121
|
+
const envFlag = environment === 'qa' ? ' --qa' : '';
|
|
122
|
+
super('Not authenticated', 1, `Run: npx @linktr.ee/linkapp login${envFlag}`);
|
|
123
|
+
this.environment = environment;
|
|
124
|
+
this.name = 'AuthenticationError';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
export class ValidationError extends DeploymentError {
|
|
128
|
+
constructor(message, details) {
|
|
129
|
+
super(message, 1);
|
|
130
|
+
this.name = 'ValidationError';
|
|
131
|
+
if (details) {
|
|
132
|
+
this.userMessage = details.join('\n');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export class DeploymentCancelledError extends DeploymentError {
|
|
137
|
+
constructor() {
|
|
138
|
+
super('Deployment cancelled by user', 0);
|
|
139
|
+
this.name = 'DeploymentCancelledError';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function isAPIError(error) {
|
|
143
|
+
return (error !== null &&
|
|
144
|
+
typeof error === 'object' &&
|
|
145
|
+
'statusCode' in error &&
|
|
146
|
+
'messages' in error &&
|
|
147
|
+
Array.isArray(error.messages));
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=deploy-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-utils.js","sourceRoot":"","sources":["../../../src/lib/deploy/deploy-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { DeploymentContext } from './context.js';
|
|
2
|
+
import type { ArtifactPreparationResult } from './artifacts.js';
|
|
3
|
+
/**
|
|
4
|
+
* Upload result from the LinkTypes API
|
|
5
|
+
*/
|
|
6
|
+
export interface UploadResult {
|
|
7
|
+
linkType: {
|
|
8
|
+
linkTypeId: string;
|
|
9
|
+
status: string;
|
|
10
|
+
updatedTimestamp?: number;
|
|
11
|
+
};
|
|
12
|
+
build?: {
|
|
13
|
+
id: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Executes the deployment by uploading assets to the LinkTypes API.
|
|
18
|
+
*
|
|
19
|
+
* @param context - Deployment context
|
|
20
|
+
* @param artifacts - Prepared artifacts
|
|
21
|
+
* @returns Upload result from API
|
|
22
|
+
*/
|
|
23
|
+
export declare function executeDeployment(context: DeploymentContext, artifacts: ArtifactPreparationResult): Promise<UploadResult>;
|
|
24
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/execution.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAA;IACD,KAAK,CAAC,EAAE;QACN,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,yBAAyB,GACnC,OAAO,CAAC,YAAY,CAAC,CAoBvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import { uploadAssets } from './upload.js';
|
|
3
|
+
import { formatElapsedTime } from '../utils/formatters.js';
|
|
4
|
+
import { writeLine } from '../utils/output.js';
|
|
5
|
+
/**
|
|
6
|
+
* Executes the deployment by uploading assets to the LinkTypes API.
|
|
7
|
+
*
|
|
8
|
+
* @param context - Deployment context
|
|
9
|
+
* @param artifacts - Prepared artifacts
|
|
10
|
+
* @returns Upload result from API
|
|
11
|
+
*/
|
|
12
|
+
export async function executeDeployment(context, artifacts) {
|
|
13
|
+
writeLine();
|
|
14
|
+
const uploadStart = Date.now();
|
|
15
|
+
const s = p.spinner();
|
|
16
|
+
s.start('Uploading assets');
|
|
17
|
+
const result = await uploadAssets({
|
|
18
|
+
projectPath: context.projectPath,
|
|
19
|
+
apiUrl: artifacts.apiUrl,
|
|
20
|
+
linkAppId: context.linkAppId,
|
|
21
|
+
accessToken: context.accessToken,
|
|
22
|
+
isUpdate: artifacts.exists,
|
|
23
|
+
forceUpdate: context.options.force,
|
|
24
|
+
});
|
|
25
|
+
const uploadTime = formatElapsedTime(Date.now() - uploadStart);
|
|
26
|
+
s.stop(`Assets uploaded (${uploadTime})`);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/lib/deploy/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAkB9C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA0B,EAC1B,SAAoC;IAEpC,SAAS,EAAE,CAAA;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;IAErB,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAE3B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,SAAS,CAAC,MAAM;QAC1B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;KACnC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAA;IAC9D,CAAC,CAAC,IAAI,CAAC,oBAAoB,UAAU,GAAG,CAAC,CAAA;IAEzC,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DeploymentContext } from './context.js';
|
|
2
|
+
import type { UploadResult } from './execution.js';
|
|
3
|
+
/**
|
|
4
|
+
* Displays the successful deployment results including details and next steps.
|
|
5
|
+
*
|
|
6
|
+
* @param context - Deployment context
|
|
7
|
+
* @param result - Upload result from API
|
|
8
|
+
*/
|
|
9
|
+
export declare function displayDeploymentSuccess(context: DeploymentContext, result: UploadResult): void;
|
|
10
|
+
/**
|
|
11
|
+
* Displays deployment error information.
|
|
12
|
+
*
|
|
13
|
+
* @param error - Error that occurred during deployment
|
|
14
|
+
*/
|
|
15
|
+
export declare function displayDeploymentError(error: unknown): void;
|
|
16
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/output.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,YAAY,GACnB,IAAI,CAmBN;AAuCD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAiC3D"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import pc from 'picocolors';
|
|
2
|
+
import { writeLine, writeSeparator, writeSuccess, writeError, writeWarning, writeLabelValue, } from '../utils/output.js';
|
|
3
|
+
import { formatElapsedTime, formatTimestamp } from '../utils/formatters.js';
|
|
4
|
+
import { isAPIError, DeploymentCancelledError, AuthenticationError, } from '../utils/errors.js';
|
|
5
|
+
import { URLS } from '../utils/constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Displays the successful deployment results including details and next steps.
|
|
8
|
+
*
|
|
9
|
+
* @param context - Deployment context
|
|
10
|
+
* @param result - Upload result from API
|
|
11
|
+
*/
|
|
12
|
+
export function displayDeploymentSuccess(context, result) {
|
|
13
|
+
const totalTime = formatElapsedTime(Date.now() - context.startTime);
|
|
14
|
+
writeLine();
|
|
15
|
+
writeSeparator();
|
|
16
|
+
writeSuccess('\nDeployment successful!');
|
|
17
|
+
writeIndented(`Completed in ${totalTime}`);
|
|
18
|
+
writeLine();
|
|
19
|
+
writeLine(pc.bold('Details:'));
|
|
20
|
+
writeLabelValue('ID', result.linkType.linkTypeId);
|
|
21
|
+
writeLabelValue('Status', result.linkType.status);
|
|
22
|
+
const timestamp = formatTimestamp(result.linkType.updatedTimestamp);
|
|
23
|
+
if (timestamp) {
|
|
24
|
+
writeLabelValue('Updated', timestamp);
|
|
25
|
+
}
|
|
26
|
+
displayNextSteps(context, result);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Displays next steps after successful deployment.
|
|
30
|
+
*
|
|
31
|
+
* @param context - Deployment context
|
|
32
|
+
* @param result - Upload result from API
|
|
33
|
+
*/
|
|
34
|
+
function displayNextSteps(context, result) {
|
|
35
|
+
writeLine();
|
|
36
|
+
writeLine(pc.bold('Next steps:'));
|
|
37
|
+
// Step 1: Build is happening
|
|
38
|
+
if (result.build?.id) {
|
|
39
|
+
const buildUrl = URLS.buildStatus(result.linkType.linkTypeId, result.build.id);
|
|
40
|
+
writeLine(pc.cyan(' 1. Building your LinkApp (this may take a few minutes):'));
|
|
41
|
+
writeIndented(buildUrl, 5);
|
|
42
|
+
writeLine();
|
|
43
|
+
}
|
|
44
|
+
// Step 2: Add to page (only after build completes)
|
|
45
|
+
const createUrl = context.env === 'qa'
|
|
46
|
+
? URLS.adminCreateLink.qa(result.linkType.linkTypeId)
|
|
47
|
+
: URLS.adminCreateLink.production(result.linkType.linkTypeId);
|
|
48
|
+
writeLine(pc.cyan(' 2. Once the build completes, add it to your page:'));
|
|
49
|
+
writeIndented(createUrl, 5);
|
|
50
|
+
writeLine();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Helper function to write indented text with dimmed styling.
|
|
54
|
+
*/
|
|
55
|
+
function writeIndented(text, indent = 2) {
|
|
56
|
+
writeLine(pc.dim(' '.repeat(indent) + text));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Displays deployment error information.
|
|
60
|
+
*
|
|
61
|
+
* @param error - Error that occurred during deployment
|
|
62
|
+
*/
|
|
63
|
+
export function displayDeploymentError(error) {
|
|
64
|
+
writeLine();
|
|
65
|
+
writeSeparator();
|
|
66
|
+
writeError('\nDeployment failed');
|
|
67
|
+
writeLine();
|
|
68
|
+
// Handle specific error types
|
|
69
|
+
if (error instanceof DeploymentCancelledError) {
|
|
70
|
+
writeWarning('Deployment cancelled');
|
|
71
|
+
writeLine();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (error instanceof AuthenticationError) {
|
|
75
|
+
writeIndented(error.userMessage ?? error.message);
|
|
76
|
+
writeLine();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Handle API errors with detailed information
|
|
80
|
+
if (isAPIError(error)) {
|
|
81
|
+
displayAPIError(error);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// Handle generic errors
|
|
85
|
+
if (error instanceof Error) {
|
|
86
|
+
writeIndented(error.message);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
writeIndented(String(error));
|
|
90
|
+
}
|
|
91
|
+
writeLine();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Displays detailed API error information.
|
|
95
|
+
*
|
|
96
|
+
* @param error - API error with status and messages
|
|
97
|
+
*/
|
|
98
|
+
function displayAPIError(error) {
|
|
99
|
+
writeLine(pc.bold('Error Details:'));
|
|
100
|
+
writeLine(pc.red(` Status: ${error.statusCode}`));
|
|
101
|
+
if (error.messages.length > 0) {
|
|
102
|
+
writeLine();
|
|
103
|
+
writeLine(pc.bold(' Validation Errors:'));
|
|
104
|
+
for (const msg of error.messages) {
|
|
105
|
+
writeLine(pc.red(` • ${msg}`));
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (error.responseData?.error) {
|
|
109
|
+
writeLine();
|
|
110
|
+
writeLine(pc.bold(' Error Type:'));
|
|
111
|
+
writeLine(pc.red(` ${error.responseData.error}`));
|
|
112
|
+
}
|
|
113
|
+
writeLine();
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/lib/deploy/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,8 @@ export async function packProject(options = {}) {
|
|
|
18
18
|
{ source: join(linkappDir, 'settings.json'), dest: 'settings.json', required: false },
|
|
19
19
|
{ source: join(linkappDir, 'url_match_rules.json'), dest: 'url_match_rules.json', required: false },
|
|
20
20
|
];
|
|
21
|
-
// Icon file from
|
|
22
|
-
const iconSource = join(projectPath, '
|
|
21
|
+
// Icon file from dist directory (copied during build from app/icon.svg)
|
|
22
|
+
const iconSource = join(projectPath, 'dist', 'icon.svg');
|
|
23
23
|
const packedFiles = [];
|
|
24
24
|
// Validate required files exist
|
|
25
25
|
for (const file of requiredFiles) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-project.js","sourceRoot":"","sources":["../../../src/lib/deploy/pack-project.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAOhC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IAEzE,gGAAgG;IAChG,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,CAAA;IAEjG,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;IACvK,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAE7D,yCAAyC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG;QACpB,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpF,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE;QACrF,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE;KACpG,CAAA;IAED
|
|
1
|
+
{"version":3,"file":"pack-project.js","sourceRoot":"","sources":["../../../src/lib/deploy/pack-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DeploymentContext } from './context.js';
|
|
2
|
+
/**
|
|
3
|
+
* Runs all preflight checks before deployment.
|
|
4
|
+
* Includes building the project and validating its structure.
|
|
5
|
+
*
|
|
6
|
+
* @param context - Deployment context
|
|
7
|
+
*/
|
|
8
|
+
export declare function runPreflightChecks(context: DeploymentContext): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/preflight.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAiDrD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import pc from 'picocolors';
|
|
4
|
+
import { buildCommand } from '../../commands/build.js';
|
|
5
|
+
import { validateProject, printValidationResults } from './validation.js';
|
|
6
|
+
import { ValidationError } from '../utils/errors.js';
|
|
7
|
+
import { writeLine, writeIndented } from '../utils/output.js';
|
|
8
|
+
import { formatElapsedTime } from '../utils/formatters.js';
|
|
9
|
+
/**
|
|
10
|
+
* Ensures the project has been built before deployment.
|
|
11
|
+
* Runs the build command if dist/ directory doesn't exist.
|
|
12
|
+
*
|
|
13
|
+
* @param context - Deployment context
|
|
14
|
+
*/
|
|
15
|
+
async function ensureProjectBuilt(context) {
|
|
16
|
+
if (context.options.skipBuild) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const distPath = join(context.projectPath, 'dist');
|
|
20
|
+
if (existsSync(distPath)) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
writeLine(pc.bold('Building project...'));
|
|
24
|
+
const buildStart = Date.now();
|
|
25
|
+
await buildCommand({ sourcemap: false });
|
|
26
|
+
const buildTime = formatElapsedTime(Date.now() - buildStart);
|
|
27
|
+
writeIndented(`Completed in ${buildTime}`);
|
|
28
|
+
writeLine();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validates the project structure and configuration.
|
|
32
|
+
* Checks for required files, valid config, and proper setup.
|
|
33
|
+
*
|
|
34
|
+
* @param context - Deployment context
|
|
35
|
+
* @throws ValidationError if validation fails
|
|
36
|
+
*/
|
|
37
|
+
async function validateProjectStructure(_context) {
|
|
38
|
+
writeLine(pc.bold('Pre-deployment checks'));
|
|
39
|
+
const validationResult = await validateProject();
|
|
40
|
+
printValidationResults(validationResult);
|
|
41
|
+
if (!validationResult.success) {
|
|
42
|
+
writeLine();
|
|
43
|
+
throw new ValidationError('Validation failed');
|
|
44
|
+
}
|
|
45
|
+
writeLine();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Runs all preflight checks before deployment.
|
|
49
|
+
* Includes building the project and validating its structure.
|
|
50
|
+
*
|
|
51
|
+
* @param context - Deployment context
|
|
52
|
+
*/
|
|
53
|
+
export async function runPreflightChecks(context) {
|
|
54
|
+
await ensureProjectBuilt(context);
|
|
55
|
+
if (!context.options.skipChecks) {
|
|
56
|
+
await validateProjectStructure(context);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/lib/deploy/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAA0B;IAC1D,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAClD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAM;IACR,CAAC;IAED,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAE7B,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAExC,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAA;IAC5D,aAAa,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAA;IAC1C,SAAS,EAAE,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,wBAAwB,CAAC,QAA2B;IACjE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAE3C,MAAM,gBAAgB,GAAG,MAAM,eAAe,EAAE,CAAA;IAChD,sBAAsB,CAAC,gBAAgB,CAAC,CAAA;IAExC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC9B,SAAS,EAAE,CAAA;QACX,MAAM,IAAI,eAAe,CAAC,mBAAmB,CAAC,CAAA;IAChD,CAAC;IAED,SAAS,EAAE,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA0B;IACjE,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAEjC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8CpG;AA6CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqBrE"}
|
|
@@ -2,20 +2,18 @@ import { existsSync, statSync, readdirSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { spawn } from 'node:child_process';
|
|
4
4
|
import pc from 'picocolors';
|
|
5
|
-
|
|
6
|
-
process.stdout.write(`${message}\n`);
|
|
7
|
-
};
|
|
5
|
+
import { resolveConfigPath, writeLine } from './deploy-utils.js';
|
|
8
6
|
export async function validateProject(projectPath = process.cwd()) {
|
|
9
7
|
const result = {
|
|
10
8
|
success: true,
|
|
11
9
|
errors: [],
|
|
12
10
|
warnings: [],
|
|
13
11
|
};
|
|
14
|
-
// Check config file exists (
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
// Check config file exists (use shared resolver)
|
|
13
|
+
try {
|
|
14
|
+
resolveConfigPath(projectPath);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
19
17
|
result.errors.push('Config file missing: linkapp.config.ts');
|
|
20
18
|
result.success = false;
|
|
21
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"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"}
|