@easel-sh/cli 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +195 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/create-lambda-gateway.d.ts +11 -0
  6. package/dist/commands/create-lambda-gateway.d.ts.map +1 -0
  7. package/dist/commands/create-lambda-gateway.js +409 -0
  8. package/dist/commands/create-lambda-gateway.js.map +1 -0
  9. package/dist/commands/generate-manifest.d.ts +7 -0
  10. package/dist/commands/generate-manifest.d.ts.map +1 -0
  11. package/dist/commands/generate-manifest.js +145 -0
  12. package/dist/commands/generate-manifest.js.map +1 -0
  13. package/dist/commands/list-functions.d.ts +7 -0
  14. package/dist/commands/list-functions.d.ts.map +1 -0
  15. package/dist/commands/list-functions.js +140 -0
  16. package/dist/commands/list-functions.js.map +1 -0
  17. package/dist/commands/package-functions.d.ts +9 -0
  18. package/dist/commands/package-functions.d.ts.map +1 -0
  19. package/dist/commands/package-functions.js +292 -0
  20. package/dist/commands/package-functions.js.map +1 -0
  21. package/dist/commands/upload-manifest.d.ts +7 -0
  22. package/dist/commands/upload-manifest.d.ts.map +1 -0
  23. package/dist/commands/upload-manifest.js +53 -0
  24. package/dist/commands/upload-manifest.js.map +1 -0
  25. package/dist/commands/upload-static.d.ts +7 -0
  26. package/dist/commands/upload-static.d.ts.map +1 -0
  27. package/dist/commands/upload-static.js +142 -0
  28. package/dist/commands/upload-static.js.map +1 -0
  29. package/dist/utils/types.d.ts +38 -0
  30. package/dist/utils/types.d.ts.map +1 -0
  31. package/dist/utils/types.js +2 -0
  32. package/dist/utils/types.js.map +1 -0
  33. package/dist/utils/vercel-config.d.ts +60 -0
  34. package/dist/utils/vercel-config.d.ts.map +1 -0
  35. package/dist/utils/vercel-config.js +121 -0
  36. package/dist/utils/vercel-config.js.map +1 -0
  37. package/dist/utils.d.ts +31 -0
  38. package/dist/utils.d.ts.map +1 -0
  39. package/dist/utils.js +263 -0
  40. package/dist/utils.js.map +1 -0
  41. package/package.json +26 -0
