(config: MockSyncCollectionConfigNoInitialState<T>)
| 316 | } |
| 317 | |
| 318 | export function mockSyncCollectionOptionsNoInitialState< |
| 319 | T extends object = Record<string, unknown>, |
| 320 | >(config: MockSyncCollectionConfigNoInitialState<T>) { |
| 321 | let begin: () => void |
| 322 | let write: Parameters<SyncConfig<T>[`sync`]>[0][`write`] |
| 323 | let commit: () => void |
| 324 | let markReady: () => void |
| 325 | let truncate: () => void |
| 326 | |
| 327 | let syncPendingPromise: Promise<void> | undefined |
| 328 | let syncPendingResolve: (() => void) | undefined |
| 329 | let syncPendingReject: ((error: Error) => void) | undefined |
| 330 | |
| 331 | const awaitSync = async () => { |
| 332 | if (syncPendingPromise) { |
| 333 | return syncPendingPromise |
| 334 | } |
| 335 | syncPendingPromise = new Promise((resolve, reject) => { |
| 336 | syncPendingResolve = resolve |
| 337 | syncPendingReject = reject |
| 338 | }) |
| 339 | syncPendingPromise.then(() => { |
| 340 | syncPendingPromise = undefined |
| 341 | syncPendingResolve = undefined |
| 342 | syncPendingReject = undefined |
| 343 | }) |
| 344 | return syncPendingPromise |
| 345 | } |
| 346 | |
| 347 | const utils = { |
| 348 | begin: () => begin!(), |
| 349 | write: ((value) => write!(value)) as typeof write, |
| 350 | commit: () => commit!(), |
| 351 | markReady: () => markReady!(), |
| 352 | truncate: () => truncate!(), |
| 353 | resolveSync: () => { |
| 354 | syncPendingResolve!() |
| 355 | }, |
| 356 | rejectSync: (error: Error) => { |
| 357 | syncPendingReject!(error) |
| 358 | }, |
| 359 | } |
| 360 | |
| 361 | const options: CollectionConfig<T, string | number, never> & { |
| 362 | utils: typeof utils |
| 363 | } = { |
| 364 | sync: { |
| 365 | sync: (params: Parameters<SyncConfig<T>[`sync`]>[0]) => { |
| 366 | begin = params.begin |
| 367 | write = params.write |
| 368 | commit = params.commit |
| 369 | markReady = params.markReady |
| 370 | truncate = params.truncate |
| 371 | }, |
| 372 | }, |
| 373 | startSync: false, |
| 374 | onInsert: async (_params: MutationFnParams<T>) => { |
| 375 | // TODO |
searching dependent graphs…