@rocicorp/zero 1.6.0-canary.9 → 1.6.1
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/out/analyze-query/src/analyze-cli.d.ts.map +1 -1
- package/out/analyze-query/src/analyze-cli.js +13 -3
- package/out/analyze-query/src/analyze-cli.js.map +1 -1
- package/out/zero/package.js +2 -2
- package/out/zero/package.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +17 -2
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +9 -3
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +11 -2
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js +32 -3
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker.js +3 -3
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.js +3 -0
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +2 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +14 -0
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +24 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { LogContext } from '@rocicorp/logger';
|
|
2
|
+
import type { QueryServerMetrics } from '../../../../zero-protocol/src/inspect-down.ts';
|
|
2
3
|
import type { InspectUpBody } from '../../../../zero-protocol/src/inspect-up.ts';
|
|
3
4
|
import type { NormalizedZeroConfig } from '../../config/normalize.ts';
|
|
4
5
|
import type { InspectorDelegate } from '../../server/inspector-delegate.ts';
|
|
@@ -7,4 +8,17 @@ import type { ConnectionContext } from './connection-context-manager.ts';
|
|
|
7
8
|
import type { CVRStore } from './cvr-store.ts';
|
|
8
9
|
import type { CVRSnapshot } from './cvr.ts';
|
|
9
10
|
export declare function handleInspect(lc: LogContext, body: InspectUpBody, cvr: CVRSnapshot, client: ClientHandler, inspectorDelegate: InspectorDelegate, clientGroupID: string, cvrStore: CVRStore, config: NormalizedZeroConfig, ctx: ConnectionContext): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Converts per-query server metrics to the appropriate wire format based on the
|
|
13
|
+
* client's protocol version.
|
|
14
|
+
*
|
|
15
|
+
* Protocol >= 51: new format — `query-hydration-server-ms` (plain number) +
|
|
16
|
+
* `query-update-server` (TDigest).
|
|
17
|
+
* Protocol < 51: old format — `query-materialization-server` (TDigest) +
|
|
18
|
+
* `query-update-server` (TDigest). The scalar hydration time is wrapped into a
|
|
19
|
+
* one-point TDigest for backward compatibility.
|
|
20
|
+
*
|
|
21
|
+
* @visibleForTesting
|
|
22
|
+
*/
|
|
23
|
+
export declare function metricsForProtocol(metrics: QueryServerMetrics | null, protocolVersion: number): QueryServerMetrics | null;
|
|
10
24
|
//# sourceMappingURL=inspect-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect-handler.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/inspect-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"inspect-handler.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/inspect-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6CAA6C,CAAC;AAG/E,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAMpE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AAE1E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAE1C,wBAAsB,aAAa,CACjC,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,IAAI,CAAC,CAgJf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,kBAAkB,GAAG,IAAI,EAClC,eAAe,EAAE,MAAM,GACtB,kBAAkB,GAAG,IAAI,CAmB3B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { unreachable } from "../../../../shared/src/asserts.js";
|
|
2
2
|
import { must } from "../../../../shared/src/must.js";
|
|
3
|
+
import { TDigest } from "../../../../shared/src/tdigest.js";
|
|
3
4
|
import { getServerVersion, isAdminPasswordValid } from "../../config/zero-config.js";
|
|
4
5
|
import { Database } from "../../../../zqlite/src/db.js";
|
|
5
6
|
import { loadPermissions } from "../../auth/load-permissions.js";
|
|
@@ -23,7 +24,7 @@ async function handleInspect(lc, body, cvr, client, inspectorDelegate, clientGro
|
|
|
23
24
|
const enhancedRows = (await cvrStore.inspectQueries(lc, cvr.ttlClock, body.clientID)).map((row) => ({
|
|
24
25
|
...row,
|
|
25
26
|
ast: row.ast ?? inspectorDelegate.getASTForQuery(row.queryID) ?? null,
|
|
26
|
-
metrics: inspectorDelegate.getMetricsJSONForQuery(row.queryID)
|
|
27
|
+
metrics: metricsForProtocol(inspectorDelegate.getMetricsJSONForQuery(row.queryID), ctx.protocolVersion)
|
|
27
28
|
}));
|
|
28
29
|
client.sendInspectResponse(lc, {
|
|
29
30
|
op: "queries",
|
|
@@ -96,6 +97,28 @@ async function handleInspect(lc, body, cvr, client, inspectorDelegate, clientGro
|
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Converts per-query server metrics to the appropriate wire format based on the
|
|
102
|
+
* client's protocol version.
|
|
103
|
+
*
|
|
104
|
+
* Protocol >= 51: new format — `query-hydration-server-ms` (plain number) +
|
|
105
|
+
* `query-update-server` (TDigest).
|
|
106
|
+
* Protocol < 51: old format — `query-materialization-server` (TDigest) +
|
|
107
|
+
* `query-update-server` (TDigest). The scalar hydration time is wrapped into a
|
|
108
|
+
* one-point TDigest for backward compatibility.
|
|
109
|
+
*
|
|
110
|
+
* @visibleForTesting
|
|
111
|
+
*/
|
|
112
|
+
function metricsForProtocol(metrics, protocolVersion) {
|
|
113
|
+
if (protocolVersion >= 51 || metrics === null) return metrics;
|
|
114
|
+
const hydrateDigest = new TDigest();
|
|
115
|
+
const hydrateMs = metrics["query-hydration-server-ms"];
|
|
116
|
+
if (hydrateMs !== void 0) hydrateDigest.add(hydrateMs);
|
|
117
|
+
return {
|
|
118
|
+
"query-materialization-server": hydrateDigest.toJSON(),
|
|
119
|
+
"query-update-server": metrics["query-update-server"]
|
|
120
|
+
};
|
|
121
|
+
}
|
|
99
122
|
//#endregion
|
|
100
123
|
export { handleInspect };
|
|
101
124
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect-handler.js","names":[],"sources":["../../../../../../zero-cache/src/services/view-syncer/inspect-handler.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {unreachable} from '../../../../shared/src/asserts.ts';\nimport {must} from '../../../../shared/src/must.ts';\nimport type {InspectUpBody} from '../../../../zero-protocol/src/inspect-up.ts';\nimport {Database} from '../../../../zqlite/src/db.ts';\nimport {loadPermissions} from '../../auth/load-permissions.ts';\nimport type {NormalizedZeroConfig} from '../../config/normalize.ts';\nimport {\n getServerVersion,\n isAdminPasswordValid,\n} from '../../config/zero-config.ts';\nimport {StatementRunner} from '../../db/statements.ts';\nimport type {InspectorDelegate} from '../../server/inspector-delegate.ts';\nimport {analyzeQuery} from '../analyze.ts';\nimport type {ClientHandler} from './client-handler.ts';\nimport type {ConnectionContext} from './connection-context-manager.ts';\nimport type {CVRStore} from './cvr-store.ts';\nimport type {CVRSnapshot} from './cvr.ts';\n\nexport async function handleInspect(\n lc: LogContext,\n body: InspectUpBody,\n cvr: CVRSnapshot,\n client: ClientHandler,\n inspectorDelegate: InspectorDelegate,\n clientGroupID: string,\n cvrStore: CVRStore,\n config: NormalizedZeroConfig,\n ctx: ConnectionContext,\n): Promise<void> {\n // Check if the client is already authenticated. We only authenticate the clientGroup\n // once per \"worker\".\n if (\n body.op !== 'authenticate' &&\n !inspectorDelegate.isAuthenticated(clientGroupID)\n ) {\n lc.info?.(\n 'Client not authenticated to access the inspector protocol. Sending authentication challenge',\n );\n client.sendInspectResponse(lc, {\n op: 'authenticated',\n id: body.id,\n value: false,\n });\n return;\n }\n\n try {\n switch (body.op) {\n case 'queries': {\n const queryRows = await cvrStore.inspectQueries(\n lc,\n cvr.ttlClock,\n body.clientID,\n );\n\n // Enhance query rows with server-side materialization metrics\n const enhancedRows = queryRows.map(row => ({\n ...row,\n ast: row.ast ?? inspectorDelegate.getASTForQuery(row.queryID) ?? null,\n metrics: inspectorDelegate.getMetricsJSONForQuery(row.queryID),\n }));\n\n client.sendInspectResponse(lc, {\n op: 'queries',\n id: body.id,\n value: enhancedRows,\n });\n break;\n }\n\n case 'metrics': {\n client.sendInspectResponse(lc, {\n op: 'metrics',\n id: body.id,\n value: inspectorDelegate.getMetricsJSON(),\n });\n break;\n }\n\n case 'version':\n client.sendInspectResponse(lc, {\n op: 'version',\n id: body.id,\n value: getServerVersion(config),\n });\n break;\n\n case 'authenticate': {\n const password = body.value;\n const ok = isAdminPasswordValid(lc, config, password);\n if (ok) {\n inspectorDelegate.setAuthenticated(clientGroupID);\n } else {\n inspectorDelegate.clearAuthenticated(clientGroupID);\n }\n\n client.sendInspectResponse(lc, {\n op: 'authenticated',\n id: body.id,\n value: ok,\n });\n\n break;\n }\n\n case 'analyze-query': {\n let ast = body.ast ?? body.value;\n let legacyQuery = true;\n\n if (body.name && body.args) {\n // Get the AST from the API server by transforming the named query\n ast = await inspectorDelegate.transformCustomQuery(\n body.name,\n body.args,\n ctx,\n );\n legacyQuery = false;\n }\n\n if (ast === undefined) {\n throw new Error(\n 'AST is required for analyze-query operation. Either provide an AST directly or ensure custom query transformation is configured.',\n );\n }\n\n let permissions;\n if (legacyQuery) {\n using db = new Database(lc, config.replica.file);\n const dbRunner = new StatementRunner(db);\n const loaded = loadPermissions(lc, dbRunner, config.app.id, config);\n if (loaded.permissions) {\n permissions = loaded.permissions;\n } else {\n lc.info?.(\n 'No permissions loaded; analyze-query will run without applying permissions.',\n );\n }\n }\n\n const result = await analyzeQuery(\n lc,\n config,\n must(cvr.clientSchema),\n ast,\n body.options?.syncedRows,\n body.options?.vendedRows,\n permissions,\n ctx.auth?.type === 'jwt' ? ctx.auth : undefined,\n body.options?.joinPlans,\n );\n client.sendInspectResponse(lc, {\n op: 'analyze-query',\n id: body.id,\n value: result,\n });\n break;\n }\n\n default:\n unreachable(body);\n }\n } catch (e) {\n lc.warn?.('Error handling inspect message', e);\n client.sendInspectResponse(lc, {\n op: 'error',\n id: body.id,\n value: (e as Error).message,\n });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"inspect-handler.js","names":[],"sources":["../../../../../../zero-cache/src/services/view-syncer/inspect-handler.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {unreachable} from '../../../../shared/src/asserts.ts';\nimport {must} from '../../../../shared/src/must.ts';\nimport {TDigest} from '../../../../shared/src/tdigest.ts';\nimport type {\n QueryServerMetrics,\n ServerMetrics,\n} from '../../../../zero-protocol/src/inspect-down.ts';\nimport type {InspectUpBody} from '../../../../zero-protocol/src/inspect-up.ts';\nimport {Database} from '../../../../zqlite/src/db.ts';\nimport {loadPermissions} from '../../auth/load-permissions.ts';\nimport type {NormalizedZeroConfig} from '../../config/normalize.ts';\nimport {\n getServerVersion,\n isAdminPasswordValid,\n} from '../../config/zero-config.ts';\nimport {StatementRunner} from '../../db/statements.ts';\nimport type {InspectorDelegate} from '../../server/inspector-delegate.ts';\nimport {analyzeQuery} from '../analyze.ts';\nimport type {ClientHandler} from './client-handler.ts';\nimport type {ConnectionContext} from './connection-context-manager.ts';\nimport type {CVRStore} from './cvr-store.ts';\nimport type {CVRSnapshot} from './cvr.ts';\n\nexport async function handleInspect(\n lc: LogContext,\n body: InspectUpBody,\n cvr: CVRSnapshot,\n client: ClientHandler,\n inspectorDelegate: InspectorDelegate,\n clientGroupID: string,\n cvrStore: CVRStore,\n config: NormalizedZeroConfig,\n ctx: ConnectionContext,\n): Promise<void> {\n // Check if the client is already authenticated. We only authenticate the clientGroup\n // once per \"worker\".\n if (\n body.op !== 'authenticate' &&\n !inspectorDelegate.isAuthenticated(clientGroupID)\n ) {\n lc.info?.(\n 'Client not authenticated to access the inspector protocol. Sending authentication challenge',\n );\n client.sendInspectResponse(lc, {\n op: 'authenticated',\n id: body.id,\n value: false,\n });\n return;\n }\n\n try {\n switch (body.op) {\n case 'queries': {\n const queryRows = await cvrStore.inspectQueries(\n lc,\n cvr.ttlClock,\n body.clientID,\n );\n\n // Enhance query rows with server-side materialization metrics\n const enhancedRows = queryRows.map(row => ({\n ...row,\n ast: row.ast ?? inspectorDelegate.getASTForQuery(row.queryID) ?? null,\n metrics: metricsForProtocol(\n inspectorDelegate.getMetricsJSONForQuery(row.queryID),\n ctx.protocolVersion,\n ),\n }));\n\n client.sendInspectResponse(lc, {\n op: 'queries',\n id: body.id,\n value: enhancedRows,\n });\n break;\n }\n\n case 'metrics': {\n client.sendInspectResponse(lc, {\n op: 'metrics',\n id: body.id,\n value: inspectorDelegate.getMetricsJSON(),\n });\n break;\n }\n\n case 'version':\n client.sendInspectResponse(lc, {\n op: 'version',\n id: body.id,\n value: getServerVersion(config),\n });\n break;\n\n case 'authenticate': {\n const password = body.value;\n const ok = isAdminPasswordValid(lc, config, password);\n if (ok) {\n inspectorDelegate.setAuthenticated(clientGroupID);\n } else {\n inspectorDelegate.clearAuthenticated(clientGroupID);\n }\n\n client.sendInspectResponse(lc, {\n op: 'authenticated',\n id: body.id,\n value: ok,\n });\n\n break;\n }\n\n case 'analyze-query': {\n let ast = body.ast ?? body.value;\n let legacyQuery = true;\n\n if (body.name && body.args) {\n // Get the AST from the API server by transforming the named query\n ast = await inspectorDelegate.transformCustomQuery(\n body.name,\n body.args,\n ctx,\n );\n legacyQuery = false;\n }\n\n if (ast === undefined) {\n throw new Error(\n 'AST is required for analyze-query operation. Either provide an AST directly or ensure custom query transformation is configured.',\n );\n }\n\n let permissions;\n if (legacyQuery) {\n using db = new Database(lc, config.replica.file);\n const dbRunner = new StatementRunner(db);\n const loaded = loadPermissions(lc, dbRunner, config.app.id, config);\n if (loaded.permissions) {\n permissions = loaded.permissions;\n } else {\n lc.info?.(\n 'No permissions loaded; analyze-query will run without applying permissions.',\n );\n }\n }\n\n const result = await analyzeQuery(\n lc,\n config,\n must(cvr.clientSchema),\n ast,\n body.options?.syncedRows,\n body.options?.vendedRows,\n permissions,\n ctx.auth?.type === 'jwt' ? ctx.auth : undefined,\n body.options?.joinPlans,\n );\n client.sendInspectResponse(lc, {\n op: 'analyze-query',\n id: body.id,\n value: result,\n });\n break;\n }\n\n default:\n unreachable(body);\n }\n } catch (e) {\n lc.warn?.('Error handling inspect message', e);\n client.sendInspectResponse(lc, {\n op: 'error',\n id: body.id,\n value: (e as Error).message,\n });\n }\n}\n\n/**\n * Converts per-query server metrics to the appropriate wire format based on the\n * client's protocol version.\n *\n * Protocol >= 51: new format — `query-hydration-server-ms` (plain number) +\n * `query-update-server` (TDigest).\n * Protocol < 51: old format — `query-materialization-server` (TDigest) +\n * `query-update-server` (TDigest). The scalar hydration time is wrapped into a\n * one-point TDigest for backward compatibility.\n *\n * @visibleForTesting\n */\nexport function metricsForProtocol(\n metrics: QueryServerMetrics | null,\n protocolVersion: number,\n): QueryServerMetrics | null {\n if (protocolVersion >= 51 || metrics === null) {\n return metrics;\n }\n // Backward compat: wrap the scalar hydration ms into a one-point TDigest\n // under the old field name so that 1.5 clients can parse the response.\n const hydrateDigest = new TDigest();\n const hydrateMs = metrics['query-hydration-server-ms'];\n if (hydrateMs !== undefined) {\n hydrateDigest.add(hydrateMs);\n }\n const legacyMetrics: ServerMetrics = {\n 'query-materialization-server': hydrateDigest.toJSON(),\n 'query-update-server': metrics['query-update-server'],\n };\n // Cast to QueryServerMetrics: this is intentional — for old-protocol clients\n // we send the legacy ServerMetrics wire shape under the QueryServerMetrics type\n // to satisfy TypeScript while preserving backward compatibility.\n return legacyMetrics as unknown as QueryServerMetrics;\n}\n"],"mappings":";;;;;;;;;;AAwBA,eAAsB,cACpB,IACA,MACA,KACA,QACA,mBACA,eACA,UACA,QACA,KACe;AAGf,KACE,KAAK,OAAO,kBACZ,CAAC,kBAAkB,gBAAgB,cAAc,EACjD;AACA,KAAG,OACD,8FACD;AACD,SAAO,oBAAoB,IAAI;GAC7B,IAAI;GACJ,IAAI,KAAK;GACT,OAAO;GACR,CAAC;AACF;;AAGF,KAAI;AACF,UAAQ,KAAK,IAAb;GACE,KAAK,WAAW;IAQd,MAAM,gBAPY,MAAM,SAAS,eAC/B,IACA,IAAI,UACJ,KAAK,SACN,EAG8B,KAAI,SAAQ;KACzC,GAAG;KACH,KAAK,IAAI,OAAO,kBAAkB,eAAe,IAAI,QAAQ,IAAI;KACjE,SAAS,mBACP,kBAAkB,uBAAuB,IAAI,QAAQ,EACrD,IAAI,gBACL;KACF,EAAE;AAEH,WAAO,oBAAoB,IAAI;KAC7B,IAAI;KACJ,IAAI,KAAK;KACT,OAAO;KACR,CAAC;AACF;;GAGF,KAAK;AACH,WAAO,oBAAoB,IAAI;KAC7B,IAAI;KACJ,IAAI,KAAK;KACT,OAAO,kBAAkB,gBAAgB;KAC1C,CAAC;AACF;GAGF,KAAK;AACH,WAAO,oBAAoB,IAAI;KAC7B,IAAI;KACJ,IAAI,KAAK;KACT,OAAO,iBAAiB,OAAO;KAChC,CAAC;AACF;GAEF,KAAK,gBAAgB;IACnB,MAAM,WAAW,KAAK;IACtB,MAAM,KAAK,qBAAqB,IAAI,QAAQ,SAAS;AACrD,QAAI,GACF,mBAAkB,iBAAiB,cAAc;QAEjD,mBAAkB,mBAAmB,cAAc;AAGrD,WAAO,oBAAoB,IAAI;KAC7B,IAAI;KACJ,IAAI,KAAK;KACT,OAAO;KACR,CAAC;AAEF;;GAGF,KAAK,iBAAiB;IACpB,IAAI,MAAM,KAAK,OAAO,KAAK;IAC3B,IAAI,cAAc;AAElB,QAAI,KAAK,QAAQ,KAAK,MAAM;AAE1B,WAAM,MAAM,kBAAkB,qBAC5B,KAAK,MACL,KAAK,MACL,IACD;AACD,mBAAc;;AAGhB,QAAI,QAAQ,KAAA,EACV,OAAM,IAAI,MACR,mIACD;IAGH,IAAI;AACJ,QAAI,YAAa,KAAA;;KAGf,MAAM,SAAS,gBAAgB,IADd,IAAI,gBAAA,YAAA,EADV,IAAI,SAAS,IAAI,OAAO,QAAQ,KAAK,CAAA,CACR,EACK,OAAO,IAAI,IAAI,OAAO;AACnE,SAAI,OAAO,YACT,eAAc,OAAO;SAErB,IAAG,OACD,8EACD;;;;;;IAIL,MAAM,SAAS,MAAM,aACnB,IACA,QACA,KAAK,IAAI,aAAa,EACtB,KACA,KAAK,SAAS,YACd,KAAK,SAAS,YACd,aACA,IAAI,MAAM,SAAS,QAAQ,IAAI,OAAO,KAAA,GACtC,KAAK,SAAS,UACf;AACD,WAAO,oBAAoB,IAAI;KAC7B,IAAI;KACJ,IAAI,KAAK;KACT,OAAO;KACR,CAAC;AACF;;GAGF,QACE,aAAY,KAAK;;UAEd,GAAG;AACV,KAAG,OAAO,kCAAkC,EAAE;AAC9C,SAAO,oBAAoB,IAAI;GAC7B,IAAI;GACJ,IAAI,KAAK;GACT,OAAQ,EAAY;GACrB,CAAC;;;;;;;;;;;;;;;AAgBN,SAAgB,mBACd,SACA,iBAC2B;AAC3B,KAAI,mBAAmB,MAAM,YAAY,KACvC,QAAO;CAIT,MAAM,gBAAgB,IAAI,SAAS;CACnC,MAAM,YAAY,QAAQ;AAC1B,KAAI,cAAc,KAAA,EAChB,eAAc,IAAI,UAAU;AAS9B,QAPqC;EACnC,gCAAgC,cAAc,QAAQ;EACtD,uBAAuB,QAAQ;EAChC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocicorp/zero",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "Zero is a web framework for serverless web development.",
|
|
5
5
|
"homepage": "https://zero.rocicorp.dev",
|
|
6
6
|
"bugs": {
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
"@rocicorp/lock": "^1.0.4",
|
|
141
141
|
"@rocicorp/logger": "^5.4.0",
|
|
142
142
|
"@rocicorp/resolver": "^1.0.2",
|
|
143
|
-
"@rocicorp/zero-sqlite3": "^1.
|
|
143
|
+
"@rocicorp/zero-sqlite3": "^1.1.2",
|
|
144
144
|
"@standard-schema/spec": "^1.0.0",
|
|
145
145
|
"@types/basic-auth": "^1.1.8",
|
|
146
146
|
"@types/ws": "^8.5.12",
|