package/dist/utils.js ADDED
@@ -0,0 +1,263 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as crypto from 'crypto';
4
+ import { fileURLToPath } from 'url';
5
+ /**
6
+ * Resolve the Vercel output directory from a given path
7
+ * Handles cases where the path points to:
8
+ * - .vercel/output (use as-is)
9
+ * - .vercel (append 'output')
10
+ * - project root or other (append '.vercel/output')
11
+ */
12
+ export function resolveVercelOutputDir(inputDir) {
13
+ const resolvedDir = path.resolve(inputDir);
14
+ const normalized = resolvedDir.replace(/\\/g, '/'); // Normalize for cross-platform
15
+ if (normalized.endsWith('/.vercel/output') || normalized.endsWith('\\.vercel\\output')) {
16
+ // Already pointing to .vercel/output, use as-is
17
+ return resolvedDir;
18
+ }
19
+ else if (normalized.endsWith('/.vercel') || normalized.endsWith('\\.vercel')) {
20
+ // Points to .vercel directory, append 'output'
21
+ return path.join(resolvedDir, 'output');
22
+ }
23
+ else {
24
+ // Points to project root or something else, append '.vercel/output'
25
+ return path.join(resolvedDir, '.vercel', 'output');
26
+ }
27
+ }
28
+ /**
29
+ * Find the workspace root (where the Next.js app is located)
30
+ */
31
+ export function findWorkspaceRoot() {
32
+ // Get the current file's directory
33
+ let currentDir;
34
+ try {
35
+ // Handle ESM (import.meta.url)
36
+ if (typeof import.meta !== 'undefined' && import.meta.url) {
37
+ currentDir = path.dirname(fileURLToPath(import.meta.url));
38
+ }
39
+ else {
40
+ // Fallback
41
+ currentDir = process.cwd();
42
+ }
43
+ }
44
+ catch {
45
+ currentDir = process.cwd();
46
+ }
47
+ // Look for apps/web directory or package.json with workspaces
48
+ while (currentDir !== path.dirname(currentDir)) {
49
+ const appsWeb = path.join(currentDir, 'apps', 'web');
50
+ const packageJson = path.join(currentDir, 'package.json');
51
+ if (fs.existsSync(appsWeb)) {
52
+ return currentDir;
53
+ }
54
+ // Check if this is a workspace root
55
+ if (fs.existsSync(packageJson)) {
56
+ try {
57
+ const pkg = JSON.parse(fs.readFileSync(packageJson, 'utf8'));
58
+ if (pkg.workspaces) {
59
+ return currentDir;
60
+ }
61
+ }
62
+ catch (e) {
63
+ // Continue searching
64
+ }
65
+ }
66
+ currentDir = path.dirname(currentDir);
67
+ }
68
+ // Fallback to process.cwd()
69
+ return process.cwd();
70
+ }
71
+ /**
72
+ * Recursively scan a directory for .func directories that contain .vc-config.json
73
+ * Follows symlinks to find all functions
74
+ */
75
+ export function scanFunctions(dir, baseDir) {
76
+ const functions = [];
77
+ const seenPaths = new Set(); // Track seen paths to avoid infinite loops with symlinks
78
+ function scanRecursive(currentDir, currentBaseDir) {
79
+ if (!fs.existsSync(currentDir)) {
80
+ return;
81
+ }
82
+ // Resolve symlinks to get the real path
83
+ let realPath;
84
+ try {
85
+ realPath = fs.realpathSync(currentDir);
86
+ }
87
+ catch {
88
+ return;
89
+ }
90
+ // Avoid infinite loops with circular symlinks
91
+ if (seenPaths.has(realPath)) {
92
+ return;
93
+ }
94
+ seenPaths.add(realPath);
95
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
96
+ for (const entry of entries) {
97
+ const fullPath = path.join(currentDir, entry.name);
98
+ // Resolve symlink if this is a symlink
99
+ let resolvedPath = fullPath;
100
+ let isSymlink = false;
101
+ try {
102
+ if (entry.isSymbolicLink()) {
103
+ isSymlink = true;
104
+ resolvedPath = fs.realpathSync(fullPath);
105
+ }
106
+ }
107
+ catch {
108
+ // If symlink resolution fails, skip it
109
+ continue;
110
+ }
111
+ // Check if this is a directory (either directly or via symlink)
112
+ const isDirectory = entry.isDirectory() || (isSymlink && fs.statSync(resolvedPath).isDirectory());
113
+ if (isDirectory) {
114
+ // Check if this directory ends with .func
115
+ if (entry.name.endsWith('.func')) {
116
+ // Use the original path (not resolved) for resource name calculation
117
+ const configPath = path.join(fullPath, '.vc-config.json');
118
+ // Check if .vc-config.json exists (try both original and resolved paths)
119
+ const configExists = fs.existsSync(configPath) || (isSymlink && fs.existsSync(path.join(resolvedPath, '.vc-config.json')));
120
+ if (configExists) {
121
+ // Calculate resource name relative to baseDir using the original path
122
+ const relativePath = path.relative(currentBaseDir, fullPath);
123
+ // Convert to resource name format (with forward slashes, keep .func extension)
124
+ const resourceName = '/' + relativePath.split(path.sep).join('/');
125
+ // Use resolved path for actual file operations
126
+ const actualConfigPath = isSymlink ? path.join(resolvedPath, '.vc-config.json') : configPath;
127
+ const funcDirPath = path.resolve(isSymlink ? resolvedPath : fullPath);
128
+ // Calculate hash for the function directory
129
+ let funcHash;
130
+ try {
131
+ funcHash = hashFunctionDirectory(funcDirPath);
132
+ }
133
+ catch (error) {
134
+ // If hashing fails, continue without hash
135
+ funcHash = undefined;
136
+ }
137
+ // Check for prerender config and fallback files
138
+ // The prerender files are in the same directory as the .func directories (the functions directory)
139
+ // For symlinks, prerender files are at the symlink location, not the resolved path
140
+ // For example: /index.func -> /index.prerender-config.json in the same directory
141
+ const originalFuncDir = path.dirname(fullPath); // Use original path, not resolved
142
+ // Use the basename of the .func directory (or symlink) to find the prerender config
143
+ // This handles symlinks correctly: demo.func -> demo.prerender-config.json
144
+ const funcBaseName = path.basename(fullPath, '.func');
145
+ // Look for prerender-config.json and prerender-fallback.* files
146
+ // Pattern: {funcBaseName}.prerender-config.json and {funcBaseName}.prerender-fallback.*
147
+ let prerenderConfigPath;
148
+ let prerenderFallbackPath;
149
+ // Try to find prerender config file in the functions directory
150
+ // The prerender config is at the same level as the .func directory
151
+ const prerenderConfigName = funcBaseName + '.prerender-config.json';
152
+ const prerenderConfigFullPath = path.join(originalFuncDir, prerenderConfigName);
153
+ if (fs.existsSync(prerenderConfigFullPath)) {
154
+ prerenderConfigPath = path.resolve(prerenderConfigFullPath);
155
+ }
156
+ // Try to find prerender fallback file (could be .html, .rsc, .body, etc.)
157
+ if (prerenderConfigPath) {
158
+ // Read the prerender config to find the fallback file name
159
+ try {
160
+ const prerenderConfig = JSON.parse(fs.readFileSync(prerenderConfigFullPath, 'utf8'));
161
+ if (prerenderConfig.fallback) {
162
+ // Fallback can be a string or an object with fsPath property
163
+ const fallbackFileName = typeof prerenderConfig.fallback === 'string'
164
+ ? prerenderConfig.fallback
165
+ : prerenderConfig.fallback.fsPath;
166
+ if (fallbackFileName) {
167
+ // Fallback file might be relative to the config file location
168
+ const fallbackFullPath = path.join(originalFuncDir, fallbackFileName);
169
+ if (fs.existsSync(fallbackFullPath)) {
170
+ prerenderFallbackPath = path.resolve(fallbackFullPath);
171
+ }
172
+ }
173
+ }
174
+ }
175
+ catch {
176
+ // If we can't read the config, skip fallback detection
177
+ }
178
+ }
179
+ functions.push({
180
+ resourceName,
181
+ configPath: path.resolve(actualConfigPath),
182
+ funcDir: funcDirPath,
183
+ hash: funcHash,
184
+ prerenderConfigPath,
185
+ prerenderFallbackPath,
186
+ });
187
+ }
188
+ }
189
+ else {
190
+ // Recursively scan subdirectories
191
+ scanRecursive(fullPath, currentBaseDir);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ scanRecursive(dir, baseDir);
197
+ return functions;
198
+ }
199
+ /**
200
+ * Calculate a deterministic hash for a function directory
201
+ * Similar to the bash script: uses sorted file names and contents
202
+ */
203
+ export function hashFunctionDirectory(funcDir) {
204
+ const hash = crypto.createHash('sha256');
205
+ const files = [];
206
+ function walkDir(dir, baseDir) {
207
+ if (!fs.existsSync(dir)) {
208
+ return;
209
+ }
210
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
211
+ // Sort entries by name for deterministic ordering
212
+ entries.sort((a, b) => a.name.localeCompare(b.name, 'en', { numeric: true }));
213
+ for (const entry of entries) {
214
+ const fullPath = path.join(dir, entry.name);
215
+ const relativePath = path.relative(baseDir, fullPath);
216
+ // Skip .DS_Store and __MACOSX
217
+ if (entry.name === '.DS_Store' || entry.name === '__MACOSX' || relativePath.includes('/.DS_Store') || relativePath.includes('/__MACOSX')) {
218
+ continue;
219
+ }
220
+ if (entry.isFile()) {
221
+ try {
222
+ const content = fs.readFileSync(fullPath);
223
+ files.push({ path: relativePath, content });
224
+ }
225
+ catch {
226
+ // Skip files that can't be read
227
+ }
228
+ }
229
+ else if (entry.isDirectory()) {
230
+ walkDir(fullPath, baseDir);
231
+ }
232
+ else if (entry.isSymbolicLink()) {
233
+ // For symlinks, we'll use the resolved path
234
+ try {
235
+ const resolvedPath = fs.realpathSync(fullPath);
236
+ if (fs.statSync(resolvedPath).isFile()) {
237
+ const content = fs.readFileSync(resolvedPath);
238
+ files.push({ path: relativePath, content });
239
+ }
240
+ else if (fs.statSync(resolvedPath).isDirectory()) {
241
+ walkDir(resolvedPath, baseDir);
242
+ }
243
+ }
244
+ catch {
245
+ // Skip symlinks that can't be resolved
246
+ }
247
+ }
248
+ }
249
+ }
250
+ // Walk the directory and collect all files
251
+ walkDir(funcDir, funcDir);
252
+ // Sort files by path for deterministic ordering
253
+ files.sort((a, b) => a.path.localeCompare(b.path, 'en', { numeric: true }));
254
+ // Create a deterministic representation
255
+ // Format: path:size:content_hash\n
256
+ for (const file of files) {
257
+ const fileHash = crypto.createHash('sha256').update(file.content).digest('hex');
258
+ const line = `${file.path}:${file.content.length}:${fileHash}\n`;
259
+ hash.update(line);
260
+ }
261
+ return hash.digest('hex');
262
+ }
263
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@easel-sh/cli",
3
+ "version": "0.1.0-alpha.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "cli": "./dist/cli.js"
7
+ },
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch"
17
+ },
18
+ "dependencies": {
19
+ "yargs": "^17.7.2"
20
+ },
21
+ "devDependencies": {
22
+ "@types/node": "^20.10.0",
23
+ "@types/yargs": "^17.0.32",
24
+ "typescript": "^5.3.3"
25
+ }
26
+ }