@osdk/client 2.2.0-beta.3 → 2.2.0-beta.4

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 (88) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/browser/Logger.js.map +1 -1
  3. package/build/browser/observable/ObservableClient.js.map +1 -1
  4. package/build/browser/observable/internal/ActionApplication.js +102 -0
  5. package/build/browser/observable/internal/ActionApplication.js.map +1 -0
  6. package/build/browser/observable/internal/CacheKey.js +38 -1
  7. package/build/browser/observable/internal/CacheKey.js.map +1 -1
  8. package/build/browser/observable/internal/CacheKeys.js +4 -4
  9. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  10. package/build/browser/observable/internal/ChangedObjects.js +24 -1
  11. package/build/browser/observable/internal/ChangedObjects.js.map +1 -1
  12. package/build/browser/observable/internal/Layer.js +3 -3
  13. package/build/browser/observable/internal/Layer.js.map +1 -1
  14. package/build/browser/observable/internal/ListQuery.js +188 -66
  15. package/build/browser/observable/internal/ListQuery.js.map +1 -1
  16. package/build/browser/observable/internal/ObjectQuery.js +16 -3
  17. package/build/browser/observable/internal/ObjectQuery.js.map +1 -1
  18. package/build/browser/observable/internal/ObservableClientImpl.js +2 -2
  19. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  20. package/build/browser/observable/internal/OptimisticJob.js +30 -29
  21. package/build/browser/observable/internal/OptimisticJob.js.map +1 -1
  22. package/build/browser/observable/internal/Query.js +42 -2
  23. package/build/browser/observable/internal/Query.js.map +1 -1
  24. package/build/browser/observable/internal/Store.js +259 -126
  25. package/build/browser/observable/internal/Store.js.map +1 -1
  26. package/build/browser/observable/internal/Store.test.js +416 -76
  27. package/build/browser/observable/internal/Store.test.js.map +1 -1
  28. package/build/browser/observable/internal/testUtils.js +142 -6
  29. package/build/browser/observable/internal/testUtils.js.map +1 -1
  30. package/build/browser/util/UserAgent.js +1 -1
  31. package/build/cjs/index.cjs +1 -1
  32. package/build/cjs/public/unstable-do-not-use.cjs +657 -268
  33. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  34. package/build/cjs/public/unstable-do-not-use.d.cts +13 -4
  35. package/build/esm/Logger.js.map +1 -1
  36. package/build/esm/observable/ObservableClient.js.map +1 -1
  37. package/build/esm/observable/internal/ActionApplication.js +102 -0
  38. package/build/esm/observable/internal/ActionApplication.js.map +1 -0
  39. package/build/esm/observable/internal/CacheKey.js +38 -1
  40. package/build/esm/observable/internal/CacheKey.js.map +1 -1
  41. package/build/esm/observable/internal/CacheKeys.js +4 -4
  42. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  43. package/build/esm/observable/internal/ChangedObjects.js +24 -1
  44. package/build/esm/observable/internal/ChangedObjects.js.map +1 -1
  45. package/build/esm/observable/internal/Layer.js +3 -3
  46. package/build/esm/observable/internal/Layer.js.map +1 -1
  47. package/build/esm/observable/internal/ListQuery.js +188 -66
  48. package/build/esm/observable/internal/ListQuery.js.map +1 -1
  49. package/build/esm/observable/internal/ObjectQuery.js +16 -3
  50. package/build/esm/observable/internal/ObjectQuery.js.map +1 -1
  51. package/build/esm/observable/internal/ObservableClientImpl.js +2 -2
  52. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  53. package/build/esm/observable/internal/OptimisticJob.js +30 -29
  54. package/build/esm/observable/internal/OptimisticJob.js.map +1 -1
  55. package/build/esm/observable/internal/Query.js +42 -2
  56. package/build/esm/observable/internal/Query.js.map +1 -1
  57. package/build/esm/observable/internal/Store.js +259 -126
  58. package/build/esm/observable/internal/Store.js.map +1 -1
  59. package/build/esm/observable/internal/Store.test.js +416 -76
  60. package/build/esm/observable/internal/Store.test.js.map +1 -1
  61. package/build/esm/observable/internal/testUtils.js +142 -6
  62. package/build/esm/observable/internal/testUtils.js.map +1 -1
  63. package/build/esm/util/UserAgent.js +1 -1
  64. package/build/types/Logger.d.ts +1 -2
  65. package/build/types/Logger.d.ts.map +1 -1
  66. package/build/types/observable/ObservableClient.d.ts +10 -3
  67. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  68. package/build/types/observable/internal/ActionApplication.d.ts +9 -0
  69. package/build/types/observable/internal/ActionApplication.d.ts.map +1 -0
  70. package/build/types/observable/internal/CacheKeys.d.ts +2 -1
  71. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  72. package/build/types/observable/internal/ChangedObjects.d.ts +6 -2
  73. package/build/types/observable/internal/ChangedObjects.d.ts.map +1 -1
  74. package/build/types/observable/internal/Layer.d.ts +1 -1
  75. package/build/types/observable/internal/Layer.d.ts.map +1 -1
  76. package/build/types/observable/internal/ListQuery.d.ts +18 -17
  77. package/build/types/observable/internal/ListQuery.d.ts.map +1 -1
  78. package/build/types/observable/internal/ObjectQuery.d.ts +3 -3
  79. package/build/types/observable/internal/ObjectQuery.d.ts.map +1 -1
  80. package/build/types/observable/internal/OptimisticJob.d.ts +2 -2
  81. package/build/types/observable/internal/OptimisticJob.d.ts.map +1 -1
  82. package/build/types/observable/internal/Query.d.ts +6 -5
  83. package/build/types/observable/internal/Query.d.ts.map +1 -1
  84. package/build/types/observable/internal/Store.d.ts +47 -19
  85. package/build/types/observable/internal/Store.d.ts.map +1 -1
  86. package/build/types/observable/internal/testUtils.d.ts +13 -3
  87. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  88. package/package.json +8 -7
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.js","names":["pDefer","afterEach","beforeEach","expect","vi","vitest","createClientMockHelper","client","fn","mockApplyActionOnce","d","mockReturnValueOnce","applyAction","x","promise","type","addedLinks","addedObjects","deletedLinksCount","deletedObjectsCount","editedObjectTypes","modifiedObjects","mockFetchOneOnce","fetchOne","a","r","$primaryKey","createDefer","subscriptions","s","unsubscribe","push","expectSingleListCallAndClear","subFn","resolvedList","isFakeTimers","runOnlyPendingTimers","toHaveBeenCalledExactlyOnceWith","objectContaining","mockClear","expectSingleObjectCallAndClear","object","status","any","String","waitForCall","times","waitFor","toHaveBeenCalledTimes","createSubscriptionHelper","mockSingleSubCallback","ret","Object","assign","expectLoadingAndLoaded","q","toHaveBeenNthCalledWith","loading","loaded","mockListSubCallback","cacheEntryContaining","cacheKey","value","toBeOneOf","anything","undefined","lastUpdated","nonOptionalValue","src","key","objectPayloadContaining","isOptimistic","Boolean","listPayloadContaining","fetchMore","Function","hasMore","applyCustomMatchers","extend","toBeGreaterThan","e","pass","message"],"sources":["testUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n ActionEditResponse,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n OsdkBase,\n} from \"@osdk/api\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport type { Mock } from \"vitest\";\nimport { afterEach, beforeEach, expect, vi, vitest } from \"vitest\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport type { Client } from \"../../Client.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type { Status, Unsubscribable } from \"../ObservableClient.js\";\nimport type { Entry } from \"./Layer.js\";\n\nexport interface MockClientHelper {\n client: Mock<Client> & Client;\n\n mockApplyActionOnce: () => DeferredPromise<Partial<ActionEditResponse>>;\n\n mockFetchOneOnce: <Q extends ObjectTypeDefinition>() => DeferredPromise<\n Partial<\n Osdk.Instance<Q>\n >\n >;\n}\n\nexport function createClientMockHelper(): MockClientHelper {\n const client = vitest.fn<typeof client>() as unknown as Mock<Client> & Client;\n\n function mockFetchOneOnce<\n X extends Partial<OsdkBase<any>>,\n >(): DeferredPromise<X> {\n const d = pDefer<X>();\n\n client.mockReturnValueOnce(\n {\n fetchOne: async (a) => {\n const r = await d.promise;\n return { ...r, $primaryKey: a };\n },\n } as Pick<ObjectSet<ObjectTypeDefinition>, \"fetchOne\">,\n );\n return d;\n }\n\n function mockApplyActionOnce(): DeferredPromise<\n Partial<ActionEditResponse>\n > {\n const d = pDefer<Partial<ActionEditResponse>>();\n\n client.mockReturnValueOnce(\n {\n applyAction: async (_args): Promise<ActionEditResponse> => {\n const x = await d.promise;\n return {\n type: \"edits\",\n addedLinks: x.addedLinks ?? [],\n addedObjects: x.addedObjects ?? [],\n deletedLinksCount: x.deletedLinksCount ?? 0,\n deletedObjectsCount: x.deletedObjectsCount ?? 0,\n editedObjectTypes: x.editedObjectTypes ?? [],\n modifiedObjects: x.modifiedObjects ?? [],\n };\n },\n } as Pick<\n ActionSignatureFromDef<ActionDefinition>,\n \"applyAction\"\n >,\n );\n return d;\n }\n\n return {\n client,\n mockApplyActionOnce,\n mockFetchOneOnce,\n };\n}\n\nexport function createDefer() {\n let subscriptions: Unsubscribable[];\n\n beforeEach(() => {\n subscriptions = [];\n });\n\n afterEach(() => {\n for (const s of subscriptions) {\n s.unsubscribe();\n }\n subscriptions = [];\n });\n\n return function defer(x: Unsubscribable): Unsubscribable {\n subscriptions.push(x);\n return x;\n };\n}\n\nexport function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(\n subFn: Mock<(e: ListPayload | undefined) => void>,\n resolvedList: Osdk.Instance<T>[],\n): void {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining({\n resolvedList,\n }),\n );\n subFn.mockClear();\n}\n\nexport function expectSingleObjectCallAndClear<T extends ObjectTypeDefinition>(\n subFn: Mock<(e: ObjectPayload | undefined) => void>,\n object: Osdk.Instance<T>,\n status?: Status,\n): void {\n expect(subFn).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining({\n object,\n status: status ?? expect.any(String),\n }),\n );\n subFn.mockClear();\n}\n\nexport async function waitForCall(\n subFn: Mock<(e: any) => void>,\n times: number = 1,\n): Promise<void> {\n await vi.waitFor(() => {\n expect(subFn).toHaveBeenCalledTimes(times);\n });\n expect(subFn).toHaveBeenCalledTimes(times);\n}\n\nfunction createSubscriptionHelper() {\n}\n\nexport function mockSingleSubCallback():\n & Mock<\n (e: ObjectPayload | undefined) => void\n >\n & {\n // expectLoaded: (value: unknown) => Promise<void>;\n // expectLoading: (value: unknown) => Promise<void>;\n expectLoadingAndLoaded: (q: {\n loading?: unknown;\n loaded: unknown;\n }) => Promise<void>;\n }\n{\n const ret = vitest.fn((e: ObjectPayload | undefined) => {});\n\n // async function expectLoaded(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenLastCalledWith(\n // cacheEntryContaining({\n // value,\n // status: \"loaded\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n // async function expectLoading(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenCalledExactlyOnceWith(\n // cacheEntryContaining({\n // value,\n // status: \"loading\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n return Object.assign(ret, {\n // expectLoaded,\n // expectLoading,\n expectLoadingAndLoaded: async (\n q: { loading?: unknown; loaded: unknown },\n ) => {\n await waitForCall(ret, 2);\n\n // as long as we get the loaded call we are happy\n expect(ret).toHaveBeenNthCalledWith(\n 1,\n q.loading,\n );\n expect(ret).toHaveBeenNthCalledWith(\n 2,\n q.loaded,\n );\n expect(ret).toHaveBeenCalledTimes(2);\n ret.mockClear();\n },\n });\n}\n\nexport function mockListSubCallback(): Mock<\n (x: ListPayload | undefined) => void\n> {\n return vitest.fn(\n (x: ListPayload | undefined) => {},\n );\n}\n\nexport function cacheEntryContaining(x: Partial<Entry<any>>): Entry<any> {\n return {\n cacheKey: x.cacheKey ?? expect.any(Object),\n value: \"value\" in x\n ? x.value\n : expect.toBeOneOf([expect.anything(), undefined]),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nfunction nonOptionalValue<T extends object, K extends keyof T>(\n src: T,\n key: K,\n): NonNullable<T[K]> {\n return key in src\n ? src[key]\n : expect.toBeOneOf([expect.anything(), undefined]);\n}\n\nexport function objectPayloadContaining(\n x: Partial<ObjectPayload>,\n): ObjectPayload {\n return {\n object: nonOptionalValue(x, \"object\"),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function listPayloadContaining(\n x: Partial<ListPayload>,\n): ListPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function applyCustomMatchers(): void {\n expect.extend({\n toBeGreaterThan: (r: number, e: number) => {\n return {\n pass: r > e,\n message: () => `expected ${r} to be greater than ${e} (lastUpdated)`,\n };\n },\n });\n}\n\ninterface CustomMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ninterface CustomAsymmetricMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ndeclare module \"vitest\" {\n interface Assertion<T = any> extends CustomMatchers<T> {}\n interface AsymmetricMatchersContaining extends CustomAsymmetricMatchers {}\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"testUtils.js","names":["Chalk","pDefer","invariant","afterEach","beforeEach","expect","vi","vitest","additionalContext","chalk","mockLog","args","console","log","yellow","createTestLogger","bindings","options","colors","debug","cyan","bgCyan","info","green","bgGreen","trace","gray","bgGray","error","red","bgRed","warn","bgYellow","fatal","redBright","bgRedBright","createLogMethod","name","fn","hasData","obj","more","slice","msgPrefix","methodName","magenta","Object","keys","length","child","theseBindings","theseOptions","level","undefined","isLevelEnabled","createClientMockHelper","client","logger","mockImplementation","localLogger","Error","e","where","deadObjectSet","whereArgs","fetchPage","fetchArgs","fetchOne","baseUrl","ontologyRid","objectFactory","objectFactory2","ontologyProvider","getActionDefinition","getInterfaceDefinition","getObjectDefinition","getQueryDefinition","tokenProvider","objectSetFactory","fetch","clientCacheKey","requestContext","mockApplyActionOnce","d","mockReturnValueOnce","applyAction","x","promise","type","addedLinks","addedObjects","deletedLinksCount","deletedObjectsCount","editedObjectTypes","modifiedObjects","mockFetchOneOnce","expectedId","a","process","env","NODE_ENV","r","$primaryKey","mockObjectFactory2Once","mocked","mockFetchPageOnce","objectSet","fetchPageArgs","clause","createDefer","subscriptions","s","unsubscribe","push","expectSingleListCallAndClear","subFn","resolvedList","payloadOptions","isFakeTimers","runOnlyPendingTimers","toHaveBeenCalledExactlyOnceWith","listPayloadContaining","mockClear","expectSingleObjectCallAndClear","object","status","objectContaining","any","String","waitForCall","times","waitFor","toHaveBeenCalledTimes","createSubscriptionHelper","mockSingleSubCallback","ret","assign","expectLoadingAndLoaded","q","toHaveBeenNthCalledWith","loading","loaded","mockListSubCallback","cacheEntryContaining","cacheKey","value","toBeOneOf","anything","lastUpdated","nonOptionalValue","src","key","objectPayloadContaining","isOptimistic","Boolean","fetchMore","Function","hasMore","applyCustomMatchers","extend","toBeGreaterThan","pass","message"],"sources":["testUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ActionDefinition,\n ActionEditResponse,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n OsdkBase,\n PageResult,\n WhereClause,\n} from \"@osdk/api\";\nimport { Chalk } from \"chalk\";\nimport type { DeferredPromise } from \"p-defer\";\nimport pDefer from \"p-defer\";\nimport invariant from \"tiny-invariant\";\nimport type { Mock } from \"vitest\";\nimport { afterEach, beforeEach, expect, vi, vitest } from \"vitest\";\nimport type { ActionSignatureFromDef } from \"../../actions/applyAction.js\";\nimport type { Client } from \"../../Client.js\";\nimport { additionalContext } from \"../../Client.js\";\nimport type { LogFn, Logger } from \"../../Logger.js\";\nimport type { ListPayload } from \"../ListPayload.js\";\nimport type { ObjectPayload } from \"../ObjectPayload.js\";\nimport type { Status, Unsubscribable } from \"../ObservableClient.js\";\nimport type { Entry } from \"./Layer.js\";\n\nconst chalk = new Chalk(); // new Chalk({ level: 3 });\n\nexport interface MockClientHelper {\n client: Mock<Client> & Client;\n\n mockApplyActionOnce: () => DeferredPromise<Partial<ActionEditResponse>>;\n\n mockFetchOneOnce: <Q extends ObjectTypeDefinition>(\n expectedId?: string | number | boolean,\n ) => DeferredPromise<\n Partial<\n Osdk.Instance<Q>\n >\n >;\n\n mockObjectFactory2Once: () => DeferredPromise<\n Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>[]\n >;\n\n mockFetchPageOnce: <\n Q extends ObjectTypeDefinition,\n >(\n expected?: {\n where: WhereClause<any>;\n orderBy: Record<string, \"asc\" | \"desc\" | undefined>;\n },\n ) => DeferredPromise<\n PageResult<Partial<Osdk.Instance<Q>>>\n >;\n}\n\nfunction mockLog(...args: any[]) {\n // eslint-disable-next-line no-console\n console.log(\n chalk.yellow(\"mockClient\"),\n ...args,\n );\n}\n// interface LogFn {\n// (obj: unknown, msg?: string, ...args: any[]): void;\n// (msg: string, ...args: any[]): void;\n// }\n\nexport function createTestLogger(\n bindings: Record<string, any>,\n options?: { level?: string; msgPrefix?: string },\n): Logger {\n const colors = {\n debug: [chalk.cyan, chalk.bgCyan],\n info: [chalk.green, chalk.bgGreen],\n trace: [chalk.gray, chalk.bgGray],\n error: [chalk.red, chalk.bgRed],\n warn: [chalk.yellow, chalk.bgYellow],\n fatal: [chalk.redBright, chalk.bgRedBright],\n } as const;\n function createLogMethod(\n name: \"debug\" | \"error\" | \"info\" | \"warn\" | \"fatal\" | \"trace\",\n ) {\n return vi.fn<LogFn>(\n (\n ...args: [\n obj: unknown,\n ...args1: any[],\n ] | [\n ...args2: any[],\n ]\n ) => {\n const hasData = typeof args[0] !== \"string\";\n const obj: Record<string, unknown> = hasData ? args[0] as any : {};\n const more: any[] = hasData ? args.slice(1) : args.slice(0);\n\n // eslint-disable-next-line no-console\n console.log(\n `${colors[name][1](name)}${\n options?.msgPrefix ? \" \" + colors[name][0](options.msgPrefix) : \"\"\n }${obj.methodName ? ` .${chalk.magenta(obj.methodName)}()` : \"\"}`,\n ...more,\n );\n if (bindings && Object.keys(bindings).length > 0) {\n // eslint-disable-next-line no-console\n console.log(bindings);\n }\n },\n ) as LogFn;\n }\n return {\n debug: createLogMethod(\"debug\"),\n error: createLogMethod(\"error\"),\n info: createLogMethod(\"info\"),\n warn: createLogMethod(\"warn\"),\n fatal: createLogMethod(\"fatal\"),\n child: vi.fn<Logger[\"child\"]>((theseBindings, theseOptions) =>\n createTestLogger({\n ...bindings,\n ...theseBindings,\n }, {\n level: (theseOptions ?? options)?.level,\n msgPrefix: options?.msgPrefix || theseOptions?.msgPrefix\n ? `${options?.msgPrefix ? `${options.msgPrefix} ` : \"\"}${\n theseOptions?.msgPrefix || \"\"\n }`\n : undefined,\n })\n ),\n trace: createLogMethod(\"trace\"),\n isLevelEnabled: vi.fn((args) => true),\n };\n}\n\nexport function createClientMockHelper(): MockClientHelper {\n const client = vitest.fn<typeof client>() as unknown as Mock<Client> & Client;\n\n const logger = createTestLogger({});\n\n // this is just a fallback for when there is nothing set so we can track whats up\n client.mockImplementation((...args: any[]) => {\n const localLogger = logger.child({}, { msgPrefix: \"fallback mock client\" });\n try {\n throw new Error(\"IN THE FALLBACK MOCK CLIENT IMPLEMENTATION\");\n } catch (e) {\n localLogger.error(\"Just for the stack trace\", e);\n }\n\n let where;\n const deadObjectSet = {\n where: (...whereArgs: any[]) => {\n localLogger.trace(\"where\", whereArgs);\n where = whereArgs;\n return deadObjectSet;\n },\n fetchPage: (...fetchArgs: any[]) => {\n localLogger.trace(\"etchPage\", where!, fetchArgs);\n throw new Error(\"NO\");\n },\n fetchOne: (...fetchArgs: any[]) => {\n localLogger.trace(\"fetchOne\", fetchArgs);\n\n throw new Error(\"NO\");\n },\n };\n return deadObjectSet;\n });\n\n client[additionalContext] = {\n baseUrl: \"http://localhost:8080\",\n ontologyRid: \"ri.something\",\n objectFactory: vitest.fn(),\n objectFactory2: vitest.fn(),\n ontologyProvider: {\n getActionDefinition: vitest.fn(),\n getInterfaceDefinition: vitest.fn(),\n getObjectDefinition: vitest.fn(),\n getQueryDefinition: vitest.fn(),\n },\n tokenProvider: vitest.fn(),\n objectSetFactory: vitest.fn(),\n fetch: vitest.fn(),\n clientCacheKey: {} as any,\n requestContext: {},\n logger,\n };\n\n function mockObjectFactory2Once() {\n const d = pDefer<\n Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>[]\n >();\n vi.mocked(client[additionalContext].objectFactory2).mockReturnValueOnce(\n d.promise,\n );\n return d;\n }\n\n function mockFetchPageOnce<\n X extends PageResult<\n Osdk.Instance<ObjectTypeDefinition>\n >,\n >(): DeferredPromise<X> {\n const d = pDefer<X>();\n\n const objectSet: ObjectSet<ObjectTypeDefinition> = {\n fetchPage: async (fetchPageArgs) => {\n mockLog(\"fetchPage\", fetchPageArgs);\n const r = await d.promise;\n return { ...r, $primaryKey: fetchPageArgs };\n },\n where: (clause) => {\n mockLog(\"where\", clause);\n return objectSet;\n },\n } as Pick<\n ObjectSet<ObjectTypeDefinition>,\n \"fetchPage\" | \"where\"\n > as ObjectSet<ObjectTypeDefinition>;\n\n client.mockReturnValueOnce(objectSet);\n return d;\n }\n\n function mockFetchOneOnce<\n X extends Partial<OsdkBase<any>>,\n >(expectedId?: string | number | boolean): DeferredPromise<X> {\n const d = pDefer<X>();\n\n client.mockReturnValueOnce(\n {\n fetchOne: async (a) => {\n mockLog(\"fetchOne\", a);\n invariant(\n expectedId === undefined || a === expectedId,\n \"expected id to match\",\n );\n const r = await d.promise;\n return { ...r, $primaryKey: a };\n },\n } as Pick<ObjectSet<ObjectTypeDefinition>, \"fetchOne\">,\n );\n return d;\n }\n\n function mockApplyActionOnce(): DeferredPromise<\n Partial<ActionEditResponse>\n > {\n const d = pDefer<Partial<ActionEditResponse>>();\n\n client.mockReturnValueOnce(\n {\n applyAction: async (_args): Promise<ActionEditResponse> => {\n const x = await d.promise;\n return {\n type: \"edits\",\n addedLinks: x.addedLinks ?? [],\n addedObjects: x.addedObjects ?? [],\n deletedLinksCount: x.deletedLinksCount ?? 0,\n deletedObjectsCount: x.deletedObjectsCount ?? 0,\n editedObjectTypes: x.editedObjectTypes ?? [],\n modifiedObjects: x.modifiedObjects ?? [],\n };\n },\n } as Pick<\n ActionSignatureFromDef<ActionDefinition>,\n \"applyAction\"\n >,\n );\n return d;\n }\n\n return {\n client,\n mockApplyActionOnce,\n mockFetchOneOnce,\n mockObjectFactory2Once,\n mockFetchPageOnce,\n };\n}\n\nexport function createDefer() {\n let subscriptions: Unsubscribable[];\n\n beforeEach(() => {\n subscriptions = [];\n });\n\n afterEach(() => {\n for (const s of subscriptions) {\n s.unsubscribe();\n }\n subscriptions = [];\n });\n\n return function defer(x: Unsubscribable): Unsubscribable {\n subscriptions.push(x);\n return x;\n };\n}\n\nexport function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(\n subFn: Mock<(e: ListPayload | undefined) => void>,\n resolvedList: Osdk.Instance<T>[],\n payloadOptions: Omit<Partial<ListPayload>, \"resolvedList\"> = {},\n): void {\n if (vitest.isFakeTimers()) {\n vitest.runOnlyPendingTimers();\n }\n expect(subFn).toHaveBeenCalledExactlyOnceWith(\n listPayloadContaining({\n ...payloadOptions,\n resolvedList,\n }),\n );\n subFn.mockClear();\n}\n\nexport function expectSingleObjectCallAndClear<T extends ObjectTypeDefinition>(\n subFn: Mock<(e: ObjectPayload | undefined) => void>,\n object: Osdk.Instance<T>,\n status?: Status,\n): void {\n expect(subFn).toHaveBeenCalledExactlyOnceWith(\n expect.objectContaining({\n object,\n status: status ?? expect.any(String),\n }),\n );\n subFn.mockClear();\n}\n\nexport async function waitForCall(\n subFn: Mock<(e: any) => void>,\n times: number = 1,\n): Promise<void> {\n try {\n await vi.waitFor(() => {\n expect(subFn).toHaveBeenCalledTimes(times);\n });\n } catch (e) {\n // we don't need the error, it will retrigger on the next line\n // and that provides better behavior in the vitest vscode\n // plugin. This places the error in the test itself instead of\n // only in this file\n }\n expect(subFn).toHaveBeenCalledTimes(times);\n}\n\nfunction createSubscriptionHelper() {\n}\n\nexport function mockSingleSubCallback():\n & Mock<\n (e: ObjectPayload | undefined) => void\n >\n & {\n // expectLoaded: (value: unknown) => Promise<void>;\n // expectLoading: (value: unknown) => Promise<void>;\n expectLoadingAndLoaded: (q: {\n loading?: unknown;\n loaded: unknown;\n }) => Promise<void>;\n }\n{\n const ret = vitest.fn((e: ObjectPayload | undefined) => {});\n\n // async function expectLoaded(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenLastCalledWith(\n // cacheEntryContaining({\n // value,\n // status: \"loaded\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n // async function expectLoading(value: unknown) {\n // await waitForCall(ret);\n // // as long as we get the loaded call we are happy\n // expect(ret).toHaveBeenCalledExactlyOnceWith(\n // cacheEntryContaining({\n // value,\n // status: \"loading\",\n // }),\n // );\n // ret.mockClear();\n // }\n\n return Object.assign(ret, {\n // expectLoaded,\n // expectLoading,\n expectLoadingAndLoaded: async (\n q: { loading?: unknown; loaded: unknown },\n ) => {\n await waitForCall(ret, 2);\n\n // as long as we get the loaded call we are happy\n expect(ret).toHaveBeenNthCalledWith(\n 1,\n q.loading,\n );\n expect(ret).toHaveBeenNthCalledWith(\n 2,\n q.loaded,\n );\n expect(ret).toHaveBeenCalledTimes(2);\n ret.mockClear();\n },\n });\n}\n\nexport function mockListSubCallback(): Mock<\n (x: ListPayload | undefined) => void\n> {\n return vitest.fn(\n (x: ListPayload | undefined) => {},\n );\n}\n\nexport function cacheEntryContaining(x: Partial<Entry<any>>): Entry<any> {\n return {\n cacheKey: x.cacheKey ?? expect.any(Object),\n value: \"value\" in x\n ? x.value\n : expect.toBeOneOf([expect.anything(), undefined]),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nfunction nonOptionalValue<T extends object, K extends keyof T>(\n src: T,\n key: K,\n): NonNullable<T[K]> {\n return key in src\n ? src[key]\n : expect.toBeOneOf([expect.anything(), undefined]);\n}\n\nexport function objectPayloadContaining(\n x: Partial<ObjectPayload>,\n): ObjectPayload {\n return {\n object: nonOptionalValue(x, \"object\"),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function listPayloadContaining(\n x: Partial<ListPayload>,\n): ListPayload {\n return {\n fetchMore: x.fetchMore ?? expect.any(Function),\n hasMore: x.hasMore ?? expect.any(Boolean),\n resolvedList: x.resolvedList ?? expect.anything(),\n isOptimistic: expect.any(Boolean),\n status: x.status ?? expect.anything(),\n lastUpdated: x.lastUpdated ?? expect.anything(),\n };\n}\n\nexport function applyCustomMatchers(): void {\n expect.extend({\n toBeGreaterThan: (r: number, e: number) => {\n return {\n pass: r > e,\n message: () => `expected ${r} to be greater than ${e} (lastUpdated)`,\n };\n },\n });\n}\n\ninterface CustomMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ninterface CustomAsymmetricMatchers<R = any> {\n toBeGreaterThan: (n: number) => R;\n}\n\ndeclare module \"vitest\" {\n interface Assertion<T = any> extends CustomMatchers<T> {}\n interface AsymmetricMatchersContaining extends CustomAsymmetricMatchers {}\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,5 +14,5 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export const USER_AGENT = `osdk-client/${"2.2.0-beta.3"}`;
17
+ export const USER_AGENT = `osdk-client/${"2.2.0-beta.4"}`;
18
18
  //# sourceMappingURL=UserAgent.js.map
