@linktr.ee/linkapp 0.0.38 → 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.
Files changed (80) hide show
  1. package/dist/cli.js +1 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +84 -59
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/build.d.ts.map +1 -1
  7. package/dist/commands/build.js +66 -84
  8. package/dist/commands/build.js.map +1 -1
  9. package/dist/commands/deploy.d.ts +15 -10
  10. package/dist/commands/deploy.d.ts.map +1 -1
  11. package/dist/commands/deploy.js +26 -199
  12. package/dist/commands/deploy.js.map +1 -1
  13. package/dist/lib/config/resolve-config-path.d.ts +19 -0
  14. package/dist/lib/config/resolve-config-path.d.ts.map +1 -0
  15. package/dist/lib/config/resolve-config-path.js +54 -0
  16. package/dist/lib/config/resolve-config-path.js.map +1 -0
  17. package/dist/lib/deploy/artifacts.d.ts +21 -0
  18. package/dist/lib/deploy/artifacts.d.ts.map +1 -0
  19. package/dist/lib/deploy/artifacts.js +35 -0
  20. package/dist/lib/deploy/artifacts.js.map +1 -0
  21. package/dist/lib/deploy/confirmation.d.ts +12 -0
  22. package/dist/lib/deploy/confirmation.d.ts.map +1 -0
  23. package/dist/lib/deploy/confirmation.js +30 -0
  24. package/dist/lib/deploy/confirmation.js.map +1 -0
  25. package/dist/lib/deploy/context.d.ts +44 -0
  26. package/dist/lib/deploy/context.d.ts.map +1 -0
  27. package/dist/lib/deploy/context.js +39 -0
  28. package/dist/lib/deploy/context.js.map +1 -0
  29. package/dist/lib/deploy/deploy-output.d.ts +10 -0
  30. package/dist/lib/deploy/deploy-output.d.ts.map +1 -0
  31. package/dist/lib/deploy/deploy-output.js +79 -0
  32. package/dist/lib/deploy/deploy-output.js.map +1 -0
  33. package/dist/lib/deploy/deploy-phases.d.ts +41 -0
  34. package/dist/lib/deploy/deploy-phases.d.ts.map +1 -0
  35. package/dist/lib/deploy/deploy-phases.js +116 -0
  36. package/dist/lib/deploy/deploy-phases.js.map +1 -0
  37. package/dist/lib/deploy/deploy-utils.d.ts +53 -0
  38. package/dist/lib/deploy/deploy-utils.d.ts.map +1 -0
  39. package/dist/lib/deploy/deploy-utils.js +149 -0
  40. package/dist/lib/deploy/deploy-utils.js.map +1 -0
  41. package/dist/lib/deploy/execution.d.ts +24 -0
  42. package/dist/lib/deploy/execution.d.ts.map +1 -0
  43. package/dist/lib/deploy/execution.js +29 -0
  44. package/dist/lib/deploy/execution.js.map +1 -0
  45. package/dist/lib/deploy/output.d.ts +16 -0
  46. package/dist/lib/deploy/output.d.ts.map +1 -0
  47. package/dist/lib/deploy/output.js +115 -0
  48. package/dist/lib/deploy/output.js.map +1 -0
  49. package/dist/lib/deploy/pack-project.js +2 -2
  50. package/dist/lib/deploy/pack-project.js.map +1 -1
  51. package/dist/lib/deploy/preflight.d.ts +9 -0
  52. package/dist/lib/deploy/preflight.d.ts.map +1 -0
  53. package/dist/lib/deploy/preflight.js +59 -0
  54. package/dist/lib/deploy/preflight.js.map +1 -0
  55. package/dist/lib/deploy/validation.d.ts.map +1 -1
  56. package/dist/lib/deploy/validation.js +6 -8
  57. package/dist/lib/deploy/validation.js.map +1 -1
  58. package/dist/lib/utils/constants.d.ts +42 -0
  59. package/dist/lib/utils/constants.d.ts.map +1 -0
  60. package/dist/lib/utils/constants.js +42 -0
  61. package/dist/lib/utils/constants.js.map +1 -0
  62. package/dist/lib/utils/errors.d.ts +49 -0
  63. package/dist/lib/utils/errors.d.ts.map +1 -0
  64. package/dist/lib/utils/errors.js +70 -0
  65. package/dist/lib/utils/errors.js.map +1 -0
  66. package/dist/lib/utils/formatters.d.ts +34 -0
  67. package/dist/lib/utils/formatters.d.ts.map +1 -0
  68. package/dist/lib/utils/formatters.js +59 -0
  69. package/dist/lib/utils/formatters.js.map +1 -0
  70. package/dist/lib/utils/output.d.ts +46 -0
  71. package/dist/lib/utils/output.d.ts.map +1 -0
  72. package/dist/lib/utils/output.js +66 -0
  73. package/dist/lib/utils/output.js.map +1 -0
  74. package/dist/sdk/use-open-popup.d.ts +23 -0
  75. package/dist/sdk/use-open-popup.d.ts.map +1 -0
  76. package/dist/sdk/use-open-popup.js +29 -0
  77. package/dist/sdk/use-open-popup.js.map +1 -0
  78. package/package.json +1 -26
  79. package/runtime/index.html +0 -1
  80. /package/dev-server/preview/{preview.tsx → Preview.tsx} +0 -0
