@prostgles/prostgles 2.3.6-dev.1787160729 → 2.3.6-dev.1787240381
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/client/build/js/main.bundle.js +1 -1
- package/dist/server/package.json +1 -1
- package/dist/server/src/ConnectionManager/ConnectionManager.d.ts.map +1 -1
- package/dist/server/src/ConnectionManager/ConnectionManager.js +2 -0
- package/dist/server/src/ConnectionManager/ConnectionManager.js.map +1 -1
- package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.d.ts +7 -1
- package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.d.ts.map +1 -1
- package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.js +17 -7
- package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.js.map +1 -1
- package/dist/server/src/ConnectionManager/parseTableConfig.js +2 -2
- package/dist/server/src/ConnectionManager/parseTableConfig.js.map +1 -1
- package/dist/server/src/ConnectionManager/startConnection.d.ts.map +1 -1
- package/dist/server/src/ConnectionManager/startConnection.js +6 -2
- package/dist/server/src/ConnectionManager/startConnection.js.map +1 -1
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Documents.mcp.js +2 -2
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Documents.mcp.js.map +1 -1
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Web/Web.mcp.js +3 -3
- package/dist/server/src/McpHub/ProstglesMcpHub/ProstglesMCPServers/Web/Web.mcp.js.map +1 -1
- package/dist/server/src/ServiceManager/ServiceManager.d.ts +9 -6
- package/dist/server/src/ServiceManager/ServiceManager.d.ts.map +1 -1
- package/dist/server/src/ServiceManager/ServiceManager.js +36 -12
- package/dist/server/src/ServiceManager/ServiceManager.js.map +1 -1
- package/dist/server/src/ServiceManager/ServiceManager.spec.js +34 -2
- package/dist/server/src/ServiceManager/ServiceManager.spec.js.map +1 -1
- package/dist/server/src/ServiceManager/ServiceManagerTypes.d.ts +1 -1
- package/dist/server/src/ServiceManager/buildService.js +1 -1
- package/dist/server/src/ServiceManager/buildService.js.map +1 -1
- package/dist/server/src/ServiceManager/enableService.d.ts +3 -2
- package/dist/server/src/ServiceManager/enableService.d.ts.map +1 -1
- package/dist/server/src/ServiceManager/enableService.js.map +1 -1
- package/dist/server/src/ServiceManager/getServiceEndpoints.d.ts.map +1 -1
- package/dist/server/src/ServiceManager/getServiceEndpoints.js +9 -1
- package/dist/server/src/ServiceManager/getServiceEndpoints.js.map +1 -1
- package/dist/server/src/ServiceManager/getServiceManager.d.ts +685 -0
- package/dist/server/src/ServiceManager/getServiceManager.d.ts.map +1 -0
- package/dist/server/src/ServiceManager/getServiceManager.js +24 -0
- package/dist/server/src/ServiceManager/getServiceManager.js.map +1 -0
- package/dist/server/src/ServiceManager/initialiseServices.d.ts.map +1 -1
- package/dist/server/src/ServiceManager/initialiseServices.js +3 -2
- package/dist/server/src/ServiceManager/initialiseServices.js.map +1 -1
- package/dist/server/src/cli/cliTemplateFiles.js +35 -9
- package/dist/server/src/cli/cliTemplateFiles.js.map +1 -1
- package/dist/server/src/init/prostglesOnReady.d.ts +0 -678
- package/dist/server/src/init/prostglesOnReady.d.ts.map +1 -1
- package/dist/server/src/init/prostglesOnReady.js +11 -16
- package/dist/server/src/init/prostglesOnReady.js.map +1 -1
- package/dist/server/src/schemaConfig.d.ts +19 -4
- package/dist/server/src/schemaConfig.d.ts.map +1 -1
- package/dist/server/src/schemaConfig.js +6 -1
- package/dist/server/src/schemaConfig.js.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/mcpServerFunctions.js +3 -3
- package/dist/server/src/serverFunctions/adminServerFunctions/mcpServerFunctions.js.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.d.ts.map +1 -1
- package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.js +3 -3
- package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.js.map +1 -1
- package/dist/server/src/services.d.ts +2 -1
- package/dist/server/src/services.d.ts.map +1 -1
- package/dist/server/src/services.js +3 -1
- package/dist/server/src/services.js.map +1 -1
- package/package.json +1 -1
- package/dist/server/src/cli/getCliAgentsFile.d.ts +0 -2
- package/dist/server/src/cli/getCliAgentsFile.d.ts.map +0 -1
- package/dist/server/src/cli/getCliAgentsFile.js +0 -100
- package/dist/server/src/cli/getCliAgentsFile.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getServiceManager.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAI/B,eAAO,MAAM,wBAAwB,GAAU,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAatD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,kBAAkB,SAAS,eAAe,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,OAOxC,cAAc,CACrC,OAAO,iBAAiB,GAAG,kBAAkB,CAEhD,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getServiceManager = exports.initializeServiceManager = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const ServiceManager_1 = require("./ServiceManager");
|
|
6
|
+
const ServiceManagerTypes_1 = require("./ServiceManagerTypes");
|
|
7
|
+
let serviceManager;
|
|
8
|
+
const initializeServiceManager = async (dbs) => {
|
|
9
|
+
const isNew = !serviceManager;
|
|
10
|
+
serviceManager ??= await ServiceManager_1.ServiceManager.create({
|
|
11
|
+
services: ServiceManagerTypes_1.prostglesServices,
|
|
12
|
+
serviceRoot: (0, path_1.resolve)(__dirname, "../../../../src/ServiceManager/services"),
|
|
13
|
+
}, dbs);
|
|
14
|
+
return { serviceManager, isNew };
|
|
15
|
+
};
|
|
16
|
+
exports.initializeServiceManager = initializeServiceManager;
|
|
17
|
+
const getServiceManager = () => {
|
|
18
|
+
if (!serviceManager) {
|
|
19
|
+
throw new Error("ServiceManager is not available before Prostgles startup.");
|
|
20
|
+
}
|
|
21
|
+
return serviceManager;
|
|
22
|
+
};
|
|
23
|
+
exports.getServiceManager = getServiceManager;
|
|
24
|
+
//# sourceMappingURL=getServiceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getServiceManager.js","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceManager.ts"],"names":[],"mappings":";;;AACA,+BAA+B;AAC/B,qDAAkD;AAClD,+DAG+B;AAE/B,IAAI,cAAoE,CAAC;AAElE,MAAM,wBAAwB,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC;IAC9B,cAAc,KAAK,MAAM,+BAAc,CAAC,MAAM,CAC5C;QACE,QAAQ,EAAE,uCAAiB;QAC3B,WAAW,EAAE,IAAA,cAAO,EAClB,SAAS,EACT,yCAAyC,CAC1C;KACF,EACD,GAAG,CACJ,CAAC;IACF,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC,CAAC;AAbW,QAAA,wBAAwB,4BAanC;AAEK,MAAM,iBAAiB,GAAG,GAE7B,EAAE;IACJ,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,cAEN,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,iBAAiB,qBAW5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialiseServices.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"initialiseServices.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,cAAc,EAC9B,KAAK,GAAG,kBA0CT,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initialiseServices = void 0;
|
|
4
|
-
const ServiceManagerTypes_1 = require("./ServiceManagerTypes");
|
|
5
4
|
const initialiseServices = async (serviceManager, dbs) => {
|
|
6
5
|
await dbs.services
|
|
7
|
-
.insertMany(Object.entries(
|
|
6
|
+
.insertMany(Object.entries(serviceManager.services).map(([name, service]) => ({
|
|
8
7
|
name,
|
|
9
8
|
label: service.label,
|
|
10
9
|
icon: service.icon,
|
|
@@ -19,6 +18,8 @@ const initialiseServices = async (serviceManager, dbs) => {
|
|
|
19
18
|
void dbs.services.find({ status: "running" }).then((services) => {
|
|
20
19
|
const activeServiceNames = [];
|
|
21
20
|
services.forEach((service) => {
|
|
21
|
+
if (!Object.hasOwn(serviceManager.services, service.name))
|
|
22
|
+
return;
|
|
22
23
|
activeServiceNames.push(service.name);
|
|
23
24
|
console.log("Re-enabling service on startup: ", service.name);
|
|
24
25
|
serviceManager
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialiseServices.js","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"initialiseServices.js","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":";;;AAKO,MAAM,kBAAkB,GAAG,KAAK,EACrC,cAA8B,EAC9B,GAAQ,EACR,EAAE;IACF,MAAM,GAAG,CAAC,QAAQ;SACf,UAAU,CACT,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CACzC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAClB,CAAC;QACC,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI;QAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,SAAS;KAClB,CAA0C,CAC9C,EACD;QACE,UAAU,EAAE,WAAW;KACxB,CACF;SACA,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9D,MAAM,kBAAkB,GAAa,EAAE,CAAC;YACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAClE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,cAAc;qBACX,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC;qBACrC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE;gBACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CACT,gDAAgD,EAChD,WAAW,CACZ,CAAC;oBACF,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AA5CW,QAAA,kBAAkB,sBA4C7B"}
|
|
@@ -66,6 +66,7 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
66
66
|
"index.ts": `
|
|
67
67
|
import { defineConfig } from "@prostgles/prostgles";
|
|
68
68
|
import type { DBGeneratedSchema } from "../${exports.generatedFolderName}/DBGeneratedSchema";
|
|
69
|
+
import { serviceManagerConfig } from "./serviceManager";
|
|
69
70
|
|
|
70
71
|
const prostgles = defineConfig<DBGeneratedSchema>();
|
|
71
72
|
|
|
@@ -74,6 +75,7 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
74
75
|
connection: {
|
|
75
76
|
table_options: {},
|
|
76
77
|
},
|
|
78
|
+
services: serviceManagerConfig,
|
|
77
79
|
tableConfig: {},
|
|
78
80
|
});`,
|
|
79
81
|
[servicesFolderName]: {
|
|
@@ -82,18 +84,28 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
82
84
|
import type { ProstglesService } from "@prostgles/prostgles/services";
|
|
83
85
|
|
|
84
86
|
export const myService = {
|
|
85
|
-
buildContext: "myService",
|
|
86
87
|
icon: "Extension",
|
|
87
88
|
label: "My service",
|
|
88
89
|
description: "Example local Docker service.",
|
|
89
90
|
port: 8080,
|
|
90
91
|
healthCheck: { endpoint: "/health" },
|
|
91
|
-
endpoints: {
|
|
92
|
+
endpoints: {
|
|
93
|
+
"/hey": {
|
|
94
|
+
method: "GET",
|
|
95
|
+
inputSchema: undefined,
|
|
96
|
+
description: "Service info endpoint",
|
|
97
|
+
outputSchema: "string",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
92
100
|
} as const satisfies ProstglesService;`,
|
|
93
101
|
src: {
|
|
94
102
|
Dockerfile: `
|
|
95
103
|
FROM python:3.13-alpine
|
|
96
104
|
|
|
105
|
+
WORKDIR /app
|
|
106
|
+
RUN printf 'service-ok' > health
|
|
107
|
+
RUN printf 'Hello from myService!' > hey
|
|
108
|
+
|
|
97
109
|
EXPOSE 8080
|
|
98
110
|
|
|
99
111
|
CMD ["python", "-m", "http.server", "8080", "--bind", "0.0.0.0"]`,
|
|
@@ -101,14 +113,16 @@ const getCliTemplateFiles = ({ configId }) => ({
|
|
|
101
113
|
},
|
|
102
114
|
},
|
|
103
115
|
"serviceManager.ts": `
|
|
104
|
-
import {
|
|
116
|
+
import type { ServiceManagerConfig } from "@prostgles/prostgles/services";
|
|
105
117
|
import { myService } from "./services/myService/myService.service";
|
|
106
118
|
import path from "node:path";
|
|
107
119
|
|
|
108
|
-
export const
|
|
109
|
-
|
|
120
|
+
export const services = { myService };
|
|
121
|
+
|
|
122
|
+
export const serviceManagerConfig = {
|
|
123
|
+
services,
|
|
110
124
|
serviceRoot: path.resolve(__dirname, "..", "..", "src", "services"),
|
|
111
|
-
}
|
|
125
|
+
} satisfies ServiceManagerConfig<typeof services>;`,
|
|
112
126
|
},
|
|
113
127
|
[testsFolderName]: {
|
|
114
128
|
"deployment.test.ts": `
|
|
@@ -297,6 +311,7 @@ const schemaConfigGuidance = {
|
|
|
297
311
|
joins: "Use `joins` only for relationships that cannot be inferred from foreign keys.",
|
|
298
312
|
onInitSQL: "Use `onInitSQL` only for SQL initialization that cannot be expressed by `tableConfig`.",
|
|
299
313
|
onMount: "Use `onMount` for startup integration work and return cleanup logic when resources are opened.",
|
|
314
|
+
services: "Register Docker-backed runtimes with `services` so Prostgles can expose and control them.",
|
|
300
315
|
tableConfig: "Define tables and columns in `tableConfig`, including constraints and indexes.",
|
|
301
316
|
tableConfigMigrations: "For schema changes that transform existing data, increment `tableConfigMigrations.version` and use `onMigrate`.",
|
|
302
317
|
tableHooks: "Define `tableHooks` as a separate top-level config property.",
|
|
@@ -309,9 +324,13 @@ const connectionGuidance = {
|
|
|
309
324
|
table_options: "Populate `connection.table_options` for every user-facing table so data renders clearly. Add useful labels and icons, column renderers and styles, and a practical `card` layout with header, subheader, avatar, and visible columns where appropriate.",
|
|
310
325
|
};
|
|
311
326
|
const getCliAgentsFile = () => `
|
|
312
|
-
# Prostgles
|
|
327
|
+
# Prostgles application
|
|
313
328
|
|
|
314
|
-
|
|
329
|
+
This repository is a Prostgles config project: a typed TypeScript definition of a PostgreSQL-backed application or internal tool. Prostgles is the framework, not the application itself. It makes internal tools easier to build by providing the web UI, authentication, realtime transport, database connections, and deployment lifecycle; the user decides what the application does and this repository defines it.
|
|
330
|
+
|
|
331
|
+
This project owns the application's database schema and behavior: permissions, display options, workspaces, server functions, hooks, migrations, and optional Docker services. There is normally no separate frontend or HTTP server to build; Prostgles derives the database UI and typed client API from this config.
|
|
332
|
+
|
|
333
|
+
Treat \`src/index.ts\` as the composition root. Keep feature definitions in focused modules under \`src/\`, then assemble them into the default-exported config. Treat \`generated/DBGeneratedSchema.ts\` as generated output: use its types, but do not hand-edit it. Keep credentials and database URLs in \`.env\`, never in the config.
|
|
315
334
|
|
|
316
335
|
## Config structure
|
|
317
336
|
|
|
@@ -324,10 +343,17 @@ const getCliAgentsFile = () => `
|
|
|
324
343
|
- ${schemaConfigGuidance.watchSchemaType}
|
|
325
344
|
- ${schemaConfigGuidance.onInitSQL} ${schemaConfigGuidance.onMount}
|
|
326
345
|
|
|
346
|
+
## Services
|
|
347
|
+
|
|
348
|
+
- If a server function needs a non-Node.js runtime or system dependencies, implement that work as a service instead of running it directly in the function.
|
|
349
|
+
- Define services under \`src/services/<serviceName>/\`, with the typed \`*.service.ts\` definition beside a \`src/\` Docker build context. Declare a health check and typed endpoints for every operation the app calls.
|
|
350
|
+
- Register each service in \`src/serviceManager.ts\` and expose its config through the top-level \`services\` property. Service names must not collide with built-in Prostgles services or another app service.
|
|
351
|
+
- Use the \`serviceManager\` provided to \`onMount\` and call \`getServiceWithRetries(serviceName)\` before using an endpoint. This is the host-owned instance shown in the Prostgles Services UI; do not construct another \`ServiceManager\`.
|
|
352
|
+
|
|
327
353
|
## Typed database object
|
|
328
354
|
|
|
329
355
|
- The Prostgles \`dbo\` object available in \`onMount\`, \`tableHooks\`, and server functions is \`DBOFullyTyped<DBGeneratedSchema>\`. Table names, columns, filters, selects, inserts, updates, and results are fully typed.
|
|
330
|
-
- Keep the schema generic connected when moving code into separate modules. Use \`ProstglesOnMount<DBGeneratedSchema>\` for \`onMount
|
|
356
|
+
- Keep the schema generic connected when moving code into separate modules. Use \`ProstglesOnMount<DBGeneratedSchema, typeof services>\` for an \`onMount\` module that uses app services, \`TableHooks<DBGeneratedSchema>\` for hooks, and the typed function definers for functions.
|
|
331
357
|
- Prefer typed \`dbo\` table handlers and let TypeScript infer values. Casts should be very rare; before adding one, check the table definition, JSONB schema, generated schema, and helper generic.
|
|
332
358
|
- Every table and view handler supports realtime \`subscribe\` and \`subscribeOne\`, for example \`dbo.orders.subscribe(filter, params, onData)\`. Prefer subscriptions over polling the database. Keep the returned subscription handler and call \`unsubscribe()\` during cleanup; an \`onMount\` callback can return that cleanup function.
|
|
333
359
|
|
|
@@ -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,2BAA8C;AAEvC,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;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,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
|
|
1
|
+
{"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"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"}
|