netlify-cli 24.2.0 → 24.4.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 (33) hide show
  1. package/dist/commands/database/database.d.ts.map +1 -1
  2. package/dist/commands/database/database.js +21 -1
  3. package/dist/commands/database/database.js.map +1 -1
  4. package/dist/commands/database/db-connection.d.ts +1 -1
  5. package/dist/commands/database/db-connection.d.ts.map +1 -1
  6. package/dist/commands/database/db-connection.js.map +1 -1
  7. package/dist/commands/database/migration-new.d.ts +13 -0
  8. package/dist/commands/database/migration-new.d.ts.map +1 -0
  9. package/dist/commands/database/migration-new.js +135 -0
  10. package/dist/commands/database/migration-new.js.map +1 -0
  11. package/dist/commands/switch/index.d.ts.map +1 -1
  12. package/dist/commands/switch/index.js +1 -0
  13. package/dist/commands/switch/index.js.map +1 -1
  14. package/dist/commands/switch/switch.d.ts +1 -1
  15. package/dist/commands/switch/switch.d.ts.map +1 -1
  16. package/dist/commands/switch/switch.js +14 -6
  17. package/dist/commands/switch/switch.js.map +1 -1
  18. package/dist/lib/exec-fetcher.d.ts.map +1 -1
  19. package/dist/lib/exec-fetcher.js +87 -25
  20. package/dist/lib/exec-fetcher.js.map +1 -1
  21. package/dist/tsconfig.build.tsbuildinfo +1 -1
  22. package/dist/utils/deploy/deploy-site.d.ts.map +1 -1
  23. package/dist/utils/deploy/deploy-site.js +6 -0
  24. package/dist/utils/deploy/deploy-site.js.map +1 -1
  25. package/dist/utils/live-tunnel.d.ts.map +1 -1
  26. package/dist/utils/live-tunnel.js +0 -1
  27. package/dist/utils/live-tunnel.js.map +1 -1
  28. package/functions-templates/javascript/scheduled-function/package.json +1 -1
  29. package/functions-templates/typescript/hello-world/package-lock.json +15 -15
  30. package/functions-templates/typescript/hello-world/package.json +1 -1
  31. package/functions-templates/typescript/scheduled-function/package.json +1 -1
  32. package/npm-shrinkwrap.json +229 -814
  33. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,qBAAqB,GAAI,SAAS,WAAW,SAoFzD,CAAA"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAI5C,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,qBAAqB,GAAI,SAAS,WAAW,SA4GzD,CAAA"}
@@ -10,7 +10,9 @@ export const createDatabaseCommand = (program) => {
10
10
  'netlify db status',
11
11
  'netlify db init',
12
12
  'netlify db init --help',
13
- ...(process.env.EXPERIMENTAL_NETLIFY_DB_ENABLED === '1' ? ['netlify db migrate', 'netlify db reset'] : []),
13
+ ...(process.env.EXPERIMENTAL_NETLIFY_DB_ENABLED === '1'
14
+ ? ['netlify db migrate', 'netlify db reset', 'netlify db migration new']
15
+ : []),
14
16
  ]);
15
17
  dbCommand
16
18
  .command('init')
@@ -69,6 +71,24 @@ export const createDatabaseCommand = (program) => {
69
71
  const { reset } = await import('./reset.js');
70
72
  await reset(options, command);
71
73
  });
74
+ const migrationCommand = dbCommand.command('migration').description('Manage database migrations');
75
+ migrationCommand
76
+ .command('new')
77
+ .description('Create a new migration')
78
+ .option('-d, --description <description>', 'Purpose of the migration (used to generate the file name)')
79
+ .addOption(new Option('-s, --scheme <scheme>', 'Numbering scheme for migration prefixes').choices([
80
+ 'sequential',
81
+ 'timestamp',
82
+ ]))
83
+ .option('--json', 'Output result as JSON')
84
+ .action(async (options, command) => {
85
+ const { migrationNew } = await import('./migration-new.js');
86
+ await migrationNew(options, command);
87
+ })
88
+ .addExamples([
89
+ 'netlify db migration new',
90
+ 'netlify db migration new --description "add users table" --scheme sequential',
91
+ ]);
72
92
  }
73
93
  };