@@ -11,8 +11,7 @@ export interface Logger {
11
11
  msgPrefix?: string
12
12
  }): Logger;
13
13
  }
14
- interface LogFn {
14
+ export interface LogFn {
15
15
  (obj: unknown, msg?: string, ...args: any[]): void;
16
16
  (msg: string, ...args: any[]): void;
17
17
  }
18
- export {};
@@ -1 +1 @@
1
- {"mappings":"AAgBA,iBAAiB,OAAO;CACtB,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CAEN,eAAeA;CAEf,MACEC,UAAU,qBACVC,UAAU;EAAE;EAAgB;CAAoB,IAC/C;AACJ;UAES,MAAM;EACbC,cAAcC,cAAc,GAAG;EAC/BC,aAAa,GAAG;AAClB","names":["level: string","bindings: Record<string, any>","options?: { level?: string; msgPrefix?: string }","obj: unknown","msg?: string","msg: string"],"sources":["../../src/Logger.ts"],"version":3,"file":"Logger.d.ts"}
1
+ {"mappings":"AAgBA,iBAAiB,OAAO;CACtB,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CAEN,eAAeA;CAEf,MACEC,UAAU,qBACVC,UAAU;EAAE;EAAgB;CAAoB,IAC/C;AACJ;AAED,iBAAiB,MAAM;EACpBC,cAAcC,cAAc,GAAG;EAC/BC,aAAa,GAAG;AAClB","names":["level: string","bindings: Record<string, any>","options?: { level?: string; msgPrefix?: string }","obj: unknown","msg?: string","msg: string"],"sources":["../../src/Logger.ts"],"version":3,"file":"Logger.d.ts"}
@@ -12,7 +12,7 @@ export declare namespace ObservableClient {
12
12
  optimisticUpdate?: (ctx: OptimisticBuilder) => void;
13
13
  }
14
14
  }
