6ee4087a29
- Centralize `useAgents` and `useModels` state within the Nuxt app context to prevent data leaks and improve initialization. - Migrate virtualization from `vue-virtual-scroller` to `@tanstack/vue-virtual` with new `RowVirtualizerFixed` and `RowVirtualizerDynamic` components. - Upgrade Nuxt to v4.3.1 and remove `@vue-macros/nuxt`. - Replace `big.js` with an optimized custom `lshDecimal` string manipulation logic for pricing calculations in the provider API. - Implement automatic focus redirection in `ChatInput` to capture standard keyboard input. - Refactor Sidenav and Settings components to utilize virtualization for long lists (topics, agents, models). - Enhance theme colors and mobile experience. More work to come on both of these.
168 lines
8.4 KiB
Diff
168 lines
8.4 KiB
Diff
diff --git a/node_modules/@triplit/db/.bun-tag-16a302de81445385 b/.bun-tag-16a302de81445385
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
|
|
diff --git a/node_modules/@triplit/db/.bun-tag-38646fa5cb007988 b/.bun-tag-38646fa5cb007988
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
|
|
diff --git a/node_modules/@triplit/db/.bun-tag-c381351c2a0f3c94 b/.bun-tag-c381351c2a0f3c94
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
|
|
diff --git a/dist/db.js b/dist/db.js
|
|
index 09fcba1b0df49971de59b5d9f11171e5ea88aee7..0ce27b58838db11fd51fcf873a182d528d5823fb 100644
|
|
--- a/dist/db.js
|
|
+++ b/dist/db.js
|
|
@@ -17,7 +17,6 @@ import { Type } from './schema/data-types/index.js';
|
|
import { getCollectionPermissions } from './permissions.js';
|
|
import { QueryBuilder } from './query/query-builder.js';
|
|
import { validateSchema } from './schema/validation.js';
|
|
-import { tryPreloadingOptionalDeps } from './utils/optional-dep.js';
|
|
export class DB {
|
|
entityStore;
|
|
clock;
|
|
@@ -44,7 +43,7 @@ export class DB {
|
|
});
|
|
this.ivm =
|
|
options.ivm ??
|
|
- new IVM(
|
|
+ new IVM(
|
|
// @ts-expect-error - TODO: handle more generalized internal typings
|
|
this);
|
|
if (options.schema) {
|
|
@@ -73,9 +72,9 @@ export class DB {
|
|
getSchema() {
|
|
return this.schema;
|
|
}
|
|
- subscribe(query, onResults, onError,
|
|
- // TODO: will we need this?
|
|
- options = {}) {
|
|
+ subscribe(query, onResults, onError,
|
|
+ // TODO: will we need this?
|
|
+ options = {}) {
|
|
const preparedQuery = prepareQuery(query, this.schema?.collections, this.systemVars, this.session, {
|
|
applyPermission: options.skipRules ? undefined : 'read',
|
|
});
|
|
@@ -136,11 +135,11 @@ export class DB {
|
|
}
|
|
const timestamp = await this.entityStore.metadataStore.getTimestampForEntity(this.kv, collection, entityId);
|
|
if (
|
|
- // TODO: determine if timestamp can ever be undefined
|
|
- // I think the only case could be if the entity was optimistically inserted
|
|
- // on the client but never synced to the server
|
|
- // assuming that we don't delete metadata when we delete entities
|
|
- timestamp &&
|
|
+ // TODO: determine if timestamp can ever be undefined
|
|
+ // I think the only case could be if the entity was optimistically inserted
|
|
+ // on the client but never synced to the server
|
|
+ // assuming that we don't delete metadata when we delete entities
|
|
+ timestamp &&
|
|
HybridLogicalClock.compare(timestamp, options.queryState.timestamp) < 0) {
|
|
if (!entitiesThatHaveNotChanged[collection]) {
|
|
entitiesThatHaveNotChanged[collection] = new Set();
|
|
@@ -192,9 +191,9 @@ export class DB {
|
|
onResults(relevantChanges, options.queryKey);
|
|
isInitialResponse = false;
|
|
};
|
|
- return this.ivm.subscribe(preparedQuery,
|
|
- // @ts-expect-error - Ignoring because method is deprecated
|
|
- callback, options.errorCallback);
|
|
+ return this.ivm.subscribe(preparedQuery,
|
|
+ // @ts-expect-error - Ignoring because method is deprecated
|
|
+ callback, options.errorCallback);
|
|
}
|
|
async fetch(query, options) {
|
|
const preparedQuery = prepareQuery(query, this.schema?.collections, this.systemVars, this.session, {
|
|
@@ -307,9 +306,7 @@ export class DB {
|
|
// TODO call the listeners in the entity store
|
|
// Trigger subscription updates
|
|
await this.ivm.bufferChanges(changes);
|
|
- for (const listener of this.onCommitListeners) {
|
|
- listener(changes);
|
|
- }
|
|
+ await Promise.all([...this.onCommitListeners].map((listener) => listener(changes)));
|
|
return output;
|
|
}
|
|
async applyChanges(changes, options) {
|
|
@@ -609,7 +606,6 @@ export async function createDB(options) {
|
|
if (options.kv) {
|
|
savedSchema = await DB.getSchemaFromStorage(options.kv);
|
|
}
|
|
- await tryPreloadingOptionalDeps();
|
|
db = new DB({ ...options, schema: savedSchema });
|
|
let schemaChange = undefined;
|
|
// A schema is provided, attempt to apply it
|
|
diff --git a/dist/schema/data-types/type.js b/dist/schema/data-types/type.js
|
|
index 2e1281c5577b48ffe609a08da933b5f342a485fa..e88487852f6c49185144a9057ffb11d93a3b6cc8 100644
|
|
--- a/dist/schema/data-types/type.js
|
|
+++ b/dist/schema/data-types/type.js
|
|
@@ -3,7 +3,6 @@ import { DBDeserializationError, DBSerializationError, JSONDeserializationError,
|
|
import { prefixOperations, SET_OP_PREFIX, SUPPORTED_OPERATIONS, } from './operations.js';
|
|
import { DEFAULTABLE_TYPE_KEYS_SET, PRIMITIVE_TYPE_KEYS_SET } from './index.js';
|
|
import { hasNoValue, isDefaultFunction } from '../../utils/value.js';
|
|
-import { getOptionalDep } from '../../utils/optional-dep.js';
|
|
/**
|
|
* Returns an empty object for the given type
|
|
* If the type is not a record, it returns undefined
|
|
@@ -151,8 +150,8 @@ export function encode(type, input) {
|
|
throw new DBSerializationError(`set<${type.items.type}>`, input);
|
|
}
|
|
throw new UnrecognizedAttributeTypeError(
|
|
- // @ts-expect-error If this has an error, it means we are missing a case above
|
|
- type.type, 'Failed to encode value');
|
|
+ // @ts-expect-error If this has an error, it means we are missing a case above
|
|
+ type.type, 'Failed to encode value');
|
|
}
|
|
export function validateEncoded(type, encoded, options) {
|
|
switch (type.type) {
|
|
@@ -219,8 +218,8 @@ export function validateEncoded(type, encoded, options) {
|
|
};
|
|
}
|
|
throw new UnrecognizedAttributeTypeError(
|
|
- // @ts-expect-error If this has an error, it means we are missing a case above
|
|
- type.type, 'Failed to validate value');
|
|
+ // @ts-expect-error If this has an error, it means we are missing a case above
|
|
+ type.type, 'Failed to validate value');
|
|
}
|
|
export function decode(type, encoded) {
|
|
switch (type.type) {
|
|
@@ -274,8 +273,8 @@ export function decode(type, encoded) {
|
|
throw new DBDeserializationError(`set<${type.items.type}>`, encoded);
|
|
}
|
|
throw new UnrecognizedAttributeTypeError(
|
|
- // @ts-expect-error If this has an error, it means we are missing a case above
|
|
- type.type, 'Failed to decode value');
|
|
+ // @ts-expect-error If this has an error, it means we are missing a case above
|
|
+ type.type, 'Failed to decode value');
|
|
}
|
|
// FOR SET KEYS
|
|
// Must encode to string
|
|
@@ -407,8 +406,8 @@ export function supportedOperations(type) {
|
|
if (type.type === 'string')
|
|
return SUPPORTED_OPERATIONS.string;
|
|
throw new UnrecognizedAttributeTypeError(
|
|
- // @ts-expect-error If this has an error, it means we are missing a case above
|
|
- type.type, 'Failed to get supported operations');
|
|
+ // @ts-expect-error If this has an error, it means we are missing a case above
|
|
+ type.type, 'Failed to get supported operations');
|
|
}
|
|
/**
|
|
* Checks if the type has a default value that can be configured
|
|
@@ -440,9 +439,6 @@ function calcDefaultValue(config) {
|
|
else if (func === 'uuidv4') {
|
|
return crypto.randomUUID();
|
|
}
|
|
- else if (func === 'uuidv7') {
|
|
- return getOptionalDep('uuidv7').uuidv7();
|
|
- }
|
|
else if (func === 'now') {
|
|
return new Date().toISOString();
|
|
}
|
|
diff --git a/dist/utils/optional-dep.d.ts b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/utils/optional-dep.d.ts
|
|
deleted file mode 100644
|
|
index aa726389af2582fdb764fe313691423ffde89c4c..0000000000000000000000000000000000000000
|
|
diff --git a/dist/utils/optional-dep.js b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/utils/optional-dep.js
|
|
deleted file mode 100644
|
|
index 850317d787608b58f4083aa91e282c3598e32fa3..0000000000000000000000000000000000000000
|
|
diff --git a/dist/utils/optional-dep.js.map b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/utils/optional-dep.js.map
|
|
deleted file mode 100644
|
|
index d39488cfa8b65ac4d7e8b9909c82b7af8cc838e1..0000000000000000000000000000000000000000
|