simplesvelte 2.2.9 → 2.2.10

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.
@@ -181,6 +181,112 @@ export declare const agGridRequestSchema: z.ZodObject<{
181
181
  * Use this as a fallback or initial value when no request is provided
182
182
  */
183
183
  export declare const defaultAGGridRequest: AGGridRequest;
184
+ /**
185
+ * Saves AG Grid request parameters for a specific user and table
186
+ *
187
+ * Call this in your grid query function to save the current filter, sort, and grouping state
188
+ * on every request. This allows mutations to restore the user's view when refreshing the grid.
189
+ *
190
+ * @param tableKey - Unique identifier for the table/grid (e.g., 'users-table', 'interventions-grid')
191
+ * @param userId - User identifier (string or number)
192
+ * @param params - AG Grid request parameters to save (filters, sorts, groups, pagination)
193
+ *
194
+ * @example Grid Query - Save parameters on every request
195
+ * ```typescript
196
+ * export const getUsersGrid = query(agGridRequestSchema, async (request) => {
197
+ * const user = await getActiveUser()
198
+ *
199
+ * // Save parameters on every grid request
200
+ * saveParams('users-table', user.id, request)
201
+ *
202
+ * return await createAGGridQuery({
203
+ * async fetch(params) {
204
+ * return await DB.user.findMany({
205
+ * where: params.where,
206
+ * orderBy: params.orderBy,
207
+ * skip: params.skip,
208
+ * take: params.take,
209
+ * })
210
+ * },
211
+ * async count(params) {
212
+ * return await DB.user.count({ where: params.where })
213
+ * },
214
+ * })(request)
215
+ * })
216
+ * ```
217
+ */
218
+ export declare function saveParams(tableKey: string, userId: string | number, params: AGGridRequest): void;
219
+ /**
220
+ * Fetches previously saved AG Grid request parameters for a specific user and table
221
+ *
222
+ * Returns the last saved parameters, or the default AG Grid request if none exist.
223
+ * Use this in mutation commands (create/update/delete) to refresh the grid with the
224
+ * user's last used filters, sorts, and grouping.
225
+ *
226
+ * @param tableKey - Unique identifier for the table/grid (e.g., 'users-table', 'interventions-grid')
227
+ * @param userId - User identifier (string or number)
228
+ * @returns Saved AG Grid request parameters, or `defaultAGGridRequest` if none exist
229
+ *
230
+ * @example Create Command - Refresh grid with last used filters
231
+ * ```typescript
232
+ * export const createUser = command(userSchema, async (data) => {
233
+ * const user = await getActiveUser()
234
+ *
235
+ * // Create the new user
236
+ * const newUser = await DB.user.create({ data })
237
+ *
238
+ * // Fetch last used parameters (or defaults if none exist)
239
+ * const lastParams = fetchParams('users-table', user.id)
240
+ *
241
+ * // Refresh the grid query with last used filters/sorts
242
+ * await getUsersGrid(lastParams).refresh()
243
+ *
244
+ * return newUser
245
+ * })
246
+ * ```
247
+ *
248
+ * @example Update Command - Refresh grid with last used filters
249
+ * ```typescript
250
+ * export const updateUser = command(
251
+ * z.object({ id: z.number(), data: userSchema.partial() }),
252
+ * async ({ id, data }) => {
253
+ * const user = await getActiveUser()
254
+ *
255
+ * // Update the user
256
+ * const updatedUser = await DB.user.update({ where: { id }, data })
257
+ *
258
+ * // Fetch last used parameters (or defaults if none exist)
259
+ * const lastParams = fetchParams('users-table', user.id)
260
+ *
261
+ * // Refresh the grid query with last used filters/sorts
262
+ * await getUsersGrid(lastParams).refresh()
263
+ *
264
+ * return updatedUser
265
+ * }
266
+ * )
267
+ * ```
268
+ *
269
+ * @example Multiple Query Refresh - Refresh related queries in parallel
270
+ * ```typescript
271
+ * export const deleteUser = command(z.number(), async (id) => {
272
+ * const user = await getActiveUser()
273
+ * const deletedUser = await DB.user.findUnique({ where: { id } })
274
+ *
275
+ * await DB.user.delete({ where: { id } })
276
+ *
277
+ * const lastParams = fetchParams('users-table', user.id)
278
+ *
279
+ * // Refresh multiple queries in parallel
280
+ * await Promise.all([
281
+ * getUsersByDepartment(deletedUser.departmentId).refresh(),
282
+ * getUsersGrid(lastParams).refresh(),
283
+ * ])
284
+ *
285
+ * return deletedUser
286
+ * })
287
+ * ```
288
+ */
289
+ export declare function fetchParams(tableKey: string, userId: string | number): AGGridRequest;
184
290
  /**
185
291
  * Prisma-style filter operators for different field types
186
292
  */
@@ -44,6 +44,132 @@ export const defaultAGGridRequest = {
44
44
  pivotMode: false,
45
45
  };
46
46
  // ============================================================================
47
+ // Parameter Storage API
48
+ // ============================================================================
49
+ /**
50
+ * Storage for AG Grid request parameters per user and table
51
+ * Key format: `agGridParams:${userId}:${tableKey}`
52
+ */
53
+ const paramsStorage = new Map();
54
+ /**
55
+ * Generates a storage key for AG Grid parameters
56
+ */
57
+ function getStorageKey(userId, tableKey) {
58
+ return `agGridParams:${userId}:${tableKey}`;
59
+ }
60
+ /**
61
+ * Saves AG Grid request parameters for a specific user and table
62
+ *
63
+ * Call this in your grid query function to save the current filter, sort, and grouping state
64
+ * on every request. This allows mutations to restore the user's view when refreshing the grid.
65
+ *
66
+ * @param tableKey - Unique identifier for the table/grid (e.g., 'users-table', 'interventions-grid')
67
+ * @param userId - User identifier (string or number)
68
+ * @param params - AG Grid request parameters to save (filters, sorts, groups, pagination)
69
+ *
70
+ * @example Grid Query - Save parameters on every request
71
+ * ```typescript
72
+ * export const getUsersGrid = query(agGridRequestSchema, async (request) => {
73
+ * const user = await getActiveUser()
74
+ *
75
+ * // Save parameters on every grid request
76
+ * saveParams('users-table', user.id, request)
77
+ *
78
+ * return await createAGGridQuery({
79
+ * async fetch(params) {
80
+ * return await DB.user.findMany({
81
+ * where: params.where,
82
+ * orderBy: params.orderBy,
83
+ * skip: params.skip,
84
+ * take: params.take,
85
+ * })
86
+ * },
87
+ * async count(params) {
88
+ * return await DB.user.count({ where: params.where })
89
+ * },
90
+ * })(request)
91
+ * })
92
+ * ```
93
+ */
94
+ export function saveParams(tableKey, userId, params) {
95
+ const key = getStorageKey(userId, tableKey);
96
+ paramsStorage.set(key, params);
97
+ }
98
+ /**
99
+ * Fetches previously saved AG Grid request parameters for a specific user and table
100
+ *
101
+ * Returns the last saved parameters, or the default AG Grid request if none exist.
102
+ * Use this in mutation commands (create/update/delete) to refresh the grid with the
103
+ * user's last used filters, sorts, and grouping.
104
+ *
105
+ * @param tableKey - Unique identifier for the table/grid (e.g., 'users-table', 'interventions-grid')
106
+ * @param userId - User identifier (string or number)
107
+ * @returns Saved AG Grid request parameters, or `defaultAGGridRequest` if none exist
108
+ *
109
+ * @example Create Command - Refresh grid with last used filters
110
+ * ```typescript
111
+ * export const createUser = command(userSchema, async (data) => {
112
+ * const user = await getActiveUser()
113
+ *
114
+ * // Create the new user
115
+ * const newUser = await DB.user.create({ data })
116
+ *
117
+ * // Fetch last used parameters (or defaults if none exist)
118
+ * const lastParams = fetchParams('users-table', user.id)
119
+ *
120
+ * // Refresh the grid query with last used filters/sorts
121
+ * await getUsersGrid(lastParams).refresh()
122
+ *
123
+ * return newUser
124
+ * })
125
+ * ```
126
+ *
127
+ * @example Update Command - Refresh grid with last used filters
128
+ * ```typescript
129
+ * export const updateUser = command(
130
+ * z.object({ id: z.number(), data: userSchema.partial() }),
131
+ * async ({ id, data }) => {
132
+ * const user = await getActiveUser()
133
+ *
134
+ * // Update the user
135
+ * const updatedUser = await DB.user.update({ where: { id }, data })
136
+ *
137
+ * // Fetch last used parameters (or defaults if none exist)
138
+ * const lastParams = fetchParams('users-table', user.id)
139
+ *
140
+ * // Refresh the grid query with last used filters/sorts
141
+ * await getUsersGrid(lastParams).refresh()
142
+ *
143
+ * return updatedUser
144
+ * }
145
+ * )
146
+ * ```
147
+ *
148
+ * @example Multiple Query Refresh - Refresh related queries in parallel
149
+ * ```typescript
150
+ * export const deleteUser = command(z.number(), async (id) => {
151
+ * const user = await getActiveUser()
152
+ * const deletedUser = await DB.user.findUnique({ where: { id } })
153
+ *
154
+ * await DB.user.delete({ where: { id } })
155
+ *
156
+ * const lastParams = fetchParams('users-table', user.id)
157
+ *
158
+ * // Refresh multiple queries in parallel
159
+ * await Promise.all([
160
+ * getUsersByDepartment(deletedUser.departmentId).refresh(),
161
+ * getUsersGrid(lastParams).refresh(),
162
+ * ])
163
+ *
164
+ * return deletedUser
165
+ * })
166
+ * ```
167
+ */
168
+ export function fetchParams(tableKey, userId) {
169
+ const key = getStorageKey(userId, tableKey);
170
+ return paramsStorage.get(key) || defaultAGGridRequest;
171
+ }
172
+ // ============================================================================
47
173
  // Value Normalization Utilities
48
174
  // ============================================================================
49
175
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simplesvelte",
3
- "version": "2.2.9",
3
+ "version": "2.2.10",
4
4
  "scripts": {
5
5
  "dev": "bun vite dev",
6
6
  "build": "bun vite build && bun run prepack",