15
- export interface QueryOptions {
15
+ export interface CommonObserveOptions {
16
16
  dedupeInterval?: number;
17
17
  }
18
18
  export interface ObserveOptions {
@@ -21,12 +21,19 @@ export interface ObserveOptions {
21
21
  export interface ObserveObjectOptions<T extends ObjectTypeDefinition> extends ObserveOptions {
22
22
  select?: PropertyKeys<T>[];
23
23
  }
24
- export interface ListQueryOptions extends QueryOptions {
24
+ export type OrderBy<Q extends ObjectTypeDefinition> = { [K in PropertyKeys<Q>]? : "asc" | "desc" | undefined };
25
+ export interface ObserveListOptions<Q extends ObjectTypeDefinition> extends CommonObserveOptions, ObserveOptions {
26
+ objectType: Q["apiName"] | Q;
27
+ where?: WhereClause<Q>;
25
28
  pageSize?: number;
29
+ orderBy?: OrderBy<Q>;
30
+ invalidationMode?: "in-place" | "wait" | "reset";
31
+ expectedLength?: number;
32
+ streamUpdates?: boolean;
26
33
  }
27
34
  export interface ObservableClient {
28
35
  observeObject<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, pk: PrimaryKeyType<T>, options: ObserveOptions, subFn: SubFn<ObjectPayload>): Unsubscribable;
29
- observeList<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>, options: ObserveOptions & ListQueryOptions, subFn: SubFn<ListPayload>): Unsubscribable;
36
+ observeList<T extends ObjectTypeDefinition>(options: ObserveListOptions<T>, subFn: SubFn<ListPayload>): Unsubscribable;
30
37
  applyAction: <Q extends ActionDefinition<any>>(action: Q, args: Parameters<ActionSignatureFromDef<Q>["applyAction"]>[0], opts?: ObservableClient.ApplyActionOptions) => Promise<unknown>;
31
38
  canonicalizeWhereClause: <T extends ObjectTypeDefinition>(where: WhereClause<T>) => Canonical<WhereClause<T>>;
32
39
  }
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,kBACA,sBACA,gBACA,cACA,mBACK,WAAY;AACnB,cAAc,8BAA8B,2BAA4B;AACxE,cAAc,cAAc,cAAe;AAC3C,cAAc,iBAAiB,yBAA0B;AAGzD,cAAc,mBAAmB,kBAAmB;AACpD,cAAc,qBAAqB,oBAAqB;AACxD,cAAc,yBAAyB,wBAAyB;AAChE,cAAc,aAAa,YAAa;AAExC,YAAY,SAAS,SAAS,YAAY,WAAW;AAErD,yBAAiB;WACE,mBAAmB;EAClC,oBAAoBA,KAAK;CAC1B;;AAEH,iBAAiB,aAAa;CAC5B;AACD;AAED,iBAAiB,eAAe;CAC9B,OAAO,YAAY;AACpB;AAED,iBAAiB,qBAAqB,UAAU,8BACtC,eACV;CACE,SAAS,aAAa;AACvB;AAED,iBAAiB,yBAAyB,aAAa;CACrD;AACD;AAED,iBAAiB,iBAAiB;CAChC,cAAc,UAAU,sBACtBC,SAAS,EAAE,aAAa,GACxBC,IAAI,eAAe,IACnBC,SAAS,gBACTC,OAAO,MAAM,iBACZ;CAEH,YAAY,UAAU,sBACpBH,SAAS,EAAE,aAAa,GACxBI,OAAO,YAAY,IACnBC,SAAS,iBAAiB,kBAC1BC,OAAO,MAAM,eACZ;CAEH,cAAc,UAAU,uBACtBC,QAAQ,GACRC,MAAM,WAAW,uBAAuB,GAAG,gBAAgB,IAC3DC,OAAO,iBAAiB,uBACrB;CAEL,0BAA0B,UAAU,sBAClCL,OAAO,YAAY,OAChB,UAAU,YAAY;AAC5B;AAED,OAAO,iBAAS,uBAAuBM,QAAQ,SAAS;AAIxD,iBAAiB,eAAe;CAC9B;AACD","names":["ctx: OptimisticBuilder","apiName: T[\"apiName\"] | T","pk: PrimaryKeyType<T>","options: ObserveOptions","subFn: SubFn<ObjectPayload>","where: WhereClause<T>","options: ObserveOptions & ListQueryOptions","subFn: SubFn<ListPayload>","action: Q","args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]","opts?: ObservableClient.ApplyActionOptions","client: Client"],"sources":["../../../src/observable/ObservableClient.ts"],"version":3,"file":"ObservableClient.d.ts"}
1
+ {"mappings":"AAgBA,cACE,kBACA,sBACA,gBACA,cACA,mBACK,WAAY;AACnB,cAAc,8BAA8B,2BAA4B;AACxE,cAAc,cAAc,cAAe;AAC3C,cAAc,iBAAiB,yBAA0B;AAGzD,cAAc,mBAAmB,kBAAmB;AACpD,cAAc,qBAAqB,oBAAqB;AACxD,cAAc,yBAAyB,wBAAyB;AAChE,cAAc,aAAa,YAAa;AAExC,YAAY,SAAS,SAAS,YAAY,WAAW;AAErD,yBAAiB;WACE,mBAAmB;EAClC,oBAAoBA,KAAK;CAC1B;;AAGH,iBAAiB,qBAAqB;CACpC;AACD;AAED,iBAAiB,eAAe;CAC9B,OAAO,YAAY;AACpB;AAED,iBAAiB,qBAAqB,UAAU,8BACtC,eACV;CACE,SAAS,aAAa;AACvB;AAED,YAAY,QAAQ,UAAU,2BAC3B,KAAK,aAAa,OAAM,QAAQ;AAGnC,iBAAiB,mBAAmB,UAAU,8BACpC,sBAAsB,eAChC;CACE,YAAY,EAAE,aAAa;CAC3B,QAAQ,YAAY;CACpB;CACA,UAAU,QAAQ;CAClB,mBAAmB,aAAa,SAAS;CACzC;CACA;AACD;AAED,iBAAiB,iBAAiB;CAChC,cAAc,UAAU,sBACtBC,SAAS,EAAE,aAAa,GACxBC,IAAI,eAAe,IACnBC,SAAS,gBACTC,OAAO,MAAM,iBACZ;CAEH,YAAY,UAAU,sBACpBC,SAAS,mBAAmB,IAC5BC,OAAO,MAAM,eACZ;CAEH,cAAc,UAAU,uBACtBC,QAAQ,GACRC,MAAM,WAAW,uBAAuB,GAAG,gBAAgB,IAC3DC,OAAO,iBAAiB,uBACrB;CAEL,0BAA0B,UAAU,sBAClCC,OAAO,YAAY,OAChB,UAAU,YAAY;AAC5B;AAED,OAAO,iBAAS,uBAAuBC,QAAQ,SAAS;AAIxD,iBAAiB,eAAe;CAC9B;AACD","names":["ctx: OptimisticBuilder","apiName: T[\"apiName\"] | T","pk: PrimaryKeyType<T>","options: ObserveOptions","subFn: SubFn<ObjectPayload>","options: ObserveListOptions<T>","subFn: SubFn<ListPayload>","action: Q","args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]","opts?: ObservableClient.ApplyActionOptions","where: WhereClause<T>","client: Client"],"sources":["../../../src/observable/ObservableClient.ts"],"version":3,"file":"ObservableClient.d.ts"}
@@ -0,0 +1,9 @@
1
+ import type { ActionDefinition } from "@osdk/api";
2
+ import type { ActionSignatureFromDef } from "../../actions/applyAction.js";
3
+ import type { Store } from "./Store.js";
4
+ export declare class ActionApplication {
5
+ #private;
6
+ private store;
7
+ constructor(store: Store);
8
+ applyAction: <Q extends ActionDefinition<any>>(action: Q, args: Parameters<ActionSignatureFromDef<Q>["applyAction"]>[0], opts?: Store.ApplyActionOptions) => Promise<unknown>;
9
+ }
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cAAc,wBAA4C,WAAY;AAEtE,cAAc,8BAA8B,8BAA+B;AAI3E,cAAc,aAAa,YAAa;AAIxC,OAAO,cAAM,kBAAkB;;CACjB;CAAZ,YAAoBA,OAAO;CAE3B,cAAc,UAAU,uBACtBC,QAAQ,GACRC,MAAM,WAAW,uBAAuB,GAAG,gBAAgB,IAC3DC,OAAO,MAAM,uBACV;AA0FN","names":["store: Store","action: Q","args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]","opts?: Store.ApplyActionOptions"],"sources":["../../../../src/observable/internal/ActionApplication.ts"],"version":3,"file":"ActionApplication.d.ts"}
@@ -1,8 +1,9 @@
1
1
  import type { CacheKey } from "./CacheKey.js";
