@prostgles/prostgles 2.3.6-dev.1788616781 → 2.3.6-dev.1788628254
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/server/DB.Dockerfile +11 -0
- package/dist/server/Dockerfile +33 -0
- package/dist/server/package.json +2 -2
- package/dist/server/src/cli/DB.Dockerfile +11 -0
- package/dist/server/src/cli/Dockerfile +33 -0
- package/dist/server/src/cli/cli.js +13 -2
- package/dist/server/src/cli/cli.js.map +1 -1
- package/dist/server/src/cli/cliTemplateFiles.d.ts +17 -2
- package/dist/server/src/cli/cliTemplateFiles.d.ts.map +1 -1
- package/dist/server/src/cli/cliTemplateFiles.js +25 -7
- package/dist/server/src/cli/cliTemplateFiles.js.map +1 -1
- package/dist/server/src/cli/cliTemplateFiles.spec.js +7 -2
- package/dist/server/src/cli/cliTemplateFiles.spec.js.map +1 -1
- package/dist/server/src/cli/upgradeCli.d.ts +6 -0
- package/dist/server/src/cli/upgradeCli.d.ts.map +1 -0
- package/dist/server/src/cli/upgradeCli.js +88 -0
- package/dist/server/src/cli/upgradeCli.js.map +1 -0
- package/dist/server/src/cli/upgradeCli.spec.d.ts +2 -0
- package/dist/server/src/cli/upgradeCli.spec.d.ts.map +1 -0
- package/dist/server/src/cli/upgradeCli.spec.js +59 -0
- package/dist/server/src/cli/upgradeCli.spec.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
FROM postgis/postgis:17-3.4
|
|
2
|
+
|
|
3
|
+
# Switch to root user to install packages
|
|
4
|
+
USER root
|
|
5
|
+
|
|
6
|
+
# procps needed for stat monitoring
|
|
7
|
+
RUN apt-get update && apt-get install -y procps && \
|
|
8
|
+
rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
# Switch back to the default postgres user
|
|
11
|
+
USER postgres
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
FROM docker:29-cli AS docker-cli
|
|
2
|
+
|
|
3
|
+
FROM node:24-bookworm-slim AS runtime
|
|
4
|
+
|
|
5
|
+
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
|
6
|
+
|
|
7
|
+
# Backup/restore runs in the app container. Match DB.Dockerfile's PostgreSQL 17.
|
|
8
|
+
RUN apt-get update && \
|
|
9
|
+
apt-get install -y --no-install-recommends curl ca-certificates lsb-release && \
|
|
10
|
+
install -d /usr/share/postgresql-common/pgdg && \
|
|
11
|
+
curl --fail -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc && \
|
|
12
|
+
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
|
|
13
|
+
apt-get update && \
|
|
14
|
+
apt-get install -y --no-install-recommends postgresql-client-17 && \
|
|
15
|
+
psql --version && pg_dump --version && pg_restore --version && pg_dumpall --version && \
|
|
16
|
+
apt-get purge -y --auto-remove curl lsb-release && \
|
|
17
|
+
rm -rf /var/lib/apt/lists/*
|
|
18
|
+
|
|
19
|
+
ENV IS_DOCKER=yes
|
|
20
|
+
|
|
21
|
+
FROM runtime AS ui
|
|
22
|
+
|
|
23
|
+
WORKDIR /usr/src/app
|
|
24
|
+
COPY . .
|
|
25
|
+
|
|
26
|
+
WORKDIR /usr/src/app/client
|
|
27
|
+
|
|
28
|
+
RUN npm run build && cd ../server && npm run build
|
|
29
|
+
|
|
30
|
+
ENV NODE_ENV=production
|
|
31
|
+
ENV IS_DOCKER=yes
|
|
32
|
+
|
|
33
|
+
CMD ["node", "/usr/src/app/server/dist/server/src/index.js"]
|
package/dist/server/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prostgles/prostgles",
|
|
3
|
-
"version": "2.3.6-dev.
|
|
3
|
+
"version": "2.3.6-dev.1788628254",
|
|
4
4
|
"description": "Prostgles UI runtime and configurable PostgreSQL dashboard",
|
|
5
5
|
"main": "dist/server/src/schemaConfig.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"prostgles": "dist/server/src/cli/cli.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"compile": "cross-env NODE_ENV='production' NODE_OPTIONS='--max-old-space-size=2048' tsc && tsc-alias",
|
|
10
|
+
"compile": "cross-env NODE_ENV='production' NODE_OPTIONS='--max-old-space-size=2048' tsc && tsc-alias && node ./scripts/copyCliDockerfiles.mjs",
|
|
11
11
|
"build": "npm ci && npm run compile && npm prune --omit=dev",
|
|
12
12
|
"start": "npm run build && cross-env NODE_ENV='production' node dist/server/src/index.js",
|
|
13
13
|
"test": "npm run build && node test-runner.mjs",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
FROM postgis/postgis:17-3.4
|
|
2
|
+
|
|
3
|
+
# Switch to root user to install packages
|
|
4
|
+
USER root
|
|
5
|
+
|
|
6
|
+
# procps needed for stat monitoring
|
|
7
|
+
RUN apt-get update && apt-get install -y procps && \
|
|
8
|
+
rm -rf /var/lib/apt/lists/*
|
|
9
|
+
|
|
10
|
+
# Switch back to the default postgres user
|
|
11
|
+
USER postgres
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
FROM docker:29-cli AS docker-cli
|
|
2
|
+
|
|
3
|
+
FROM node:24-bookworm-slim AS runtime
|
|
4
|
+
|
|
5
|
+
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
|
6
|
+
|
|
7
|
+
# Backup/restore runs in the app container. Match DB.Dockerfile's PostgreSQL 17.
|
|
8
|
+
RUN apt-get update && \
|
|
9
|
+
apt-get install -y --no-install-recommends curl ca-certificates lsb-release && \
|
|
10
|
+
install -d /usr/share/postgresql-common/pgdg && \
|
|
11
|
+
curl --fail -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc && \
|
|
12
|
+
echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
|
|
13
|
+
apt-get update && \
|
|
14
|
+
apt-get install -y --no-install-recommends postgresql-client-17 && \
|
|
15
|
+
psql --version && pg_dump --version && pg_restore --version && pg_dumpall --version && \
|
|
16
|
+
apt-get purge -y --auto-remove curl lsb-release && \
|
|
17
|
+
rm -rf /var/lib/apt/lists/*
|
|
18
|
+
|
|
19
|
+
ENV IS_DOCKER=yes
|
|
20
|
+
|
|
21
|
+
FROM runtime AS ui
|
|
22
|
+
|
|
23
|
+
WORKDIR /usr/src/app
|
|
24
|
+
COPY . .
|
|
25
|
+
|
|
26
|
+
WORKDIR /usr/src/app/client
|
|
27
|
+
|
|
28
|
+
RUN npm run build && cd ../server && npm run build
|
|
29
|
+
|
|
30
|
+
ENV NODE_ENV=production
|
|
31
|
+
ENV IS_DOCKER=yes
|
|
32
|
+
|
|
33
|
+
CMD ["node", "/usr/src/app/server/dist/server/src/index.js"]
|
|
@@ -9,8 +9,10 @@ const path_1 = tslib_1.__importDefault(require("path"));
|
|
|
9
9
|
const compileSchemaConfigProject_1 = require("../ConnectionManager/compileSchemaConfigProject");
|
|
10
10
|
const cliTemplateFiles_1 = require("./cliTemplateFiles");
|
|
11
11
|
const ensureCliDatabases_1 = require("./ensureCliDatabases");
|
|
12
|
+
const upgradeCli_1 = require("./upgradeCli");
|
|
12
13
|
const usage = `Usage:
|
|
13
14
|
prostgles create <directory> [--skip-install]
|
|
15
|
+
prostgles upgrade [--config <directory>]
|
|
14
16
|
prostgles compose init [--config <directory>]
|
|
15
17
|
prostgles dev [--config <directory>]
|
|
16
18
|
prostgles start [--config <directory>]`;
|
|
@@ -49,15 +51,18 @@ const createConfig = (targetPath, skipInstall) => {
|
|
|
49
51
|
installConfigDependencies(targetPath);
|
|
50
52
|
console.log(`Created config project and installed dependencies in ${targetPath}. Copy .env.example to .env, then see README.md for development and Docker deployment commands.`);
|
|
51
53
|
};
|
|
52
|
-
const
|
|
54
|
+
const getExistingConfigId = (configPath) => {
|
|
53
55
|
const packageFile = path_1.default.join(configPath, "package.json");
|
|
54
56
|
if (!(0, fs_1.existsSync)(packageFile)) {
|
|
55
57
|
throw new Error(`No package.json found in config project ${configPath}`);
|
|
56
58
|
}
|
|
57
59
|
const packageConfig = JSON.parse((0, fs_1.readFileSync)(packageFile, "utf8"));
|
|
58
|
-
|
|
60
|
+
return getConfigId(typeof packageConfig.name === "string" ?
|
|
59
61
|
packageConfig.name
|
|
60
62
|
: path_1.default.basename(configPath));
|
|
63
|
+
};
|
|
64
|
+
const initialiseCompose = (configPath) => {
|
|
65
|
+
const configId = getExistingConfigId(configPath);
|
|
61
66
|
(0, cliTemplateFiles_1.saveCliComposeFiles)({ configId, targetPath: configPath });
|
|
62
67
|
console.log(`Added Dockerfile, compose.yaml and .dockerignore to ${configPath}. Set PROSTGLES_DOCKER_DB_PASSWORD in .env, then run docker compose up -d --build.`);
|
|
63
68
|
};
|
|
@@ -170,6 +175,12 @@ const main = async () => {
|
|
|
170
175
|
initialiseCompose(getConfigPath(args.slice(1)));
|
|
171
176
|
return;
|
|
172
177
|
}
|
|
178
|
+
if (command === "upgrade") {
|
|
179
|
+
const configPath = getConfigPath(args);
|
|
180
|
+
await (0, upgradeCli_1.upgradeCli)(getExistingConfigId(configPath), configPath);
|
|
181
|
+
console.log("Upgrade file processing complete. Run npm install to update dependencies after resolving your changes.");
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
173
184
|
if (command === "dev" || command === "start") {
|
|
174
185
|
await run(getConfigPath(args), command === "dev");
|
|
175
186
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli/cli.ts"],"names":[],"mappings":";;;;AAEA,iDAAoE;AACpE,mCAA+B;AAC/B,2BAA6E;AAC7E,wDAAwB;AACxB,gGAA6F;AAC7F,yDAK4B;AAC5B,6DAA0D;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/cli/cli.ts"],"names":[],"mappings":";;;;AAEA,iDAAoE;AACpE,mCAA+B;AAC/B,2BAA6E;AAC7E,wDAAwB;AACxB,gGAA6F;AAC7F,yDAK4B;AAC5B,6DAA0D;AAC1D,6CAA0C;AAE1C,MAAM,KAAK,GAAG;;;;;yCAK2B,CAAC;AAE1C,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,EAAE;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,WAAW,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClE,OAAO,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAEpE,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACpC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,kBAAkB,CAAC;AAEzE,MAAM,yBAAyB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;QAChD,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK;QAAE,MAAM,MAAM,CAAC,KAAK,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAkB,EAAE,WAAoB,EAAE,EAAE;IAChE,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,IAAI,IAAA,gBAAW,EAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,kCAAkC,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,IAAA,uCAAoB,EAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAE/C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,kHAAkH,CAC1J,CAAC;QACF,OAAO;IACT,CAAC;IAED,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CACT,wDAAwD,UAAU,iGAAiG,CACpK,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACjD,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAEjE,CAAC;IACF,OAAO,WAAW,CAChB,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI;QACpB,CAAC,CAAC,cAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAE,EAAE;IAC/C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAA,sCAAmB,EAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CACT,uDAAuD,UAAU,oFAAoF,CACtJ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAE,EAAE;IAClD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,IAAA,eAAU,EAAC,eAAe,CAAC,CAAC,CAAC;QAChC,IAAA,cAAK,EAAC,IAAA,iBAAY,EAAC,eAAe,CAAC,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACtD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CACV,kCAAkC,eAAe,+DAA+D,CACjH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,OAAO,WAGN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAEnE,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,IAAkC,EAAE,EAAE,CAC3E,IAAA,qBAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;IACzC,GAAG,EAAE,UAAU;IACf,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE;QACH,GAAG,oBAAoB,CAAC,UAAU,CAAC;QACnC,GAAG,OAAO,CAAC,GAAG;QACd,QAAQ,EAAE,IAAI;QACd,mBAAmB,EAAE,UAAU;KAChC;CACF,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,CAAC,UAAkB,EAAE,QAAoB,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,EAAE;QAClC,QAAQ,CAAC,IAAI,CAAC,IAAA,UAAK,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClD,IAAA,gBAAW,EAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC;aACvE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;IACF,KAAK,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gCAAa,CAAC,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,UAAkB,EAAE,KAAc,EAAE,EAAE;IACvD,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACzD,IAAA,cAAS,EAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sCAAmB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,IAAA,uDAA0B,EAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,IAAA,uCAAkB,EAAC,WAAW,CAAC,CAAC;IACtC,IAAI,MAAgC,CAAC;IACrC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,aAAa,GAAG,MAAM,CAAC;QAC7B,MAAM,GAAG,SAAS,CAAC;QACnB,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM;YAAE,OAAO;QACnD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC;IACF,KAAK,EAAE,CAAC;IAER,IAAI,aAAa,GAAG,SAAqC,CAAC;IAC1D,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,aAAa,EAAE,EAAE,CAAC;QAClB,KAAK,IAAI,EAAE,CAAC;IACd,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,IAAI,KAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,IAAI,CAAC;oBACH,MAAM,IAAA,uDAA0B,EAAC,UAAU,CAAC,CAAC;oBAC7C,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM,IAAI,EAAE,CAAC;oBACb,UAAU,GAAG,KAAK,CAAC;oBACnB,KAAK,EAAE,CAAC;gBACV,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC;IAEF,aAAa,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9D,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAA,uBAAU,EAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CACT,wGAAwG,CACzG,CAAC;QACF,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC7C,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
|
@@ -12,7 +12,19 @@ export declare const srcSubfolderNames: readonly ["functions", "tableConfigs", "
|
|
|
12
12
|
export declare const getCliComposeFiles: ({ configId }: {
|
|
13
13
|
configId: string;
|
|
14
14
|
}) => {
|
|
15
|
-
readonly Dockerfile
|
|
15
|
+
readonly "DB.Dockerfile": string;
|
|
16
|
+
readonly Dockerfile: `${string}
|
|
17
|
+
FROM runtime AS app
|
|
18
|
+
|
|
19
|
+
WORKDIR /app
|
|
20
|
+
|
|
21
|
+
COPY . .
|
|
22
|
+
RUN npm install
|
|
23
|
+
RUN npm run build
|
|
24
|
+
|
|
25
|
+
ENV NODE_ENV=production
|
|
26
|
+
|
|
27
|
+
CMD ["npm", "start"]`;
|
|
16
28
|
readonly "compose.yaml": `
|
|
17
29
|
name: ${string}
|
|
18
30
|
|
|
@@ -44,7 +56,10 @@ export declare const getCliComposeFiles: ({ configId }: {
|
|
|
44
56
|
- runtime
|
|
45
57
|
|
|
46
58
|
db:
|
|
47
|
-
|
|
59
|
+
build:
|
|
60
|
+
context: .
|
|
61
|
+
dockerfile: DB.Dockerfile
|
|
62
|
+
command: postgres -c shared_preload_libraries=pg_stat_statements -c max_connections=200
|
|
48
63
|
restart: unless-stopped
|
|
49
64
|
environment:
|
|
50
65
|
POSTGRES_DB: postgres
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliTemplateFiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB,GAAI,2BAGlC;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,SAEA,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,2BAGjC;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,SAWA,CAAC;AAEF,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAI/C,eAAO,MAAM,iBAAiB,kFAMpB,CAAC;
|
|
1
|
+
{"version":3,"file":"cliTemplateFiles.d.ts","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB,GAAI,2BAGlC;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,SAEA,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,2BAGjC;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,SAWA,CAAC;AAEF,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAI/C,eAAO,MAAM,iBAAiB,kFAMpB,CAAC;AAwNX,eAAO,MAAM,kBAAkB,GAAI,cAAc;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFxD,CAAC"}
|
|
@@ -60,6 +60,16 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
60
60
|
npm run dev
|
|
61
61
|
\`\`\`
|
|
62
62
|
|
|
63
|
+
## Upgrading
|
|
64
|
+
|
|
65
|
+
Run \`npm run upgrade\` to compare this app with the latest scaffold.
|
|
66
|
+
Each new file prompts for skip/save (default: save). Each differing file prompts for
|
|
67
|
+
skip/merge/overwrite (default: merge). Identical files are left alone.
|
|
68
|
+
Merge opens VS Code's merge editor; the \`code\` command must be on PATH.
|
|
69
|
+
There is no historical template baseline, so merge is a manual comparison of both versions.
|
|
70
|
+
Save the result and close the merge editor to continue to the next file.
|
|
71
|
+
Changes are applied as you go. Run \`npm install\` after resolving the files.
|
|
72
|
+
|
|
63
73
|
## Deployment
|
|
64
74
|
|
|
65
75
|
Set strong \`PRGL_PASSWORD\` and \`PROSTGLES_DOCKER_DB_PASSWORD\` values in \`.env\`, then use Docker Compose directly:
|
|
@@ -216,16 +226,20 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
216
226
|
# Override only when the app needs a different PostgreSQL/PostGIS version.
|
|
217
227
|
# PROSTGLES_TEST_POSTGRES_IMAGE=postgis/postgis:17-3.4`,
|
|
218
228
|
});
|
|
229
|
+
const readCliDockerfile = (filename) => {
|
|
230
|
+
const filePath = (0, path_1.join)(__dirname, filename);
|
|
231
|
+
if (!(0, fs_1.existsSync)(filePath)) {
|
|
232
|
+
throw new Error(`Missing bundled ${filename}: ${filePath}`);
|
|
233
|
+
}
|
|
234
|
+
return (0, fs_1.readFileSync)(filePath, "utf8");
|
|
235
|
+
};
|
|
219
236
|
const getCliComposeFiles = ({ configId }) => ({
|
|
220
|
-
Dockerfile:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
FROM node:24-bookworm-slim
|
|
237
|
+
"DB.Dockerfile": readCliDockerfile("DB.Dockerfile"),
|
|
238
|
+
Dockerfile: `${readCliDockerfile("Dockerfile")}
|
|
239
|
+
FROM runtime AS app
|
|
224
240
|
|
|
225
241
|
WORKDIR /app
|
|
226
242
|
|
|
227
|
-
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
|
228
|
-
|
|
229
243
|
COPY . .
|
|
230
244
|
RUN npm install
|
|
231
245
|
RUN npm run build
|
|
@@ -264,7 +278,10 @@ const getCliComposeFiles = ({ configId }) => ({
|
|
|
264
278
|
- runtime
|
|
265
279
|
|
|
266
280
|
db:
|
|
267
|
-
|
|
281
|
+
build:
|
|
282
|
+
context: .
|
|
283
|
+
dockerfile: DB.Dockerfile
|
|
284
|
+
command: postgres -c shared_preload_libraries=pg_stat_statements -c max_connections=200
|
|
268
285
|
restart: unless-stopped
|
|
269
286
|
environment:
|
|
270
287
|
POSTGRES_DB: postgres
|
|
@@ -308,6 +325,7 @@ const getPackageJson = (configId) => ({
|
|
|
308
325
|
lint: "eslint .",
|
|
309
326
|
"lint:fix": "eslint . --fix",
|
|
310
327
|
start: "prostgles start --config .",
|
|
328
|
+
upgrade: `npx ${package_json_1.default.name}@latest upgrade --config .`,
|
|
311
329
|
test: 'npm run build && node --env-file-if-exists=.env --test "build/tests/**/*.test.js"',
|
|
312
330
|
},
|
|
313
331
|
dependencies: { [package_json_1.default.name]: `^${package_json_1.default.version}` },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":";;;;AAAA,yCAA0C;AAC1C,mCAAqC;AAErC,8EAA6C;AAC7C,qDAAwD;AACxD,+BAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":";;;;AAAA,yCAA0C;AAC1C,mCAAqC;AAErC,8EAA6C;AAC7C,qDAAwD;AACxD,+BAAqC;AACrC,2BAAwE;AAEjE,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,UAAU,GAIX,EAAE,EAAE;IACH,eAAe,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAClC,QAAQ,EACR,UAAU,GAIX,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3D,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CACvC,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,oDAAoD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrC,CAAC,CAAC;AAjBW,QAAA,mBAAmB,uBAiB9B;AAEW,QAAA,aAAa,GAAG,KAAK,CAAC;AACtB,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACzB,QAAA,iBAAiB,GAAG;IAC/B,WAAW;IACX,cAAc;IACd,cAAc;IACd,YAAY;IACZ,kBAAkB;CACV,CAAC;AAMX,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,WAAwB,EAAE,EAAE;IACvE,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAA,cAAS,EAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAA,cAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CACjE,CAAC;IACC,GAAG,IAAA,0BAAkB,EAAC,EAAE,QAAQ,EAAE,CAAC;IACnC,WAAW,EAAE;UACP,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+JA+B6I;IAC3J,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;IACxE,eAAe,EACb,IAAI,CAAC,SAAS,CACZ;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,QAAQ;YAC1B,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,OAAO;YACf,eAAe,EAAE,IAAI;YACrB,gCAAgC,EAAE,IAAI;YACtC,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,mBAAmB,EAAE,IAAI;SAC1B;QACD,OAAO,EAAE,CAAC,qBAAa,EAAE,2BAAmB,EAAE,eAAe,CAAC;QAC9D,OAAO,EAAE,CAAC,GAAG,qBAAa,kBAAkB,CAAC;KAC9C,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;IACV,WAAW,EAAE,gBAAgB,EAAE;IAC/B,CAAC,2BAAmB,CAAC,EAAE;QACrB,sBAAsB,EACpB,wFAAwF;KAC3F;IACD,CAAC,qBAAa,CAAC,EAAE;QACf,GAAG,IAAA,6BAAW,EAAC,yBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,UAAU,EAAE;;qDAEmC,2BAAmB;;;;;;gBAMxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;;;;YAM5B;QACN,CAAC,kBAAkB,CAAC,EAAE;YACpB,SAAS,EAAE;gBACT,sBAAsB,EAAE;;;;;;;;;;;;;;;;;mDAiBiB;gBACzC,GAAG,EAAE;oBACH,UAAU,EAAE;;;;;;;;;+EASuD;iBACpE;aACF;SACF;QACD,mBAAmB,EAAE;;;;;;;;;;2DAUgC;KACtD;IACD,CAAC,eAAe,CAAC,EAAE;QACjB,oBAAoB,EAAE;;;;;;;;;;wBAUJ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;YAqBpC;KACP;IACD,mBAAmB,EAAE,YAAY;IACjC,YAAY,EAAE;;;;;YAKN;IACR,cAAc,EAAE;;;sBAGE,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;;;;;;uEAMY,QAAQ;;;qCAG1C,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;;;;6DAIb;CAC1D,CAAU,CAAC;AAEd,MAAM,iBAAiB,GAAG,CAAC,QAAwC,EAAE,EAAE;IACrE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CACvE,CAAC;IACC,eAAe,EAAE,iBAAiB,CAAC,eAAe,CAAC;IACnD,UAAU,EAAE,GAAG,iBAAiB,CAAC,YAAY,CAAC;;;;;;;;;;;2BAWvB;IACvB,cAAc,EAAE;cACN,QAAQ;;;;;;;;;;;;;;;;;;6IAkBuH,QAAQ;qEAChF,QAAQ;+DACd,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAmCxB,QAAQ;yBAC9B;IACrB,eAAe,EAAE;;;;;;YAMT;CACT,CAAU,CAAC;AAhFD,QAAA,kBAAkB,sBAgFjB;AAEd,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE;QACP,KAAK,EAAE,6CAA6C;QACpD,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,gBAAgB;QAC5B,KAAK,EAAE,4BAA4B;QACnC,OAAO,EAAE,OAAO,sBAAW,CAAC,IAAI,4BAA4B;QAC5D,IAAI,EAAE,mFAAmF;KAC1F;IACD,YAAY,EAAE,EAAE,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,IAAI,sBAAW,CAAC,OAAO,EAAE,EAAE;IAC/D,eAAe,EAAE;QACf,GAAG,IAAA,0BAAQ,EAAC,sBAAW,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC;QACrD,GAAG,IAAA,0BAAQ,EAAC,sBAAW,CAAC,eAAe,EAAE;YACvC,YAAY;YACZ,QAAQ;YACR,wBAAwB;YACxB,mBAAmB;YACnB,aAAa;SACd,CAAC;KACH;IACD,OAAO,EAAE;QACP,aAAa,EAAE;YACb,KAAK,EAAE,8BAA8B;YACrC,OAAO,EAAE,4BAA4B;SACtC;KACF;CACF,CAAC,CAAC;AACH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgCL,qBAAa;;;;;;;;;;WAUlB,2BAAmB;;;eAGf,kBAAkB;;;;;;;;iBAQhB,qBAAa,eAAe,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BtD,yBAAiB;KAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;KAC/B,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CACb,uBAAuB,UAAU,QAAQ,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAC1E;KACA,IAAI,CAAC,SAAS,CAAC;KACjB,CAAC;AAUN;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,cAAc,EACZ,iGAAiG;IACnG,UAAU,EACR,mGAAmG;IACrG,cAAc,EACZ,+FAA+F;IACjG,SAAS,EACP,4GAA4G;IAC9G,EAAE,EAAE,oEAAoE;IACxE,KAAK,EACH,+EAA+E;IACjF,SAAS,EACP,wFAAwF;IAC1F,OAAO,EACL,gGAAgG;IAClG,QAAQ,EACN,2FAA2F;IAC7F,WAAW,EACT,gFAAgF;IAClF,qBAAqB,EACnB,iHAAiH;IACnH,UAAU,EAAE,8DAA8D;IAC1E,eAAe,EACb,+EAA+E;IACjF,UAAU,EACR,0FAA0F;CAC9D,CAAC;AAEjC,MAAM,kBAAkB,GAAG;IACzB,gBAAgB,EACd,gFAAgF;IAClF,eAAe,EACb,wEAAwE;IAC1E,aAAa,EACX,yPAAyP;CAC/N,CAAC;AAE/B,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;;;;;;MAczB,oBAAoB,CAAC,EAAE;MACvB,oBAAoB,CAAC,UAAU,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,eAAe;MAC5G,oBAAoB,CAAC,cAAc;MACnC,oBAAoB,CAAC,cAAc;MACnC,oBAAoB,CAAC,eAAe;MACpC,oBAAoB,CAAC,SAAS,IAAI,oBAAoB,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0C9D,oBAAoB,CAAC,WAAW,IAAI,oBAAoB,CAAC,qBAAqB;MAC9E,oBAAoB,CAAC,UAAU;;;MAG/B,kBAAkB,CAAC,aAAa;;;MAGhC,oBAAoB,CAAC,KAAK;;;;MAI1B,oBAAoB,CAAC,UAAU;;;;;;;;;;;;;MAa/B,oBAAoB,CAAC,SAAS;;;;;oFAKgD,CAAC"}
|
|
@@ -20,8 +20,13 @@ void (0, node_test_1.default)("new CLI apps include a native Compose deployment"
|
|
|
20
20
|
strict_1.default.match(compose, /PROSTGLES_INSTANCE_ID: \$\{PROSTGLES_INSTANCE_ID:-my-app\}/);
|
|
21
21
|
strict_1.default.match(compose, /\/var\/run\/docker\.sock:\/var\/run\/docker\.sock/);
|
|
22
22
|
strict_1.default.match(compose, /^ {4}name: \$\{PROSTGLES_DOCKER_NETWORK:-my-app-runtime\}$/m);
|
|
23
|
-
strict_1.default.
|
|
24
|
-
strict_1.default.
|
|
23
|
+
strict_1.default.ok(dockerfile.includes("AS runtime"));
|
|
24
|
+
strict_1.default.ok(dockerfile.includes("FROM runtime AS app"));
|
|
25
|
+
strict_1.default.ok(!dockerfile.includes("prostgles/ui-runtime"));
|
|
26
|
+
strict_1.default.ok(compose.includes("dockerfile: DB.Dockerfile"));
|
|
27
|
+
strict_1.default.ok((0, node_fs_1.readFileSync)((0, node_path_1.join)(targetPath, "DB.Dockerfile"), "utf8").includes("procps"));
|
|
28
|
+
strict_1.default.ok(compose.includes("shared_preload_libraries=pg_stat_statements"));
|
|
29
|
+
strict_1.default.ok(compose.includes("max_connections=200"));
|
|
25
30
|
});
|
|
26
31
|
void (0, node_test_1.default)("compose init does not overwrite deployment files", (context) => {
|
|
27
32
|
const targetPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "prostgles-compose-init-"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliTemplateFiles.spec.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.spec.ts"],"names":[],"mappings":";;;AAAA,wEAAwC;AACxC,qCAA2E;AAC3E,qCAAiC;AACjC,yCAAiC;AACjC,kEAA6B;AAC7B,yDAA+E;AAE/E,KAAK,IAAA,mBAAI,EAAC,kDAAkD,EAAE,CAAC,OAAO,EAAE,EAAE;IACxE,MAAM,UAAU,GAAG,IAAA,qBAAW,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAA,gBAAM,EAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE1E,IAAA,uCAAoB,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACzC,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACrC,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACpC,gBAAM,CAAC,KAAK,CACV,OAAO,EACP,0EAA0E,CAC3E,CAAC;IACF,gBAAM,CAAC,KAAK,CACV,OAAO,EACP,4DAA4D,CAC7D,CAAC;IACF,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,mDAAmD,CAAC,CAAC;IAC3E,gBAAM,CAAC,KAAK,CACV,OAAO,EACP,6DAA6D,CAC9D,CAAC;IACF,gBAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cliTemplateFiles.spec.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type FileAction = "skip" | "save" | "merge" | "overwrite";
|
|
2
|
+
type ChooseFileAction = (file: string, choices: readonly FileAction[], defaultAction: FileAction) => Promise<FileAction>;
|
|
3
|
+
export declare const applyCliUpgradeFiles: (incomingPath: string, targetPath: string, chooseAction: ChooseFileAction, merge?: (local: string, incoming: string) => void) => Promise<void>;
|
|
4
|
+
export declare const upgradeCli: (configId: string, targetPath: string) => Promise<void>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=upgradeCli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgradeCli.d.ts","sourceRoot":"","sources":["../../../../src/cli/upgradeCli.ts"],"names":[],"mappings":"AAgBA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAC1D,KAAK,gBAAgB,GAAG,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,UAAU,KACtB,OAAO,CAAC,UAAU,CAAC,CAAC;AA6BzB,eAAO,MAAM,oBAAoB,GAC/B,cAAc,MAAM,EACpB,YAAY,MAAM,EAClB,cAAc,gBAAgB,EAC9B,gBA/B8B,MAAM,YAAY,MAAM,SA+B/B,kBA8BxB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,YAAY,MAAM,kBAgCpE,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.upgradeCli = exports.applyCliUpgradeFiles = void 0;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const promises_1 = require("node:readline/promises");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const cliTemplateFiles_1 = require("./cliTemplateFiles");
|
|
10
|
+
const mergeWithVSCode = (local, incoming) => {
|
|
11
|
+
const temporaryPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "prostgles-merge-"));
|
|
12
|
+
try {
|
|
13
|
+
const current = (0, node_path_1.join)(temporaryPath, "current");
|
|
14
|
+
const base = (0, node_path_1.join)(temporaryPath, "base");
|
|
15
|
+
(0, node_fs_1.copyFileSync)(local, current);
|
|
16
|
+
// No historical template is available. Let the user reconcile both versions.
|
|
17
|
+
(0, node_fs_1.writeFileSync)(base, "");
|
|
18
|
+
const result = (0, node_child_process_1.spawnSync)("code", ["--wait", "--merge", current, incoming, base, local], {
|
|
19
|
+
stdio: "inherit",
|
|
20
|
+
});
|
|
21
|
+
if (result.error)
|
|
22
|
+
throw new Error("Could not open VS Code. Ensure the code command is on PATH.", { cause: result.error });
|
|
23
|
+
if (result.status !== 0)
|
|
24
|
+
throw new Error(`VS Code exited with status ${result.status ?? 1}`);
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
(0, node_fs_1.rmSync)(temporaryPath, { recursive: true, force: true });
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const applyCliUpgradeFiles = async (incomingPath, targetPath, chooseAction, merge = mergeWithVSCode) => {
|
|
31
|
+
for (const entry of (0, node_fs_1.readdirSync)(incomingPath, { withFileTypes: true })) {
|
|
32
|
+
const incoming = (0, node_path_1.join)(incomingPath, entry.name);
|
|
33
|
+
const target = (0, node_path_1.join)(targetPath, entry.name);
|
|
34
|
+
if (entry.isDirectory()) {
|
|
35
|
+
await (0, exports.applyCliUpgradeFiles)(incoming, target, chooseAction, merge);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (!(0, node_fs_1.existsSync)(target)) {
|
|
39
|
+
if ((await chooseAction(target, ["skip", "save"], "save")) === "save") {
|
|
40
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(target), { recursive: true });
|
|
41
|
+
(0, node_fs_1.copyFileSync)(incoming, target);
|
|
42
|
+
console.log(`Saved ${target}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (!(0, node_fs_1.readFileSync)(target).equals((0, node_fs_1.readFileSync)(incoming))) {
|
|
46
|
+
const action = await chooseAction(target, ["skip", "merge", "overwrite"], "merge");
|
|
47
|
+
if (action === "overwrite") {
|
|
48
|
+
(0, node_fs_1.copyFileSync)(incoming, target);
|
|
49
|
+
console.log(`Overwrote ${target}`);
|
|
50
|
+
}
|
|
51
|
+
else if (action === "merge") {
|
|
52
|
+
console.log(`Merging ${target}`);
|
|
53
|
+
merge(target, incoming);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.applyCliUpgradeFiles = applyCliUpgradeFiles;
|
|
59
|
+
const upgradeCli = async (configId, targetPath) => {
|
|
60
|
+
const incomingPath = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "prostgles-upgrade-"));
|
|
61
|
+
const readline = (0, promises_1.createInterface)({
|
|
62
|
+
input: process.stdin,
|
|
63
|
+
output: process.stdout,
|
|
64
|
+
});
|
|
65
|
+
try {
|
|
66
|
+
(0, cliTemplateFiles_1.saveCliTemplateFiles)({ configId, targetPath: incomingPath });
|
|
67
|
+
await (0, exports.applyCliUpgradeFiles)(incomingPath, targetPath, async (file, choices, defaultAction) => {
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
69
|
+
while (true) {
|
|
70
|
+
const answer = (await readline.question(`${file} [${choices.join("/")}] (${defaultAction}): `))
|
|
71
|
+
.trim()
|
|
72
|
+
.toLowerCase();
|
|
73
|
+
if (!answer)
|
|
74
|
+
return defaultAction;
|
|
75
|
+
const action = choices.find((choice) => choice === answer);
|
|
76
|
+
if (action)
|
|
77
|
+
return action;
|
|
78
|
+
console.log(`Choose ${choices.join(", ")}.`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
readline.close();
|
|
84
|
+
(0, node_fs_1.rmSync)(incomingPath, { recursive: true, force: true });
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
exports.upgradeCli = upgradeCli;
|
|
88
|
+
//# sourceMappingURL=upgradeCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgradeCli.js","sourceRoot":"","sources":["../../../../src/cli/upgradeCli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgradeCli.spec.d.ts","sourceRoot":"","sources":["../../../../src/cli/upgradeCli.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const strict_1 = tslib_1.__importDefault(require("node:assert/strict"));
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const node_test_1 = tslib_1.__importDefault(require("node:test"));
|
|
9
|
+
const upgradeCli_1 = require("./upgradeCli");
|
|
10
|
+
void (0, node_test_1.default)("upgrade prompts per file with defaults and respects every action", async (context) => {
|
|
11
|
+
const root = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "prostgles-upgrade-test-"));
|
|
12
|
+
context.after(() => (0, node_fs_1.rmSync)(root, { recursive: true, force: true }));
|
|
13
|
+
const incoming = (0, node_path_1.join)(root, "incoming");
|
|
14
|
+
const target = (0, node_path_1.join)(root, "target");
|
|
15
|
+
(0, node_fs_1.mkdirSync)(incoming);
|
|
16
|
+
(0, node_fs_1.mkdirSync)(target);
|
|
17
|
+
const actions = {
|
|
18
|
+
"new-save": "save",
|
|
19
|
+
"new-skip": "skip",
|
|
20
|
+
"existing-skip": "skip",
|
|
21
|
+
"existing-merge": "merge",
|
|
22
|
+
"existing-overwrite": "overwrite",
|
|
23
|
+
};
|
|
24
|
+
for (const name of Object.keys(actions)) {
|
|
25
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(incoming, name), "incoming");
|
|
26
|
+
if (name.startsWith("existing"))
|
|
27
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(target, name), "local");
|
|
28
|
+
}
|
|
29
|
+
for (const directory of [incoming, target])
|
|
30
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(directory, "identical"), "same");
|
|
31
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(target, "app-only"), "custom");
|
|
32
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.join)(incoming, "nested"));
|
|
33
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(incoming, "nested", "new-save"), "incoming");
|
|
34
|
+
const prompted = [];
|
|
35
|
+
const merged = [];
|
|
36
|
+
await (0, upgradeCli_1.applyCliUpgradeFiles)(incoming, target, async (file, choices, defaultAction) => {
|
|
37
|
+
const name = file.split("/").at(-1);
|
|
38
|
+
prompted.push(file);
|
|
39
|
+
const isNew = name.startsWith("new");
|
|
40
|
+
strict_1.default.deepEqual(choices, isNew ? ["skip", "save"] : ["skip", "merge", "overwrite"]);
|
|
41
|
+
strict_1.default.equal(defaultAction, isNew ? "save" : "merge");
|
|
42
|
+
return actions[name];
|
|
43
|
+
}, (local, remote) => {
|
|
44
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)(local, "utf8"), "local");
|
|
45
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)(remote, "utf8"), "incoming");
|
|
46
|
+
merged.push(local);
|
|
47
|
+
(0, node_fs_1.writeFileSync)(local, "resolved");
|
|
48
|
+
});
|
|
49
|
+
strict_1.default.equal(prompted.length, 6);
|
|
50
|
+
strict_1.default.deepEqual(merged, [(0, node_path_1.join)(target, "existing-merge")]);
|
|
51
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "existing-merge"), "utf8"), "resolved");
|
|
52
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "existing-skip"), "utf8"), "local");
|
|
53
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "existing-overwrite"), "utf8"), "incoming");
|
|
54
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "new-save"), "utf8"), "incoming");
|
|
55
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "nested", "new-save"), "utf8"), "incoming");
|
|
56
|
+
strict_1.default.equal((0, node_fs_1.existsSync)((0, node_path_1.join)(target, "new-skip")), false);
|
|
57
|
+
strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(target, "app-only"), "utf8"), "custom");
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=upgradeCli.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgradeCli.spec.js","sourceRoot":"","sources":["../../../../src/cli/upgradeCli.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prostgles/prostgles",
|
|
3
|
-
"version": "2.3.6-dev.
|
|
3
|
+
"version": "2.3.6-dev.1788628254",
|
|
4
4
|
"description": "Prostgles UI runtime and configurable PostgreSQL dashboard",
|
|
5
5
|
"main": "dist/server/src/schemaConfig.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"prostgles": "dist/server/src/cli/cli.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"compile": "cross-env NODE_ENV='production' NODE_OPTIONS='--max-old-space-size=2048' tsc && tsc-alias",
|
|
10
|
+
"compile": "cross-env NODE_ENV='production' NODE_OPTIONS='--max-old-space-size=2048' tsc && tsc-alias && node ./scripts/copyCliDockerfiles.mjs",
|
|
11
11
|
"build": "npm ci && npm run compile && npm prune --omit=dev",
|
|
12
12
|
"start": "npm run build && cross-env NODE_ENV='production' node dist/server/src/index.js",
|
|
13
13
|
"test": "npm run build && node test-runner.mjs",
|