@rocicorp/zero 0.6.2024112102 → 0.7.2024120100
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/advanced.js +1 -1
- package/out/{chunk-QB7G63C6.js → chunk-4XX2NVJ7.js} +737 -738
- package/out/{chunk-QB7G63C6.js.map → chunk-4XX2NVJ7.js.map} +4 -4
- package/out/{chunk-5UY46OAF.js → chunk-C7M3BJ3Z.js} +16 -8
- package/out/chunk-C7M3BJ3Z.js.map +7 -0
- package/out/shared/src/expand.js +2 -0
- package/out/shared/src/expand.js.map +1 -0
- package/out/shared/src/immutable.js +2 -0
- package/out/shared/src/immutable.js.map +1 -0
- package/out/{zero-cache/src/config/config.d.ts → shared/src/options.d.ts} +3 -5
- package/out/shared/src/options.d.ts.map +1 -0
- package/out/{zero-cache/src/config/config.js → shared/src/options.js} +26 -26
- package/out/shared/src/options.js.map +1 -0
- package/out/shared/src/sorted-entries.js +6 -0
- package/out/shared/src/sorted-entries.js.map +1 -0
- package/out/shared/src/writable.js +2 -0
- package/out/shared/src/writable.js.map +1 -0
- package/out/solid.js +2 -2
- package/out/zero/src/build-schema.d.ts +3 -0
- package/out/zero/src/build-schema.d.ts.map +1 -0
- package/out/zero/src/build-schema.js +3 -0
- package/out/zero/src/build-schema.js.map +1 -0
- package/out/zero-cache/src/auth/load-schema.d.ts +8 -0
- package/out/zero-cache/src/auth/load-schema.d.ts.map +1 -0
- package/out/zero-cache/src/auth/load-schema.js +35 -0
- package/out/zero-cache/src/auth/load-schema.js.map +1 -0
- package/out/zero-cache/src/auth/read-authorizer.d.ts +25 -0
- package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -0
- package/out/zero-cache/src/auth/read-authorizer.js +126 -0
- package/out/zero-cache/src/auth/read-authorizer.js.map +1 -0
- package/out/zero-cache/src/auth/write-authorizer.d.ts +20 -0
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -0
- package/out/zero-cache/src/auth/write-authorizer.js +320 -0
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -0
- package/out/zero-cache/src/config/zero-config.d.ts +14 -4
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +27 -14
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/server/main.js +7 -0
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +4 -3
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runtime.d.ts +3 -0
- package/out/zero-cache/src/server/runtime.d.ts.map +1 -0
- package/out/zero-cache/src/server/runtime.js +19 -0
- package/out/zero-cache/src/server/runtime.js.map +1 -0
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +7 -6
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +7 -6
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +19 -33
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +2 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +11 -8
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +17 -8
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +357 -94
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +15 -10
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +42 -23
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +2 -2
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +22 -0
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +33 -7
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +44 -5
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +1 -0
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +3 -0
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +5 -0
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +9 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +167 -50
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +6 -0
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +16 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts +2 -3
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +4 -3
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +3 -1
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +2 -0
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +13 -3
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/options.d.ts +37 -8
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.d.ts +16 -1
- package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +7 -55
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +2 -2
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-protocol/src/ast-hash.js +14 -0
- package/out/zero-protocol/src/ast-hash.js.map +1 -0
- package/out/zero-protocol/src/ast.d.ts +9 -9
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +11 -12
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +4 -4
- package/out/zero-protocol/src/poke.d.ts +16 -8
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +8 -2
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-schema/src/build-schema.d.ts +14 -0
- package/out/zero-schema/src/build-schema.d.ts.map +1 -0
- package/out/zero-schema/src/build-schema.js +55 -0
- package/out/zero-schema/src/build-schema.js.map +1 -0
- package/out/zero-schema/src/compiled-permissions.d.ts +480 -0
- package/out/zero-schema/src/compiled-permissions.d.ts.map +1 -0
- package/out/zero-schema/src/compiled-permissions.js +20 -0
- package/out/zero-schema/src/compiled-permissions.js.map +1 -0
- package/out/zero-schema/src/mod.d.ts +1 -1
- package/out/zero-schema/src/mod.d.ts.map +1 -1
- package/out/zero-schema/src/normalize-table-schema.d.ts +19 -17
- package/out/zero-schema/src/normalize-table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/normalize-table-schema.js +92 -0
- package/out/zero-schema/src/normalize-table-schema.js.map +1 -0
- package/out/zero-schema/src/normalized-schema.d.ts +6 -1
- package/out/zero-schema/src/normalized-schema.d.ts.map +1 -1
- package/out/zero-schema/src/normalized-schema.js +31 -0
- package/out/zero-schema/src/normalized-schema.js.map +1 -0
- package/out/zero-schema/src/permissions.d.ts +32 -0
- package/out/zero-schema/src/permissions.d.ts.map +1 -0
- package/out/zero-schema/src/schema-config.d.ts +43 -0
- package/out/zero-schema/src/schema-config.d.ts.map +1 -0
- package/out/zero-schema/src/schema-config.js +79 -0
- package/out/zero-schema/src/schema-config.js.map +1 -0
- package/out/zero-schema/src/schema.js +4 -0
- package/out/zero-schema/src/schema.js.map +1 -0
- package/out/zero-schema/src/table-schema.d.ts +15 -20
- package/out/zero-schema/src/table-schema.d.ts.map +1 -1
- package/out/zero-schema/src/table-schema.js +15 -2
- package/out/zero-schema/src/table-schema.js.map +1 -1
- package/out/zero.js +4 -4
- package/out/zql/src/builder/builder.d.ts +2 -2
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +15 -17
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/filter.d.ts +25 -2
- package/out/zql/src/builder/filter.d.ts.map +1 -1
- package/out/zql/src/builder/filter.js +91 -1
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/ivm/array-view.js +70 -0
- package/out/zql/src/ivm/array-view.js.map +1 -0
- package/out/zql/src/ivm/change.d.ts +18 -6
- package/out/zql/src/ivm/change.d.ts.map +1 -1
- package/out/zql/src/ivm/change.js +1 -1
- package/out/zql/src/ivm/change.js.map +1 -1
- package/out/zql/src/ivm/constraint.d.ts +14 -0
- package/out/zql/src/ivm/constraint.d.ts.map +1 -0
- package/out/zql/src/ivm/constraint.js +60 -0
- package/out/zql/src/ivm/constraint.js.map +1 -0
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +19 -2
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts +11 -5
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +49 -95
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +4 -13
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +5 -22
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +61 -83
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +7 -10
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +1 -1
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts +3 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +95 -95
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +168 -0
- package/out/zql/src/ivm/view-apply-change.js.map +1 -0
- package/out/zql/src/ivm/view.js +2 -0
- package/out/zql/src/ivm/view.js.map +1 -0
- package/out/zql/src/query/auth-query.d.ts +3 -5
- package/out/zql/src/query/auth-query.d.ts.map +1 -1
- package/out/zql/src/query/auth-query.js +30 -0
- package/out/zql/src/query/auth-query.js.map +1 -0
- package/out/zql/src/query/dnf.js +57 -0
- package/out/zql/src/query/dnf.js.map +1 -0
- package/out/zql/src/query/expression.js +155 -0
- package/out/zql/src/query/expression.js.map +1 -0
- package/out/zql/src/query/query-impl.d.ts +4 -1
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +353 -0
- package/out/zql/src/query/query-impl.js.map +1 -0
- package/out/zql/src/query/query-internal.js +2 -0
- package/out/zql/src/query/query-internal.js.map +1 -0
- package/out/zql/src/query/query.js +3 -0
- package/out/zql/src/query/query.js.map +1 -0
- package/out/zql/src/query/typed-view.js +2 -0
- package/out/zql/src/query/typed-view.js.map +1 -0
- package/out/zqlite/src/table-source.d.ts +2 -11
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +33 -82
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +5 -3
- package/out/chunk-5UY46OAF.js.map +0 -7
- package/out/zero-cache/src/auth/load-authorization.d.ts +0 -4
- package/out/zero-cache/src/auth/load-authorization.d.ts.map +0 -1
- package/out/zero-cache/src/auth/load-authorization.js +0 -20
- package/out/zero-cache/src/auth/load-authorization.js.map +0 -1
- package/out/zero-cache/src/config/config.d.ts.map +0 -1
- package/out/zero-cache/src/config/config.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +0 -21
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js +0 -168
- package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +0 -1
- package/out/zero-schema/src/authorization.d.ts +0 -25
- package/out/zero-schema/src/authorization.d.ts.map +0 -1
- package/out/zero-schema/src/compiled-authorization.d.ts +0 -561
- package/out/zero-schema/src/compiled-authorization.d.ts.map +0 -1
- package/out/zero-schema/src/compiled-authorization.js +0 -15
- package/out/zero-schema/src/compiled-authorization.js.map +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as v from '../../shared/src/valita.js';
|
|
2
|
+
import { conditionSchema } from '../../zero-protocol/src/ast.js';
|
|
3
|
+
const ruleSchema = v.tuple([v.literal('allow'), conditionSchema]);
|
|
4
|
+
const policySchema = v.array(ruleSchema);
|
|
5
|
+
const assetSchema = v.object({
|
|
6
|
+
select: policySchema.optional(),
|
|
7
|
+
insert: policySchema.optional(),
|
|
8
|
+
update: v
|
|
9
|
+
.object({
|
|
10
|
+
preMutation: policySchema.optional(),
|
|
11
|
+
postProposedMutation: policySchema.optional(),
|
|
12
|
+
})
|
|
13
|
+
.optional(),
|
|
14
|
+
delete: policySchema.optional(),
|
|
15
|
+
});
|
|
16
|
+
export const permissionsConfigSchema = v.record(v.object({
|
|
17
|
+
row: assetSchema.optional(),
|
|
18
|
+
cell: v.record(assetSchema).optional(),
|
|
19
|
+
}));
|
|
20
|
+
//# sourceMappingURL=compiled-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiled-permissions.js","sourceRoot":"","sources":["../../../../zero-schema/src/compiled-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAE/D,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;AAElE,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAGzC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE;QACpC,oBAAoB,EAAE,YAAY,CAAC,QAAQ,EAAE;KAC9C,CAAC;SACD,QAAQ,EAAE;IACb,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { authQuery } from '../../zql/src/query/auth-query.js';
|
|
2
2
|
export { createTableSchema, type TableSchema, type TableSchemaToRow, } from './table-schema.js';
|
|
3
3
|
export * from './schema.js';
|
|
4
|
-
export {
|
|
4
|
+
export { definePermissions } from './permissions.js';
|
|
5
5
|
//# sourceMappingURL=mod.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CompoundKey } from '../../zero-protocol/src/ast.js';
|
|
1
2
|
import type { PrimaryKey } from '../../zero-protocol/src/primary-key.js';
|
|
2
3
|
import { type SchemaValue, type TableSchema } from './table-schema.js';
|
|
3
4
|
declare const normalized: unique symbol;
|
|
@@ -23,25 +24,26 @@ export declare function normalizeTableSchema(tableSchema: TableSchema | Normaliz
|
|
|
23
24
|
export declare function normalizeTableSchemaWithCache(tableSchema: TableSchema | NormalizedTableSchema, expectedName: string, tableSchemaCache: TableSchemaCache): NormalizedTableSchema;
|
|
24
25
|
export type NormalizedPrimaryKey = Normalized<PrimaryKey>;
|
|
25
26
|
export declare function normalizePrimaryKey(arr: PrimaryKey): NormalizedPrimaryKey;
|
|
26
|
-
type
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
export type DecycledNormalizedTableSchema = Omit<NormalizedTableSchema, 'relationships'> & {
|
|
28
|
+
readonly relationships: {
|
|
29
|
+
readonly [relationship: string]: DecycledNormalizedFieldRelationship | readonly [
|
|
30
|
+
DecycledNormalizedFieldRelationship,
|
|
31
|
+
DecycledNormalizedFieldRelationship
|
|
32
|
+
];
|
|
32
33
|
};
|
|
33
34
|
};
|
|
34
|
-
type
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
field: string;
|
|
43
|
-
schema: NormalizedTableSchema;
|
|
44
|
-
};
|
|
35
|
+
export type DecycledNormalizedFieldRelationship = Omit<NormalizedFieldRelationship, 'destSchema'> & {
|
|
36
|
+
readonly destSchema: string;
|
|
37
|
+
};
|
|
38
|
+
type NormalizedRelationship = NormalizedFieldRelationship | NormalizedJunctionRelationship;
|
|
39
|
+
type NormalizedFieldRelationship = {
|
|
40
|
+
sourceField: CompoundKey;
|
|
41
|
+
destField: CompoundKey;
|
|
42
|
+
destSchema: NormalizedTableSchema;
|
|
45
43
|
};
|
|
44
|
+
export type NormalizedJunctionRelationship = readonly [
|
|
45
|
+
NormalizedFieldRelationship,
|
|
46
|
+
NormalizedFieldRelationship
|
|
47
|
+
];
|
|
46
48
|
export {};
|
|
47
49
|
//# sourceMappingURL=normalize-table-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize-table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"normalize-table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAC;AAExC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG;IAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;AAEvE,qBAAa,qBAAqB;IAChC,SAAiB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE;QAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAC,CAAC;gBAE9D,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB;CAWzE;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,GAAG,qBAAqB,GAC/C,qBAAqB,CAMvB;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,WAAW,GAAG,qBAAqB,EAChD,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,qBAAqB,CAmBvB;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;AAS1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,oBAAoB,CAGzE;AA+CD,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,qBAAqB,EACrB,eAAe,CAChB,GAAG;IACF,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,EAAE,YAAY,EAAE,MAAM,GAC1B,mCAAmC,GACnC,SAAS;YACP,mCAAmC;YACnC,mCAAmC;SACpC,CAAC;KACP,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG,IAAI,CACpD,2BAA2B,EAC3B,YAAY,CACb,GAAG;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAAC;AAElC,KAAK,sBAAsB,GACvB,2BAA2B,GAC3B,8BAA8B,CAAC;AAcnC,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AAoBF,MAAM,MAAM,8BAA8B,GAAG,SAAS;IACpD,2BAA2B;IAC3B,2BAA2B;CAC5B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { assert } from '../../shared/src/asserts.js';
|
|
2
|
+
import { sortedEntries } from '../../shared/src/sorted-entries.js';
|
|
3
|
+
import { isFieldRelationship, } from './table-schema.js';
|
|
4
|
+
export class NormalizedTableSchema {
|
|
5
|
+
tableName;
|
|
6
|
+
primaryKey;
|
|
7
|
+
columns;
|
|
8
|
+
relationships;
|
|
9
|
+
constructor(tableSchema, tableSchemaCache) {
|
|
10
|
+
this.tableName = tableSchema.tableName;
|
|
11
|
+
const primaryKey = normalizePrimaryKey(tableSchema.primaryKey);
|
|
12
|
+
this.primaryKey = primaryKey;
|
|
13
|
+
this.columns = normalizeColumns(tableSchema.columns, primaryKey);
|
|
14
|
+
tableSchemaCache.set(tableSchema, this);
|
|
15
|
+
this.relationships = normalizeRelationships(tableSchema.relationships, tableSchemaCache);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function normalizeTableSchema(tableSchema) {
|
|
19
|
+
return normalizeTableSchemaWithCache(tableSchema, tableSchema.tableName, new Map());
|
|
20
|
+
}
|
|
21
|
+
export function normalizeTableSchemaWithCache(tableSchema, expectedName, tableSchemaCache) {
|
|
22
|
+
if (tableSchema instanceof NormalizedTableSchema) {
|
|
23
|
+
return tableSchema;
|
|
24
|
+
}
|
|
25
|
+
assert(tableSchema.tableName === expectedName, `Table name mismatch: "${tableSchema.tableName}" !== "${expectedName}"`);
|
|
26
|
+
let normalizedTableSchema = tableSchemaCache.get(tableSchema);
|
|
27
|
+
if (normalizedTableSchema) {
|
|
28
|
+
return normalizedTableSchema;
|
|
29
|
+
}
|
|
30
|
+
normalizedTableSchema = new NormalizedTableSchema(tableSchema, tableSchemaCache);
|
|
31
|
+
return normalizedTableSchema;
|
|
32
|
+
}
|
|
33
|
+
function assertNoDuplicates(arr) {
|
|
34
|
+
assert(new Set(arr).size === arr.length, 'Primary key must not contain duplicates');
|
|
35
|
+
}
|
|
36
|
+
export function normalizePrimaryKey(arr) {
|
|
37
|
+
assertNoDuplicates(arr);
|
|
38
|
+
return arr;
|
|
39
|
+
}
|
|
40
|
+
function normalizeColumns(columns, primaryKey) {
|
|
41
|
+
const rv = {};
|
|
42
|
+
for (const pk of primaryKey) {
|
|
43
|
+
const schemaValue = columns[pk];
|
|
44
|
+
assert(schemaValue, `Primary key column "${pk}" not found`);
|
|
45
|
+
const { type, optional } = schemaValue;
|
|
46
|
+
assert(!optional, `Primary key column "${pk}" cannot be optional`);
|
|
47
|
+
assert(type === 'string' || type === 'number' || type === 'boolean', `Primary key column "${pk}" must be a string, number, or boolean. Got ${type}`);
|
|
48
|
+
}
|
|
49
|
+
for (const [name, column] of sortedEntries(columns)) {
|
|
50
|
+
rv[name] = normalizeSchemaValue(column);
|
|
51
|
+
}
|
|
52
|
+
return rv;
|
|
53
|
+
}
|
|
54
|
+
function normalizeSchemaValue(value) {
|
|
55
|
+
return {
|
|
56
|
+
type: value.type,
|
|
57
|
+
optional: value.optional ?? false,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function normalizeRelationships(relationships, tableSchemaCache) {
|
|
61
|
+
const rv = {};
|
|
62
|
+
for (const [name, relationship] of sortedEntries(relationships)) {
|
|
63
|
+
rv[name] = normalizeRelationship(relationship, tableSchemaCache);
|
|
64
|
+
}
|
|
65
|
+
return rv;
|
|
66
|
+
}
|
|
67
|
+
function normalizeRelationship(relationship, tableSchemaCache) {
|
|
68
|
+
if (isFieldRelationship(relationship)) {
|
|
69
|
+
return normalizeFieldRelationship(relationship, tableSchemaCache);
|
|
70
|
+
}
|
|
71
|
+
return normalizeJunctionRelationship(relationship, tableSchemaCache);
|
|
72
|
+
}
|
|
73
|
+
function normalizeFieldRelationship(relationship, tableSchemaCache) {
|
|
74
|
+
assert(relationship.sourceField.length === relationship.destField.length, 'Source and destination fields must have the same length');
|
|
75
|
+
return {
|
|
76
|
+
sourceField: relationship.sourceField,
|
|
77
|
+
destField: relationship.destField,
|
|
78
|
+
destSchema: normalizeLazyTableSchema(relationship.destSchema, tableSchemaCache),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function normalizeJunctionRelationship(relationship, tableSchemaCache) {
|
|
82
|
+
return [
|
|
83
|
+
normalizeFieldRelationship(relationship[0], tableSchemaCache),
|
|
84
|
+
normalizeFieldRelationship(relationship[1], tableSchemaCache),
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
function normalizeLazyTableSchema(tableSchema, buildCache) {
|
|
88
|
+
const tableSchemaInstance = typeof tableSchema === 'function' ? tableSchema() : tableSchema;
|
|
89
|
+
return normalizeTableSchemaWithCache(tableSchemaInstance, tableSchemaInstance.tableName, // Don't care about name here.
|
|
90
|
+
buildCache);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=normalize-table-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalize-table-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAIjE,OAAO,EACL,mBAAmB,GAKpB,MAAM,mBAAmB,CAAC;AAY3B,MAAM,OAAO,qBAAqB;IAEvB,SAAS,CAAS;IAClB,UAAU,CAAuB;IACjC,OAAO,CAA8B;IACrC,aAAa,CAAoD;IAE1E,YAAY,WAAwB,EAAE,gBAAkC;QACtE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QACvC,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjE,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,GAAG,sBAAsB,CACzC,WAAW,CAAC,aAAa,EACzB,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAgD;IAEhD,OAAO,6BAA6B,CAClC,WAAW,EACX,WAAW,CAAC,SAAS,EACrB,IAAI,GAAG,EAAE,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,WAAgD,EAChD,YAAoB,EACpB,gBAAkC;IAElC,IAAI,WAAW,YAAY,qBAAqB,EAAE,CAAC;QACjD,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,CACJ,WAAW,CAAC,SAAS,KAAK,YAAY,EACtC,yBAAyB,WAAW,CAAC,SAAS,UAAU,YAAY,GAAG,CACxE,CAAC;IAEF,IAAI,qBAAqB,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9D,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,qBAA8C,CAAC;IACxD,CAAC;IAED,qBAAqB,GAAG,IAAI,qBAAqB,CAC/C,WAAW,EACX,gBAAgB,CACjB,CAAC;IACF,OAAO,qBAA8C,CAAC;AACxD,CAAC;AAID,SAAS,kBAAkB,CAAC,GAAsB;IAChD,MAAM,CACJ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAChC,yCAAyC,CAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAe;IACjD,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,GAA2B,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAoC,EACpC,UAAsB;IAEtB,MAAM,EAAE,GAA0C,EAAE,CAAC;IACrD,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,WAAW,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;QAC5D,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAC,GAAG,WAAW,CAAC;QACrC,MAAM,CAAC,CAAC,QAAQ,EAAE,uBAAuB,EAAE,sBAAsB,CAAC,CAAC;QACnE,MAAM,CACJ,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAC5D,uBAAuB,EAAE,+CAA+C,IAAI,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,EAAE,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAkB;IAC9C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;KAClC,CAAC;AACJ,CAAC;AAQD,SAAS,sBAAsB,CAC7B,aAA4B,EAC5B,gBAAkC;IAElC,MAAM,EAAE,GAAsC,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,EAAE,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AA2BD,SAAS,qBAAqB,CAC5B,YAA0B,EAC1B,gBAAkC;IAElC,IAAI,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,OAAO,0BAA0B,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,6BAA6B,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACvE,CAAC;AAQD,SAAS,0BAA0B,CACjC,YAAyD,EACzD,gBAAkC;IAElC,MAAM,CACJ,YAAY,CAAC,WAAW,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,CAAC,MAAM,EACjE,yDAAyD,CAC1D,CAAC;IACF,OAAO;QACL,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,UAAU,EAAE,wBAAwB,CAClC,YAAY,CAAC,UAAU,EACvB,gBAAgB,CACjB;KACF,CAAC;AACJ,CAAC;AAOD,SAAS,6BAA6B,CACpC,YAAyE,EACzE,gBAAkC;IAElC,OAAO;QACL,0BAA0B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;QAC7D,0BAA0B,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,WAA4B,EAC5B,UAA4B;IAE5B,MAAM,mBAAmB,GACvB,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,OAAO,6BAA6B,CAClC,mBAAmB,EACnB,mBAAmB,CAAC,SAAS,EAAE,8BAA8B;IAC7D,UAAU,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type NormalizedTableSchema } from './normalize-table-schema.js';
|
|
1
|
+
import { type DecycledNormalizedTableSchema, type NormalizedTableSchema } from './normalize-table-schema.js';
|
|
2
2
|
import type { Schema } from './schema.js';
|
|
3
3
|
/**
|
|
4
4
|
* Creates a normalized schema from a schema.
|
|
@@ -14,4 +14,9 @@ export declare class NormalizedSchema {
|
|
|
14
14
|
};
|
|
15
15
|
constructor(schema: Schema);
|
|
16
16
|
}
|
|
17
|
+
export type DecycledNormalizedSchema = Omit<NormalizedSchema, 'tables'> & {
|
|
18
|
+
readonly tables: {
|
|
19
|
+
readonly [table: string]: DecycledNormalizedTableSchema;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
17
22
|
//# sourceMappingURL=normalized-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalized-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;KACjD,CAAC;gBAEU,MAAM,EAAE,MAAM;CAI3B"}
|
|
1
|
+
{"version":3,"file":"normalized-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAE3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAKhE;AAED,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,CAAC;KACjD,CAAC;gBAEU,MAAM,EAAE,MAAM;CAI3B;AAED,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG;IACxE,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,6BAA6B,CAAC;KACzD,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { sortedEntries } from '../../shared/src/sorted-entries.js';
|
|
2
|
+
import { normalizeTableSchemaWithCache, } from './normalize-table-schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a normalized schema from a schema.
|
|
5
|
+
*
|
|
6
|
+
* A normalized schema has all the keys sorted and the primary key and the
|
|
7
|
+
* primary key columns are checked to be valid.
|
|
8
|
+
*/
|
|
9
|
+
export function normalizeSchema(schema) {
|
|
10
|
+
if (schema instanceof NormalizedSchema) {
|
|
11
|
+
return schema;
|
|
12
|
+
}
|
|
13
|
+
return new NormalizedSchema(schema);
|
|
14
|
+
}
|
|
15
|
+
export class NormalizedSchema {
|
|
16
|
+
version;
|
|
17
|
+
tables;
|
|
18
|
+
constructor(schema) {
|
|
19
|
+
this.version = schema.version;
|
|
20
|
+
this.tables = normalizeTables(schema.tables);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function normalizeTables(tables) {
|
|
24
|
+
const rv = {};
|
|
25
|
+
const tableSchemaCache = new Map();
|
|
26
|
+
for (const [name, table] of sortedEntries(tables)) {
|
|
27
|
+
rv[name] = normalizeTableSchemaWithCache(table, name, tableSchemaCache);
|
|
28
|
+
}
|
|
29
|
+
return rv;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=normalized-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/normalized-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EACL,6BAA6B,GAI9B,MAAM,6BAA6B,CAAC;AAGrC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,IAAI,MAAM,YAAY,gBAAgB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,gBAAgB;IAClB,OAAO,CAAS;IAChB,MAAM,CAEb;IAEF,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAQD,SAAS,eAAe,CAAC,MAAwB;IAG/C,MAAM,EAAE,GAEH,EAAE,CAAC;IACR,MAAM,gBAAgB,GAAqB,IAAI,GAAG,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,EAAE,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Query } from '../../zql/src/query/query.js';
|
|
2
|
+
import type { Schema } from './schema.js';
|
|
3
|
+
import type { TableSchema } from './table-schema.js';
|
|
4
|
+
import type { PermissionsConfig as CompiledPermissionsConfig } from './compiled-permissions.js';
|
|
5
|
+
import type { Condition } from '../../zero-protocol/src/ast.js';
|
|
6
|
+
import type { ExpressionBuilder } from '../../zql/src/query/expression.js';
|
|
7
|
+
export type Queries<TSchema extends Schema> = {
|
|
8
|
+
[K in keyof TSchema['tables']]: Query<TSchema['tables'][K]>;
|
|
9
|
+
};
|
|
10
|
+
type PermissionRule<TAuthDataShape, TSchema extends TableSchema> = (authData: TAuthDataShape, eb: ExpressionBuilder<TSchema>) => Condition;
|
|
11
|
+
type AssetPermissions<TAuthDataShape, TSchema extends TableSchema> = {
|
|
12
|
+
select?: PermissionRule<TAuthDataShape, TSchema>[] | undefined;
|
|
13
|
+
insert?: PermissionRule<TAuthDataShape, TSchema>[] | undefined;
|
|
14
|
+
update?: {
|
|
15
|
+
preMutation?: PermissionRule<TAuthDataShape, TSchema>[];
|
|
16
|
+
postProposedMutation?: PermissionRule<TAuthDataShape, TSchema>[];
|
|
17
|
+
} | undefined;
|
|
18
|
+
delete?: PermissionRule<TAuthDataShape, TSchema>[] | undefined;
|
|
19
|
+
};
|
|
20
|
+
export type PermissionsConfig<TAuthDataShape, TSchema extends Schema> = {
|
|
21
|
+
[K in keyof TSchema['tables']]?: {
|
|
22
|
+
row?: AssetPermissions<TAuthDataShape, TSchema['tables'][K]> | undefined;
|
|
23
|
+
cell?: {
|
|
24
|
+
[C in keyof TSchema['tables'][K]['columns']]?: AssetPermissions<TAuthDataShape, TSchema['tables'][K]>;
|
|
25
|
+
} | undefined;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export declare function definePermissions<TAuthDataShape, TSchema extends Schema>(schema: TSchema, definer: () => Promise<PermissionsConfig<TAuthDataShape, TSchema>> | PermissionsConfig<TAuthDataShape, TSchema>): Promise<CompiledPermissionsConfig | undefined>;
|
|
29
|
+
export declare const authDataRef: {};
|
|
30
|
+
export declare const preMutationRowRef: {};
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAEV,iBAAiB,IAAI,yBAAyB,EAC/C,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gCAAgC,CAAC;AAE9D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,mCAAmC,CAAC;AAEzE,MAAM,MAAM,OAAO,CAAC,OAAO,SAAS,MAAM,IAAI;KAC3C,CAAC,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,KAAK,cAAc,CAAC,cAAc,EAAE,OAAO,SAAS,WAAW,IAAI,CACjE,QAAQ,EAAE,cAAc,EACxB,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAC3B,SAAS,CAAC;AAEf,KAAK,gBAAgB,CAAC,cAAc,EAAE,OAAO,SAAS,WAAW,IAAI;IACnE,MAAM,CAAC,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAC/D,MAAM,CAAC,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAC/D,MAAM,CAAC,EACH;QACE,WAAW,CAAC,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;QACxD,oBAAoB,CAAC,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;KAClE,GACD,SAAS,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,cAAc,EAAE,OAAO,SAAS,MAAM,IAAI;KACrE,CAAC,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC/B,GAAG,CAAC,EAAE,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QACzE,IAAI,CAAC,EACD;aACG,CAAC,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAC7D,cAAc,EACd,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACrB;SACF,GACD,SAAS,CAAC;KACf;CACF,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,OAAO,SAAS,MAAM,EAC5E,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MACL,OAAO,CAAC,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,GACnD,iBAAiB,CAAC,cAAc,EAAE,OAAO,CAAC,GAC7C,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAYhD;AAwFD,eAAO,MAAM,WAAW,IAQvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,IAQ7B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type PermissionsConfig } from './compiled-permissions.js';
|
|
2
|
+
import type { Schema } from './schema.js';
|
|
3
|
+
import * as v from '../../shared/src/valita.js';
|
|
4
|
+
import type { TableSchema } from './table-schema.js';
|
|
5
|
+
import type { DecycledNormalizedSchema, NormalizedSchema } from './normalized-schema.js';
|
|
6
|
+
export type SchemaConfig = {
|
|
7
|
+
schema: Schema;
|
|
8
|
+
permissions: PermissionsConfig;
|
|
9
|
+
};
|
|
10
|
+
export declare const relationshipSchema: v.UnionType<[v.ObjectType<{
|
|
11
|
+
sourceField: v.Type<import("../../zero-protocol/src/ast.js").CompoundKey>;
|
|
12
|
+
destField: v.Type<import("../../zero-protocol/src/ast.js").CompoundKey>;
|
|
13
|
+
destSchema: v.Type<TableSchema>;
|
|
14
|
+
}, undefined>, v.Type<readonly [{
|
|
15
|
+
sourceField: import("../../zero-protocol/src/ast.js").CompoundKey;
|
|
16
|
+
destField: import("../../zero-protocol/src/ast.js").CompoundKey;
|
|
17
|
+
destSchema: TableSchema;
|
|
18
|
+
}, {
|
|
19
|
+
sourceField: import("../../zero-protocol/src/ast.js").CompoundKey;
|
|
20
|
+
destField: import("../../zero-protocol/src/ast.js").CompoundKey;
|
|
21
|
+
destSchema: TableSchema;
|
|
22
|
+
}]>]>;
|
|
23
|
+
export declare const schemaValueSchema: v.ObjectType<{
|
|
24
|
+
type: v.UnionType<[v.Type<"string">, v.Type<"number">, v.Type<"boolean">, v.Type<"null">, v.Type<"json">]>;
|
|
25
|
+
optional: v.Optional<boolean>;
|
|
26
|
+
}, undefined>;
|
|
27
|
+
export declare const sourceOrTableSchemaSchema: v.ObjectType<{
|
|
28
|
+
tableName: v.Type<string>;
|
|
29
|
+
columns: v.Type<Record<string, {
|
|
30
|
+
optional?: boolean | undefined;
|
|
31
|
+
type: "string" | "number" | "boolean" | "null" | "json";
|
|
32
|
+
}>>;
|
|
33
|
+
primaryKey: v.Type<readonly [string, ...string[]]>;
|
|
34
|
+
}, undefined>;
|
|
35
|
+
export declare const tableSchemaSchema: v.Type<TableSchema>;
|
|
36
|
+
export declare const schemaSchema: v.ObjectType<{
|
|
37
|
+
version: v.Type<number>;
|
|
38
|
+
tables: v.Type<Record<string, TableSchema>>;
|
|
39
|
+
}, undefined>;
|
|
40
|
+
export declare function isSchemaConfig(value: any): value is SchemaConfig;
|
|
41
|
+
export declare function replacePointersWithSchemaNames(schema: NormalizedSchema): DecycledNormalizedSchema;
|
|
42
|
+
export declare function replaceSchemaNamesWithPointers(schema: DecycledNormalizedSchema): NormalizedSchema;
|
|
43
|
+
//# sourceMappingURL=schema-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-config.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/schema-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC;AAGhD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAYF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;KAG9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;aAS5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;aAIpC,CAAC;AAEH,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAG9C,CAAC;AAEL,eAAO,MAAM,YAAY;;;aAGvB,CAAC;AAGH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,YAAY,CAGhE;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,gBAAgB,GACvB,wBAAwB,CA8B1B;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,wBAAwB,GAC/B,gBAAgB,CAkBlB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {} from './compiled-permissions.js';
|
|
2
|
+
import * as v from '../../shared/src/valita.js';
|
|
3
|
+
import { compoundKeySchema } from '../../zero-protocol/src/ast.js';
|
|
4
|
+
import { primaryKeySchema } from '../../zero-protocol/src/primary-key.js';
|
|
5
|
+
const fieldRelationshipSchema = v.object({
|
|
6
|
+
sourceField: compoundKeySchema,
|
|
7
|
+
destField: compoundKeySchema,
|
|
8
|
+
destSchema: v.lazy(() => tableSchemaSchema),
|
|
9
|
+
});
|
|
10
|
+
const junctionRelationshipSchema = v.readonly(v.tuple([fieldRelationshipSchema, fieldRelationshipSchema]));
|
|
11
|
+
export const relationshipSchema = v.union(fieldRelationshipSchema, junctionRelationshipSchema);
|
|
12
|
+
export const schemaValueSchema = v.object({
|
|
13
|
+
type: v.union(v.literal('string'), v.literal('number'), v.literal('boolean'), v.literal('null'), v.literal('json')),
|
|
14
|
+
optional: v.boolean().optional(),
|
|
15
|
+
});
|
|
16
|
+
export const sourceOrTableSchemaSchema = v.object({
|
|
17
|
+
tableName: v.string(),
|
|
18
|
+
columns: v.record(schemaValueSchema),
|
|
19
|
+
primaryKey: primaryKeySchema,
|
|
20
|
+
});
|
|
21
|
+
export const tableSchemaSchema = sourceOrTableSchemaSchema.extend({
|
|
22
|
+
relationships: v.record(relationshipSchema),
|
|
23
|
+
});
|
|
24
|
+
export const schemaSchema = v.object({
|
|
25
|
+
version: v.number(),
|
|
26
|
+
tables: v.record(tableSchemaSchema),
|
|
27
|
+
});
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
export function isSchemaConfig(value) {
|
|
30
|
+
// eslint-disable-next-line eqeqeq
|
|
31
|
+
return value != null && 'schema' in value && 'permissions' in value;
|
|
32
|
+
}
|
|
33
|
+
export function replacePointersWithSchemaNames(schema) {
|
|
34
|
+
const tables = Object.fromEntries(Object.entries(schema.tables).map(([name, table]) => {
|
|
35
|
+
const relationships = Object.fromEntries(Object.entries(table.relationships).map(([name, relationship]) => {
|
|
36
|
+
if ('sourceField' in relationship) {
|
|
37
|
+
return [
|
|
38
|
+
name,
|
|
39
|
+
{ ...relationship, destSchema: relationship.destSchema.tableName },
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
return [
|
|
43
|
+
name,
|
|
44
|
+
[
|
|
45
|
+
{
|
|
46
|
+
...relationship[0],
|
|
47
|
+
destSchema: relationship[0].destSchema.tableName,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
...relationship[1],
|
|
51
|
+
destSchema: relationship[1].destSchema.tableName,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
];
|
|
55
|
+
}));
|
|
56
|
+
return [name, { ...table, relationships }];
|
|
57
|
+
}));
|
|
58
|
+
return { ...schema, tables };
|
|
59
|
+
}
|
|
60
|
+
export function replaceSchemaNamesWithPointers(schema) {
|
|
61
|
+
schema = structuredClone(schema);
|
|
62
|
+
Object.values(schema.tables).forEach(table => {
|
|
63
|
+
Object.values(table.relationships).forEach(relationship => {
|
|
64
|
+
if ('sourceField' in relationship) {
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
+
relationship.destSchema =
|
|
67
|
+
schema.tables[relationship.destSchema];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
relationship.forEach(r => {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
r.destSchema = schema.tables[r.destSchema];
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
return schema;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=schema-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-config.js","sourceRoot":"","sources":["../../../../zero-schema/src/schema-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/schema.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAAyB,MAAS;IAC5D,OAAO,MAAW,CAAC;AACrB,CAAC"}
|
|
@@ -6,7 +6,7 @@ export type ValueType = 'string' | 'number' | 'boolean' | 'null' | 'json';
|
|
|
6
6
|
*/
|
|
7
7
|
export type SchemaValue = {
|
|
8
8
|
type: ValueType;
|
|
9
|
-
optional?: boolean;
|
|
9
|
+
optional?: boolean | undefined;
|
|
10
10
|
};
|
|
11
11
|
export type SourceOrTableSchema = {
|
|
12
12
|
readonly tableName: string;
|
|
@@ -61,39 +61,34 @@ export type Supertype<TSchemas extends TableSchema[]> = {
|
|
|
61
61
|
/**
|
|
62
62
|
* A schema might have a relationship to itself.
|
|
63
63
|
* Given we cannot reference a variable in the same statement we initialize
|
|
64
|
-
* the variable, we use a function to get around this.
|
|
64
|
+
* the variable, we allow use of a function to get around this.
|
|
65
65
|
*/
|
|
66
|
-
|
|
66
|
+
type Lazy<T> = T | (() => T);
|
|
67
67
|
export type Relationship = FieldRelationship<TableSchema, TableSchema> | JunctionRelationship<TableSchema, TableSchema, TableSchema>;
|
|
68
|
+
export type AtLeastOne<T> = readonly [T, ...T[]];
|
|
69
|
+
export declare function atLeastOne<T>(arr: readonly T[]): AtLeastOne<T>;
|
|
70
|
+
type FieldName<TSchema extends TableSchema> = AtLeastOne<keyof TSchema['columns']>;
|
|
68
71
|
/**
|
|
69
72
|
* A relationship between two entities where
|
|
70
73
|
* that relationship is defined via fields on both entities.
|
|
71
74
|
*/
|
|
72
75
|
export type FieldRelationship<TSourceSchema extends TableSchema, TDestSchema extends TableSchema> = {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
schema: TDestSchema | Lazy<TDestSchema>;
|
|
77
|
-
};
|
|
76
|
+
sourceField: FieldName<TSourceSchema>;
|
|
77
|
+
destField: FieldName<TDestSchema>;
|
|
78
|
+
destSchema: Lazy<TDestSchema>;
|
|
78
79
|
};
|
|
79
80
|
/**
|
|
80
81
|
* A relationship between two entities where
|
|
81
82
|
* that relationship is defined via a junction table.
|
|
82
83
|
*/
|
|
83
|
-
export type JunctionRelationship<TSourceSchema extends TableSchema, TJunctionSchema extends TableSchema, TDestSchema extends TableSchema> =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
destField: keyof TJunctionSchema['columns'];
|
|
88
|
-
schema: TDestSchema | Lazy<TJunctionSchema>;
|
|
89
|
-
};
|
|
90
|
-
dest: {
|
|
91
|
-
field: keyof TDestSchema['columns'];
|
|
92
|
-
schema: TDestSchema | Lazy<TJunctionSchema>;
|
|
93
|
-
};
|
|
94
|
-
};
|
|
84
|
+
export type JunctionRelationship<TSourceSchema extends TableSchema, TJunctionSchema extends TableSchema, TDestSchema extends TableSchema> = readonly [
|
|
85
|
+
FieldRelationship<TSourceSchema, TJunctionSchema>,
|
|
86
|
+
FieldRelationship<TJunctionSchema, TDestSchema>
|
|
87
|
+
];
|
|
95
88
|
export declare function isFieldRelationship(relationship: Relationship): relationship is FieldRelationship<TableSchema, TableSchema>;
|
|
89
|
+
export declare function assertFieldRelationship(relationship: Relationship): asserts relationship is FieldRelationship<TableSchema, TableSchema>;
|
|
96
90
|
export declare function isJunctionRelationship(relationship: Relationship): relationship is JunctionRelationship<TableSchema, TableSchema, TableSchema>;
|
|
91
|
+
export declare function assertJunctionRelationship(relationship: Relationship): asserts relationship is JunctionRelationship<TableSchema, TableSchema, TableSchema>;
|
|
97
92
|
/**
|
|
98
93
|
* Calling `related` on `Query` returns a new Query
|
|
99
94
|
* since `related` moves through the relationship. This function takes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-schema.d.ts","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
|
+
import { assert } from '../../shared/src/asserts.js';
|
|
1
2
|
export function createTableSchema(schema) {
|
|
2
3
|
return schema;
|
|
3
4
|
}
|
|
5
|
+
export function atLeastOne(arr) {
|
|
6
|
+
if (arr.length === 0) {
|
|
7
|
+
throw new Error('Expected at least one element');
|
|
8
|
+
}
|
|
9
|
+
return arr;
|
|
10
|
+
}
|
|
4
11
|
export function isFieldRelationship(relationship) {
|
|
5
|
-
return (relationship
|
|
12
|
+
return !isJunctionRelationship(relationship);
|
|
13
|
+
}
|
|
14
|
+
export function assertFieldRelationship(relationship) {
|
|
15
|
+
assert(isFieldRelationship(relationship), 'Expected field relationship');
|
|
6
16
|
}
|
|
7
17
|
export function isJunctionRelationship(relationship) {
|
|
8
|
-
return
|
|
18
|
+
return Array.isArray(relationship);
|
|
19
|
+
}
|
|
20
|
+
export function assertJunctionRelationship(relationship) {
|
|
21
|
+
assert(isJunctionRelationship(relationship), 'Expected junction relationship');
|
|
9
22
|
}
|
|
10
23
|
//# sourceMappingURL=table-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-schema.js","sourceRoot":"","sources":["../../../../zero-schema/src/table-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,6BAA6B,CAAC;AAwBnD,MAAM,UAAU,iBAAiB,CAA8B,MAAS;IACtE,OAAO,MAAW,CAAC;AACrB,CAAC;AAkED,MAAM,UAAU,UAAU,CAAI,GAAiB;IAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAoB,CAAC;AAC9B,CAAC;AAgCD,MAAM,UAAU,mBAAmB,CACjC,YAA0B;IAE1B,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,YAA0B;IAE1B,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,6BAA6B,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,YAA0B;IAE1B,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,YAA0B;IAM1B,MAAM,CACJ,sBAAsB,CAAC,YAAY,CAAC,EACpC,gCAAgC,CACjC,CAAC;AACJ,CAAC"}
|
package/out/zero.js
CHANGED
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
Zero,
|
|
5
5
|
createSchema,
|
|
6
6
|
createTableSchema,
|
|
7
|
-
|
|
7
|
+
definePermissions,
|
|
8
8
|
dropAllDatabases,
|
|
9
9
|
dropDatabase,
|
|
10
10
|
escapeLike,
|
|
11
11
|
getDefaultPuller,
|
|
12
12
|
makeIDBName
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-4XX2NVJ7.js";
|
|
14
14
|
import "./chunk-HARIWJ2J.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-C7M3BJ3Z.js";
|
|
16
16
|
import "./chunk-F5QR3K72.js";
|
|
17
17
|
export {
|
|
18
18
|
IDBNotFoundError,
|
|
@@ -20,7 +20,7 @@ export {
|
|
|
20
20
|
Zero,
|
|
21
21
|
createSchema,
|
|
22
22
|
createTableSchema,
|
|
23
|
-
|
|
23
|
+
definePermissions,
|
|
24
24
|
dropAllDatabases,
|
|
25
25
|
dropDatabase,
|
|
26
26
|
escapeLike,
|
|
@@ -6,7 +6,7 @@ import type { Input, Storage } from '../ivm/operator.js';
|
|
|
6
6
|
import type { Source } from '../ivm/source.js';
|
|
7
7
|
export type StaticQueryParameters = {
|
|
8
8
|
authData: Record<string, JSONValue>;
|
|
9
|
-
preMutationRow
|
|
9
|
+
preMutationRow?: Row | undefined;
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
12
|
* Interface required of caller to buildPipeline. Connects to constructed
|
|
@@ -49,7 +49,7 @@ export interface BuilderDelegate {
|
|
|
49
49
|
* const sink = new MySink(input);
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
|
-
export declare function buildPipeline(ast: AST, delegate: BuilderDelegate
|
|
52
|
+
export declare function buildPipeline(ast: AST, delegate: BuilderDelegate): Input;
|
|
53
53
|
export declare function bindStaticParameters(ast: AST, staticQueryParameters: StaticQueryParameters | undefined): AST;
|
|
54
54
|
export declare function assertOrderingIncludesPK(ordering: Ordering, pk: PrimaryKey): void;
|
|
55
55
|
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EACV,GAAG,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../../zql/src/builder/builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EACV,GAAG,EASH,QAAQ,EAIT,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,oCAAoC,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2CAA2C,CAAC;AAM1E,OAAO,KAAK,EAAC,KAAK,EAAE,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEjD;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,GAAG,KAAK,CAExE;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,OAwDzD;AAyKD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,UAAU,GACb,IAAI,CAeN"}
|