2
+ import type { OrderByCanonicalizer } from "./Store.js";
2
3
  import type { WhereClauseCanonicalizer } from "./WhereClauseCanonicalizer.js";
3
4
  export declare class CacheKeys {
4
5
  #private;
5
- constructor(whereCanonicalizer: WhereClauseCanonicalizer, onCreate: (cacheKey: CacheKey) => void);
6
+ constructor(whereCanonicalizer: WhereClauseCanonicalizer, orderByCanonicalizer: OrderByCanonicalizer, onCreate: (cacheKey: CacheKey) => void);
6
7
  get<K extends CacheKey<string, any, any>>(type: K["type"], ...args: K["__cacheKey"]["args"]): K;
7
8
  remove<K extends CacheKey<string, any, any>>(cacheKey: K): void;
8
9
  }
@@ -1 +1 @@
1
- {"mappings":"AAmBA,cAAc,gBAAgB,eAAgB;AAG9C,cAAc,gCAAgC,+BAAgC;AAE9E,OAAO,cAAM,UAAU;;CAgBrB,YACEA,oBAAoB,0BACpBC,WAAWC,UAAU;CAwDvB,IAAI,UAAU,4BACZC,MAAM,EAAE,SACR,GAAG,MAAM,EAAE,cAAc,UACxB;CAMH,OAAO,UAAU,4BACfC,UAAU;AAIb","names":["whereCanonicalizer: WhereClauseCanonicalizer","onCreate: (cacheKey: CacheKey) => void","cacheKey: CacheKey","type: K[\"type\"]","cacheKey: K"],"sources":["../../../../src/observable/internal/CacheKeys.ts"],"version":3,"file":"CacheKeys.d.ts"}
1
+ {"mappings":"AAmBA,cAAc,gBAAgB,eAAgB;AAG9C,cAAc,4BAA4B,YAAa;AACvD,cAAc,gCAAgC,+BAAgC;AAI9E,OAAO,cAAM,UAAU;;CAgBrB,YACEA,oBAAoB,0BACpBC,sBAAsB,sBACtBC,WAAWC,UAAU;CA4DvB,IAAI,UAAU,4BACZC,MAAM,EAAE,SACR,GAAG,MAAM,EAAE,cAAc,UACxB;CAMH,OAAO,UAAU,4BACfC,UAAU;AAIb","names":["whereCanonicalizer: WhereClauseCanonicalizer","orderByCanonicalizer: OrderByCanonicalizer","onCreate: (cacheKey: CacheKey) => void","cacheKey: CacheKey","type: K[\"type\"]","cacheKey: K"],"sources":["../../../../src/observable/internal/CacheKeys.ts"],"version":3,"file":"CacheKeys.d.ts"}
@@ -1,7 +1,11 @@
1
1
  import type { ObjectTypeDefinition, Osdk } from "@osdk/api";