@@ -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 app directory
22
- const iconSource = join(projectPath, 'app', 'icon.svg');
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,+BAA+B;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;IAEvD,MAAM,WAAW,GAAa,EAAE,CAAA;IAEhC,gCAAgC;IAChC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,IAAI,kCAAkC,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE;YAC9B,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1B,CAAC,CAAA;QAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,WAAW,CAAC,CAAA;QACtB,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEpB,qCAAqC;QACrC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBACtD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;YAC9C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9B,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACtC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;YACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;gBACtC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YACtC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC/B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YACtC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3D,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC/B,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,CAAC,QAAQ,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;AACJ,CAAC"}
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":"AASA,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,CAgDpG;AA6CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqBrE"}
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
- const writeLine = (message = '') => {
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 (check root first, then .config for backward compatibility)
15
- const rootConfigPath = join(projectPath, 'linkapp.config.ts');
16
- const nestedConfigPath = join(projectPath, '.config', 'linkapp.config.ts');
17
- const configPath = existsSync(rootConfigPath) ? rootConfigPath : nestedConfigPath;
18
- if (!existsSync(configPath)) {
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":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Display constants for formatting output
3
+ */
4
+ export declare const DISPLAY: {
5
+ /** Maximum number of files to show in preview list */
6
+ readonly FILE_PREVIEW_LIMIT: 8;
7
+ /** Length of separator lines */
8
+ readonly SEPARATOR_LENGTH: 50;
9
+ /** Character used for separator lines */
10
+ readonly SEPARATOR_CHAR: "─";
11
+ };
12
+ /**
13
+ * Timestamp constants for date/time handling
14
+ */
15
+ export declare const TIMESTAMP: {
16
+ /** Threshold for detecting seconds vs milliseconds (year 2100 in seconds) */
17
+ readonly SECONDS_TO_MS_THRESHOLD: 10000000000;
18
+ };
19
+ /**
20
+ * CLI command templates
21
+ */
22
+ export declare const CLI_COMMANDS: {
23
+ readonly login: (qa: boolean) => string;
24
+ readonly build: () => string;
25
+ };
26
+ /**
27
+ * URL templates for deployment-related links
28
+ */
29
+ export declare const URLS: {
30
+ /**
31
+ * Build status URL for LinkApp CI
32
+ */
33
+ readonly buildStatus: (linkTypeId: string, buildId: string) => string;
34
+ /**
35
+ * Admin URL for creating a link in production
36
+ */
37
+ readonly adminCreateLink: {
38
+ readonly production: (linkTypeId: string) => string;
39
+ readonly qa: (linkTypeId: string) => string;
40
+ };
41
+ };
42
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB,sDAAsD;;IAEtD,gCAAgC;;IAEhC,yCAAyC;;CAEjC,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB,6EAA6E;;CAErE,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,YAAY;yBACX,OAAO;;CAEX,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,IAAI;IACf;;OAEG;uCACuB,MAAM,WAAW,MAAM;IAGjD;;OAEG;;0CAEwB,MAAM;kCAEd,MAAM;;CAGjB,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Display constants for formatting output
3
+ */
4
+ export const DISPLAY = {
5
+ /** Maximum number of files to show in preview list */
6
+ FILE_PREVIEW_LIMIT: 8,
7
+ /** Length of separator lines */
8
+ SEPARATOR_LENGTH: 50,
9
+ /** Character used for separator lines */
10
+ SEPARATOR_CHAR: '─',
11
+ };
12
+ /**
13
+ * Timestamp constants for date/time handling
14
+ */
15
+ export const TIMESTAMP = {
16
+ /** Threshold for detecting seconds vs milliseconds (year 2100 in seconds) */
17
+ SECONDS_TO_MS_THRESHOLD: 10000000000,
18
+ };
19
+ /**
20
+ * CLI command templates
21
+ */
22
+ export const CLI_COMMANDS = {
23
+ login: (qa) => `npx @linktr.ee/linkapp login${qa ? ' --qa' : ''}`,
24
+ build: () => 'linkapp build',
25
+ };
26
+ /**
27
+ * URL templates for deployment-related links
28
+ */
29
+ export const URLS = {
30
+ /**
31
+ * Build status URL for LinkApp CI
32
+ */
33
+ buildStatus: (linkTypeId, buildId) => `https://linkapp-ci.replit.app/?linkTypeId=${linkTypeId}&buildId=${buildId}`,
34
+ /**
35
+ * Admin URL for creating a link in production
36
+ */
37
+ adminCreateLink: {
38
+ production: (linkTypeId) => `https://linktr.ee/admin?action=create-link&linkType=${linkTypeId}`,
39
+ qa: (linkTypeId) => `https://qa.linktr.ee/admin?action=create-link&linkType=${linkTypeId}`,
40
+ },
41
+ };
42
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,sDAAsD;IACtD,kBAAkB,EAAE,CAAC;IACrB,gCAAgC;IAChC,gBAAgB,EAAE,EAAE;IACpB,yCAAyC;IACzC,cAAc,EAAE,GAAG;CACX,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,6EAA6E;IAC7E,uBAAuB,EAAE,WAAW;CAC5B,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,CAAC,EAAW,EAAE,EAAE,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;IAC1E,KAAK,EAAE,GAAG,EAAE,CAAC,eAAe;CACpB,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB;;OAEG;IACH,WAAW,EAAE,CAAC,UAAkB,EAAE,OAAe,EAAE,EAAE,CACnD,6CAA6C,UAAU,YAAY,OAAO,EAAE;IAE9E;;OAEG;IACH,eAAe,EAAE;QACf,UAAU,EAAE,CAAC,UAAkB,EAAE,EAAE,CACjC,uDAAuD,UAAU,EAAE;QACrE,EAAE,EAAE,CAAC,UAAkB,EAAE,EAAE,CACzB,0DAA0D,UAAU,EAAE;KACzE;CACO,CAAA"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Base error class for deployment-related errors.
3
+ */
4
+ export declare class DeploymentError extends Error {
5
+ readonly exitCode: number;
6
+ userMessage?: string;
7
+ constructor(message: string, exitCode?: number, userMessage?: string | undefined);
8
+ }
9
+ /**
10
+ * Error thrown when user is not authenticated.
11
+ */
12
+ export declare class AuthenticationError extends DeploymentError {
13
+ readonly environment: 'production' | 'qa';
14
+ constructor(environment: 'production' | 'qa');
15
+ }
16
+ /**
17
+ * Error thrown when project validation fails.
18
+ */
19
+ export declare class ValidationError extends DeploymentError {
20
+ constructor(message: string, details?: string[]);
21
+ }
22
+ /**
23
+ * Error thrown when deployment is cancelled by user.
24
+ */
25
+ export declare class DeploymentCancelledError extends DeploymentError {
26
+ constructor();
27
+ }
28
+ /**
29
+ * Structured API error response from LinkTypes API.
30
+ */
31
+ export interface APIError {
32
+ statusCode: number;
33
+ messages: string[];
34
+ responseData?: {
35
+ error?: string;
36
+ };
37
+ }
38
+ /**
39
+ * Type guard to check if an error is an API error.
40
+ */
41
+ export declare function isAPIError(error: unknown): error is APIError;
42
+ /**
43
+ * Error thrown when API request fails.
44
+ */
45
+ export declare class APIRequestError extends DeploymentError {
46
+ readonly apiError: APIError;
47
+ constructor(apiError: APIError);
48
+ }
49
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAgB,QAAQ,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;gBAGzB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAU,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS;CASnC;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;aAEpC,WAAW,EAAE,YAAY,GAAG,IAAI;gBAAhC,WAAW,EAAE,YAAY,GAAG,IAAI;CAUnD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;CAOhD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,eAAe;;CAK5D;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAQ5D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;aAEhC,QAAQ,EAAE,QAAQ;gBAAlB,QAAQ,EAAE,QAAQ;CAKrC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Base error class for deployment-related errors.
3
+ */
4
+ export class DeploymentError extends Error {
5
+ exitCode;
6
+ userMessage;
7
+ constructor(message, exitCode = 1, userMessage) {
8
+ super(message);
9
+ this.name = 'DeploymentError';
10
+ this.exitCode = exitCode;
11
+ if (userMessage !== undefined) {
12
+ this.userMessage = userMessage;
13
+ }
14
+ }
15
+ }
16
+ /**
17
+ * Error thrown when user is not authenticated.
18
+ */
19
+ export class AuthenticationError extends DeploymentError {
20
+ environment;
21
+ constructor(environment) {
22
+ const envFlag = environment === 'qa' ? ' --qa' : '';
23
+ super('Not authenticated', 1, `Run: npx @linktr.ee/linkapp login${envFlag}`);
24
+ this.environment = environment;
25
+ this.name = 'AuthenticationError';
26
+ }
27
+ }
28
+ /**
29
+ * Error thrown when project validation fails.
30
+ */
31
+ export class ValidationError extends DeploymentError {
32
+ constructor(message, details) {
33
+ super(message, 1);
34
+ this.name = 'ValidationError';
35
+ if (details) {
36
+ this.userMessage = details.join('\n');
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Error thrown when deployment is cancelled by user.
42
+ */
43
+ export class DeploymentCancelledError extends DeploymentError {
44
+ constructor() {
45
+ super('Deployment cancelled by user', 0);
46
+ this.name = 'DeploymentCancelledError';
47
+ }
48
+ }
49
+ /**
50
+ * Type guard to check if an error is an API error.
51
+ */
52
+ export function isAPIError(error) {
53
+ return (error !== null &&
54
+ typeof error === 'object' &&
55
+ 'statusCode' in error &&
56
+ 'messages' in error &&
57
+ Array.isArray(error.messages));
58
+ }
59
+ /**
60
+ * Error thrown when API request fails.
61
+ */
62
+ export class APIRequestError extends DeploymentError {
63
+ apiError;
64
+ constructor(apiError) {
65
+ super(`API request failed with status ${apiError.statusCode}`, 1);
66
+ this.apiError = apiError;
67
+ this.name = 'APIRequestError';
68
+ }
69
+ }
70
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/lib/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxB,QAAQ,CAAQ;IACzB,WAAW,CAAS;IAE3B,YACE,OAAe,EACf,WAAmB,CAAC,EACpB,WAAgC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAChC,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAEpC;IADlB,YACkB,WAAgC;QAEhD,MAAM,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;QACnD,KAAK,CACH,mBAAmB,EACnB,CAAC,EACD,oCAAoC,OAAO,EAAE,CAC9C,CAAA;QAPe,gBAAW,GAAX,WAAW,CAAqB;QAQhD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAClD,YAAY,OAAe,EAAE,OAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D;QACE,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;IACxC,CAAC;CACF;AAaD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,YAAY,IAAI,KAAK;QACrB,UAAU,IAAI,KAAK;QACnB,KAAK,CAAC,OAAO,CAAE,KAAa,CAAC,QAAQ,CAAC,CACvC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IAEhC;IADlB,YACkB,QAAkB;QAElC,KAAK,CAAC,kCAAkC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;QAFjD,aAAQ,GAAR,QAAQ,CAAU;QAGlC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Formats a timestamp (in seconds or milliseconds) to a localized string.
3
+ * Automatically detects whether the timestamp is in seconds or milliseconds.
4
+ *
5
+ * @param timestamp - Timestamp in seconds or milliseconds
6
+ * @returns Formatted date string, or null if timestamp is undefined
7
+ */
8
+ export declare function formatTimestamp(timestamp: number | undefined): string | null;
9
+ /**
10
+ * Formats an elapsed time in milliseconds to a human-readable string.
11
+ *
12
+ * @param ms - Time in milliseconds
13
+ * @returns Formatted time string (e.g., "1.5s")
14
+ */
15
+ export declare function formatElapsedTime(ms: number): string;
16
+ /**
17
+ * Displays a list of files with a preview limit.
18
+ * Shows first N files and indicates how many more exist.
19
+ *
20
+ * @param files - Array of file paths
21
+ * @param title - Title to display above the list
22
+ * @param limit - Maximum number of files to show (default: from DISPLAY constant)
23
+ */
24
+ export declare function displayFileList(files: string[], title: string, limit?: number): void;
25
+ /**
26
+ * Pluralizes a word based on count.
27
+ *
28
+ * @param count - The count to check
29
+ * @param singular - Singular form of the word
30
+ * @param plural - Plural form of the word (optional, defaults to singular + 's')
31
+ * @returns Pluralized string with count
32
+ */
33
+ export declare function pluralize(count: number, singular: string, plural?: string): string;
34
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAU5E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAmC,GACzC,IAAI,CAYN;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlF"}
@@ -0,0 +1,59 @@
1
+ import pc from 'picocolors';
2
+ import { TIMESTAMP, DISPLAY } from './constants.js';
3
+ import { writeLine, writeIndented } from './output.js';
4
+ /**
5
+ * Formats a timestamp (in seconds or milliseconds) to a localized string.
6
+ * Automatically detects whether the timestamp is in seconds or milliseconds.
7
+ *
8
+ * @param timestamp - Timestamp in seconds or milliseconds
9
+ * @returns Formatted date string, or null if timestamp is undefined
10
+ */
11
+ export function formatTimestamp(timestamp) {
12
+ if (!timestamp) {
13
+ return null;
14
+ }
15
+ // Convert seconds to milliseconds if needed
16
+ const timestampMs = timestamp < TIMESTAMP.SECONDS_TO_MS_THRESHOLD ? timestamp * 1000 : timestamp;
17
+ return new Date(timestampMs).toLocaleString();
18
+ }
19
+ /**
20
+ * Formats an elapsed time in milliseconds to a human-readable string.
21
+ *
22
+ * @param ms - Time in milliseconds
23
+ * @returns Formatted time string (e.g., "1.5s")
24
+ */
25
+ export function formatElapsedTime(ms) {
26
+ return `${(ms / 1000).toFixed(1)}s`;
27
+ }
28
+ /**
29
+ * Displays a list of files with a preview limit.
30
+ * Shows first N files and indicates how many more exist.
31
+ *
32
+ * @param files - Array of file paths
33
+ * @param title - Title to display above the list
34
+ * @param limit - Maximum number of files to show (default: from DISPLAY constant)
35
+ */
36
+ export function displayFileList(files, title, limit = DISPLAY.FILE_PREVIEW_LIMIT) {
37
+ writeLine();
38
+ writeLine(pc.bold(title));
39
+ const filesToShow = files.slice(0, limit);
40
+ for (const file of filesToShow) {
41
+ writeIndented(`• ${file}`);
42
+ }
43
+ if (files.length > limit) {
44
+ writeIndented(`• ... and ${files.length - limit} more files`);
45
+ }
46
+ }
47
+ /**
48
+ * Pluralizes a word based on count.
49
+ *
50
+ * @param count - The count to check
51
+ * @param singular - Singular form of the word
52
+ * @param plural - Plural form of the word (optional, defaults to singular + 's')
53
+ * @returns Pluralized string with count
54
+ */
55
+ export function pluralize(count, singular, plural) {
56
+ const word = count === 1 ? singular : plural ?? `${singular}s`;
57
+ return `${count} ${word}`;
58
+ }
59
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/lib/utils/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAA6B;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4CAA4C;IAC5C,MAAM,WAAW,GACf,SAAS,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;IAE9E,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAe,EACf,KAAa,EACb,QAAgB,OAAO,CAAC,kBAAkB;IAE1C,SAAS,EAAE,CAAA;IACX,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAEzB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACzC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACzB,aAAa,CAAC,aAAa,KAAK,CAAC,MAAM,GAAG,KAAK,aAAa,CAAC,CAAA;IAC/D,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAe;IACxE,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAA;IAC9D,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,CAAA;AAC3B,CAAC"}