netlify 27.4.0 → 27.4.2
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/dist/commands/database/database.d.ts.map +1 -1
- package/dist/commands/database/database.js +3 -1
- package/dist/commands/database/database.js.map +1 -1
- package/dist/commands/database/db-reset.d.ts +1 -0
- package/dist/commands/database/db-reset.d.ts.map +1 -1
- package/dist/commands/database/db-reset.js +45 -2
- package/dist/commands/database/db-reset.js.map +1 -1
- package/dist/commands/database/util/db-connection.d.ts +6 -0
- package/dist/commands/database/util/db-connection.d.ts.map +1 -1
- package/dist/commands/database/util/db-connection.js +29 -1
- package/dist/commands/database/util/db-connection.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAO5C,eAAO,MAAM,qBAAqB,YAAa,WAAW,SAwIzD,CAAA"}
|
|
@@ -54,11 +54,13 @@ export const createDatabaseCommand = (program) => {
|
|
|
54
54
|
dbCommand
|
|
55
55
|
.command('reset')
|
|
56
56
|
.description('Reset the local development database, removing all data and tables')
|
|
57
|
+
.option('--force', 'Skip the confirmation prompt shown when the local database has to be deleted', false)
|
|
57
58
|
.option('--json', 'Output result as JSON')
|
|
58
59
|
.action(async (options, command) => {
|
|
59
60
|
const { reset } = await import('./db-reset.js');
|
|
60
61
|
await reset(options, command);
|
|
61
|
-
})
|
|
62
|
+
})
|
|
63
|
+
.addExamples(['netlify database reset', 'netlify database reset --force']);
|
|
62
64
|
const migrationsCommand = dbCommand.command('migrations').description('Manage database migrations');
|
|
63
65
|
migrationsCommand
|
|
64
66
|
.command('apply')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/commands/database/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-reset.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-reset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db-reset.d.ts","sourceRoot":"","sources":["../../../src/commands/database/db-reset.ts"],"names":[],"mappings":"AAQA,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAqCD,eAAO,MAAM,KAAK,YAAmB,YAAY,WAAW,WAAW,kBA+BtE,CAAA"}
|
|
@@ -1,13 +1,56 @@
|
|
|
1
|
+
import { rm } from 'fs/promises';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
1
3
|
import { resetDatabase } from '@netlify/dev';
|
|
2
4
|
import { log, logJson } from '../../utils/command-helpers.js';
|
|
3
|
-
import {
|
|
5
|
+
import { isInteractive } from '../../utils/scripted-commands.js';
|
|
6
|
+
import { connectToDatabase, LocalDatabaseStartError } from './util/db-connection.js';
|
|
7
|
+
const discardLocalDatabase = async (error, options) => {
|
|
8
|
+
const { directory } = error;
|
|
9
|
+
const { force, json } = options;
|
|
10
|
+
if (!force) {
|
|
11
|
+
if (json || !isInteractive()) {
|
|
12
|
+
throw new Error(`${error.summary}\nRe-run with --force to delete ${directory} and start from an empty database.`);
|
|
13
|
+
}
|
|
14
|
+
log(error.summary);
|
|
15
|
+
const { confirmed } = await inquirer.prompt([
|
|
16
|
+
{
|
|
17
|
+
type: 'confirm',
|
|
18
|
+
name: 'confirmed',
|
|
19
|
+
message: `Delete ${directory} and start from an empty database?`,
|
|
20
|
+
default: false,
|
|
21
|
+
},
|
|
22
|
+
]);
|
|
23
|
+
if (!confirmed) {
|
|
24
|
+
log('Reset cancelled.');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
await rm(directory, { recursive: true, force: true });
|
|
29
|
+
if (json) {
|
|
30
|
+
logJson({ reset: true, discarded: true });
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
log(`Deleted ${directory}. An empty database will be created the next time the project starts.`);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
4
36
|
export const reset = async (options, command) => {
|
|
5
37
|
const { json } = options;
|
|
6
38
|
const buildDir = command.netlify.site.root ?? command.project.root ?? command.project.baseDirectory;
|
|
7
39
|
if (!buildDir) {
|
|
8
40
|
throw new Error('Could not determine the project root directory.');
|
|
9
41
|
}
|
|
10
|
-
|
|
42
|
+
let connection;
|
|
43
|
+
try {
|
|
44
|
+
connection = await connectToDatabase(buildDir);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (!(error instanceof LocalDatabaseStartError)) {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
await discardLocalDatabase(error, options);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const { executor, cleanup } = connection;
|
|
11
54
|
try {
|
|
12
55
|
await resetDatabase(executor);
|
|
13
56
|
if (json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-reset.js","sourceRoot":"","sources":["../../../src/commands/database/db-reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"db-reset.js","sourceRoot":"","sources":["../../../src/commands/database/db-reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { Client } from 'pg';
|
|
2
2
|
import { type SQLExecutor } from '@netlify/dev';
|
|
3
|
+
export declare const getLocalDatabaseDirectory: (buildDir: string) => string;
|
|
4
|
+
export declare class LocalDatabaseStartError extends Error {
|
|
5
|
+
readonly directory: string;
|
|
6
|
+
readonly summary: string;
|
|
7
|
+
constructor(directory: string, causes: string[]);
|
|
8
|
+
}
|
|
3
9
|
interface DBConnection {
|
|
4
10
|
executor: SQLExecutor;
|
|
5
11
|
connectionString: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../../src/commands/database/util/db-connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db-connection.d.ts","sourceRoot":"","sources":["../../../../src/commands/database/util/db-connection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAE3B,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAM3D,eAAO,MAAM,yBAAyB,aAAc,MAAM,KAAG,MAA0C,CAAA;AAIvG,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,YAAY,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAO9C;CACF;AAED,UAAU,YAAY;IACpB,QAAQ,EAAE,WAAW,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOrG;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAOD,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOnF;AAMD,eAAO,MAAM,aAAa,QAAS,OAAO,KAAG,MAS5C,CAAA;AAeD,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAiFvG"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
1
2
|
import { Client } from 'pg';
|
|
2
3
|
import { NetlifyDev } from '@netlify/dev';
|
|
3
4
|
import { LocalState } from '@netlify/dev-utils';
|
|
5
|
+
import { warn } from '../../../utils/command-helpers.js';
|
|
4
6
|
import { PgClientExecutor } from './pg-client-executor.js';
|
|
7
|
+
export const getLocalDatabaseDirectory = (buildDir) => join(buildDir, '.netlify', 'db');
|
|
8
|
+
// `summary` omits the recovery hint carried by `message`, so `netlify database
|
|
9
|
+
// reset` — which is the recovery — doesn't tell the user to run it.
|
|
10
|
+
export class LocalDatabaseStartError extends Error {
|
|
11
|
+
directory;
|
|
12
|
+
summary;
|
|
13
|
+
constructor(directory, causes) {
|
|
14
|
+
const summary = [`Failed to start the local database at ${directory}.`, ...causes].join('\n');
|
|
15
|
+
super(`${summary}\nThe persisted data directory may be unusable. Run \`netlify database reset\` to discard it and start from an empty database.`);
|
|
16
|
+
this.directory = directory;
|
|
17
|
+
this.summary = summary;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
5
20
|
export async function connectToDatabase(buildDir, urlOverride) {
|
|
6
21
|
const { client, connectionString, cleanup } = await connectRawClient(buildDir, urlOverride);
|
|
7
22
|
return {
|
|
@@ -83,7 +98,17 @@ export async function connectRawClient(buildDir, urlOverride) {
|
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
100
|
const state = new LocalState(buildDir);
|
|
101
|
+
// NetlifyDev swallows database startup failures into a warning, so the only
|
|
102
|
+
// way to report the underlying PGlite error is to capture what it logs.
|
|
103
|
+
const startupWarnings = [];
|
|
86
104
|
const netlifyDev = new NetlifyDev({
|
|
105
|
+
logger: {
|
|
106
|
+
error: console.error,
|
|
107
|
+
log: console.log,
|
|
108
|
+
warn: (message = '') => {
|
|
109
|
+
startupWarnings.push(message);
|
|
110
|
+
},
|
|
111
|
+
},
|
|
87
112
|
projectRoot: buildDir,
|
|
88
113
|
aiGateway: { enabled: false },
|
|
89
114
|
blobs: { enabled: false },
|
|
@@ -101,8 +126,11 @@ export async function connectRawClient(buildDir, urlOverride) {
|
|
|
101
126
|
const connectionString = state.get('dbConnectionString');
|
|
102
127
|
if (!connectionString) {
|
|
103
128
|
await netlifyDev.stop();
|
|
104
|
-
throw new
|
|
129
|
+
throw new LocalDatabaseStartError(getLocalDatabaseDirectory(buildDir), startupWarnings);
|
|
105
130
|
}
|
|
131
|
+
startupWarnings.forEach((message) => {
|
|
132
|
+
warn(message);
|
|
133
|
+
});
|
|
106
134
|
const client = new Client({ connectionString });
|
|
107
135
|
await client.connect();
|
|
108
136
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../../src/commands/database/util/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;
|
|
1
|
+
{"version":3,"file":"db-connection.js","sourceRoot":"","sources":["../../../../src/commands/database/util/db-connection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "netlify",
|
|
3
|
-
"version": "27.4.
|
|
3
|
+
"version": "27.4.2",
|
|
4
4
|
"description": "Netlify command line tool",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api",
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@fastify/static": "^10.0.0",
|
|
54
|
-
"@netlify/ai": "^1.0.
|
|
54
|
+
"@netlify/ai": "^1.0.1",
|
|
55
55
|
"@netlify/api": "^15.1.2",
|
|
56
|
-
"@netlify/blobs": "^11.0.
|
|
57
|
-
"@netlify/build": "^36.4.
|
|
56
|
+
"@netlify/blobs": "^11.0.2",
|
|
57
|
+
"@netlify/build": "^36.4.3",
|
|
58
58
|
"@netlify/build-info": "^11.3.0",
|
|
59
59
|
"@netlify/config": "^25.2.3",
|
|
60
|
-
"@netlify/dev": "^5.0.
|
|
60
|
+
"@netlify/dev": "^5.0.2",
|
|
61
61
|
"@netlify/dev-utils": "^6.0.1",
|
|
62
62
|
"@netlify/edge-bundler": "^16.0.4",
|
|
63
63
|
"@netlify/edge-functions": "^4.0.0",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@netlify/images": "^2.0.1",
|
|
67
67
|
"@netlify/local-functions-proxy": "^2.0.3",
|
|
68
68
|
"@netlify/redirect-parser": "^16.1.1",
|
|
69
|
-
"@netlify/zip-it-and-ship-it": "^15.4.
|
|
69
|
+
"@netlify/zip-it-and-ship-it": "^15.4.1",
|
|
70
70
|
"@octokit/rest": "^22.0.0",
|
|
71
71
|
"@opentelemetry/api": "^1.8.0",
|
|
72
72
|
"@pnpm/tabtab": "^0.5.4",
|