2
2
  import { MultiMap } from "mnemonist";
3
- export interface ChangedObjects {
3
+ import type { ListCacheKey } from "./ListQuery.js";
4
+ export interface Changes {
4
5
  modifiedObjects: MultiMap<string, Osdk.Instance<ObjectTypeDefinition>>;
5
6
  addedObjects: MultiMap<string, Osdk.Instance<ObjectTypeDefinition>>;
7
+ addedLists: Set<ListCacheKey>;
8
+ modifiedLists: Set<ListCacheKey>;
6
9
  }
7
- export declare function createChangedObjects(): ChangedObjects;
10
+ export declare function createChangedObjects(): Changes;
11
+ export declare function DEBUG_ONLY__changesToString(changes: Changes): string;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAAc,sBAAsB,YAAY,WAAY;AAC5D,SAAS,gBAAgB,WAAY;AAErC,iBAAiB,eAAe;CAC9B,iBAAiB,iBAAiB,KAAK,SAAS;CAChD,cAAc,iBAAiB,KAAK,SAAS;AAC9C;AAED,OAAO,iBAAS,wBAAwB","names":[],"sources":["../../../../src/observable/internal/ChangedObjects.ts"],"version":3,"file":"ChangedObjects.d.ts"}
1
+ {"mappings":"AAgBA,cAAc,sBAAsB,YAAY,WAAY;AAC5D,SAAS,gBAAgB,WAAY;AAErC,cAAc,oBAAoB,gBAAiB;AAEnD,iBAAiB,QAAQ;CACvB,iBAAiB,iBAAiB,KAAK,SAAS;CAChD,cAAc,iBAAiB,KAAK,SAAS;CAC7C,YAAY,IAAI;CAChB,eAAe,IAAI;AACpB;AAED,OAAO,iBAAS,wBAAwB;AAYxC,OAAO,iBAAS,4BAA4BA,SAAS","names":["changes: Changes"],"sources":["../../../../src/observable/internal/ChangedObjects.ts"],"version":3,"file":"ChangedObjects.d.ts"}
@@ -15,5 +15,5 @@ export declare class Entry<K extends CacheKey<any, any, any>> {
15
15
  value: K["__cacheKey"]["value"] | undefined;
16
16
  lastUpdated: number;
17
17
  status: "init" | "loading" | "loaded" | "error";
18
- constructor(cacheKey: K, value: K["__cacheKey"]["value"], lastUpdated: number);
18
+ constructor(cacheKey: K, value: K["__cacheKey"]["value"], lastUpdated: number, status?: "init" | "loading" | "loaded" | "error");
19
19
  }
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAAc,gBAAgB,eAAgB;AAc9C,OAAO,cAAM,MAAM;;CAKjB,YAAYA,QAAQ,mBAAmBC;CAKvC,IAAI,eAAe;CAInB,IAAI;CAIJ,SAASA,mBAAmB;CAI5B,YAAYA,mBAAmB;CAa/B,WAAW,kBAAkB,4BAA4B;CAIzD,AAAO,IAAI,UAAU,gCACnBC,UAAU,IACT,MAAM;CAKT,AAAO,IAAI,UAAU,gCACnBA,UAAU,GACVC,OAAO,MAAM;AAIhB;AAED,OAAO,cAAM,MAAM,UAAU,yBAAyB;CACpD,SAAS,UAAU;CACnB,OAAO,EAAE,cAAc;CACvB;CACA,QAAQ,SAAS,YAAY,WAAW;CAExC,YACED,UAAU,GACVE,OAAO,EAAE,cAAc,UACvBC;AAOH","names":["parent: Layer | undefined","layerId: unknown","cacheKey: K","value: Entry<K>","value: K[\"__cacheKey\"][\"value\"]","lastUpdated: number"],"sources":["../../../../src/observable/internal/Layer.ts"],"version":3,"file":"Layer.d.ts"}
1
+ {"mappings":"AAgBA,cAAc,gBAAgB,eAAgB;AAc9C,OAAO,cAAM,MAAM;;CAKjB,YAAYA,QAAQ,mBAAmBC;CAKvC,IAAI,eAAe;CAInB,IAAI;CAIJ,SAASA,mBAAmB;CAI5B,YAAYA,mBAAmB;CAc/B,WAAW,kBAAkB,4BAA4B;CAIzD,AAAO,IAAI,UAAU,gCACnBC,UAAU,IACT,MAAM;CAKT,AAAO,IAAI,UAAU,gCACnBA,UAAU,GACVC,OAAO,MAAM;AAIhB;AAED,OAAO,cAAM,MAAM,UAAU,yBAAyB;CACpD,SAAS,UAAU;CACnB,OAAO,EAAE,cAAc;CACvB;CACA,QAAQ,SAAS,YAAY,WAAW;CAExC,YACED,UAAU,GACVE,OAAO,EAAE,cAAc,UACvBC,qBACAC,SAAQ,SAAS,YAAY,WAAW;AAO3C","names":["parent: Layer | undefined","layerId: unknown","cacheKey: K","value: Entry<K>","value: K[\"__cacheKey\"][\"value\"]","lastUpdated: number","status: \"init\" | \"loading\" | \"loaded\" | \"error\""],"sources":["../../../../src/observable/internal/Layer.ts"],"version":3,"file":"Layer.d.ts"}
@@ -1,40 +1,41 @@
1
- import type { ObjectTypeDefinition, Osdk, WhereClause } from "@osdk/api";
1
+ import type { ObjectTypeDefinition, WhereClause } from "@osdk/api";
2
2
  import { type Connectable, type Observable } from "rxjs";
3
3
  import type { ListPayload } from "../ListPayload.js";
4
- import type { QueryOptions, Status } from "../ObservableClient.js";
5
- import type { CacheKey } from "./CacheKey.js";
4
+ import type { CommonObserveOptions, Status } from "../ObservableClient.js";
5
+ import { type CacheKey } from "./CacheKey.js";
6
6
  import type { Canonical } from "./Canonical.js";
7
- import type { ChangedObjects } from "./ChangedObjects.js";
8
- import { Entry } from "./Layer.js";
9
- import type { ObjectCacheKey, ObjectEntry } from "./ObjectQuery.js";
7
+ import { type Changes } from "./ChangedObjects.js";
8
+ import type { Entry } from "./Layer.js";
9
+ import type { ObjectCacheKey } from "./ObjectQuery.js";
10
10
  import type { OptimisticId } from "./OptimisticId.js";
11
11
  import { Query } from "./Query.js";
12
12
  import type { BatchContext, Store, SubjectPayload } from "./Store.js";
13
- export interface ListEntry extends Entry<ListCacheKey> {}
14
13
  interface ListStorageData {
15
14
  data: ObjectCacheKey[];
16
15
  }