74
94
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { SQLExecutor } from '@netlify/dev';
1
+ import { type SQLExecutor } from '@netlify/dev';
2
2
  interface DBConnection {
3
3
  executor: SQLExecutor;
4
4
  cleanup: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM/C,UAAU,YAAY;IACpB,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC/E"}
1
+ {"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAK3D,UAAU,YAAY;IACpB,QAAQ,EAAE,WAAW,CAAA;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAG3B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAO1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAExD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACtB,OAAO;YACL,QAAQ,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;SAC5B,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACzB,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACjC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,aAAa,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;IAExB,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAA;IACzB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACrG,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE;KACjC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../src/commands/database/db-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAE3B,OAAO,EAAE,UAAU,EAAoB,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAO1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IAExD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACtB,OAAO;YACL,QAAQ,EAAE,IAAI,gBAAgB,CAAC,MAAM,CAAC;YACtC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;SAC5B,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;QAChC,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACzB,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACjC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1B,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7B,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QAC/B,aAAa,EAAE,IAAI;KACpB,CAAC,CAAA;IAEF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;IAExB,MAAM,EAAE,EAAE,EAAE,GAAG,UAAU,CAAA;IACzB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;IACrG,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE;KACjC,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import BaseCommand from '../base-command.js';
2
+ export type NumberingScheme = 'sequential' | 'timestamp';
3
+ export interface MigrationNewOptions {
4
+ description?: string;
5
+ scheme?: NumberingScheme;
6
+ json?: boolean;
7
+ }
8
+ export declare const generateSlug: (description: string) => string;
9
+ export declare const detectNumberingScheme: (existingNames: string[]) => NumberingScheme | undefined;
10
+ export declare const generateNextPrefix: (existingNames: string[], scheme: NumberingScheme) => string;
11
+ export declare const resolveMigrationsDirectory: (command: BaseCommand) => string;
12
+ export declare const migrationNew: (options: MigrationNewOptions, command: BaseCommand) => Promise<void>;
13
+ //# sourceMappingURL=migration-new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-new.d.ts","sourceRoot":"","sources":["../../../src/commands/database/migration-new.ts"],"names":[],"mappings":"AAMA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,CAAA;AAExD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,YAAY,GAAI,aAAa,MAAM,KAAG,MAQlD,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,eAAe,MAAM,EAAE,KAAG,eAAe,GAAG,SAiBjF,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,eAAe,MAAM,EAAE,EAAE,QAAQ,eAAe,KAAG,MAoBrF,CAAA;AAmBD,eAAO,MAAM,0BAA0B,GAAI,SAAS,WAAW,KAAG,MAYjE,CAAA;AAED,eAAO,MAAM,YAAY,GAAU,SAAS,mBAAmB,EAAE,SAAS,WAAW,kBAuEpF,CAAA"}
@@ -0,0 +1,135 @@
1
+ import { readdir, mkdir, writeFile } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import inquirer from 'inquirer';
4
+ import { log, logJson } from '../../utils/command-helpers.js';
5
+ export const generateSlug = (description) => {
6
+ return description
7
+ .toLowerCase()
8
+ .trim()
9
+ .replace(/[^a-z0-9\s_-]/g, '')
10
+ .replace(/[\s_]+/g, '-')
11
+ .replace(/-+/g, '-')
12
+ .replace(/^-|-$/g, '');
13
+ };
14
+ export const detectNumberingScheme = (existingNames) => {
15
+ if (existingNames.length === 0) {
16
+ return undefined;
17
+ }
18
+ const prefixes = existingNames.map((name) => name.split(/[_-]/)[0]);
19
+ const allTimestamp = prefixes.every((p) => /^\d{14}$/.test(p));
20
+ if (allTimestamp) {
21
+ return 'timestamp';
22
+ }
23
+ const allSequential = prefixes.every((p) => /^\d{4}$/.test(p));
24
+ if (allSequential) {
25
+ return 'sequential';
26
+ }
27
+ return undefined;
28
+ };
29
+ export const generateNextPrefix = (existingNames, scheme) => {
30
+ if (scheme === 'timestamp') {
31
+ const now = new Date();
32
+ const pad = (n, width = 2) => String(n).padStart(width, '0');
33
+ return [
34
+ now.getFullYear(),
35
+ pad(now.getMonth() + 1),
36
+ pad(now.getDate()),
37
+ pad(now.getHours()),
38
+ pad(now.getMinutes()),
39
+ pad(now.getSeconds()),
40
+ ].join('');
41
+ }
42
+ const prefixes = existingNames.map((name) => {
43
+ const match = /^(\d{4})[_-]/.exec(name);
44
+ return match ? parseInt(match[1], 10) : 0;
45
+ });
46
+ const maxPrefix = prefixes.length > 0 ? Math.max(...prefixes) : 0;
47
+ return String(maxPrefix + 1).padStart(4, '0');
48
+ };
49
+ const getExistingMigrationNames = async (migrationsDirectory) => {
50
+ try {
51
+ const entries = await readdir(migrationsDirectory, { withFileTypes: true });
52
+ return entries
53
+ .filter((entry) => entry.isDirectory())
54
+ .map((entry) => entry.name)
55
+ .sort();
56
+ }
57
+ catch (error) {
58
+ if (error.code === 'ENOENT') {
59
+ return [];
60
+ }
61
+ throw error;
62
+ }
63
+ };
64
+ const DEFAULT_MIGRATIONS_PATH = 'netlify/db/migrations';
65
+ export const resolveMigrationsDirectory = (command) => {
66
+ const configuredPath = command.netlify.config.db?.migrations?.path;
67
+ if (configuredPath) {
68
+ return configuredPath;
69
+ }
70
+ const projectRoot = command.netlify.site.root ?? command.project.root ?? command.project.baseDirectory;
71
+ if (!projectRoot) {
72
+ throw new Error('Could not determine the project root directory.');
73
+ }
74
+ return join(projectRoot, DEFAULT_MIGRATIONS_PATH);
75
+ };
76
+ export const migrationNew = async (options, command) => {
77
+ const { json } = options;
78
+ const migrationsDirectory = resolveMigrationsDirectory(command);
79
+ const existingMigrations = await getExistingMigrationNames(migrationsDirectory);
80
+ const detectedScheme = detectNumberingScheme(existingMigrations);
81
+ let description = options.description;
82
+ let scheme = options.scheme;
83
+ if (!description) {
84
+ const answers = await inquirer.prompt([
85
+ {
86
+ type: 'input',
87
+ name: 'description',
88
+ message: 'What is the purpose of this migration?',
89
+ validate: (input) => (input.trim().length > 0 ? true : 'Description cannot be empty'),
90
+ },
91
+ ]);
92
+ description = answers.description;
93
+ }
94
+ if (!scheme) {
95
+ const answers = await inquirer.prompt([
96
+ {
97
+ type: 'list',
98
+ name: 'scheme',
99
+ message: 'Numbering scheme:',
100
+ choices: [
101
+ { name: 'Sequential (0001, 0002, ...)', value: 'sequential' },
102
+ { name: 'Timestamp (20260312143000)', value: 'timestamp' },
103
+ ],
104
+ ...(detectedScheme && { default: detectedScheme }),
105
+ },
106
+ ]);
107
+ scheme = answers.scheme;
108
+ }
109
+ const slug = generateSlug(description);
110
+ if (!slug) {
111
+ throw new Error(`Description "${description}" produces an empty slug. Use a description with alphanumeric characters (e.g. "add users table").`);
112
+ }
113
+ const prefix = generateNextPrefix(existingMigrations, scheme);
114
+ const folderName = `${prefix}_${slug}`;
115
+ const folderPath = join(migrationsDirectory, folderName);
116
+ const migrationFilePath = join(folderPath, 'migration.sql');
117
+ await mkdir(folderPath, { recursive: true });
118
+ await writeFile(migrationFilePath, `-- Write your migration SQL here
119
+ --
120
+ -- Example:
121
+ -- CREATE TABLE IF NOT EXISTS users (
122
+ -- id SERIAL PRIMARY KEY,
123
+ -- name TEXT NOT NULL,
124
+ -- created_at TIMESTAMP DEFAULT NOW()
125
+ -- );
126
+ `, { flag: 'wx' });
127
+ if (json) {
128
+ logJson({ path: folderPath, name: folderName });
129
+ }
130
+ else {
131
+ log(`Created migration: ${folderName}`);
132
+ log(` ${join(folderPath, 'migration.sql')}`);
133
+ }
134
+ };
135
+ //# sourceMappingURL=migration-new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-new.js","sourceRoot":"","sources":["../../../src/commands/database/migration-new.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/switch/index.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,mBAAmB,GAAI,SAAS,WAAW,gBAOlD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/switch/index.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAE5C,eAAO,MAAM,mBAAmB,GAAI,SAAS,WAAW,gBAQlD,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export const createSwitchCommand = (program) => program
2
2
  .command('switch')
3
3
  .description('Switch your active Netlify account')
4
+ .option('--email <email>', 'Switch to the account matching this email address')
4
5
  .action(async (options, command) => {
5
6
  const { switchCommand } = await import('./switch.js');
6
7
  await switchCommand(options, command);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/switch/index.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAoB,EAAE,EAAE,CAC1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,OAAoB,EAAE,EAAE;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACrD,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/switch/index.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAoB,EAAE,EAAE,CAC1D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,OAAoB,EAAE,EAAE;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACrD,MAAM,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { OptionValues } from 'commander';
2
2
  import BaseCommand from '../base-command.js';
3
- export declare const switchCommand: (_options: OptionValues, command: BaseCommand) => Promise<void>;
3
+ export declare const switchCommand: (options: OptionValues, command: BaseCommand) => Promise<void>;
4
4
  //# sourceMappingURL=switch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/commands/switch/switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAK5C,eAAO,MAAM,aAAa,GAAU,UAAU,YAAY,EAAE,SAAS,WAAW,kBA+B/E,CAAA"}
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/commands/switch/switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAK5C,eAAO,MAAM,aAAa,GAAU,SAAS,YAAY,EAAE,SAAS,WAAW,kBA4C9E,CAAA"}
@@ -2,16 +2,25 @@ import inquirer from 'inquirer';
2
2
  import { chalk, log } from '../../utils/command-helpers.js';
3
3
  import { login } from '../login/login.js';
4
4
  const LOGIN_NEW = 'I would like to login to a new account';
5
- export const switchCommand = async (_options, command) => {
6
- const availableUsersChoices = Object.values(command.netlify.globalConfig.get('users') || {}).reduce((prev, current) =>
7
- // @ts-expect-error TS(2769) FIXME: No overload matches this call.
8
- Object.assign(prev, { [current.id]: current.name ? `${current.name} (${current.email})` : current.email }), {});
5
+ export const switchCommand = async (options, command) => {
6
+ const users = (command.netlify.globalConfig.get('users') || {});
7
+ const availableUsersChoices = Object.values(users).reduce((prev, current) => Object.assign(prev, { [current.id]: current.name ? `${current.name} (${current.email})` : current.email }), {});
8
+ if (options.email) {
9
+ const matchedUser = Object.values(users).find((user) => user.email === options.email);
10
+ if (matchedUser) {
11
+ command.netlify.globalConfig.set('userId', matchedUser.id);
12
+ log('');
13
+ log(`You're now using ${chalk.bold(availableUsersChoices[matchedUser.id])}.`);
14
+ return;
15
+ }
16
+ log(`No account found matching ${chalk.bold(options.email)}, showing all available accounts.`);
17
+ log('');
18
+ }
9
19
  const { accountSwitchChoice } = await inquirer.prompt([
10
20
  {
11
21
  type: 'list',
12
22
  name: 'accountSwitchChoice',
13
23
  message: 'Please select the account you want to use:',
14
- // @ts-expect-error TS(2769) FIXME: No overload matches this call.
15
24
  choices: [...Object.entries(availableUsersChoices).map(([, val]) => val), LOGIN_NEW],
16
25
  },
17
26
  ]);
@@ -19,7 +28,6 @@ export const switchCommand = async (_options, command) => {
19
28
  await login({ new: true }, command);
20
29
  }
21
30
  else {
22
- // @ts-expect-error TS(2769) FIXME: No overload matches this call.
23
31
  const selectedAccount = Object.entries(availableUsersChoices).find(([, availableUsersChoice]) => availableUsersChoice === accountSwitchChoice);
24
32
  // @ts-expect-error TS(2532) FIXME: Object is possibly 'undefined'.
25
33
  command.netlify.globalConfig.set('userId', selectedAccount[0]);
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/switch/switch.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,SAAS,GAAG,wCAAwC,CAAA;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAsB,EAAE,OAAoB,EAAE,EAAE;IAClF,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CACjG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;IAChB,kEAAkE;IAClE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAC5G,EAAE,CACH,CAAA;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,4CAA4C;YACrD,kEAAkE;YAClE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;SACrF;KACF,CAAC,CAAA;IAEF,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,kEAAkE;QAClE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC,oBAAoB,KAAK,mBAAmB,CAC3E,CAAA;QACD,mEAAmE;QACnE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,mEAAmE;QACnE,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/switch/switch.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,MAAM,SAAS,GAAG,wCAAwC,CAAA;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAqB,EAAE,OAAoB,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAG7D,CAAA;IACD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CACvD,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAC5G,EAAE,CACH,CAAA;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAA;QACrF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;YAC1D,GAAG,CAAC,EAAE,CAAC,CAAA;YACP,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QACD,GAAG,CAAC,6BAA6B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC9F,GAAG,CAAC,EAAE,CAAC,CAAA;IACT,CAAC;IAED,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACpD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;SACrF;KACF,CAAC,CAAA;IAEF,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAChE,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC,oBAAoB,KAAK,mBAAmB,CAC3E,CAAA;QACD,mEAAmE;QACnE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,mEAAmE;QACnE,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec-fetcher.d.ts","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW,GAAI,cAAc;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,WAAiD,CAAA;AA6B/G,eAAO,MAAM,wBAAwB,GAAU,uEAO5C;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,KAAG,OAAO,CAAC,OAAO,CAkClB,CAAA;AAED,eAAO,MAAM,OAAO,0HASnB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,mEAMtC;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CA0Cf,CAAA"}
1
+ {"version":3,"file":"exec-fetcher.d.ts","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,WAAW,GAAI,cAAc;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,WAAiD,CAAA;AA6F/G,eAAO,MAAM,wBAAwB,GAAU,uEAO5C;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,KAAG,OAAO,CAAC,OAAO,CAkClB,CAAA;AAED,eAAO,MAAM,OAAO,0HASnB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,mEAMtC;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,WAAW,EAAE,MAAM,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CAgCf,CAAA"}
@@ -1,28 +1,99 @@
1
+ import { execFile as execFileCb } from 'child_process';
2
+ import { createReadStream, createWriteStream } from 'fs';
3
+ import { mkdir, unlink } from 'fs/promises';
1
4
  import path from 'path';
5
+ import { pipeline } from 'stream/promises';
2
6
  import process from 'process';
3
- import { fetchLatest, fetchVersion, newerVersion, updateAvailable } from 'gh-release-fetch';
7
+ import { promisify } from 'util';
8
+ import { createGunzip } from 'zlib';
4
9
  import { isexe } from 'isexe';
10
+ import { unpackTar } from 'modern-tar/fs';
11
+ import semver from 'semver';
5
12
  import { NETLIFYDEVWARN, logAndThrowError, getTerminalLink, log } from '../utils/command-helpers.js';
6
- import execa from '../utils/execa.js';
13
+ const execFile = promisify(execFileCb);
7
14
  const isWindows = () => process.platform === 'win32';
8
15
  const getRepository = ({ packageName }) => `netlify/${packageName}`;
9
16
  export const getExecName = ({ execName }) => (isWindows() ? `${execName}.exe` : execName);
10
- const getOptions = () => {
11
- // this is used in out CI tests to avoid hitting GitHub API limit
12
- // when calling gh-release-fetch
17
+ const getGitHubHeaders = () => {
18
+ const headers = { Accept: 'application/vnd.github.v3+json' };
13
19
  if (process.env.NETLIFY_TEST_GITHUB_TOKEN) {
14
- return {
15
- headers: { Authorization: `token ${process.env.NETLIFY_TEST_GITHUB_TOKEN}` },
16
- };
20
+ headers.Authorization = `token ${process.env.NETLIFY_TEST_GITHUB_TOKEN}`;
21
+ }
22
+ return headers;
23
+ };
24
+ const resolveLatestTag = async (repository) => {
25
+ const response = await fetch(`https://api.github.com/repos/${repository}/releases/latest`, {
26
+ headers: getGitHubHeaders(),
27
+ });
28
+ if (!response.ok) {
29
+ throw new Error(`Failed to fetch latest release for ${repository}: ${String(response.status)}`);
30
+ }
31
+ const data = (await response.json());
32
+ return data.tag_name;
33
+ };
34
+ const newerVersion = (latestVersion, currentVersion) => {
35
+ if (!latestVersion)
36
+ return false;
37
+ if (!currentVersion)
38
+ return true;
39
+ const latest = latestVersion.replace(/^v/, '');
40
+ const current = currentVersion.replace(/^v/, '');
41
+ return semver.gt(latest, current);
42
+ };
43
+ const updateAvailable = async (repository, currentVersion) => {
44
+ const latestTag = await resolveLatestTag(repository);
45
+ return newerVersion(latestTag, currentVersion);
46
+ };
47
+ const downloadAndExtract = async (url, destination) => {
48
+ const response = await fetch(url, {
49
+ headers: getGitHubHeaders(),
50
+ redirect: 'follow',
51
+ });
52
+ if (!response.ok) {
53
+ throw Object.assign(new Error(`Download failed: ${String(response.status)}`), { statusCode: response.status });
54
+ }
55
+ if (!response.body) {
56
+ throw new Error('Empty response body');
57
+ }
58
+ await mkdir(destination, { recursive: true });
59
+ if (url.endsWith('.zip')) {
60
+ const tmpFile = path.join(destination, '_download.zip');
61
+ const fileStream = createWriteStream(tmpFile);
62
+ await pipeline(response.body, fileStream);
63
+ try {
64
+ if (isWindows()) {
65
+ await execFile('powershell.exe', [
66
+ '-NoProfile',
67
+ '-Command',
68
+ `Expand-Archive -Force -LiteralPath '${tmpFile}' -DestinationPath '${destination}'`,
69
+ ]);
70
+ }
71
+ else {
72
+ await execFile('unzip', ['-o', tmpFile, '-d', destination]);
73
+ }
74
+ }
75
+ finally {
76
+ await unlink(tmpFile);
77
+ }
78
+ }
79
+ else {
80
+ const tmpFile = path.join(destination, '_download.tar.gz');
81
+ const fileStream = createWriteStream(tmpFile);
82
+ await pipeline(response.body, fileStream);
83
+ try {
84
+ const extractStream = unpackTar(destination);
85
+ await pipeline(createReadStream(tmpFile), createGunzip(), extractStream);
86
+ }
87
+ finally {
88
+ await unlink(tmpFile);
89
+ }
17
90
  }
18
91
  };
19
92
  const isVersionOutdated = async ({ currentVersion, latestVersion, packageName, }) => {
20
93
  if (latestVersion) {
21
94
  return newerVersion(latestVersion, currentVersion);
22
95
  }
23
- const options = getOptions();
24
- const outdated = await updateAvailable(getRepository({ packageName }), currentVersion, options);
25
- return outdated;
96
+ return await updateAvailable(getRepository({ packageName }), currentVersion);
26
97
  };
27
98
  export const shouldFetchLatestVersion = async ({ binPath, execArgs, execName, latestVersion, packageName, pattern, }) => {
28
99
  const execPath = path.join(binPath, getExecName({ execName }));
@@ -30,7 +101,7 @@ export const shouldFetchLatestVersion = async ({ binPath, execArgs, execName, la
30
101
  if (!exists) {
31
102
  return true;
32
103
  }
33
- const { stdout } = await execa(execPath, execArgs);
104
+ const { stdout } = await execFile(execPath, execArgs);
34
105
  if (!stdout) {
35
106
  return false;
36
107
  }
@@ -70,20 +141,11 @@ export const fetchLatestVersion = async ({ destination, execName, extension, lat
70
141
  const arch = getArch();
71
142
  const platform = win ? 'windows' : process.platform;
72
143
  const pkgName = `${execName}-${platform}-${arch}.${extension}`;
73
- const release = {
74
- repository: getRepository({ packageName }),
75
- package: pkgName,
76
- destination,
77
- extract: true,
78
- };
79
- const options = getOptions();
80
- const fetch = latestVersion
81
- ? // @ts-expect-error(serhalp) -- Either `gh-release-fetch` is not typed correctly or `options.headers` is useless
82
- fetchVersion({ ...release, version: latestVersion }, options)
83
- : // @ts-expect-error(serhalp) -- Either `gh-release-fetch` is not typed correctly or `options.version` should be passed
84
- fetchLatest(release, options);
144
+ const repository = getRepository({ packageName });
145
+ const version = latestVersion ?? (await resolveLatestTag(repository));
146
+ const url = `https://github.com/${repository}/releases/download/${version}/${pkgName}`;
85
147
  try {
86
- await fetch;
148
+ await downloadAndExtract(url, destination);
87
149
  }
88
150
  catch (error_) {
89
151
  if (error_ != null && typeof error_ === 'object' && 'statusCode' in error_ && error_.statusCode === 404) {
@@ -1 +1 @@
1
- {"version":3,"file":"exec-fetcher.js","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec-fetcher.js","sourceRoot":"","sources":["../../src/lib/exec-fetcher.ts"],"names":[],"mappings":"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"}