over-zero 0.0.5 → 0.0.6

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.
Files changed (58) hide show
  1. package/dist/cjs/createPermissions.cjs +3 -3
  2. package/dist/cjs/createPermissions.js +3 -3
  3. package/dist/cjs/createPermissions.js.map +1 -1
  4. package/dist/cjs/createPermissions.native.js +6 -3
  5. package/dist/cjs/createPermissions.native.js.map +1 -1
  6. package/dist/cjs/createZeroClient.cjs +3 -8
  7. package/dist/cjs/createZeroClient.js +4 -6
  8. package/dist/cjs/createZeroClient.js.map +1 -1
  9. package/dist/cjs/createZeroClient.native.js +4 -6
  10. package/dist/cjs/createZeroClient.native.js.map +1 -1
  11. package/dist/cjs/createZeroServer.cjs +18 -16
  12. package/dist/cjs/createZeroServer.js +18 -14
  13. package/dist/cjs/createZeroServer.js.map +2 -2
  14. package/dist/cjs/createZeroServer.native.js +20 -14
  15. package/dist/cjs/createZeroServer.native.js.map +2 -2
  16. package/dist/cjs/helpers/createMutators.js.map +1 -1
  17. package/dist/cjs/mutations.js.map +1 -1
  18. package/dist/esm/createPermissions.js +3 -3
  19. package/dist/esm/createPermissions.js.map +1 -1
  20. package/dist/esm/createPermissions.mjs +3 -3
  21. package/dist/esm/createPermissions.mjs.map +1 -1
  22. package/dist/esm/createPermissions.native.js +6 -3
  23. package/dist/esm/createPermissions.native.js.map +1 -1
  24. package/dist/esm/createZeroClient.js +5 -7
  25. package/dist/esm/createZeroClient.js.map +1 -1
  26. package/dist/esm/createZeroClient.mjs +4 -9
  27. package/dist/esm/createZeroClient.mjs.map +1 -1
  28. package/dist/esm/createZeroClient.native.js +4 -9
  29. package/dist/esm/createZeroClient.native.js.map +1 -1
  30. package/dist/esm/createZeroServer.js +18 -14
  31. package/dist/esm/createZeroServer.js.map +2 -2
  32. package/dist/esm/createZeroServer.mjs +18 -16
  33. package/dist/esm/createZeroServer.mjs.map +1 -1
  34. package/dist/esm/createZeroServer.native.js +20 -16
  35. package/dist/esm/createZeroServer.native.js.map +1 -1
  36. package/dist/esm/helpers/createMutators.js.map +1 -1
  37. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  38. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  39. package/dist/esm/mutations.js.map +1 -1
  40. package/dist/esm/mutations.mjs.map +1 -1
  41. package/dist/esm/mutations.native.js.map +1 -1
  42. package/package.json +2 -2
  43. package/src/createPermissions.ts +46 -39
  44. package/src/createZeroClient.tsx +7 -7
  45. package/src/createZeroServer.ts +28 -20
  46. package/src/helpers/createMutators.ts +4 -3
  47. package/src/mutations.ts +3 -6
  48. package/src/types.ts +19 -8
  49. package/types/createPermissions.d.ts +2 -2
  50. package/types/createPermissions.d.ts.map +1 -1
  51. package/types/createZeroServer.d.ts +1 -1
  52. package/types/createZeroServer.d.ts.map +1 -1
  53. package/types/helpers/createMutators.d.ts +2 -2
  54. package/types/helpers/createMutators.d.ts.map +1 -1
  55. package/types/mutations.d.ts +1 -1
  56. package/types/mutations.d.ts.map +1 -1
  57. package/types/types.d.ts +7 -4
  58. package/types/types.d.ts.map +1 -1
@@ -8,7 +8,14 @@ import { ANYONE_CAN, definePermissions } from '@rocicorp/zero'
8
8
  import { ensure, EnsureError, objectEntries } from '@vxrn/helpers'
9
9
  import { runWithContext } from './helpers/context'
10
10
  import { prettyFormatZeroQuery } from './helpers/prettyFormatZeroQuery'
11
- import type { AuthData, MutatorContext, TableName, Transaction, Where } from './types'
11
+ import type {
12
+ AuthData,
13
+ MutatorContext,
14
+ TableName,
15
+ Transaction,
16
+ Where,
17
+ Can,
18
+ } from './types'
12
19
  import { getWhereTableName } from './where'