17
- export interface ListCacheKey extends CacheKey<"list", ListStorageData, ListQuery, [apiName: string, whereClause: WhereClause<ObjectTypeDefinition>]> {}
18
- export interface ListQueryOptions extends QueryOptions {
16
+ export interface ListCacheKey extends CacheKey<"list", ListStorageData, ListQuery, [apiName: string, whereClause: Canonical<WhereClause<ObjectTypeDefinition>>, orderByClause: Canonical<Record<string, "asc" | "desc" | undefined>>]> {}
17
+ export interface ListQueryOptions extends CommonObserveOptions {
19
18
  pageSize?: number;
20
19
  }
21
20
  export declare class ListQuery extends Query<ListCacheKey, ListPayload, ListQueryOptions> {
22
21
  #private;
23
- constructor(store: Store, subject: Observable<SubjectPayload<ListCacheKey>>, type: string, whereClause: Canonical<WhereClause<ObjectTypeDefinition>>, cacheKey: ListCacheKey, opts: ListQueryOptions);
22
+ constructor(store: Store, subject: Observable<SubjectPayload<ListCacheKey>>, objectType: string, whereClause: Canonical<WhereClause<ObjectTypeDefinition>>, orderBy: Canonical<Record<string, "asc" | "desc" | undefined>>, cacheKey: ListCacheKey, opts: ListQueryOptions);
23
+ get canonicalWhere(): Canonical<WhereClause<ObjectTypeDefinition>>;
24
24
  protected _createConnectable(subject: Observable<SubjectPayload<ListCacheKey>>): Connectable<ListPayload>;
25
25
  _preFetch(): void;
26
26
  _fetch(): Promise<void>;
27
27
  fetchMore: () => Promise<unknown>;
28
28
  /**
29
- * Caller is responsible for removing the layer
30
- *
31
- * @param changedObjects
29
+ * Note: This method is not async because I want it to return right after it
30
+ * finishes the synchronous updates. The promise that is returned
31
+ * will resolve after the revalidation is complete.
32
+ * @param changes
32
33
  * @param optimisticId
33
- * @returns
34
+ * @returns If revalidation is needed, a promise that resolves after the
35
+ * revalidation is complete. Otherwise, undefined.
34
36
  */
35
- maybeUpdate(changedObjects: ChangedObjects, optimisticId: OptimisticId): boolean;
36
- maybeRevalidate(changedObjects: ChangedObjects): Promise<unknown>;
37
- updateList(values: Array<Osdk.Instance<ObjectTypeDefinition> | ObjectEntry>, append: boolean, status: Status, batch: BatchContext): Entry<ListCacheKey>;
37
+ maybeUpdateAndRevalidate: (changes: Changes, optimisticId: OptimisticId | undefined) => Promise<void> | undefined;
38
+ updateList(objectCacheKeys: Array<ObjectCacheKey>, append: boolean, status: Status, batch: BatchContext): Entry<ListCacheKey>;
38
39
  writeToStore(data: ListStorageData, status: Status, batch: BatchContext): Entry<ListCacheKey>;
39
40
  _dispose(): void;
40
41
  }
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAEE,sBACA,MACA,mBACK,WAAY;AAEnB,cAIO,kBAIA,kBAIA,MAAO;AAGd,cAAc,mBAAmB,mBAAoB;AACrD,cAAc,cAAc,cAAc,wBAAyB;AACnE,cAAc,gBAAgB,eAAgB;AAC9C,cAAc,iBAAiB,gBAAiB;AAChD,cAAc,sBAAsB,qBAAsB;AAC1D,SAAS,aAAa,YAAa;AAEnC,cAAc,gBAAgB,mBAAmB,kBAAmB;AACpE,cAAc,oBAAoB,mBAAoB;AACtD,SAAS,aAAa,YAAa;AACnC,cAAc,cAAc,OAAO,sBAAsB,YAAa;AAEtE,iBAAiB,kBAAkB,MAAM,cAAc,CAAE;UAG/C,gBAAgB;CACxB,MAAM;AACP;AAED,iBAAiB,qBACf,SACE,QACA,iBACA,YAEE,iBACA,aAAa,YAAY,wBAG/B,CAAE;AAEF,iBAAiB,yBAAyB,aAAa;CACrD;AACD;AAED,OAAO,cAAM,kBAAkB,MAC7B,cACA,aACA,kBACA;;CAaA,YACEA,OAAO,OACPC,SAAS,WAAW,eAAe,gBACnCC,cACAC,aAAa,UAAU,YAAY,wBACnCC,UAAU,cACVC,MAAM;CAeR,UAAU,mBACRJ,SAAS,WAAW,eAAe,iBAClC,YAAY;CA+Bf;CAIA,AAAM,UAAU;CAgChB,iBAAgB;;;;;;;;CAwEhB,YACEK,gBAAgB,gBAChBC,cAAc;CAoDhB,gBACED,gBAAgB,iBACf;CA2BH,WACEE,QAAQ,MAAM,KAAK,SAAS,wBAAwB,cACpDC,iBACAC,QAAQ,QACRC,OAAO,eACN,MAAM;CA6CT,aACEC,MAAM,iBACNF,QAAQ,QACRC,OAAO,eACN,MAAM;CAaT;AAYD;AAED,OAAO,iBAAS,eACdE,UAAU,UACVC,mBACC,YAAY","names":["store: Store","subject: Observable<SubjectPayload<ListCacheKey>>","type: string","whereClause: Canonical<WhereClause<ObjectTypeDefinition>>","cacheKey: ListCacheKey","opts: ListQueryOptions","changedObjects: ChangedObjects","optimisticId: OptimisticId","values: Array<Osdk.Instance<ObjectTypeDefinition> | ObjectEntry>","append: boolean","status: Status","batch: BatchContext","data: ListStorageData","cacheKey: CacheKey","apiName?: string"],"sources":["../../../../src/observable/internal/ListQuery.ts"],"version":3,"file":"ListQuery.d.ts"}
1
+ {"mappings":"AAgBA,cAEE,sBAEA,mBACK,WAAY;AAEnB,cAIO,kBAGA,kBAKA,MAAO;AAGd,cAAc,mBAAmB,mBAAoB;AACrD,cAAc,sBAAsB,cAAc,wBAAyB;AAC3E,cACO,gBAEA,eAAgB;AACvB,cAAc,iBAAiB,gBAAiB;AAChD,cAAc,eAA4C,qBAAsB;AAChF,cAAc,aAAa,YAAa;AAExC,cAAc,sBAAsB,kBAAmB;AACvD,cAAc,oBAAoB,mBAAoB;AACtD,SAAS,aAAa,YAAa;AACnC,cAAc,cAAc,OAAO,sBAAsB,YAAa;UAE5D,gBAAgB;CACxB,MAAM;AACP;AAED,iBAAiB,qBACf,SACE,QACA,iBACA,YAEE,iBACA,aAAa,UAAU,YAAY,wBACnC,eAAe,UAAU,eAAe,QAAQ,uBAGtD,CAAE;AAEF,iBAAiB,yBAAyB,qBAAqB;CAC7D;AACD;AAED,OAAO,cAAM,kBAAkB,MAC7B,cACA,aACA,kBACA;;CAcA,YACEA,OAAO,OACPC,SAAS,WAAW,eAAe,gBACnCC,oBACAC,aAAa,UAAU,YAAY,wBACnCC,SAAS,UAAU,eAAe,QAAQ,sBAC1CC,UAAU,cACVC,MAAM;CA0BR,IAAI,kBAAkB,UAAU,YAAY;CAI5C,UAAU,mBACRL,SAAS,WAAW,eAAe,iBAClC,YAAY;CA+Bf;CAIA,AAAM,UAAU;CAgChB,iBAAgB;;;;;;;;;;CAkFhB,2BACEM,SAAS,SACTC,cAAc,6BACb;CAwKH,WACEC,iBAAiB,MAAM,iBACvBC,iBACAC,QAAQ,QACRC,OAAO,eACN,MAAM;CA6FT,aACEC,MAAM,iBACNF,QAAQ,QACRC,OAAO,eACN,MAAM;CAmBT;AAYD;AAED,OAAO,iBAAS,eACdE,UAAU,UACVC,mBACC,YAAY","names":["store: Store","subject: Observable<SubjectPayload<ListCacheKey>>","objectType: string","whereClause: Canonical<WhereClause<ObjectTypeDefinition>>","orderBy: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>","cacheKey: ListCacheKey","opts: ListQueryOptions","changes: Changes","optimisticId: OptimisticId | undefined","objectCacheKeys: Array<ObjectCacheKey>","append: boolean","status: Status","batch: BatchContext","data: ListStorageData","cacheKey: CacheKey","apiName?: string"],"sources":["../../../../src/observable/internal/ListQuery.ts"],"version":3,"file":"ListQuery.d.ts"}
@@ -1,7 +1,7 @@
1
1
  import type { ObjectTypeDefinition, Osdk, PrimaryKeyType } from "@osdk/api";
2
2
  import type { Connectable, Observable, Subject } from "rxjs";
3
3
  import type { ObjectPayload } from "../ObjectPayload.js";
4
- import type { QueryOptions, Status } from "../ObservableClient.js";
4
+ import type { CommonObserveOptions, Status } from "../ObservableClient.js";
5
5
  import type { CacheKey } from "./CacheKey.js";
6
6
  import type { Entry } from "./Layer.js";
7
7
  import { Query } from "./Query.js";
@@ -9,9 +9,9 @@ import type { BatchContext, Store, SubjectPayload } from "./Store.js";
9
9
  export interface ObjectEntry extends Entry<ObjectCacheKey> {}
10
10
  type ObjectStorageData = Osdk.Instance<ObjectTypeDefinition>;
11
11
  export interface ObjectCacheKey extends CacheKey<"object", ObjectStorageData, ObjectQuery, [string, pk: PrimaryKeyType<ObjectTypeDefinition>]> {}
12
- export declare class ObjectQuery extends Query<ObjectCacheKey, ObjectPayload, QueryOptions> {
12
+ export declare class ObjectQuery extends Query<ObjectCacheKey, ObjectPayload, CommonObserveOptions> {
13
13
  #private;
14
- constructor(store: Store, subject: Subject<SubjectPayload<ObjectCacheKey>>, type: string, pk: PrimaryKeyType<ObjectTypeDefinition>, cacheKey: ObjectCacheKey, opts: QueryOptions);
14
+ constructor(store: Store, subject: Subject<SubjectPayload<ObjectCacheKey>>, type: string, pk: PrimaryKeyType<ObjectTypeDefinition>, cacheKey: ObjectCacheKey, opts: CommonObserveOptions);
15
15
  protected _createConnectable(subject: Observable<SubjectPayload<ObjectCacheKey>>): Connectable<ObjectPayload>;
16
16
  _fetch(): Promise<void>;
17
17
  writeToStore(data: Osdk.Instance<ObjectTypeDefinition>, status: Status, batch: BatchContext): Entry<ObjectCacheKey>;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cAEE,sBACA,MACA,sBACK,WAAY;AAEnB,cAAc,aAAa,YAAY,eAAe,MAAO;AAE7D,cAAc,qBAAqB,qBAAsB;AACzD,cAAc,cAAc,cAAc,wBAAyB;AACnE,cAAc,gBAAgB,eAAgB;AAC9C,cAAc,aAAa,YAAa;AACxC,SAAS,aAAa,YAAa;AACnC,cAAc,cAAc,OAAO,sBAAsB,YAAa;AAEtE,iBAAiB,oBAAoB,MAAM,gBAAgB,CAAE;KAExD,oBAAoB,KAAK,SAAS;AAEvC,iBAAiB,uBACf,SACE,UACA,mBACA,sBACS,IAAI,eAAe,wBAEhC,CAAE;AAEF,OAAO,cAAM,oBAAoB,MAC/B,gBACA,eACA,cACA;;CAIA,YACEA,OAAO,OACPC,SAAS,QAAQ,eAAe,kBAChCC,cACAC,IAAI,eAAe,uBACnBC,UAAU,gBACVC,MAAM;CAYR,UAAU,mBACRC,SAAS,WAAW,eAAe,mBAClC,YAAY;CAwBf,AAAM,UAAU;CAehB,aACEC,MAAM,KAAK,SAAS,uBACpBC,QAAQ,QACRC,OAAO,eACN,MAAM;AAkBV","names":["store: Store","subject: Subject<SubjectPayload<ObjectCacheKey>>","type: string","pk: PrimaryKeyType<ObjectTypeDefinition>","cacheKey: ObjectCacheKey","opts: QueryOptions","subject: Observable<SubjectPayload<ObjectCacheKey>>","data: Osdk.Instance<ObjectTypeDefinition>","status: Status","batch: BatchContext"],"sources":["../../../../src/observable/internal/ObjectQuery.ts"],"version":3,"file":"ObjectQuery.d.ts"}
1
+ {"mappings":"AAgBA,cAEE,sBACA,MACA,sBACK,WAAY;AAEnB,cAAc,aAAa,YAAY,eAAe,MAAO;AAG7D,cAAc,qBAAqB,qBAAsB;AACzD,cAAc,sBAAsB,cAAc,wBAAyB;AAC3E,cAAc,gBAAgB,eAAgB;AAC9C,cAAc,aAAa,YAAa;AACxC,SAAS,aAAa,YAAa;AACnC,cAAc,cAAc,OAAO,sBAAsB,YAAa;AAEtE,iBAAiB,oBAAoB,MAAM,gBAAgB,CAAE;KAExD,oBAAoB,KAAK,SAAS;AAEvC,iBAAiB,uBACf,SACE,UACA,mBACA,sBACS,IAAI,eAAe,wBAEhC,CAAE;AAEF,OAAO,cAAM,oBAAoB,MAC/B,gBACA,eACA,sBACA;;CAIA,YACEA,OAAO,OACPC,SAAS,QAAQ,eAAe,kBAChCC,cACAC,IAAI,eAAe,uBACnBC,UAAU,gBACVC,MAAM;CAqBR,UAAU,mBACRC,SAAS,WAAW,eAAe,mBAClC,YAAY;CAwBf,AAAM,UAAU;CAmBhB,aACEC,MAAM,KAAK,SAAS,uBACpBC,QAAQ,QACRC,OAAO,eACN,MAAM;AAyBV","names":["store: Store","subject: Subject<SubjectPayload<ObjectCacheKey>>","type: string","pk: PrimaryKeyType<ObjectTypeDefinition>","cacheKey: ObjectCacheKey","opts: CommonObserveOptions","subject: Observable<SubjectPayload<ObjectCacheKey>>","data: Osdk.Instance<ObjectTypeDefinition>","status: Status","batch: BatchContext"],"sources":["../../../../src/observable/internal/ObjectQuery.ts"],"version":3,"file":"ObjectQuery.d.ts"}
@@ -1,11 +1,11 @@
1
1
  import type { OptimisticBuilder } from "../OptimisticBuilder.js";
2
- import type { ChangedObjects } from "./ChangedObjects.js";
2
+ import { type Changes } from "./ChangedObjects.js";
3
3
  import { type OptimisticId } from "./OptimisticId.js";
4
4
  import type { Store } from "./Store.js";
5
5
  export declare class OptimisticJob {
6
6
  #private;
7
7
  context: OptimisticBuilder;
8
- getResult: () => Promise<ChangedObjects>;
8
+ getResult: () => Promise<Changes>;
9
9
  constructor(store: Store, optimisticId: OptimisticId);
10
10
  }
11
11
  export declare function runOptimisticJob(store: Store, optimisticUpdate: undefined | ((ctx: OptimisticBuilder) => void)): () => Promise<void>;
@@ -1 +1 @@
1
- {"mappings":"AAmBA,cAAc,yBAAyB,yBAA0B;AACjE,cAAc,sBAAsB,qBAAsB;AAC1D,cAAkC,oBAAoB,mBAAoB;AAC1E,cAAc,aAAa,YAAa;AAExC,OAAO,cAAM,cAAc;;CACzB,SAAS;CACT,iBAAiB,QAAQ;CAGzB,YAAYA,OAAO,OAAOC,cAAc;AAoEzC;AAED,OAAO,iBAAS,iBACdD,OAAO,OACPE,gCAAgCC,KAAK,oCAC9B","names":["store: Store","optimisticId: OptimisticId","optimisticUpdate: undefined | ((ctx: OptimisticBuilder) => void)","ctx: OptimisticBuilder"],"sources":["../../../../src/observable/internal/OptimisticJob.ts"],"version":3,"file":"OptimisticJob.d.ts"}
1
+ {"mappings":"AAkBA,cAAc,yBAAyB,yBAA0B;AACjE,cAAc,eAAe,qBAAsB;AACnD,cAAkC,oBAAoB,mBAAoB;AAC1E,cAAc,aAAa,YAAa;AAExC,OAAO,cAAM,cAAc;;CACzB,SAAS;CACT,iBAAiB,QAAQ;CAGzB,YAAYA,OAAO,OAAOC,cAAc;AAmEzC;AAED,OAAO,iBAAS,iBACdD,OAAO,OACPE,gCAAgCC,KAAK,oCAC9B","names":["store: Store","optimisticId: OptimisticId","optimisticUpdate: undefined | ((ctx: OptimisticBuilder) => void)","ctx: OptimisticBuilder"],"sources":["../../../../src/observable/internal/OptimisticJob.ts"],"version":3,"file":"OptimisticJob.d.ts"}
@@ -1,12 +1,13 @@
1
- import type { Connectable, Observable, Observer, Subscribable } from "rxjs";
2
- import type { QueryOptions, Status, Unsubscribable } from "../ObservableClient.js";
1
+ import type { Connectable, Observable, Observer, Subscribable, Subscription } from "rxjs";
2
+ import type { Logger } from "../../Logger.js";
3
+ import type { CommonObserveOptions, Status } from "../ObservableClient.js";
3
4
  import type { CacheKey } from "./CacheKey.js";
4
5
  import type { Entry } from "./Layer.js";
5
6
  import type { BatchContext, Store, SubjectPayload } from "./Store.js";
6
7
  export declare abstract class Query<
7
8
  KEY extends CacheKey,
8
9
  PAYLOAD,
9
- O extends QueryOptions
10
+ O extends CommonObserveOptions
10
11
  > implements Subscribable<PAYLOAD> {
11
12
  #private;
12
13
  lastFetchStarted?: number;
@@ -16,9 +17,9 @@ export declare abstract class Query<
16
17
  cacheKey: KEY;
17
18
  store: Store;
18
19
  abortController?: AbortController;
19
- constructor(store: Store, observable: Observable<SubjectPayload<KEY>>, opts: O, cacheKey: KEY);
20
+ constructor(store: Store, observable: Observable<SubjectPayload<KEY>>, opts: O, cacheKey: KEY, logger?: Logger);
20
21
  protected abstract _createConnectable(subject: Observable<SubjectPayload<KEY>>): Connectable<PAYLOAD>;
21
- subscribe(observer: Partial<Observer<PAYLOAD>>): Unsubscribable;
22
+ subscribe(observer: Partial<Observer<PAYLOAD>>): Subscription;
22
23
  revalidate(force?: boolean): Promise<unknown>;
23
24
  _preFetch(): void;
24
25
  abstract _fetch(): Promise<unknown>;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,aACA,YACA,UACA,oBAEK,MAAO;AACd,cACE,cACA,QACA,sBACK,wBAAyB;AAChC,cAAc,gBAAgB,eAAgB;AAC9C,cAAc,aAAa,YAAa;AACxC,cAAc,cAAc,OAAO,sBAAsB,YAAa;AAEtE,OAAO,uBAAe;CACpB,YAAY;CACZ;CACA,UAAU;aACC,aAAa,SAAS;;CACjC;CACA,eAAe;CACf;CACA,SAAS;CACT,UAAU;CACV,OAAO;CACP,kBAAkB;CAKlB,YACEA,OAAO,OACPC,YAAY,WAAW,eAAe,OACtCC,MAAM,GACNC,UAAU;CAQZ,mBAAmB,mBACjBC,SAAS,WAAW,eAAe,QAClC,YAAY;CAEf,AAAO,UACLC,UAAU,QAAQ,SAAS,YAC1B;CAMH,WAAWC,kBAAkB;CAkC7B;CACA,SAAS,UAAU;CAEnB,UACEC,QAAQ,QACRC,OAAO;CAQT;CAQA;CAEA,SAAS,aACPC,MAAM,IAAI,cAAc,UACxBF,QAAQ,QACRC,OAAO,eACN,MAAM;AACV","names":["store: Store","observable: Observable<SubjectPayload<KEY>>","opts: O","cacheKey: KEY","subject: Observable<SubjectPayload<KEY>>","observer: Partial<Observer<PAYLOAD>>","force?: boolean","status: Status","batch: BatchContext","data: KEY[\"__cacheKey\"][\"value\"]"],"sources":["../../../../src/observable/internal/Query.ts"],"version":3,"file":"Query.d.ts"}
1
+ {"mappings":"AAgBA,cACE,aACA,YACA,UACA,cACA,oBACK,MAAO;AAEd,cAAc,cAAc,iBAAkB;AAC9C,cAAc,sBAAsB,cAAc,wBAAyB;AAC3E,cAAc,gBAAgB,eAAgB;AAC9C,cAAc,aAAa,YAAa;AACxC,cAAc,cAAc,OAAO,sBAAsB,YAAa;AAEtE,OAAO,uBAAe;CACpB,YAAY;CACZ;CACA,UAAU;aACC,aAAa,SAAS;;CACjC;CACA,eAAe;CACf;CACA,SAAS;CACT,UAAU;CACV,OAAO;CACP,kBAAkB;CAQlB,YACEA,OAAO,OACPC,YAAY,WAAW,eAAe,OACtCC,MAAM,GACNC,UAAU,KACVC,SAAS;CAoBX,mBAAmB,mBACjBC,SAAS,WAAW,eAAe,QAClC,YAAY;CAEf,AAAO,UACLC,UAAU,QAAQ,SAAS,YAC1B;CAMH,WAAWC,kBAAkB;CAwD7B;CACA,SAAS,UAAU;CAEnB,UACEC,QAAQ,QACRC,OAAO;CAWT;CAQA;CAEA,SAAS,aACPC,MAAM,IAAI,cAAc,UACxBF,QAAQ,QACRC,OAAO,eACN,MAAM;AACV","names":["store: Store","observable: Observable<SubjectPayload<KEY>>","opts: O","cacheKey: KEY","logger?: Logger","subject: Observable<SubjectPayload<KEY>>","observer: Partial<Observer<PAYLOAD>>","force?: boolean","status: Status","batch: BatchContext","data: KEY[\"__cacheKey\"][\"value\"]"],"sources":["../../../../src/observable/internal/Query.ts"],"version":3,"file":"Query.d.ts"}
@@ -1,16 +1,17 @@
1
1
  import type { ActionDefinition, ObjectTypeDefinition, Osdk, PrimaryKeyType, WhereClause } from "@osdk/api";
2
2
  import { BehaviorSubject } from "rxjs";
3
3
  import type { ActionSignatureFromDef } from "../../actions/applyAction.js";
4
- import type { Client } from "../../Client.js";
4
+ import { type Client } from "../../Client.js";
5
5
  import type { ListPayload } from "../ListPayload.js";
6
6
  import type { ObjectPayload } from "../ObjectPayload.js";
7
- import type { ObserveObjectOptions, Unsubscribable } from "../ObservableClient.js";
7
+ import type { ObserveListOptions, ObserveObjectOptions, OrderBy, Unsubscribable } from "../ObservableClient.js";
8
8
  import type { OptimisticBuilder } from "../OptimisticBuilder.js";
9
9
  import type { SubFn } from "../types.js";
10
10
  import type { CacheKey } from "./CacheKey.js";
11
- import { type ChangedObjects } from "./ChangedObjects.js";
12
- import type { Entry } from "./Layer.js";
13
- import type { ListCacheKey, ListQueryOptions } from "./ListQuery.js";
11
+ import type { Canonical } from "./Canonical.js";
12
+ import { type Changes } from "./ChangedObjects.js";
13
+ import { Entry } from "./Layer.js";
14
+ import type { ListQueryOptions } from "./ListQuery.js";
14
15
  import { ListQuery } from "./ListQuery.js";
15
16
  import type { ObjectCacheKey } from "./ObjectQuery.js";
16
17
  import { ObjectQuery } from "./ObjectQuery.js";
@@ -20,17 +21,12 @@ export interface SubjectPayload<KEY extends CacheKey> extends Entry<KEY> {
20
21
  isOptimistic: boolean;
21
22
  }
22
23
  export interface BatchContext {
23
- addedObjects: Set<ObjectCacheKey>;
24
- modifiedObjects: Set<ObjectCacheKey>;
25
- modifiedLists: Set<ListCacheKey>;
24
+ changes: Changes;
26
25
  createLayerIfNeeded: () => void;
27
26
  optimisticWrite: boolean;
28
27
  write: <K extends CacheKey<string, any, any>>(k: K, v: Entry<K>["value"], status: Entry<K>["status"]) => Entry<K>;
29
28
  read: <K extends CacheKey<string, any, any>>(k: K) => Entry<K> | undefined;
30
29
  }
31
- interface ObserveOptions {
32
- mode?: "offline" | "force";
33
- }
34
30
  interface UpdateOptions {
35
31
  optimisticId?: OptimisticId;
36
32
  }
@@ -39,9 +35,14 @@ export declare namespace Store {
39
35
  optimisticUpdate?: (ctx: OptimisticBuilder) => void;
40
36
  }
41
37
  }
38
+ export declare class OrderByCanonicalizer {
39
+ #private;
40
+ canonicalize: <T>(orderBy: Record<string, "asc" | "desc" | undefined>) => Canonical<Record<string, "asc" | "desc" | undefined>>;
41
+ }
42
42
  export declare class Store {
43
43
  #private;
44
44
  whereCanonicalizer: WhereClauseCanonicalizer;
45
+ orderByCanonicalizer: OrderByCanonicalizer;
45
46
  client: Client;
46
47
  constructor(client: Client);
47
48
  applyAction: <Q extends ActionDefinition<any>>(action: Q, args: Parameters<ActionSignatureFromDef<Q>["applyAction"]>[0], opts?: Store.ApplyActionOptions) => Promise<unknown>;
@@ -50,23 +51,50 @@ export declare class Store {
50
51
  peekSubject: <KEY extends CacheKey<string, any, any>>(cacheKey: KEY) => BehaviorSubject<SubjectPayload<KEY>> | undefined;
51
52
  getSubject: <KEY extends CacheKey<string, any, any>>(cacheKey: KEY) => BehaviorSubject<SubjectPayload<KEY>>;
52
53
  observeObject<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, pk: PrimaryKeyType<T>, options: ObserveObjectOptions<T>, subFn: SubFn<ObjectPayload>): Unsubscribable;
53
- observeList<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>, options: ObserveOptions & ListQueryOptions, subFn: SubFn<ListPayload>): Unsubscribable;
54
- getListQuery<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>, opts: ListQueryOptions, peek?: boolean): ListQuery;
54
+ observeList<T extends ObjectTypeDefinition>(options: ObserveListOptions<T>, subFn: SubFn<ListPayload>): Unsubscribable;
55
+ getListQuery<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>, orderBy: Record<string, "asc" | "desc" | undefined>, opts: ListQueryOptions): ListQuery;
55
56
  getObjectQuery<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, pk: PrimaryKeyType<T>): ObjectQuery;
