59bb7fbc12
This is once again a huge commit, but its mostly performance improvements along with some bug fixes and refactoring. It also includes changes to the theming systems. I'm still not 100% happy with the theming system, but its better than before. Model fetching has been dramatically improved! Nearly all the important computation and pre-processing has been moved to the server. This has also somehow fixed the way model details are loaded, which was causing many models to be missing their details despite models.dev having them. The markdown renderer has once again been changed, but I'm mostly certain that this is the last time major changes will be made to it. The renderer is not spamming components, bloating memory usage, and its not using a bug prone custom written chunking system. There's also a lot more that I haven't mentioned and honestly forgot. I need to get better commit hygiene tbh.
186 lines
9.4 KiB
Diff
186 lines
9.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/index.js b/dist/index.js
|
|
index 5155e43bb742663d121d2c5a50275398d8b79b36..9fbd6beac969f25612d74a57b845b973ea914637 100644
|
|
--- a/dist/index.js
|
|
+++ b/dist/index.js
|
|
@@ -1,4 +1,3 @@
|
|
-import './polyfills.js';
|
|
export * from './codec.js';
|
|
export * from './db.js';
|
|
export * from './db-transaction.js';
|
|
diff --git a/dist/polyfills.d.ts b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/polyfills.d.ts
|
|
deleted file mode 100644
|
|
index 825f04fd5dba36fd87c308e87e15b2c3c5be8712..0000000000000000000000000000000000000000
|
|
diff --git a/dist/polyfills.js b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/polyfills.js
|
|
deleted file mode 100644
|
|
index 264a2151aaf63c967a2f8820454d2692f4522c99..0000000000000000000000000000000000000000
|
|
diff --git a/dist/polyfills.js.map b/home/zoeissleeping/.cache/.bun/install/cache/@triplit/db@1.1.10@@@1/dist/polyfills.js.map
|
|
deleted file mode 100644
|
|
index 23685d5015568d42f4273c442fff1dacac3151d4..0000000000000000000000000000000000000000
|
|
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
|