13
20
 
14
21
  export function createPermissions<Schema extends ZeroSchema>({
@@ -100,10 +107,7 @@ export function createPermissions<Schema extends ZeroSchema>({
100
107
  return eb.and(permissionCondition, ...primaryKeyWheres)
101
108
  }
102
109
 
103
- async function can<
104
- PWhere extends PermissionsWhere,
105
- Action extends keyof ReturnType<PWhere>,
106
- >(where: PWhere, action: Action, obj: any) {
110
+ const can: Can = async (where, action, obj) => {
107
111
  const ctx = getContext()
108
112
  const tableName = getWhereTableName(where)
109
113
  if (!tableName) {
@@ -171,41 +175,44 @@ export function createPermissions<Schema extends ZeroSchema>({
171
175
 
172
176
  const readPermissions = definePermissions<AuthData, Schema>(schema, async () => {
173
177
  const permissionsEntries = await Promise.all(
174
- objectEntries(models).map(async ([key, model]) => {
175
- return await runWithContext(
176
- {
177
- authData: { id: '', role: undefined, email: '' },
178
- } as any,
179
- () => {
180
- return [
181
- key,
182
- {
183
- row: {
184
- select: [
185
- (authData: AuthData, eb: ExpressionBuilder<any, any>) => {
186
- const out = model.permissions(eb, authData).read
187
-
188
- if (out === true) {
189
- return eb.and()
190
- }
191
-
192
- if (out === false) {
193
- return eb.cmpLit(true, '=', false)
194
- }
195
-
196
- return out
197
- },
198
- ],
199
- // we have permissions on these through our model system with custom mutators:
200
- insert: ANYONE_CAN,
201
- update: ANYONE_CAN,
202
- delete: ANYONE_CAN,
178
+ objectEntries(models)
179
+ // non permissioned models dont turn into read permissions
180
+ .filter(([_, model]) => !!model.permissions)
181
+ .map(async ([key, model]) => {
182
+ return await runWithContext(
183
+ {
184
+ authData: { id: '', role: undefined, email: '' },
185
+ } as any,
186
+ () => {
187
+ return [
188
+ key,
189
+ {
190
+ row: {
191
+ select: [
192
+ (authData: AuthData, eb: ExpressionBuilder<any, any>) => {
193
+ const out = model.permissions(eb, authData).read
194
+
195
+ if (out === true) {
196
+ return eb.and()
197
+ }
198
+
199
+ if (out === false) {
200
+ return eb.cmpLit(true, '=', false)
201
+ }
202
+
203
+ return out
204
+ },
205
+ ],
206
+ // we have permissions on these through our model system with custom mutators:
207
+ insert: ANYONE_CAN,
208
+ update: ANYONE_CAN,
209
+ delete: ANYONE_CAN,
210
+ },
203
211
  },
204
- },
205
- ]
206
- }
207
- )
208
- })
212
+ ]
213
+ }
214
+ )
215
+ })
209
216
  )
210
217
 
211
218
  const permissions = Object.fromEntries(permissionsEntries)
@@ -1,6 +1,6 @@
1
1
  import type { Row, Zero, ZeroOptions, Schema as ZeroSchema } from '@rocicorp/zero'
2
2
  import { useZero, ZeroProvider, useQuery as zeroUseQuery } from '@rocicorp/zero/react'
3
- import { createEmitter, createLocalStorage, mapObject } from '@vxrn/helpers'
3
+ import { createEmitter, mapObject } from '@vxrn/helpers'
4
4
  import { createContext, use, useMemo, type ReactNode } from 'react'
5
5
  import { createPermissions } from './createPermissions'
6
6
  import { context } from './helpers/context'
@@ -39,9 +39,9 @@ export function createZeroClient<
39
39
  environment: 'client',
40
40
  })
41
41
 
42
- const permissionCache = createLocalStorage<string, boolean>('permissions-cache', {
43
- storageLimit: 24,
44
- })
42
+ // const permissionCache = createLocalStorage<string, boolean>('permissions-cache', {
43
+ // storageLimit: 24,
44
+ // })
45
45
 
46
46
  const zeroEvents = createEmitter<ZeroEvent | null>('zero', null)
47
47
 
@@ -65,14 +65,14 @@ export function createZeroClient<
65
65
  // we fallback to just table.action, to avoid flickers for now
66
66
  const keyBase = `${String(table)}${action}`
67
67
  const key = `${keyBase}${typeof objOrId === 'string' ? objOrId : JSON.stringify(objOrId)}`
68
- const cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase)
68
+ // const cacheVal = permissionCache.get(key) ?? permissionCache.get(keyBase)
69
69
  const authData = useAuthData()
70
70
  const permission = modelPermissions[table]
71
71
 
72
72
  const query = (() => {
73
73
  let baseQuery = zero.query[table].one()
74
74
 
75
- if (!enabled) {
75
+ if (!enabled || !permission) {
76
76
  return baseQuery
77
77
  }
78
78
 
@@ -88,7 +88,7 @@ export function createZeroClient<
88
88
  })()
89
89
 
90
90
  const [data, status] = useQuery(query, {
91
- enabled: Boolean(enabled && authData && objOrId),
91
+ enabled: Boolean(enabled && permission && authData && objOrId),
92
92
  })
93
93
 
94
94
  if (debug) {
@@ -1,4 +1,4 @@
1
- import type { Schema as ZeroSchema } from '@rocicorp/zero'
1
+ import type { Query, Schema as ZeroSchema } from '@rocicorp/zero'
2
2
  import type { TransactionProviderInput } from '@rocicorp/zero/pg'
3
3
  import { PostgresJSConnection, PushProcessor } from '@rocicorp/zero/pg'
4
4
  import { ZQLDatabase } from '@rocicorp/zero/server'
@@ -87,7 +87,7 @@ export function createZeroServer<
87
87
  }
88
88
  }
89
89
 
90
- const serverMutate = async (
90
+ const mutate = async (
91
91
  run: (tx: Transaction, mutators: GetZeroMutators<Models>) => Promise<void>,
92
92
  authData?: Pick<AuthData, 'email' | 'id'> & Partial<AuthData>
93
93
  ) => {
@@ -107,26 +107,14 @@ export function createZeroServer<
107
107
  can: permissions.can,
108
108
  })
109
109
 
110
- await serverTransaction(async (tx) => {
110
+ await transaction(async (tx) => {
111
111
  await run(tx, mutators)
112
112
  })
113
113
 
114
114
  await Promise.all(asyncTasks.map((t) => t()))
115
115
  }
116
116
 
117
- // shorthand but nicer for single queries
118
- // TODO should unwrap q.query
119
- const serverQuery = serverTransaction
120
-
121
- // This is needed temporarily and will be cleaned up in the future.
122
- const dummyTransactionInput: TransactionProviderInput = {
123
- clientGroupID: 'unused',
124
- clientID: 'unused',
125
- mutationID: 42,
126
- upstreamSchema: 'unused',
127
- }
128
-
129
- async function serverTransaction<
117
+ async function transaction<
130
118
  CB extends (tx: Transaction) => Promise<any>,
131
119
  Returns extends CB extends (tx: Transaction) => Promise<infer X> ? X : never,
132
120
  >(query: CB): Promise<Returns> {
@@ -139,15 +127,35 @@ export function createZeroServer<
139
127
  const output = await zeroServerDatabase.transaction(query, dummyTransactionInput)
140
128
  return output as any
141
129
  } catch (err) {
142
- console.error(`Error running serverTransaction(): ${err}`)
130
+ console.error(`Error running transaction(): ${err}`)
143
131
  throw err
144
132
  }
145
133
  }
146
134
 
135
+ type ZeroQueryFn<Response extends Query<any, any>> = (
136
+ query: Transaction['query']
137
+ ) => Promise<Response>
138
+
139
+ async function query<GetQuery extends ZeroQueryFn<any>>(
140
+ cb: GetQuery
141
+ ): Promise<ReturnType<GetQuery>> {
142
+ return await transaction(async (tx) => {
143
+ return await cb(tx.query)
144
+ })
145
+ }
146
+
147
+ // This is needed temporarily and will be cleaned up in the future.
148
+ const dummyTransactionInput: TransactionProviderInput = {
149
+ clientGroupID: 'unused',
150
+ clientID: 'unused',
151
+ mutationID: 42,
152
+ upstreamSchema: 'unused',
153
+ }
154
+
147
155
  return {
148
156
  handleMutationRequest,
149
- transaction: serverTransaction,
150
- mutate: serverMutate,
151
- query: serverQuery,
157
+ transaction,
158
+ mutate,
159
+ query,
152
160
  }
153
161
  }
@@ -1,10 +1,11 @@
1
1
  import { isClient, isServer, mapObject, time } from '@vxrn/helpers'
2
2
  import type {
3
3
  AuthData,
4
+ Can,
4
5
  GenericModels,
5
6
  GetZeroMutators,
7
+ MutatorContext,
6
8
  Transaction,
7
- Where,
8
9
  } from '../types'
9
10
  import { runWithContext } from './context'
10
11
 
@@ -18,7 +19,7 @@ export function createMutators<Models extends GenericModels>({
18
19
  }: {
19
20
  environment: 'server' | 'client'
20
21
  authData: AuthData | null
21
- can: (where: Where<any>, action: string, obj: any) => void
22
+ can: Can
22
23
  models: Models
23
24
  asyncTasks?: Array<() => Promise<void>>
24
25
  createServerActions?: () => Record<string, any>
@@ -31,7 +32,7 @@ export function createMutators<Models extends GenericModels>({
31
32
 
32
33
  function withContext<Args extends any[]>(fn: (...args: Args) => Promise<void>) {
33
34
  return async (tx: Transaction, ...args: Args): Promise<void> => {
34
- const mutationContext = {
35
+ const mutationContext: MutatorContext = {
35
36
  tx,
36
37
  authData,
37
38
  environment,
package/src/mutations.ts CHANGED
@@ -46,11 +46,13 @@ type MutationsWithCRUD<Table extends GenericTable, Mutations extends MutationBui
46
46
  : never
47
47
  }
48
48
 
49
+ export function mutations<Mutations extends MutationBuilders>(
50
+ mutations: Mutations
51
+ ): Mutations
49
52
  export function mutations<Table extends GenericTable, Permissions extends Where>(
50
53
  table: Table,
51
54
  permissions: Permissions
52
55
  ): MutationsWithCRUD<Table, {}>
53
-
54
56
  export function mutations<
55
57
  Table extends GenericTable,
56
58
  Permissions extends Where,
@@ -60,11 +62,6 @@ export function mutations<
60
62
  permissions: Permissions,
61
63
  mutations: Mutations
62
64
  ): MutationsWithCRUD<Table, Mutations>
63
-
64
- export function mutations<Mutations extends MutationBuilder>(
65
- mutations: Mutations
66
- ): Mutations
67
-
68
65
  // TODO we should enforece the CRUD mutations obj to the callier so they get it auto-typed
69
66
  export function mutations<
70
67
  Table extends GenericTable,
package/src/types.ts CHANGED
@@ -32,6 +32,7 @@ export interface Config {}
32
32
  interface DefaultConfig {
33
33
  schema: ZeroSchema
34
34
  authData: {}
35
+ serverActions: null
35
36
  }
36
37
 
37
38
  interface FinalConfig extends Omit<DefaultConfig, keyof Config>, Config {}
@@ -48,6 +49,10 @@ export type AuthData = FinalConfig['authData'] extends Record<string, unknown>
48
49
  ? FinalConfig['authData']
49
50
  : Record<string, unknown>
50
51
 
52
+ export type ServerActions = FinalConfig['serverActions'] extends Record<string, unknown>
53
+ ? FinalConfig['serverActions']
54
+ : Record<string, unknown>
55
+
51
56
  /**
52
57
  * ➗0️⃣ END OVERRIDDEN TYPES
53
58
  */
@@ -64,7 +69,7 @@ type GetModelMutators<Models extends GenericModels> = {
64
69
  export type GenericModels = {
65
70
  [key: string]: {
66
71
  mutate: Record<string, (ctx: MutatorContext, obj?: any) => Promise<any>>
67
- permissions: Where
72
+ permissions?: Where
68
73
  }
69
74
  }
70
75
 
@@ -74,13 +79,24 @@ export type TransformMutators<T> = {
74
79
  : never
75
80
  }
76
81
 
82
+ export type Where<Table extends TableName = TableName, ReturnType = any> = (
83
+ expressionBuilder: ExpressionBuilder<Schema, Table>,
84
+ auth: AuthData | null
85
+ ) => ReturnType
86
+
87
+ export type Can = <PWhere extends Where, Action extends keyof ReturnType<PWhere>>(
88
+ where: PWhere,
89
+ action: Action,
90
+ obj: string | Record<string, unknown>
91
+ ) => Promise<void>
92
+
77
93
  export type MutatorContext = {
78
94
  tx: Transaction
79
95
  authData: AuthData | null
80
96
  environment: 'server' | 'client'
81
- serverActions?: any // TODO
97
+ serverActions?: ServerActions
82
98
  asyncTasks?: Array<() => Promise<void>>
83
- can: any // TODO
99
+ can: Can
84
100
  didCanPermissionsRun?: boolean
85
101
  }
86
102
 
@@ -108,9 +124,4 @@ export type TablePrimaryKeys<TS extends GenericTable> = TupleToUnion<
108
124
  GetTableSchema<TS>['primaryKey']
109
125
  >
110
126
 
111
- export type Where<Table extends TableName = TableName, ReturnType = any> = (
112
- expressionBuilder: ExpressionBuilder<Schema, Table>,
113
- auth: AuthData | null
114
- ) => ReturnType
115
-
116
127
  export type ZeroEvent = { type: 'error'; message: string }
@@ -1,12 +1,12 @@
1
1
  import type { Condition, ExpressionBuilder, Schema as ZeroSchema } from '@rocicorp/zero';
2
- import type { AuthData, MutatorContext, Where } from './types';
2
+ import type { AuthData, MutatorContext, Where, Can } from './types';
3
3
  export declare function createPermissions<Schema extends ZeroSchema>({ environment, schema, models, getContext, }: {
4
4
  environment: 'client' | 'server';
5
5
  schema: Schema;
6
6
  models: any;
7
7
  getContext: () => MutatorContext;
8
8
  }): {
9
- can: <PWhere extends Where<string, Partial<Record<("read" | "write" | "insert" | "update" | "delete" | "select") | (string & {}), boolean | Condition>>>, Action extends keyof ReturnType<PWhere>>(where: PWhere, action: Action, obj: any) => Promise<void>;
9
+ can: Can;
10
10
  buildPermissionQuery: <PermissionWhere extends Where<string, Partial<Record<("read" | "write" | "insert" | "update" | "delete" | "select") | (string & {}), boolean | Condition>>>, Action extends string>(authData: AuthData | null, eb: ExpressionBuilder<any, any>, permissionWhere: PermissionWhere, action: Action, objOrId: Record<string, any> | string) => Condition;
11
11
  readPermissions: Promise<{
12
12
  tables: Record<string, {
@@ -1 +1 @@
1
- {"version":3,"file":"createPermissions.d.ts","sourceRoot":"","sources":["../src/createPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAEjB,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAA0B,KAAK,EAAE,MAAM,SAAS,CAAA;AAGtF,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,UAAU,EAAE,EAC3D,WAAW,EACX,MAAM,EACN,MAAM,EACN,UAAU,GACX,EAAE;IACD,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,EAAE,MAAM,cAAc,CAAA;CACjC;UAgFG,MAAM,8IACN,MAAM,SAAS,MAAM,UAAU,CAAC,MAAM,CAAC,SAChC,MAAM,UAAU,MAAM,OAAO,GAAG;2BAvDvC,eAAe,8IACf,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;;;;sBAfhC,CAAC;sBAMQ,CAAC;sBAId,CAAC;+BACA,CAAC;gCAGa,CAAA;;sBAGW,CAAC;;;sBAMV,CAAC;sBAMnB,CAAA;sBACmD,CAAA;+BAClC,CAAC;gCAIhB,CAAA;;sBAGQ,CAAC;;;;EA2Id"}
1
+ {"version":3,"file":"createPermissions.d.ts","sourceRoot":"","sources":["../src/createPermissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,iBAAiB,EAEjB,MAAM,IAAI,UAAU,EACrB,MAAM,gBAAgB,CAAA;AAKvB,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EAGd,KAAK,EACL,GAAG,EACJ,MAAM,SAAS,CAAA;AAGhB,wBAAgB,iBAAiB,CAAC,MAAM,SAAS,UAAU,EAAE,EAC3D,WAAW,EACX,MAAM,EACN,MAAM,EACN,UAAU,GACX,EAAE;IACD,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,EAAE,MAAM,cAAc,CAAA;CACjC;;2BA2BG,eAAe,8IACf,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;;;;sBAhB7B,CAAA;sBAOV,CAAD;sBAEkB,CAAC;+BAED,CAAC;gCAKhB,CADF;;sBAGW,CAAC;;;sBAMV,CAAC;sBAGuB,CAAC;sBAIO,CAAC;+BACjC,CAAA;gCAGuB,CAAC;;sBAGO,CAAC;;;;EA4InC"}
@@ -58,6 +58,6 @@ export declare function createZeroServer<Schema extends ZeroSchema, Models exten
58
58
  }>;
59
59
  transaction: <CB extends (tx: Transaction) => Promise<any>, Returns extends CB extends (tx: Transaction) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
60
60
  mutate: (run: (tx: Transaction, mutators: GetZeroMutators<Models>) => Promise<void>, authData?: Pick<AuthData, "email" | "id"> & Partial<AuthData>) => Promise<void>;
61
- query: <CB extends (tx: Transaction) => Promise<any>, Returns extends CB extends (tx: Transaction) => Promise<infer X> ? X : never>(query: CB) => Promise<Returns>;
61
+ query: <GetQuery extends (query: Transaction["query"]) => Promise<any>>(cb: GetQuery) => Promise<ReturnType<GetQuery>>;
62
62
  };
63
63
  //# sourceMappingURL=createZeroServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAS1D,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,mBAAmB,EACnB,MAAM,EACN,MAAM,GACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,MAAM,aAAa,CAAA;CACzC;oEAqBI;QACD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;QACzB,OAAO,EAAE,OAAO,CAAA;QAChB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2EC,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,EAC5C,OAAO,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SACrE,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBAzCvB,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,aAC/D,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;YAsC7D,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,EAC5C,OAAO,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SACrE,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;EAqB/B"}
1
+ {"version":3,"file":"createZeroServer.d.ts","sourceRoot":"","sources":["../src/createZeroServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAA;AASjE,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,eAAe,EACf,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,wBAAgB,gBAAgB,CAC9B,MAAM,SAAS,UAAU,EACzB,MAAM,SAAS,aAAa,EAC5B,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7C,EACA,mBAAmB,EACnB,MAAM,EACN,MAAM,GACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,MAAM,aAAa,CAAA;CACzC;oEAqBI;QACD,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;QACzB,OAAO,EAAE,OAAO,CAAA;QAChB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA+DC,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,CAAC,EAC5C,OAAO,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,SACrE,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC;kBA7BvB,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,aAC/D,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;YA+C1C,QAAQ,iBAHpB,WAAW,CAAC,OAAO,CAAC,uBAIvB,QAAQ,KACX,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;EAoBjC"}
@@ -1,8 +1,8 @@
1
- import type { AuthData, GenericModels, GetZeroMutators, Where } from '../types';
1
+ import type { AuthData, Can, GenericModels, GetZeroMutators } from '../types';
2
2
  export declare function createMutators<Models extends GenericModels>({ environment, authData, createServerActions, asyncTasks, can, models, }: {
3
3
  environment: 'server' | 'client';
4
4
  authData: AuthData | null;
5
- can: (where: Where<any>, action: string, obj: any) => void;
5
+ can: Can;
6
6
  models: Models;
7
7
  asyncTasks?: Array<() => Promise<void>>;
8
8
  createServerActions?: () => Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"createMutators.d.ts","sourceRoot":"","sources":["../../src/helpers/createMutators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EAEf,KAAK,EACN,MAAM,UAAU,CAAA;AAGjB,wBAAgB,cAAc,CAAC,MAAM,SAAS,aAAa,EAAE,EAC3D,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,UAAe,EACf,GAAG,EACH,MAAM,GACP,EAAE;IACD,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAChC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChD,GAAG,eAAe,CAAC,MAAM,CAAC,CAwG1B"}
1
+ {"version":3,"file":"createMutators.d.ts","sourceRoot":"","sources":["../../src/helpers/createMutators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,GAAG,EACH,aAAa,EACb,eAAe,EAGhB,MAAM,UAAU,CAAA;AAGjB,wBAAgB,cAAc,CAAC,MAAM,SAAS,aAAa,EAAE,EAC3D,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,UAAe,EACf,GAAG,EACH,MAAM,GACP,EAAE;IACD,WAAW,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAChC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IACvC,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChD,GAAG,eAAe,CAAC,MAAM,CAAC,CAwG1B"}
@@ -13,8 +13,8 @@ type CRUDNames = 'insert' | 'upsert' | 'update' | 'delete';
13
13
  type MutationsWithCRUD<Table extends GenericTable, Mutations extends MutationBuilders> = {
14
14
  [Key in CRUDNames | keyof Mutations]: Key extends keyof Mutations ? Mutations[Key] : Key extends keyof CRUDMutations<any> ? CRUDMutations<Table>[Key] : never;
15
15
  };
16
+ export declare function mutations<Mutations extends MutationBuilders>(mutations: Mutations): Mutations;
16
17
  export declare function mutations<Table extends GenericTable, Permissions extends Where>(table: Table, permissions: Permissions): MutationsWithCRUD<Table, {}>;
17
18
  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
19
  export {};
20
20
  //# sourceMappingURL=mutations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../src/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,cAAc,EACd,KAAK,EACN,MAAM,SAAS,CAAA;AAMhB,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
+ {"version":3,"file":"mutations.d.ts","sourceRoot":"","sources":["../src/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EAEd,cAAc,EACd,KAAK,EACN,MAAM,SAAS,CAAA;AAMhB,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,SAAS,SAAS,gBAAgB,EAC1D,SAAS,EAAE,SAAS,GACnB,SAAS,CAAA;AACZ,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;AAC/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"}
package/types/types.d.ts CHANGED
@@ -24,6 +24,7 @@ export interface Config {
24
24
  interface DefaultConfig {
25
25
  schema: ZeroSchema;
26
26
  authData: {};
27
+ serverActions: null;
27
28
  }
28
29
  interface FinalConfig extends Omit<DefaultConfig, keyof Config>, Config {
29
30
  }
@@ -31,6 +32,7 @@ export type Schema = FinalConfig['schema'];
31
32
  export type TableName = keyof Schema['tables'] extends string ? keyof Schema['tables'] : string;
32
33
  export type Transaction = ZeroTransaction<Schema>;
33
34
  export type AuthData = FinalConfig['authData'] extends Record<string, unknown> ? FinalConfig['authData'] : Record<string, unknown>;
35
+ export type ServerActions = FinalConfig['serverActions'] extends Record<string, unknown> ? FinalConfig['serverActions'] : Record<string, unknown>;
34
36
  /**
35
37
  * ➗0️⃣ END OVERRIDDEN TYPES
36
38
  */
@@ -43,19 +45,21 @@ type GetModelMutators<Models extends GenericModels> = {
43
45
  export type GenericModels = {
44
46
  [key: string]: {
45
47
  mutate: Record<string, (ctx: MutatorContext, obj?: any) => Promise<any>>;
46
- permissions: Where;
48
+ permissions?: Where;
47
49
  };
48
50
  };
49
51
  export type TransformMutators<T> = {
50
52
  [K in keyof T]: T[K] extends (ctx: MutatorContext, ...args: infer Args) => infer Return ? (tx: Transaction, ...args: Args) => Return extends unknown ? Promise<any> : Return : never;
51
53
  };
54
+ export type Where<Table extends TableName = TableName, ReturnType = any> = (expressionBuilder: ExpressionBuilder<Schema, Table>, auth: AuthData | null) => ReturnType;
55
+ export type Can = <PWhere extends Where, Action extends keyof ReturnType<PWhere>>(where: PWhere, action: Action, obj: string | Record<string, unknown>) => Promise<void>;
52
56
  export type MutatorContext = {
53
57
  tx: Transaction;
54
58
  authData: AuthData | null;
55
59
  environment: 'server' | 'client';
56
- serverActions?: any;
60
+ serverActions?: ServerActions;
57
61
  asyncTasks?: Array<() => Promise<void>>;
58
- can: any;
62
+ can: Can;
59
63
  didCanPermissionsRun?: boolean;
60
64
  };
61
65
  export type AsyncAction = () => Promise<void>;
@@ -64,7 +68,6 @@ type GetTableSchema<TS extends GenericTable> = TS extends TableBuilderWithColumn
64
68
  export type TableInsertRow<TS extends GenericTable> = NullToOptional<Row<GetTableSchema<TS>>>;
65
69
  export type TableUpdateRow<TS extends GenericTable> = Pick<Row<GetTableSchema<TS>>, TablePrimaryKeys<TS>> & Partial<TableInsertRow<TS>>;
66
70
  export type TablePrimaryKeys<TS extends GenericTable> = TupleToUnion<GetTableSchema<TS>['primaryKey']>;
67
- export type Where<Table extends TableName = TableName, ReturnType = any> = (expressionBuilder: ExpressionBuilder<Schema, Table>, auth: AuthData | null) => ReturnType;
68
71
  export type ZeroEvent = {
69
72
  type: 'error';
70
73
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}