56
57
  getObject<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, pk: string | number): Osdk.Instance<T> | undefined;
57
- batch: <X>({ optimisticId }: {
58
+ batch: <X>({ optimisticId, changes }: {
58
59
  optimisticId?: OptimisticId
60
+ changes?: Changes
59
61
  }, batchFn: (batchContext: BatchContext) => X) => {
60
62
  batchResult: BatchContext
61
63
  retVal: X
62
64
  };
63
65
  invalidateObject<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, pk: PrimaryKeyType<T>): Promise<unknown>;
64
- maybeRevalidateLists(changes: ChangedObjects): void;
65
- maybeUpdateLists(changes: ChangedObjects, optimisticId: OptimisticId): void;
66
- invalidateObjectType<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T): void;
67
- invalidateList<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>): void;
66
+ maybeRevalidateLists(changes: Changes): Promise<void>;
67
+ maybeUpdateLists(changes: Changes, optimisticId: OptimisticId | undefined): Promise<(void | undefined)[]>;
68
+ /**
69
+ * @param apiName
70
+ * @param changes The changes we know about / to update
71
+ * @returns
72
+ */
73
+ invalidateObjectType<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, changes: Changes | undefined): Promise<unknown[]>;
74
+ invalidateList<T extends ObjectTypeDefinition>({ objectType, where, orderBy }: {
75
+ objectType: T["apiName"] | T
76
+ where?: WhereClause<T>
77
+ orderBy?: OrderBy<T>
78
+ }): void;
68
79
  updateObject(apiName: string | ObjectTypeDefinition, value: Osdk.Instance<ObjectTypeDefinition>, { optimisticId }?: UpdateOptions): Osdk.Instance<ObjectTypeDefinition>;
