over-zero 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/createPermissions.cjs +43 -57
- package/dist/cjs/createPermissions.js +46 -48
- package/dist/cjs/createPermissions.js.map +2 -2
- package/dist/cjs/createPermissions.native.js +46 -53
- package/dist/cjs/createPermissions.native.js.map +2 -2
- package/dist/cjs/createZero.cjs +128 -0
- package/dist/cjs/createZero.js +107 -0
- package/dist/cjs/createZero.js.map +6 -0
- package/dist/cjs/createZero.native.js +115 -0
- package/dist/cjs/createZero.native.js.map +6 -0
- package/dist/cjs/createZeroClient.cjs +128 -0
- package/dist/cjs/createZeroClient.js +103 -0
- package/dist/cjs/createZeroClient.js.map +6 -0
- package/dist/cjs/createZeroClient.native.js +115 -0
- package/dist/cjs/createZeroClient.native.js.map +6 -0
- package/dist/cjs/createZeroServer.cjs +131 -0
- package/dist/cjs/createZeroServer.js +108 -0
- package/dist/cjs/createZeroServer.js.map +6 -0
- package/dist/cjs/createZeroServer.native.js +107 -0
- package/dist/cjs/createZeroServer.native.js.map +6 -0
- package/dist/cjs/helpers/context.js.map +1 -1
- package/dist/cjs/helpers/context.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +11 -11
- package/dist/cjs/helpers/createMutators.js +9 -7
- package/dist/cjs/helpers/createMutators.js.map +1 -1
- package/dist/cjs/helpers/createMutators.native.js +8 -6
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.cjs +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.js +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.js.map +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.native.js +1 -1
- package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/cjs/helpers/getAuthData.cjs +0 -36
- package/dist/cjs/helpers/getAuthData.js +0 -28
- package/dist/cjs/helpers/getAuthData.js.map +2 -2
- package/dist/cjs/helpers/getAuthData.native.js +0 -31
- package/dist/cjs/helpers/getAuthData.native.js.map +2 -2
- package/dist/cjs/helpers/useAuthData.cjs +0 -32
- package/dist/cjs/helpers/useAuthData.js +0 -24
- package/dist/cjs/helpers/useAuthData.js.map +2 -2
- package/dist/cjs/helpers/useAuthData.native.js +0 -31
- package/dist/cjs/helpers/useAuthData.native.js.map +2 -2
- package/dist/cjs/helpers/useZeroDebug.cjs +68 -0
- package/dist/cjs/helpers/useZeroDebug.js +49 -0
- package/dist/cjs/helpers/useZeroDebug.js.map +6 -0
- package/dist/cjs/helpers/useZeroDebug.native.js +66 -0
- package/dist/cjs/helpers/useZeroDebug.native.js.map +6 -0
- package/dist/cjs/helpers/zeroEmitter.cjs +2 -2
- package/dist/cjs/helpers/zeroEmitter.js +2 -2
- package/dist/cjs/helpers/zeroEmitter.native.js +1 -1
- package/dist/cjs/helpers/zeroEmitter.native.js.map +1 -1
- package/dist/cjs/index.cjs +3 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +6 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/mutations.cjs +50 -0
- package/dist/cjs/mutations.js +43 -0
- package/dist/cjs/mutations.js.map +6 -0
- package/dist/cjs/mutations.native.js +50 -0
- package/dist/cjs/mutations.native.js.map +6 -0
- package/dist/cjs/server.cjs +18 -0
- package/dist/cjs/server.js +15 -0
- package/dist/cjs/server.js.map +6 -0
- package/dist/cjs/server.native.js +20 -0
- package/dist/cjs/server.native.js.map +6 -0
- package/dist/cjs/where.cjs +33 -0
- package/dist/cjs/where.js +28 -0
- package/dist/cjs/where.js.map +6 -0
- package/dist/cjs/where.native.js +34 -0
- package/dist/cjs/where.native.js.map +6 -0
- package/dist/esm/createPermissions.js +48 -47
- package/dist/esm/createPermissions.js.map +2 -2
- package/dist/esm/createPermissions.mjs +41 -55
- package/dist/esm/createPermissions.mjs.map +1 -1
- package/dist/esm/createPermissions.native.js +55 -69
- package/dist/esm/createPermissions.native.js.map +1 -1
- package/dist/esm/createZero.js +99 -0
- package/dist/esm/createZero.js.map +6 -0
- package/dist/esm/createZero.mjs +105 -0
- package/dist/esm/createZero.mjs.map +1 -0
- package/dist/esm/createZero.native.js +119 -0
- package/dist/esm/createZero.native.js.map +1 -0
- package/dist/esm/createZeroClient.js +95 -0
- package/dist/esm/createZeroClient.js.map +6 -0
- package/dist/esm/createZeroClient.mjs +105 -0
- package/dist/esm/createZeroClient.mjs.map +1 -0
- package/dist/esm/createZeroClient.native.js +119 -0
- package/dist/esm/createZeroClient.native.js.map +1 -0
- package/dist/esm/createZeroServer.js +90 -0
- package/dist/esm/createZeroServer.js.map +6 -0
- package/dist/esm/createZeroServer.mjs +97 -0
- package/dist/esm/createZeroServer.mjs.map +1 -0
- package/dist/esm/createZeroServer.native.js +104 -0
- package/dist/esm/createZeroServer.native.js.map +1 -0
- package/dist/esm/helpers/context.js.map +1 -1
- package/dist/esm/helpers/context.mjs.map +1 -1
- package/dist/esm/helpers/context.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.js +6 -7
- package/dist/esm/helpers/createMutators.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +7 -7
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +9 -7
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.js +1 -1
- package/dist/esm/helpers/ensureLoggedIn.js.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs +1 -1
- package/dist/esm/helpers/ensureLoggedIn.mjs.map +1 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js +1 -1
- package/dist/esm/helpers/ensureLoggedIn.native.js.map +1 -1
- package/dist/esm/helpers/getAuthData.js +0 -12
- package/dist/esm/helpers/getAuthData.js.map +2 -2
- package/dist/esm/helpers/getAuthData.mjs +1 -12
- package/dist/esm/helpers/getAuthData.mjs.map +1 -1
- package/dist/esm/helpers/getAuthData.native.js +1 -12
- package/dist/esm/helpers/getAuthData.native.js.map +1 -1
- package/dist/esm/helpers/useAuthData.js +0 -10
- package/dist/esm/helpers/useAuthData.js.map +2 -2
- package/dist/esm/helpers/useAuthData.mjs +1 -8
- package/dist/esm/helpers/useAuthData.mjs.map +1 -1
- package/dist/esm/helpers/useAuthData.native.js +1 -12
- package/dist/esm/helpers/useAuthData.native.js.map +1 -1
- package/dist/esm/helpers/useZeroDebug.js +35 -0
- package/dist/esm/helpers/useZeroDebug.js.map +6 -0
- package/dist/esm/helpers/useZeroDebug.mjs +45 -0
- package/dist/esm/helpers/useZeroDebug.mjs.map +1 -0
- package/dist/esm/helpers/useZeroDebug.native.js +53 -0
- package/dist/esm/helpers/useZeroDebug.native.js.map +1 -0
- package/dist/esm/helpers/zeroEmitter.js +1 -1
- package/dist/esm/helpers/zeroEmitter.mjs +1 -1
- package/dist/esm/helpers/zeroEmitter.native.js +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +3 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +3 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/mutations.js +27 -0
- package/dist/esm/mutations.js.map +6 -0
- package/dist/esm/mutations.mjs +27 -0
- package/dist/esm/mutations.mjs.map +1 -0
- package/dist/esm/mutations.native.js +29 -0
- package/dist/esm/mutations.native.js.map +1 -0
- package/dist/esm/server.js +2 -0
- package/dist/esm/server.js.map +6 -0
- package/dist/esm/server.mjs +2 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/server.native.js +2 -0
- package/dist/esm/server.native.js.map +1 -0
- package/dist/esm/where.js +12 -0
- package/dist/esm/where.js.map +6 -0
- package/dist/esm/where.mjs +9 -0
- package/dist/esm/where.mjs.map +1 -0
- package/dist/esm/where.native.js +9 -0
- package/dist/esm/where.native.js.map +1 -0
- package/package.json +12 -6
- package/src/createPermissions.ts +17 -77
- package/src/createZeroClient.tsx +29 -26
- package/src/createZeroServer.ts +43 -43
- package/src/helpers/createMutators.ts +19 -29
- package/src/helpers/ensureLoggedIn.ts +2 -1
- package/src/helpers/prettyFormatZeroQuery.ts +1 -1
- package/src/helpers/useZeroDebug.ts +1 -0
- package/src/index.ts +1 -5
- package/src/mutations.ts +20 -7
- package/src/server.ts +1 -0
- package/src/types.ts +74 -7
- package/src/where.ts +28 -0
- package/src/helpers/clearZeroDatabase.ts +0 -68
- package/src/helpers/getAuthData.tsx +0 -12
- package/src/helpers/useAuthData.ts +0 -13
- package/src/helpers/zeroEmitter.ts +0 -5
- package/types/createMutations.d.ts +0 -20
- package/types/createMutations.d.ts.map +0 -1
- package/types/createPermissions.d.ts +0 -37
- package/types/createPermissions.d.ts.map +0 -1
- package/types/createZeroClient.d.ts +0 -45
- package/types/createZeroClient.d.ts.map +0 -1
- package/types/createZeroServer.d.ts +0 -61
- package/types/createZeroServer.d.ts.map +0 -1
- package/types/helpers/batchQuery.d.ts +0 -7
- package/types/helpers/batchQuery.d.ts.map +0 -1
- package/types/helpers/clearZeroDatabase.d.ts +0 -2
- package/types/helpers/clearZeroDatabase.d.ts.map +0 -1
- package/types/helpers/context.d.ts +0 -5
- package/types/helpers/context.d.ts.map +0 -1
- package/types/helpers/createMutators.d.ts +0 -16
- package/types/helpers/createMutators.d.ts.map +0 -1
- package/types/helpers/ensureLoggedIn.d.ts +0 -2
- package/types/helpers/ensureLoggedIn.d.ts.map +0 -1
- package/types/helpers/getAuthData.d.ts +0 -1
- package/types/helpers/getAuthData.d.ts.map +0 -1
- package/types/helpers/prettyFormatZeroQuery.d.ts +0 -3
- package/types/helpers/prettyFormatZeroQuery.d.ts.map +0 -1
- package/types/helpers/useAuthData.d.ts +0 -1
- package/types/helpers/useAuthData.d.ts.map +0 -1
- package/types/helpers/useZeroDebug.d.ts +0 -3
- package/types/helpers/useZeroDebug.d.ts.map +0 -1
- package/types/helpers/zeroEmitter.d.ts +0 -2
- package/types/helpers/zeroEmitter.d.ts.map +0 -1
- package/types/index.d.ts +0 -9
- package/types/index.d.ts.map +0 -1
- package/types/types.d.ts +0 -21
- package/types/types.d.ts.map +0 -1
|
@@ -1,44 +1,36 @@
|
|
|
1
1
|
import { isClient, isServer, mapObject, time } from '@vxrn/helpers'
|
|
2
|
-
import type {
|
|
3
|
-
|
|
2
|
+
import type {
|
|
3
|
+
AuthData,
|
|
4
|
+
GenericModels,
|
|
5
|
+
GetZeroMutators,
|
|
6
|
+
Transaction,
|
|
7
|
+
Where,
|
|
8
|
+
} from '../types'
|
|
4
9
|
import { runWithContext } from './context'
|
|
5
10
|
|
|
6
|
-
|
|
7
|
-
environment: 'server' | 'client'
|
|
8
|
-
authData: AuthData | null
|
|
9
|
-
can: (where: string, action: () => Promise<any>, obj: any) => void
|
|
10
|
-
models: any
|
|
11
|
-
asyncTasks?: Array<() => Promise<void>>
|
|
12
|
-
createServerActions?: (authData: AuthData | null) => Record<string, any>
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
type TransformMutators<T> = {
|
|
16
|
-
[K in keyof T]: T[K] extends (ctx: MutatorContext, ...args: infer Args) => infer Return
|
|
17
|
-
? (tx: GenericTransaction, ...args: Args) => Return
|
|
18
|
-
: never
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export function createMutators<
|
|
22
|
-
MutatorsIn extends Record<string, any>,
|
|
23
|
-
Mutators extends {
|
|
24
|
-
[K in keyof MutatorsIn]: TransformMutators<MutatorsIn[K]>
|
|
25
|
-
},
|
|
26
|
-
>({
|
|
11
|
+
export function createMutators<Models extends GenericModels>({
|
|
27
12
|
environment,
|
|
28
13
|
authData,
|
|
29
14
|
createServerActions,
|
|
30
15
|
asyncTasks = [],
|
|
31
16
|
can,
|
|
32
17
|
models,
|
|
33
|
-
}:
|
|
34
|
-
|
|
18
|
+
}: {
|
|
19
|
+
environment: 'server' | 'client'
|
|
20
|
+
authData: AuthData | null
|
|
21
|
+
can: (where: Where<any>, action: string, obj: any) => void
|
|
22
|
+
models: Models
|
|
23
|
+
asyncTasks?: Array<() => Promise<void>>
|
|
24
|
+
createServerActions?: () => Record<string, any>
|
|
25
|
+
}): GetZeroMutators<Models> {
|
|
26
|
+
const serverActions = createServerActions?.()
|
|
35
27
|
|
|
36
28
|
const modelMutators = mapObject(models, (val) => val.mutate) as {
|
|
37
29
|
[K in keyof typeof models]: (typeof models)[K]['mutate']
|
|
38
30
|
}
|
|
39
31
|
|
|
40
32
|
function withContext<Args extends any[]>(fn: (...args: Args) => Promise<void>) {
|
|
41
|
-
return async (tx:
|
|
33
|
+
return async (tx: Transaction, ...args: Args): Promise<void> => {
|
|
42
34
|
const mutationContext = {
|
|
43
35
|
tx,
|
|
44
36
|
authData,
|
|
@@ -114,9 +106,7 @@ export function createMutators<
|
|
|
114
106
|
}
|
|
115
107
|
}
|
|
116
108
|
|
|
117
|
-
function decorateMutators<T extends Record<string, Record<string, any>>>(
|
|
118
|
-
modules: T
|
|
119
|
-
): Mutators {
|
|
109
|
+
function decorateMutators<T extends Record<string, Record<string, any>>>(modules: T) {
|
|
120
110
|
const result: any = {}
|
|
121
111
|
|
|
122
112
|
for (const [moduleName, moduleExports] of Object.entries(modules)) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ensure } from '@vxrn/helpers'
|
|
2
|
+
import type { AuthData } from '../types'
|
|
2
3
|
import { context } from './context'
|
|
3
4
|
|
|
4
|
-
export const ensureLoggedIn = () => {
|
|
5
|
+
export const ensureLoggedIn = (): AuthData => {
|
|
5
6
|
const { authData } = context()
|
|
6
7
|
ensure(authData, 'logged in')
|
|
7
8
|
return authData
|
|
@@ -5,7 +5,7 @@ export const prettyFormatZeroQuery = (
|
|
|
5
5
|
query: Query<any, any, any>,
|
|
6
6
|
mode: 'full' | 'minimal' = 'full'
|
|
7
7
|
): string => {
|
|
8
|
-
// @ts-expect-error
|
|
8
|
+
// @ts-expect-error
|
|
9
9
|
const astObject = query['_completeAst']?.()
|
|
10
10
|
|
|
11
11
|
if (!astObject) return ''
|
package/src/index.ts
CHANGED
|
@@ -5,11 +5,7 @@ export * from './helpers/createMutators'
|
|
|
5
5
|
export * from './helpers/ensureLoggedIn'
|
|
6
6
|
|
|
7
7
|
export * from './mutations'
|
|
8
|
+
export * from './where'
|
|
8
9
|
export * from './createZeroClient'
|
|
9
|
-
export * from './createZeroServer'
|
|
10
10
|
|
|
11
11
|
export type * from './types'
|
|
12
|
-
|
|
13
|
-
// export * from '~/data/schema'
|
|
14
|
-
// export * from './types'
|
|
15
|
-
// export * from '../zero'
|
package/src/mutations.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { TableBuilderWithColumns } from '@rocicorp/zero'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
MutatorContext,
|
|
4
|
+
TableInsertRow,
|
|
5
|
+
TableName,
|
|
6
|
+
TableUpdateRow,
|
|
7
|
+
Where,
|
|
8
|
+
} from './types'
|
|
3
9
|
|
|
4
10
|
// two ways to use it:
|
|
5
11
|
// - mutations({}) which doesn't add the "allowed" helper or add CRUD
|
|
@@ -65,12 +71,18 @@ export function mutations<
|
|
|
65
71
|
Mutations extends Record<string, MutationBuilder>,
|
|
66
72
|
>(table: Table | Mutations, permissions?: Where, mutations?: Mutations): Mutations {
|
|
67
73
|
if (permissions) {
|
|
68
|
-
const tableName = (table as Table).schema.name
|
|
74
|
+
const tableName = (table as Table).schema.name as TableName
|
|
69
75
|
|
|
70
76
|
const createCRUDMutation = (action: CRUDNames) => {
|
|
71
77
|
return async (ctx: MutatorContext, obj: any) => {
|
|
72
|
-
|
|
73
|
-
|
|
78
|
+
/**
|
|
79
|
+
* CRUD mutations have permissions handled automatically using `can`:
|
|
80
|
+
* - `can` throws an error if it fails
|
|
81
|
+
* - zero catches error and rolls back transaction
|
|
82
|
+
* - zero returns error to client when you await zero.mutate.x.z().server
|
|
83
|
+
* - for INSERT: check runs after insert completes
|
|
84
|
+
* - for the rest: check runs before mutation
|
|
85
|
+
*/
|
|
74
86
|
const runServerPermissionCheck = async () => {
|
|
75
87
|
if (ctx.didCanPermissionsRun) {
|
|
76
88
|
// if the user-defined CRUD mutation runs their own "can", we avoid running ours
|
|
@@ -83,7 +95,7 @@ export function mutations<
|
|
|
83
95
|
}
|
|
84
96
|
}
|
|
85
97
|
|
|
86
|
-
if (action
|
|
98
|
+
if (action !== 'insert') {
|
|
87
99
|
await runServerPermissionCheck()
|
|
88
100
|
}
|
|
89
101
|
|
|
@@ -93,10 +105,11 @@ export function mutations<
|
|
|
93
105
|
if (existing) {
|
|
94
106
|
await existing(ctx, obj)
|
|
95
107
|
} else {
|
|
96
|
-
|
|
108
|
+
type TableName = keyof typeof ctx.tx.mutate // weird type foo because we declare this module and then type check
|
|
109
|
+
await ctx.tx.mutate[tableName as TableName]
|
|
97
110
|
}
|
|
98
111
|
|
|
99
|
-
if (action
|
|
112
|
+
if (action === 'insert') {
|
|
100
113
|
await runServerPermissionCheck()
|
|
101
114
|
}
|
|
102
115
|
}
|
package/src/server.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './createZeroServer'
|
package/src/types.ts
CHANGED
|
@@ -1,25 +1,90 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ExpressionBuilder,
|
|
3
3
|
Row,
|
|
4
|
-
Schema,
|
|
5
4
|
TableBuilderWithColumns,
|
|
6
|
-
|
|
5
|
+
Schema as ZeroSchema,
|
|
6
|
+
Transaction as ZeroTransaction,
|
|
7
7
|
} from '@rocicorp/zero'
|
|
8
8
|
import type { NullToOptional, TupleToUnion } from '@vxrn/helpers'
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* ➗0️⃣ START OVERRIDDEN TYPES
|
|
12
|
+
*
|
|
13
|
+
* To get types, put the following in a .ts file that's included by your tsconfig:
|
|
14
|
+
*
|
|
15
|
+
* export type Schema = typeof schema
|
|
16
|
+
*
|
|
17
|
+
* declare module 'over-zero' {
|
|
18
|
+
* interface Config {
|
|
19
|
+
* schema: Schema
|
|
20
|
+
* authData: AuthData
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* over-zero is overridden by consumers of this library to get types which is
|
|
25
|
+
* needed to allow co-locating certain typed helpers like where() and
|
|
26
|
+
* mutations() alongside table() because table is later used to create the Zero
|
|
27
|
+
* schema, which is then needed for where/mutations
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
export interface Config {}
|
|
31
|
+
|
|
32
|
+
interface DefaultConfig {
|
|
33
|
+
schema: ZeroSchema
|
|
34
|
+
authData: {}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface FinalConfig extends Omit<DefaultConfig, keyof Config>, Config {}
|
|
38
|
+
|
|
39
|
+
export type Schema = FinalConfig['schema']
|
|
40
|
+
|
|
41
|
+
export type TableName = keyof Schema['tables'] extends string
|
|
42
|
+
? keyof Schema['tables']
|
|
43
|
+
: string
|
|
44
|
+
|
|
45
|
+
export type Transaction = ZeroTransaction<Schema>
|
|
46
|
+
|
|
47
|
+
export type AuthData = FinalConfig['authData'] extends Record<string, unknown>
|
|
48
|
+
? FinalConfig['authData']
|
|
49
|
+
: Record<string, unknown>
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* ➗0️⃣ END OVERRIDDEN TYPES
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
// turns our mutators with custom context into zero mutators
|
|
56
|
+
export type GetZeroMutators<Models extends GenericModels> = {
|
|
57
|
+
[Key in keyof Models]: TransformMutators<GetModelMutators<Models>[Key]>
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type GetModelMutators<Models extends GenericModels> = {
|
|
61
|
+
[Key in keyof Models]: Models[Key]['mutate']
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type GenericModels = {
|
|
65
|
+
[key: string]: {
|
|
66
|
+
mutate: Record<string, (ctx: MutatorContext, obj?: any) => Promise<any>>
|
|
67
|
+
permissions: Where
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type TransformMutators<T> = {
|
|
72
|
+
[K in keyof T]: T[K] extends (ctx: MutatorContext, ...args: infer Args) => infer Return
|
|
73
|
+
? (tx: Transaction, ...args: Args) => Return extends unknown ? Promise<any> : Return
|
|
74
|
+
: never
|
|
75
|
+
}
|
|
11
76
|
|
|
12
77
|
export type MutatorContext = {
|
|
13
|
-
tx:
|
|
78
|
+
tx: Transaction
|
|
14
79
|
authData: AuthData | null
|
|
15
80
|
environment: 'server' | 'client'
|
|
16
|
-
serverActions?: any
|
|
81
|
+
serverActions?: any // TODO
|
|
17
82
|
asyncTasks?: Array<() => Promise<void>>
|
|
18
83
|
can: any // TODO
|
|
19
84
|
didCanPermissionsRun?: boolean
|
|
20
85
|
}
|
|
21
86
|
|
|
22
|
-
export type
|
|
87
|
+
export type AsyncAction = () => Promise<void>
|
|
23
88
|
|
|
24
89
|
type GenericTable = TableBuilderWithColumns<any>
|
|
25
90
|
|
|
@@ -43,7 +108,9 @@ export type TablePrimaryKeys<TS extends GenericTable> = TupleToUnion<
|
|
|
43
108
|
GetTableSchema<TS>['primaryKey']
|
|
44
109
|
>
|
|
45
110
|
|
|
46
|
-
export type Where<Table extends
|
|
111
|
+
export type Where<Table extends TableName = TableName, ReturnType = any> = (
|
|
47
112
|
expressionBuilder: ExpressionBuilder<Schema, Table>,
|
|
48
113
|
auth: AuthData | null
|
|
49
114
|
) => ReturnType
|
|
115
|
+
|
|
116
|
+
export type ZeroEvent = { type: 'error'; message: string }
|
package/src/where.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { TableName, Where } from './types'
|
|
2
|
+
|
|
3
|
+
export function where<Table extends TableName, Builder extends Where = Where<Table>>(
|
|
4
|
+
tableName: Table,
|
|
5
|
+
builder: Builder
|
|
6
|
+
): Builder
|
|
7
|
+
|
|
8
|
+
export function where<Table extends TableName, Builder extends Where = Where<Table>>(
|
|
9
|
+
builder: Builder
|
|
10
|
+
): Builder
|
|
11
|
+
|
|
12
|
+
export function where<Table extends TableName, Builder extends Where = Where<Table>>(
|
|
13
|
+
a: Table | Builder,
|
|
14
|
+
b?: Builder
|
|
15
|
+
): Builder {
|
|
16
|
+
if (b) {
|
|
17
|
+
WhereTableNameMap.set(b, a as Table)
|
|
18
|
+
}
|
|
19
|
+
return (b || a) as any
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// permissions where:
|
|
23
|
+
|
|
24
|
+
const WhereTableNameMap = new WeakMap<Where, TableName>()
|
|
25
|
+
|
|
26
|
+
export function getWhereTableName(where: Where) {
|
|
27
|
+
return WhereTableNameMap.get(where)
|
|
28
|
+
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { showToast } from '~/interface/toast/Toast'
|
|
2
|
-
import { zero } from '../zero'
|
|
3
|
-
|
|
4
|
-
export const clearZeroDatabase = async () => {
|
|
5
|
-
try {
|
|
6
|
-
// Get all IndexedDB databases
|
|
7
|
-
const databases = await indexedDB.databases()
|
|
8
|
-
|
|
9
|
-
// Find Zero/Replicache databases
|
|
10
|
-
const zeroAndReplicacheDatabases = databases.filter((db) => {
|
|
11
|
-
if (!db.name) return false
|
|
12
|
-
const name = db.name.toLowerCase()
|
|
13
|
-
return (
|
|
14
|
-
name.includes('zero') ||
|
|
15
|
-
name.includes('replicache') ||
|
|
16
|
-
name.includes('roc') || // rocicorp prefix
|
|
17
|
-
name.startsWith('rep:') // replicache prefix
|
|
18
|
-
)
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
if (zeroAndReplicacheDatabases.length > 0) {
|
|
22
|
-
// Delete all Zero/Replicache databases
|
|
23
|
-
await Promise.all(
|
|
24
|
-
zeroAndReplicacheDatabases.map((db) => {
|
|
25
|
-
return new Promise<void>((resolve, reject) => {
|
|
26
|
-
const deleteReq = indexedDB.deleteDatabase(db.name!)
|
|
27
|
-
deleteReq.onsuccess = () => resolve()
|
|
28
|
-
deleteReq.onerror = () => reject(deleteReq.error)
|
|
29
|
-
deleteReq.onblocked = () => reject(new Error('database deletion blocked'))
|
|
30
|
-
})
|
|
31
|
-
})
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
const dbNames = zeroAndReplicacheDatabases.map((db) => db.name).join(', ')
|
|
35
|
-
showToast(
|
|
36
|
-
`Cleared ${zeroAndReplicacheDatabases.length} Zero/Replicache databases: ${dbNames}`
|
|
37
|
-
)
|
|
38
|
-
} else {
|
|
39
|
-
// Fallback: clear all IndexedDB databases
|
|
40
|
-
await Promise.all(
|
|
41
|
-
databases.map((db) => {
|
|
42
|
-
if (db.name) {
|
|
43
|
-
return new Promise<void>((resolve, reject) => {
|
|
44
|
-
const deleteReq = indexedDB.deleteDatabase(db.name!)
|
|
45
|
-
deleteReq.onsuccess = () => resolve()
|
|
46
|
-
deleteReq.onerror = () => reject(deleteReq.error)
|
|
47
|
-
deleteReq.onblocked = () => reject(new Error('database deletion blocked'))
|
|
48
|
-
})
|
|
49
|
-
}
|
|
50
|
-
})
|
|
51
|
-
)
|
|
52
|
-
showToast('Cleared all IndexedDB databases')
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Close the zero connection before reloading
|
|
56
|
-
if (zero && typeof (zero as any).close === 'function') {
|
|
57
|
-
await (zero as any).close()
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// Reload the page to reinitialize Zero
|
|
61
|
-
setTimeout(() => {
|
|
62
|
-
window.location.reload()
|
|
63
|
-
}, 1000)
|
|
64
|
-
} catch (error) {
|
|
65
|
-
console.error('Error clearing Zero database:', error)
|
|
66
|
-
showToast('Error clearing Zero database')
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// import { useMemo } from 'react'
|
|
2
|
-
// import { useAuth } from '~/auth/client/authClient'
|
|
3
|
-
// import { getAuthData } from './getAuthData'
|
|
4
|
-
|
|
5
|
-
// export const useAuthData = () => {
|
|
6
|
-
// const auth = useAuth()
|
|
7
|
-
// const userId = auth?.user?.id || 'anon'
|
|
8
|
-
|
|
9
|
-
// // biome-ignore lint/correctness/useExhaustiveDependencies: its based on id
|
|
10
|
-
// return useMemo(() => {
|
|
11
|
-
// return getAuthData()
|
|
12
|
-
// }, [userId])
|
|
13
|
-
// }
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { TableBuilderWithColumns } from '@rocicorp/zero';
|
|
2
|
-
import type { MutatorContext, TableInsertRow, TableUpdateRow, Where } from './types';
|
|
3
|
-
type MutationBuilder<Obj = any> = (ctx: MutatorContext, obj?: Obj) => Promise<void>;
|
|
4
|
-
type MutationBuilders = Record<string, MutationBuilder>;
|
|
5
|
-
type GenericTable = TableBuilderWithColumns<any>;
|
|
6
|
-
type CRUDMutations<Table extends GenericTable> = {
|
|
7
|
-
insert: MutationBuilder<TableInsertRow<Table>>;
|
|
8
|
-
upsert: MutationBuilder<TableInsertRow<Table>>;
|
|
9
|
-
update: MutationBuilder<TableUpdateRow<Table>>;
|
|
10
|
-
delete: MutationBuilder<TableUpdateRow<Table>>;
|
|
11
|
-
};
|
|
12
|
-
type CRUDNames = 'insert' | 'upsert' | 'update' | 'delete';
|
|
13
|
-
type MutationsWithCRUD<Table extends GenericTable, Mutations extends MutationBuilders> = {
|
|
14
|
-
[Key in CRUDNames | keyof Mutations]: Key extends keyof Mutations ? Mutations[Key] : Key extends keyof CRUDMutations<any> ? CRUDMutations<Table>[Key] : never;
|
|
15
|
-
};
|
|
16
|
-
export declare function mutations<Table extends GenericTable, Permissions extends Where>(table: Table, permissions: Permissions): MutationsWithCRUD<Table, {}>;
|
|
17
|
-
export declare function mutations<Table extends GenericTable, Permissions extends Where, Mutations extends MutationBuilders>(table: Table, permissions: Permissions, mutations: Mutations): MutationsWithCRUD<Table, Mutations>;
|
|
18
|
-
export declare function mutations<Mutations extends MutationBuilder>(mutations: Mutations): Mutations;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=createMutations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createMutations.d.ts","sourceRoot":"","sources":["../src/createMutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpF,KAAK,eAAe,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACnF,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAevD,KAAK,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA;AAEhD,KAAK,aAAa,CAAC,KAAK,SAAS,YAAY,IAAI;IAC/C,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IAC9C,MAAM,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;CAC/C,CAAA;AAED,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE1D,KAAK,iBAAiB,CAAC,KAAK,SAAS,YAAY,EAAE,SAAS,SAAS,gBAAgB,IAAI;KACtF,GAAG,IAAI,SAAS,GAAG,MAAM,SAAS,GAAG,GAAG,SAAS,MAAM,SAAS,GAC7D,SAAS,CAAC,GAAG,CAAC,GACd,GAAG,SAAS,MAAM,aAAa,CAAC,GAAG,CAAC,GAClC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GACzB,KAAK;CACZ,CAAA;AAED,wBAAgB,SAAS,CAAC,KAAK,SAAS,YAAY,EAAE,WAAW,SAAS,KAAK,EAC7E,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GACvB,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAE/B,wBAAgB,SAAS,CACvB,KAAK,SAAS,YAAY,EAC1B,WAAW,SAAS,KAAK,EACzB,SAAS,SAAS,gBAAgB,EAElC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,GACnB,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAEtC,wBAAgB,SAAS,CAAC,SAAS,SAAS,eAAe,EACzD,SAAS,EAAE,SAAS,GACnB,SAAS,CAAA"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { Condition, ExpressionBuilder, Schema as ZeroSchema } from '@rocicorp/zero';
|
|
2
|
-
import type { AuthData } from 'start/types';
|
|
3
|
-
import type { MutatorContext, Where } from './types';
|
|
4
|
-
export declare function createPermissions<Schema extends ZeroSchema, TableName extends string>({ schema, getContext, }: {
|
|
5
|
-
schema: Schema;
|
|
6
|
-
getContext: () => MutatorContext;
|
|
7
|
-
}): {
|
|
8
|
-
where: {
|
|
9
|
-
<Table extends TableName, Builder extends Where = Where<Table>>(tableName: Table, builder: Builder): Builder;
|
|
10
|
-
<Table extends TableName, Builder extends Where = Where<Table>>(builder: Builder): Builder;
|
|
11
|
-
};
|
|
12
|
-
can: <PWhere extends Where<TableName, Partial<Record<("insert" | "update" | "delete" | "select" | "read" | "write") | (string & {}), boolean | Condition>>>, Action extends keyof ReturnType<PWhere>>(where: PWhere, action: Action, obj: any) => Promise<void>;
|
|
13
|
-
buildPermissionQuery: <PermissionWhere extends Where<TableName, Partial<Record<("insert" | "update" | "delete" | "select" | "read" | "write") | (string & {}), boolean | Condition>>>, Action extends string>(authData: AuthData | null, eb: ExpressionBuilder<any, any>, permissionWhere: PermissionWhere, action: Action, objOrId: Record<string, any> | string) => Condition;
|
|
14
|
-
readPermissions: Promise<{
|
|
15
|
-
tables: Record<string, {
|
|
16
|
-
row?: {
|
|
17
|
-
select?: ["allow", Condition][] | undefined;
|
|
18
|
-
insert?: ["allow", Condition][] | undefined;
|
|
19
|
-
update?: {
|
|
20
|
-
preMutation?: ["allow", Condition][] | undefined;
|
|
21
|
-
postMutation?: ["allow", Condition][] | undefined;
|
|
22
|
-
} | undefined;
|
|
23
|
-
delete?: ["allow", Condition][] | undefined;
|
|
24
|
-
} | undefined;
|
|
25
|
-
cell?: Record<string, {
|
|
26
|
-
select?: ["allow", Condition][] | undefined;
|
|
27
|
-
insert?: ["allow", Condition][] | undefined;
|
|
28
|
-
update?: {
|
|
29
|
-
preMutation?: ["allow", Condition][] | undefined;
|
|
30
|
-
postMutation?: ["allow", Condition][] | undefined;
|
|
31
|
-
} | undefined;
|
|
32
|
-
delete?: ["allow", Condition][] | undefined;
|
|
33
|
-
}> | undefined;
|
|
34
|
-
}>;
|
|
35
|
-
} | undefined>;
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=createPermissions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createPermissions.d.ts","sourceRoot":"","sources":["../src/createPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAGjB,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIpD,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,UAAU,EAAE,SAAS,SAAS,MAAM,EAAE,EACrF,MAAM,EACN,UAAU,GACX,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,cAAc,CAAA;CACjC;;SAYgB,KAAK,SAAS,SAAS,EAAE,OAAO,SAAS,KAAK,4BAChD,KAAK,WACP,OAAO,GACf,OAAO;SAEK,KAAK,SAAS,SAAS,EAAE,OAAO,SAAS,KAAK,0BAClD,OAAO,GACf,OAAO;;UAgGR,MAAM,iJACN,MAAM,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,SAChC,MAAM,UAAU,MAAM,OAAO,GAAG;2BAlDvC,eAAe,iJACf,MAAM,SAAS,MAAM,YAEX,QAAQ,GAAG,IAAI,MACrB,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,mBACd,eAAe,UACxB,MAAM,WAEL,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;;;;sBAnEqC,CAAC;sBACL,CAAC;sBAGpD,CAAA;+BAA+B,CAAC;gCAK/B,CAAC;;sBAIQ,CAAC;;;sBAKG,CAAC;sBAOT,CAAC;sBAGT,CAAC;+BAGd,CAAC;gCAKL,CAAF;;sBAMuB,CAAC;;;;EAwLzB"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { Row, Schema, ZeroOptions } from '@rocicorp/zero';
|
|
2
|
-
import { useQuery as zeroUseQuery } from '@rocicorp/zero/react';
|
|
3
|
-
import { type ReactNode } from 'react';
|
|
4
|
-
export declare function createZeroClient<S extends Schema>({ schema, models, disable, }: {
|
|
5
|
-
schema: S;
|
|
6
|
-
models: any;
|
|
7
|
-
disable?: boolean;
|
|
8
|
-
}): {
|
|
9
|
-
where: {
|
|
10
|
-
<Table extends string, Builder extends import("./types").Where = import("./types").Where<Table>>(tableName: Table, builder: Builder): Builder;
|
|
11
|
-
<Table extends string, Builder extends import("./types").Where = import("./types").Where<Table>>(builder: Builder): Builder;
|
|
12
|
-
};
|
|
13
|
-
can: <PWhere extends import("./types").Where<string, Partial<Record<("insert" | "update" | "delete" | "select" | "read" | "write") | (string & {}), boolean | import("@rocicorp/zero").Condition>>>, Action extends keyof ReturnType<PWhere>>(where: PWhere, action: Action, obj: any) => Promise<void>;
|
|
14
|
-
buildPermissionQuery: <PermissionWhere extends import("./types").Where<string, Partial<Record<("insert" | "update" | "delete" | "select" | "read" | "write") | (string & {}), boolean | import("@rocicorp/zero").Condition>>>, Action extends string>(authData: import("start/types").AuthData | null, eb: import("@rocicorp/zero").ExpressionBuilder<any, any>, permissionWhere: PermissionWhere, action: Action, objOrId: Record<string, any> | string) => import("@rocicorp/zero").Condition;
|
|
15
|
-
readPermissions: Promise<{
|
|
16
|
-
tables: Record<string, {
|
|
17
|
-
row?: {
|
|
18
|
-
select?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
19
|
-
insert?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
20
|
-
update?: {
|
|
21
|
-
preMutation?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
22
|
-
postMutation?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
23
|
-
} | undefined;
|
|
24
|
-
delete?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
25
|
-
} | undefined;
|
|
26
|
-
cell?: Record<string, {
|
|
27
|
-
select?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
28
|
-
insert?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
29
|
-
update?: {
|
|
30
|
-
preMutation?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
31
|
-
postMutation?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
32
|
-
} | undefined;
|
|
33
|
-
delete?: ["allow", import("@rocicorp/zero").Condition][] | undefined;
|
|
34
|
-
}> | undefined;
|
|
35
|
-
}>;
|
|
36
|
-
} | undefined>;
|
|
37
|
-
ProvideZero: ({ children, authData, ...props }: Omit<ZeroOptions<Schema, any>, "schema" | "mutators"> & {
|
|
38
|
-
children: ReactNode;
|
|
39
|
-
authData?: any;
|
|
40
|
-
}) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
41
|
-
useQuery: typeof zeroUseQuery;
|
|
42
|
-
usePermission: <K extends string, Action extends "insert" | "update" | "delete" | "select">(table: K, action: Action, objOrId: string | Partial<Row<Schema["tables"][K]>> | undefined, enabled?: boolean, debug?: boolean) => boolean | null;
|
|
43
|
-
zero: import("@rocicorp/zero").Zero<S, any>;
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=createZeroClient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroClient.d.ts","sourceRoot":"","sources":["../src/createZeroClient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAyB,QAAQ,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEtF,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AASnE,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,EACjD,MAAM,EACN,MAAM,EACN,OAAO,GACR,EAAE;IACD,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;;;;;;;;;;sBAW+B,CAAC;sBAKT,CAAC;sBAIhB,CAAC;+BAA+B,CAAC;gCAIzB,CAAC;;sBAKF,CAAC;;;sBAIH,CAAC;sBAEV,CAAC;sBACE,CAAC;+BAA+B,CAAC;gCAEN,CAAC;;sBAMpB,CAAC;;;;oDAyEZ,IAAI,CAAC,WAAW,CAAC,MAAM,MAAW,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG;QAC9D,QAAQ,EAAE,SAAS,CAAA;QACnB,QAAQ,CAAC,EAAE,GAAG,CAAA;KACf;;oBAhGC,CAAC,iBACD,MAAM,SAAS,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,SAEjD,CAAC,UACA,MAAM,WACL,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,yCAG9D,OAAO,GAAG,IAAI;;EA+IlB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import type { AuthData } from './types';
|
|
2
|
-
import type { GenericTransaction } from './types';
|
|
3
|
-
export declare function createZeroServer<TX extends GenericTransaction>({ actions, }: {
|
|
4
|
-
actions: any;
|
|
5
|
-
}): {
|
|
6
|
-
handleMutationRequest: ({ authData, request, skipAsyncTasks, }: {
|
|
7
|
-
authData: AuthData;
|
|
8
|
-
request: Request;
|
|
9
|
-
skipAsyncTasks?: boolean;
|
|
10
|
-
}) => Promise<{
|
|
11
|
-
response: {
|
|
12
|
-
mutations: {
|
|
13
|
-
id: {
|
|
14
|
-
id: number;
|
|
15
|
-
clientID: string;
|
|
16
|
-
};
|
|
17
|
-
result: {
|
|
18
|
-
data?: import("@rocicorp/zero").ReadonlyJSONValue | undefined;
|
|
19
|
-
} | {
|
|
20
|
-
details?: import("@rocicorp/zero").ReadonlyJSONValue | undefined;
|
|
21
|
-
error: "app";
|
|
22
|
-
} | {
|
|
23
|
-
details?: import("@rocicorp/zero").ReadonlyJSONValue | undefined;
|
|
24
|
-
error: "oooMutation" | "alreadyProcessed";
|
|
25
|
-
};
|
|
26
|
-
}[];
|
|
27
|
-
} | {
|
|
28
|
-
mutationIDs?: {
|
|
29
|
-
id: number;
|
|
30
|
-
clientID: string;
|
|
31
|
-
}[] | undefined;
|
|
32
|
-
error: "unsupportedPushVersion";
|
|
33
|
-
} | {
|
|
34
|
-
mutationIDs?: {
|
|
35
|
-
id: number;
|
|
36
|
-
clientID: string;
|
|
37
|
-
}[] | undefined;
|
|
38
|
-
error: "unsupportedSchemaVersion";
|
|
39
|
-
} | {
|
|
40
|
-
mutationIDs?: {
|
|
41
|
-
id: number;
|
|
42
|
-
clientID: string;
|
|
43
|
-
}[] | undefined;
|
|
44
|
-
error: "http";
|
|
45
|
-
status: number;
|
|
46
|
-
details: string;
|
|
47
|
-
} | {
|
|
48
|
-
mutationIDs?: {
|
|
49
|
-
id: number;
|
|
50
|
-
clientID: string;
|
|
51
|
-
}[] | undefined;
|
|
52
|
-
error: "zeroPusher";
|
|
53
|
-
details: string;
|
|
54
|
-
};
|
|
55
|
-
asyncTasks: (() => Promise<void>)[];
|
|
56
|
-
}>;
|
|
57
|
-
transaction: <CB extends (tx: TX) => Promise<any>, Returns extends CB extends (tx: TX) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
|
|
58
|
-
mutate: (run: (tx: TX, mutators: Mutators) => Promise<void>, authData?: Pick<AuthData, "email" | "id"> & Partial<AuthData>) => Promise<void>;
|
|
59
|
-
query: <CB extends (tx: TX) => Promise<any>, Returns extends CB extends (tx: TX) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=createZeroServer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAOvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAYjD,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,kBAAkB,EAAE,EAC9D,OAAO,GACR,EAAE;IACD,OAAO,EAAE,GAAG,CAAA;CACb;oEAcI;QACD,QAAQ,EAAE,QAAQ,CAAA;QAClB,OAAO,EAAE,OAAO,CAAA;QAChB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAE+B,OAAO,CAAC,IAAI,CAAC;;kBAqE3C,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACnC,OAAO,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAC5D,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAvCvB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,aACvC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;YAoC7D,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACnC,OAAO,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SAC5D,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;EAmB/B"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Query, Row } from '@rocicorp/zero';
|
|
2
|
-
export declare function batchQuery<Q extends Query<any, any, any>, Item extends Row<Q>>(q: Q, mapper: (items: Item[]) => Promise<void>, { chunk, pause, stopAfter, }?: {
|
|
3
|
-
chunk: number;
|
|
4
|
-
pause?: number;
|
|
5
|
-
stopAfter?: number;
|
|
6
|
-
}): Promise<void>;
|
|
7
|
-
//# sourceMappingURL=batchQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batchQuery.d.ts","sourceRoot":"","sources":["../../src/helpers/batchQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAsB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,EAClF,CAAC,EAAE,CAAC,EACJ,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EACxC,EACE,KAAK,EACL,KAAS,EACT,SAAmB,GACpB,GAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACH,iBA8BlB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearZeroDatabase.d.ts","sourceRoot":"","sources":["../../src/helpers/clearZeroDatabase.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,qBAgE7B,CAAA"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { MutatorContext } from '../types';
|
|
2
|
-
export declare function context(): MutatorContext;
|
|
3
|
-
export declare function isInZeroMutation(): boolean;
|
|
4
|
-
export declare function runWithContext<T>(context: MutatorContext, fn: () => T | Promise<T>): Promise<T>;
|
|
5
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/helpers/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAQ9C,wBAAgB,OAAO,IAAI,cAAc,CAOxC;AAED,wBAAgB,gBAAgB,YAE/B;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|