69
- updateList<T extends ObjectTypeDefinition>(apiName: T["apiName"] | T, where: WhereClause<T>, values: Osdk.Instance<T>[], { optimisticId }?: UpdateOptions, opts?: ListQueryOptions): void;
80
+ updateObjects(values: Array<Osdk.Instance<ObjectTypeDefinition>>, batch: BatchContext): ObjectCacheKey[];
81
+ /**
82
+ * Updates the internal state of a list and will create a new internal query if needed.
83
+ *
84
+ * Helper method only for tests right now. May be removed later.
85
+ *
86
+ * @param apiName
87
+ * @param where
88
+ * @param orderBy
89
+ * @param objects
90
+ * @param param4
91
+ * @param opts
92
+ */
93
+ updateList<T extends ObjectTypeDefinition>({ objectType: apiName, where, orderBy }: {
94
+ objectType: T["apiName"] | T
95
+ where: WhereClause<T>
96
+ orderBy: OrderBy<T>
97
+ }, objects: Osdk.Instance<T>[], { optimisticId }?: UpdateOptions, opts?: ListQueryOptions): void;
70
98
  retain(cacheKey: CacheKey<string, any, any>): void;
71
99
  release(cacheKey: CacheKey<string, any, any>): void;
72
100
  }
@@ -1 +1 @@
1
- {"mappings":"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","names":["k: K","v: Entry<K>[\"value\"]","status: Entry<K>[\"status\"]","ctx: OptimisticBuilder","client: Client","action: Q","args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]","opts?: Store.ApplyActionOptions","layerId: OptimisticId","type: K[\"type\"]","cacheKey: KEY","apiName: T[\"apiName\"] | T","pk: PrimaryKeyType<T>","options: ObserveObjectOptions<T>","subFn: SubFn<ObjectPayload>","where: WhereClause<T>","options: ObserveOptions & ListQueryOptions","subFn: SubFn<ListPayload>","opts: ListQueryOptions","pk: string | number","batchFn: (batchContext: BatchContext) => X","batchContext: BatchContext","changes: ChangedObjects","optimisticId: OptimisticId","apiName: string | ObjectTypeDefinition","value: Osdk.Instance<ObjectTypeDefinition>","values: Osdk.Instance<T>[]","cacheKey: CacheKey<string, any, any>"],"sources":["../../../../src/observable/internal/Store.ts"],"version":3,"file":"Store.d.ts"}
1
+ {"mappings":"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","names":["k: K","v: Entry<K>[\"value\"]","status: Entry<K>[\"status\"]","ctx: OptimisticBuilder","orderBy: Record<string, \"asc\" | \"desc\" | undefined>","client: Client","action: Q","args: Parameters<ActionSignatureFromDef<Q>[\"applyAction\"]>[0]","opts?: Store.ApplyActionOptions","layerId: OptimisticId","type: K[\"type\"]","cacheKey: KEY","apiName: T[\"apiName\"] | T","pk: PrimaryKeyType<T>","options: ObserveObjectOptions<T>","subFn: SubFn<ObjectPayload>","options: ObserveListOptions<T>","subFn: SubFn<ListPayload>","where: WhereClause<T>","opts: ListQueryOptions","pk: string | number","batchFn: (batchContext: BatchContext) => X","batchContext: BatchContext","changes: Changes","optimisticId: OptimisticId | undefined","changes: Changes | undefined","apiName: string | ObjectTypeDefinition","value: Osdk.Instance<ObjectTypeDefinition>","values: Array<Osdk.Instance<ObjectTypeDefinition>>","batch: BatchContext","objects: Osdk.Instance<T>[]","cacheKey: CacheKey<string, any, any>"],"sources":["../../../../src/observable/internal/Store.ts"],"version":3,"file":"Store.d.ts"}
@@ -1,7 +1,8 @@
1
- import type { ActionEditResponse, ObjectTypeDefinition, Osdk } from "@osdk/api";
1
+ import type { ActionEditResponse, ObjectOrInterfaceDefinition, ObjectTypeDefinition, Osdk, PageResult, WhereClause } from "@osdk/api";
2
2
  import type { DeferredPromise } from "p-defer";
3
3
  import type { Mock } from "vitest";
4
4
  import type { Client } from "../../Client.js";
5
+ import type { Logger } from "../../Logger.js";
5
6
  import type { ListPayload } from "../ListPayload.js";
6
7
  import type { ObjectPayload } from "../ObjectPayload.js";
7
8
  import type { Status, Unsubscribable } from "../ObservableClient.js";
@@ -9,11 +10,20 @@ import type { Entry } from "./Layer.js";
9
10
  export interface MockClientHelper {
10
11
  client: Mock<Client> & Client;
11
12
  mockApplyActionOnce: () => DeferredPromise<Partial<ActionEditResponse>>;
12
- mockFetchOneOnce: <Q extends ObjectTypeDefinition>() => DeferredPromise<Partial<Osdk.Instance<Q>>>;
13
+ mockFetchOneOnce: <Q extends ObjectTypeDefinition>(expectedId?: string | number | boolean) => DeferredPromise<Partial<Osdk.Instance<Q>>>;
14
+ mockObjectFactory2Once: () => DeferredPromise<Osdk.Instance<ObjectOrInterfaceDefinition, never, any, {}>[]>;
15
+ mockFetchPageOnce: <Q extends ObjectTypeDefinition>(expected?: {
16
+ where: WhereClause<any>
17
+ orderBy: Record<string, "asc" | "desc" | undefined>
18
+ }) => DeferredPromise<PageResult<Partial<Osdk.Instance<Q>>>>;
13
19
  }
20
+ export declare function createTestLogger(bindings: Record<string, any>, options?: {
21
+ level?: string
22
+ msgPrefix?: string
23
+ }): Logger;
14
24
  export declare function createClientMockHelper(): MockClientHelper;
15
25
  export declare function createDefer(): (x: Unsubscribable) => Unsubscribable;
16
- export declare function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(subFn: Mock<(e: ListPayload | undefined) => void>, resolvedList: Osdk.Instance<T>[]): void;
26
+ export declare function expectSingleListCallAndClear<T extends ObjectTypeDefinition>(subFn: Mock<(e: ListPayload | undefined) => void>, resolvedList: Osdk.Instance<T>[], payloadOptions?: Omit<Partial<ListPayload>, "resolvedList">): void;
17
27
  export declare function expectSingleObjectCallAndClear<T extends ObjectTypeDefinition>(subFn: Mock<(e: ObjectPayload | undefined) => void>, object: Osdk.Instance<T>, status?: Status): void;
18
28
  export declare function waitForCall(subFn: Mock<(e: any) => void>, times?: number): Promise<void>;
19
29
  export declare function mockSingleSubCallback(): Mock<(e: ObjectPayload | undefined) => void> & {