@rvoh/dream 0.35.0 → 0.35.2
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.
- package/dist/cjs/src/Dream.js +12 -22
- package/dist/cjs/src/bin/helpers/sync.js +2 -3
- package/dist/cjs/src/bin/index.js +17 -17
- package/dist/cjs/src/db/DreamDbConnection.js +10 -16
- package/dist/cjs/src/dream-application/index.js +22 -0
- package/dist/cjs/src/helpers/areEqual.js +29 -0
- package/dist/cjs/src/helpers/db/createDb.js +3 -3
- package/dist/cjs/src/helpers/db/dropDb.js +8 -5
- package/dist/cjs/src/helpers/notEqual.js +7 -0
- package/dist/cjs/src/helpers/uniq.js +3 -4
- package/dist/esm/src/Dream.js +12 -22
- package/dist/esm/src/bin/helpers/sync.js +2 -3
- package/dist/esm/src/bin/index.js +17 -17
- package/dist/esm/src/db/DreamDbConnection.js +10 -16
- package/dist/esm/src/dream-application/index.js +22 -0
- package/dist/esm/src/helpers/areEqual.js +26 -0
- package/dist/esm/src/helpers/db/createDb.js +3 -3
- package/dist/esm/src/helpers/db/dropDb.js +8 -5
- package/dist/esm/src/helpers/notEqual.js +4 -0
- package/dist/esm/src/helpers/uniq.js +3 -4
- package/dist/types/src/Dream.d.ts +3 -2
- package/dist/types/src/db/DreamDbConnection.d.ts +1 -0
- package/dist/types/src/dream/Query.d.ts +2 -2
- package/dist/types/src/dream-application/index.d.ts +5 -0
- package/dist/types/src/helpers/areEqual.d.ts +1 -0
- package/dist/types/src/helpers/notEqual.d.ts +1 -0
- package/dist/types/src/types/query.d.ts +38 -0
- package/docs/assets/search.js +1 -1
- package/docs/classes/Benchmark.html +2 -2
- package/docs/classes/CalendarDate.html +2 -2
- package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
- package/docs/classes/Decorators.html +19 -19
- package/docs/classes/Dream.html +129 -128
- package/docs/classes/DreamApplication.html +9 -5
- package/docs/classes/DreamBin.html +2 -2
- package/docs/classes/DreamCLI.html +4 -4
- package/docs/classes/DreamImporter.html +2 -2
- package/docs/classes/DreamLogos.html +2 -2
- package/docs/classes/DreamMigrationHelpers.html +7 -7
- package/docs/classes/DreamSerializer.html +2 -2
- package/docs/classes/DreamTransaction.html +2 -2
- package/docs/classes/Encrypt.html +2 -2
- package/docs/classes/Env.html +2 -2
- package/docs/classes/GlobalNameNotSet.html +3 -3
- package/docs/classes/NonLoadedAssociation.html +3 -3
- package/docs/classes/Query.html +51 -51
- package/docs/classes/Range.html +2 -2
- package/docs/classes/RecordNotFound.html +3 -3
- package/docs/classes/ValidationError.html +3 -3
- package/docs/functions/Attribute.html +1 -1
- package/docs/functions/RendersMany.html +1 -1
- package/docs/functions/RendersOne.html +1 -1
- package/docs/functions/ReplicaSafe.html +1 -1
- package/docs/functions/STI.html +1 -1
- package/docs/functions/SoftDelete.html +1 -1
- package/docs/functions/camelize.html +1 -1
- package/docs/functions/capitalize.html +1 -1
- package/docs/functions/closeAllDbConnections.html +1 -1
- package/docs/functions/compact.html +1 -1
- package/docs/functions/debug.html +1 -1
- package/docs/functions/dreamDbConnections.html +1 -1
- package/docs/functions/dreamPath.html +1 -1
- package/docs/functions/generateDream.html +1 -1
- package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
- package/docs/functions/hyphenize.html +1 -1
- package/docs/functions/inferSerializerFromDreamClassOrViewModelClass.html +1 -1
- package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
- package/docs/functions/isEmpty.html +1 -1
- package/docs/functions/loadRepl.html +1 -1
- package/docs/functions/lookupClassByGlobalName.html +1 -1
- package/docs/functions/pascalize.html +1 -1
- package/docs/functions/pgErrorType.html +1 -1
- package/docs/functions/range-1.html +1 -1
- package/docs/functions/relativeDreamPath.html +1 -1
- package/docs/functions/round.html +1 -1
- package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
- package/docs/functions/sharedPathPrefix.html +1 -1
- package/docs/functions/snakeify.html +1 -1
- package/docs/functions/sort.html +1 -1
- package/docs/functions/sortBy.html +1 -1
- package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
- package/docs/functions/uncapitalize.html +1 -1
- package/docs/functions/uniq.html +1 -1
- package/docs/functions/untypedDb.html +1 -1
- package/docs/functions/validateColumn.html +1 -1
- package/docs/functions/validateTable.html +1 -1
- package/docs/interfaces/AttributeStatement.html +2 -2
- package/docs/interfaces/DecoratorContext.html +2 -2
- package/docs/interfaces/DreamApplicationInitOptions.html +2 -2
- package/docs/interfaces/DreamApplicationOpts.html +2 -2
- package/docs/interfaces/DreamSerializerAssociationStatement.html +2 -2
- package/docs/interfaces/EncryptOptions.html +2 -2
- package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
- package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
- package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
- package/docs/types/Camelized.html +1 -1
- package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
- package/docs/types/DateTime.html +1 -1
- package/docs/types/DbConnectionType.html +1 -1
- package/docs/types/DreamAssociationMetadata.html +1 -1
- package/docs/types/DreamAttributes.html +1 -1
- package/docs/types/DreamClassColumn.html +1 -1
- package/docs/types/DreamColumn.html +1 -1
- package/docs/types/DreamColumnNames.html +1 -1
- package/docs/types/DreamLogLevel.html +1 -1
- package/docs/types/DreamLogger.html +1 -1
- package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
- package/docs/types/DreamParamSafeAttributes.html +1 -1
- package/docs/types/DreamParamSafeColumnNames.html +1 -1
- package/docs/types/DreamSerializerKey.html +1 -1
- package/docs/types/DreamSerializers.html +1 -1
- package/docs/types/DreamTableSchema.html +1 -1
- package/docs/types/DreamVirtualColumns.html +1 -1
- package/docs/types/EncryptAlgorithm.html +1 -1
- package/docs/types/Hyphenized.html +1 -1
- package/docs/types/IdType.html +1 -1
- package/docs/types/OpenapiAllTypes.html +1 -1
- package/docs/types/OpenapiFormats.html +1 -1
- package/docs/types/OpenapiNumberFormats.html +1 -1
- package/docs/types/OpenapiPrimitiveTypes.html +1 -1
- package/docs/types/OpenapiSchemaArray.html +1 -1
- package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
- package/docs/types/OpenapiSchemaBase.html +1 -1
- package/docs/types/OpenapiSchemaBody.html +1 -1
- package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
- package/docs/types/OpenapiSchemaCommonFields.html +1 -1
- package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
- package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
- package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
- package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
- package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
- package/docs/types/OpenapiSchemaInteger.html +1 -1
- package/docs/types/OpenapiSchemaNull.html +1 -1
- package/docs/types/OpenapiSchemaNumber.html +1 -1
- package/docs/types/OpenapiSchemaObject.html +1 -1
- package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
- package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
- package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
- package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
- package/docs/types/OpenapiSchemaObjectBase.html +1 -1
- package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
- package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
- package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
- package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
- package/docs/types/OpenapiSchemaPartialSegment.html +1 -1
- package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
- package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
- package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
- package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
- package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
- package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
- package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
- package/docs/types/OpenapiSchemaString.html +1 -1
- package/docs/types/OpenapiShorthandAllTypes.html +1 -1
- package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
- package/docs/types/OpenapiTypeField.html +1 -1
- package/docs/types/Pascalized.html +1 -1
- package/docs/types/PrimaryKeyType.html +1 -1
- package/docs/types/RoundingPrecision.html +1 -1
- package/docs/types/SerializableClassOrSerializerCallback.html +1 -1
- package/docs/types/SerializableDreamClassOrViewModelClass.html +1 -1
- package/docs/types/SerializableDreamOrViewModel.html +1 -1
- package/docs/types/SerializableTypes.html +1 -1
- package/docs/types/Snakeified.html +1 -1
- package/docs/types/Timestamp.html +1 -1
- package/docs/types/UpdateableAssociationProperties.html +1 -1
- package/docs/types/UpdateableProperties.html +1 -1
- package/docs/types/ValidationType.html +1 -1
- package/docs/types/ViewModelSerializerKey.html +1 -1
- package/docs/types/WhereStatementForDream.html +1 -1
- package/docs/types/WhereStatementForDreamClass.html +1 -1
- package/docs/variables/DateTime-1.html +1 -1
- package/docs/variables/DreamConst.html +1 -1
- package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
- package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
- package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
- package/docs/variables/ops.html +1 -1
- package/docs/variables/primaryKeyTypes.html +1 -1
- package/package.json +2 -2
- package/dist/cjs/src/db/ConnectionConfRetriever.js +0 -22
- package/dist/esm/src/db/ConnectionConfRetriever.js +0 -19
- package/dist/types/src/db/ConnectionConfRetriever.d.ts +0 -6
|
@@ -226,6 +226,28 @@ Try setting it to something valid, like:
|
|
|
226
226
|
get serializers() {
|
|
227
227
|
return getSerializersOrFail();
|
|
228
228
|
}
|
|
229
|
+
dbName(connection) {
|
|
230
|
+
const conf = this.dbConnectionConfig(connection);
|
|
231
|
+
return this.parallelDatabasesEnabled ? `${conf.name}_${process.env.VITEST_POOL_ID}` : conf.name;
|
|
232
|
+
}
|
|
233
|
+
dbConnectionConfig(connection) {
|
|
234
|
+
const conf = this.dbCredentials?.[connection] || this.dbCredentials?.primary;
|
|
235
|
+
if (!conf)
|
|
236
|
+
throw new Error(`
|
|
237
|
+
Cannot find a connection config given the following connection and node environment:
|
|
238
|
+
connection: ${connection}
|
|
239
|
+
NODE_ENV: ${EnvInternal.nodeEnv}
|
|
240
|
+
`);
|
|
241
|
+
return conf;
|
|
242
|
+
}
|
|
243
|
+
get hasReplicaConfig() {
|
|
244
|
+
return !!this.dbCredentials.replica;
|
|
245
|
+
}
|
|
246
|
+
get parallelDatabasesEnabled() {
|
|
247
|
+
return (!!this.parallelTests &&
|
|
248
|
+
!Number.isNaN(Number(process.env.VITEST_POOL_ID)) &&
|
|
249
|
+
Number(process.env.VITEST_POOL_ID) > 1);
|
|
250
|
+
}
|
|
229
251
|
async load(resourceType, resourcePath, importCb) {
|
|
230
252
|
switch (resourceType) {
|
|
231
253
|
case 'models':
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import CalendarDate from './CalendarDate.js';
|
|
2
|
+
import { DateTime } from './DateTime.js';
|
|
3
|
+
export default function areEqual(a, b) {
|
|
4
|
+
return areEqualOrUndefined(a, b) ?? areEqualOrUndefined(b, a) ?? JSON.stringify(a) === JSON.stringify(b);
|
|
5
|
+
}
|
|
6
|
+
function areEqualOrUndefined(a, b) {
|
|
7
|
+
if (a === null)
|
|
8
|
+
return b === null;
|
|
9
|
+
if (a === undefined)
|
|
10
|
+
return b === undefined;
|
|
11
|
+
if (typeof a === 'boolean')
|
|
12
|
+
return a === b;
|
|
13
|
+
if (typeof a === 'number')
|
|
14
|
+
return a === b;
|
|
15
|
+
if (typeof a === 'string')
|
|
16
|
+
return a === b;
|
|
17
|
+
if (a instanceof DateTime)
|
|
18
|
+
return b instanceof DateTime && a.equals(b);
|
|
19
|
+
if (a instanceof CalendarDate)
|
|
20
|
+
return b instanceof CalendarDate && a.equals(b);
|
|
21
|
+
if (Array.isArray(a))
|
|
22
|
+
return Array.isArray(b) && a.length === b.length && !a.find((value, index) => !areEqual(value, b[index]));
|
|
23
|
+
if (a?.isDreamInstance)
|
|
24
|
+
return a.equals(b);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import DreamApplication from '../../dream-application/index.js';
|
|
2
2
|
import EnvInternal from '../EnvInternal.js';
|
|
3
3
|
import loadPgClient from './loadPgClient.js';
|
|
4
4
|
export default async function createDb(connection, dbName) {
|
|
@@ -6,8 +6,8 @@ export default async function createDb(connection, dbName) {
|
|
|
6
6
|
// so there is no way to drop in production
|
|
7
7
|
if (EnvInternal.isProduction)
|
|
8
8
|
return false;
|
|
9
|
-
const
|
|
10
|
-
const dbConf =
|
|
9
|
+
const dreamApp = DreamApplication.getOrFail();
|
|
10
|
+
const dbConf = dreamApp.dbConnectionConfig(connection);
|
|
11
11
|
dbName ||= dbConf.name || null;
|
|
12
12
|
if (!dbName)
|
|
13
13
|
throw new Error('Must either pass a dbName to the create function, or else ensure that DB_NAME is set in the env');
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import ConnectionConfRetriever from '../../db/ConnectionConfRetriever.js';
|
|
2
1
|
import DreamApplication from '../../dream-application/index.js';
|
|
3
2
|
import EnvInternal from '../EnvInternal.js';
|
|
4
3
|
import loadPgClient from './loadPgClient.js';
|
|
4
|
+
import DreamCLI from '../../cli/index.js';
|
|
5
5
|
export default async function dropDb(connection, dbName) {
|
|
6
6
|
// this was only ever written to clear the db between tests or in development,
|
|
7
7
|
// so there is no way to drop in production
|
|
8
8
|
if (EnvInternal.isProduction)
|
|
9
9
|
return false;
|
|
10
|
-
const
|
|
11
|
-
const dbConf =
|
|
10
|
+
const dreamApp = DreamApplication.getOrFail();
|
|
11
|
+
const dbConf = dreamApp.dbConnectionConfig(connection);
|
|
12
12
|
dbName ||= dbConf.name || null;
|
|
13
13
|
if (!dbName)
|
|
14
14
|
throw new Error('Must either pass a dbName to the drop function, or else ensure that DB_NAME is set in the env');
|
|
@@ -22,12 +22,15 @@ async function maybeDropDuplicateDatabases(client, dbName) {
|
|
|
22
22
|
return;
|
|
23
23
|
if (EnvInternal.boolean('DREAM_CORE_DEVELOPMENT')) {
|
|
24
24
|
const replicaTestWorkerDatabaseName = `replica_test_${dbName}`;
|
|
25
|
-
|
|
25
|
+
DreamCLI.logger.logContinueProgress(`dropping fake replica test database ${replicaTestWorkerDatabaseName}`, { logPrefix: ' ├ [db]', logPrefixColor: 'cyan' });
|
|
26
26
|
await client.query(`DROP DATABASE IF EXISTS ${replicaTestWorkerDatabaseName};`);
|
|
27
27
|
}
|
|
28
28
|
for (let i = 2; i <= parallelTests; i++) {
|
|
29
29
|
const workerDatabaseName = `${dbName}_${i}`;
|
|
30
|
-
|
|
30
|
+
DreamCLI.logger.logContinueProgress(`dropping duplicate test database ${workerDatabaseName}`, {
|
|
31
|
+
logPrefix: ' ├ [db]',
|
|
32
|
+
logPrefixColor: 'cyan',
|
|
33
|
+
});
|
|
31
34
|
await client.query(`DROP DATABASE IF EXISTS ${workerDatabaseName};`);
|
|
32
35
|
}
|
|
33
36
|
}
|
|
@@ -3,15 +3,14 @@ export default function uniq(arr, toKey = undefined) {
|
|
|
3
3
|
return uniqWith(arr, toKey);
|
|
4
4
|
return uniqWith(arr, a => String(a));
|
|
5
5
|
}
|
|
6
|
-
function dreamKey(dream) {
|
|
7
|
-
return `${dream.constructor.globalName}:${dream.primaryKeyValue}`;
|
|
8
|
-
}
|
|
9
6
|
function uniqWith(arr, toKey) {
|
|
10
7
|
const map = arr.reduce((acc, val) => {
|
|
11
8
|
// Prefix with underscore to ensure that the values cannot be interpreted as integers.
|
|
12
9
|
// If they can be interpreted as integers, then the keys are ordered not by the
|
|
13
10
|
// order in which they were added, but in ascending numerical order.
|
|
14
|
-
const key = val?.isDreamInstance
|
|
11
|
+
const key = val?.isDreamInstance
|
|
12
|
+
? val.comparisonKey
|
|
13
|
+
: `_${toKey(val)}`;
|
|
15
14
|
acc[key] ||= val;
|
|
16
15
|
return acc;
|
|
17
16
|
}, {});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CompiledQuery,
|
|
1
|
+
import { CompiledQuery, Updateable } from 'kysely';
|
|
2
2
|
import { VirtualAttributeStatement } from './decorators/field-or-getter/Virtual.js';
|
|
3
3
|
import { SortableFieldConfig } from './decorators/field/sortable/Sortable.js';
|
|
4
4
|
import { ScopeStatement } from './decorators/static-method/Scope.js';
|
|
@@ -1011,7 +1011,7 @@ export default class Dream {
|
|
|
1011
1011
|
* @param type - The type of Kysely query builder instance you would like to obtain
|
|
1012
1012
|
* @returns A Kysely query. Depending on the type passed, it will return either a SelectQueryBuilder, DeleteQueryBuilder, UpdateQueryBuilder, or an InsertQueryBuilder
|
|
1013
1013
|
*/
|
|
1014
|
-
static toKysely<T extends typeof Dream, QueryType extends 'select' | 'delete' | 'update'
|
|
1014
|
+
static toKysely<T extends typeof Dream, QueryType extends 'select' | 'delete' | 'update'>(this: T, type: QueryType): QueryType extends "select" ? import("kysely").SelectQueryBuilder<InstanceType<T>["DB"], InstanceType<T>["table"] & keyof InstanceType<T>["DB"], unknown> : QueryType extends "delete" ? import("kysely").DeleteQueryBuilder<InstanceType<T>["DB"], InstanceType<T>["table"] & keyof InstanceType<T>["DB"], unknown> : QueryType extends "update" ? import("kysely").UpdateQueryBuilder<InstanceType<T>["DB"], InstanceType<T>["table"] & keyof InstanceType<T>["DB"], InstanceType<T>["table"] & keyof InstanceType<T>["DB"], unknown> : never;
|
|
1015
1015
|
/**
|
|
1016
1016
|
* Applies transaction to a new Query scoped
|
|
1017
1017
|
* to this model
|
|
@@ -1892,6 +1892,7 @@ export default class Dream {
|
|
|
1892
1892
|
* @returns A boolean
|
|
1893
1893
|
*/
|
|
1894
1894
|
equals(other: any): boolean;
|
|
1895
|
+
get comparisonKey(): string;
|
|
1895
1896
|
/**
|
|
1896
1897
|
* @internal
|
|
1897
1898
|
*
|
|
@@ -3,6 +3,7 @@ import { DbConnectionType } from '../types/db.js';
|
|
|
3
3
|
export default class DreamDbConnection {
|
|
4
4
|
static getConnection<DB>(connectionType: DbConnectionType): Kysely<DB>;
|
|
5
5
|
static dropAllConnections(): Promise<void>;
|
|
6
|
+
private static getConnectionTypeName;
|
|
6
7
|
}
|
|
7
8
|
export declare function dreamDbConnections(): {
|
|
8
9
|
[key: string]: Kysely<any>;
|
|
@@ -4,7 +4,7 @@ import Dream from '../Dream.js';
|
|
|
4
4
|
import { ColumnNamesAccountingForJoinedAssociations, LimitStatement, OffsetStatement, OrderQueryStatement, PassthroughOnClause, WhereStatement, WhereStatementForJoinedAssociation } from '../types/associations/shared.js';
|
|
5
5
|
import { DbConnectionType } from '../types/db.js';
|
|
6
6
|
import { AllDefaultScopeNames, DefaultScopeName, DreamColumnNames, DreamTableSchema, OrderDir, PassthroughColumnNames, PluckEachArgs, PrimaryKeyForFind, RelaxedJoinOnStatement, RelaxedJoinStatement, RelaxedPreloadOnStatement, RelaxedPreloadStatement, TableColumnNames, TableOrAssociationName } from '../types/dream.js';
|
|
7
|
-
import { DefaultQueryTypeOptions, ExtendQueryType, NamespacedOrBaseModelColumnTypes } from '../types/query.js';
|
|
7
|
+
import { DefaultQueryTypeOptions, ExtendQueryType, NamespacedOrBaseModelColumnTypes, QueryToKyselyDBType, QueryToKyselyTableNamesType } from '../types/query.js';
|
|
8
8
|
import { JoinedAssociation, JoinedAssociationsTypeFromAssociations, QueryTypeOptions, VariadicJoinsArgs, VariadicLeftJoinLoadArgs, VariadicLoadArgs } from '../types/variadic.js';
|
|
9
9
|
import DreamTransaction from './DreamTransaction.js';
|
|
10
10
|
export default class Query<DreamInstance extends Dream, QueryTypeOpts extends Readonly<QueryTypeOptions> = DefaultQueryTypeOptions<DreamInstance>> extends ConnectedToDB<DreamInstance> {
|
|
@@ -635,7 +635,7 @@ export default class Query<DreamInstance extends Dream, QueryTypeOpts extends Re
|
|
|
635
635
|
* @param type - the type of Kysely query builder instance you would like to obtain
|
|
636
636
|
* @returns A Kysely query. Depending on the type passed, it will return either a SelectQueryBuilder, DeleteQueryBuilder, or an UpdateQueryBuilder
|
|
637
637
|
*/
|
|
638
|
-
toKysely<QueryType extends 'select' | 'delete' | 'update', ToKyselyReturnType = QueryType extends 'select' ? SelectQueryBuilder<
|
|
638
|
+
toKysely<QueryType extends 'select' | 'delete' | 'update', DbType = QueryToKyselyDBType<typeof this>, TableNames = QueryToKyselyTableNamesType<typeof this>, ToKyselyReturnType = QueryType extends 'select' ? SelectQueryBuilder<DbType, TableNames & keyof DbType, unknown> : QueryType extends 'delete' ? DeleteQueryBuilder<DbType, TableNames & keyof DbType, unknown> : QueryType extends 'update' ? UpdateQueryBuilder<DbType, TableNames & keyof DbType, TableNames & keyof DbType, unknown> : never>(type: QueryType): ToKyselyReturnType;
|
|
639
639
|
/**
|
|
640
640
|
* Applies transaction to the Query instance
|
|
641
641
|
*
|
|
@@ -4,6 +4,7 @@ import Dream from '../Dream.js';
|
|
|
4
4
|
import { primaryKeyTypes } from '../dream/constants.js';
|
|
5
5
|
import { EncryptOptions } from '../encrypt/index.js';
|
|
6
6
|
import DreamSerializer from '../serializer/index.js';
|
|
7
|
+
import { DbConnectionType } from '../types/db.js';
|
|
7
8
|
export default class DreamApplication {
|
|
8
9
|
/**
|
|
9
10
|
* initializes a new dream application and caches it for use
|
|
@@ -78,6 +79,10 @@ export default class DreamApplication {
|
|
|
78
79
|
constructor(opts?: Partial<DreamApplicationOpts>);
|
|
79
80
|
get models(): Record<string, typeof Dream>;
|
|
80
81
|
get serializers(): Record<string, typeof DreamSerializer>;
|
|
82
|
+
dbName(connection: DbConnectionType): string;
|
|
83
|
+
dbConnectionConfig(connection: DbConnectionType): SingleDbCredential;
|
|
84
|
+
get hasReplicaConfig(): boolean;
|
|
85
|
+
get parallelDatabasesEnabled(): boolean;
|
|
81
86
|
load<RT extends 'models' | 'serializers'>(resourceType: RT, resourcePath: string, importCb: (path: string) => Promise<any>): Promise<void>;
|
|
82
87
|
plugin(cb: (app: DreamApplication) => void | Promise<void>): void;
|
|
83
88
|
set<ApplyOpt extends DreamApplicationSetOption>(applyOption: ApplyOpt, options: ApplyOpt extends 'db' ? DreamDbCredentialOptions : ApplyOpt extends 'encryption' ? DreamApplicationEncryptionOptions : ApplyOpt extends 'primaryKeyType' ? (typeof primaryKeyTypes)[number] : ApplyOpt extends 'logger' ? DreamLogger : ApplyOpt extends 'projectRoot' ? string : ApplyOpt extends 'inflections' ? () => void | Promise<void> : ApplyOpt extends 'paths' ? DreamDirectoryPaths : ApplyOpt extends 'parallelTests' ? number : never): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function areEqual(a: any, b: any): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (a: any, b: any): boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Nullable } from 'kysely'
|
|
1
2
|
import Dream from '../Dream.ts'
|
|
2
3
|
import Query from '../dream/Query.ts'
|
|
3
4
|
import { IdType, TableColumnType } from './dream.js'
|
|
@@ -125,3 +126,40 @@ export type NamespacedOrBaseModelColumnTypes<
|
|
|
125
126
|
> = Q['queryTypeOpts']['joinedAssociations']['length'] extends 0
|
|
126
127
|
? BaseModelColumnTypes<ColumnNames, DreamInstance>
|
|
127
128
|
: NamespacedColumnTypes<ColumnNames, Q, DreamInstance>
|
|
129
|
+
|
|
130
|
+
export type QueryToKyselyTableNamesType<
|
|
131
|
+
Q extends Query<any, any>,
|
|
132
|
+
DreamInstance = Q['dreamInstance'],
|
|
133
|
+
QueryTypeOpts = Q['queryTypeOpts'],
|
|
134
|
+
HasJoinedAssociations = QueryTypeOpts['joinedAssociations']['length'] extends 0 ? false : true,
|
|
135
|
+
JoinedAssociationTables = HasJoinedAssociations extends true
|
|
136
|
+
? QueryTypeOpts['joinedAssociations'][number]['table']
|
|
137
|
+
: null,
|
|
138
|
+
JoinedAssociationAliases = HasJoinedAssociations extends true
|
|
139
|
+
? QueryTypeOpts['joinedAssociations'][number]['alias']
|
|
140
|
+
: null,
|
|
141
|
+
TableNames = HasJoinedAssociations extends true
|
|
142
|
+
? DreamInstance['table'] | JoinedAssociationTables | JoinedAssociationAliases
|
|
143
|
+
: DreamInstance['table'],
|
|
144
|
+
> = TableNames
|
|
145
|
+
|
|
146
|
+
export type QueryToKyselyDBType<
|
|
147
|
+
Q extends Query<any, any>,
|
|
148
|
+
DreamInstance = Q['dreamInstance'],
|
|
149
|
+
AliasToDbMaps = QueryToKyselyAliasMap<Q>,
|
|
150
|
+
DbType = AliasToDbMaps extends null ? DreamInstance['DB'] : DreamInstance['DB'] & AliasToDbMaps,
|
|
151
|
+
> = DbType
|
|
152
|
+
|
|
153
|
+
export type QueryToKyselyAliasMap<
|
|
154
|
+
Q extends Query<any, any>,
|
|
155
|
+
DreamInstance = Q['dreamInstance'],
|
|
156
|
+
QueryTypeOpts = Q['queryTypeOpts'],
|
|
157
|
+
HasJoinedAssociations = QueryTypeOpts['joinedAssociations']['length'] extends 0 ? false : true,
|
|
158
|
+
AliasToDbMaps = HasJoinedAssociations extends true
|
|
159
|
+
? {
|
|
160
|
+
[Key in QueryTypeOpts['joinedAssociations'][number]['alias']]: Nullable<
|
|
161
|
+
DreamInstance['DB'][Extract<QueryTypeOpts['joinedAssociations'][number], { alias: Key }>['table']]
|
|
162
|
+
>
|
|
163
|
+
}
|
|
164
|
+
: null,
|
|
165
|
+
> = AliasToDbMaps
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "data:application/octet-stream;base64,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";
|
|
1
|
+
window.searchData = "data:application/octet-stream;base64,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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Benchmark | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@rvoh/dream</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@rvoh/dream</a></li><li><a href="Benchmark.html">Benchmark</a></li></ul><h1>Class Benchmark</h1></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Benchmark | @rvoh/dream</title><meta name="description" content="Documentation for @rvoh/dream"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@rvoh/dream</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../modules.html">@rvoh/dream</a></li><li><a href="Benchmark.html">Benchmark</a></li></ul><h1>Class Benchmark</h1></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/92ddec4fa0b2db7a87f2a2401635cf7a9af667da/src/helpers/benchmark.ts#L6">src/helpers/benchmark.ts:6</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="Benchmark.html#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
|
|
2
2
|
</div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="Benchmark.html#mark" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mark</span></a>
|
|
3
3
|
<a href="Benchmark.html#start" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>start</span></a>
|
|
4
|
-
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Constructors</h2></summary><section><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Benchmark" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <wbr/>Benchmark</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Benchmark.html" class="tsd-signature-type tsd-kind-class">Benchmark</a><a href="#constructor.new_Benchmark" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="Benchmark.html" class="tsd-signature-type tsd-kind-class">Benchmark</a></h4></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Methods</h2></summary><section><section class="tsd-panel tsd-member"><a id="mark" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>mark</span><a href="#mark" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="mark.mark-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">mark</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">message</span>, <span class="tsd-kind-parameter">level</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#mark.mark-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">message</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">level</span>: <span class="tsd-signature-type">BenchmarkLogLevel</span><span class="tsd-signature-symbol"> = 'log'</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/
|
|
4
|
+
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Constructors</h2></summary><section><section class="tsd-panel tsd-member"><a id="constructor" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="constructor.new_Benchmark" class="tsd-anchor"></a><span class="tsd-kind-constructor-signature">new <wbr/>Benchmark</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Benchmark.html" class="tsd-signature-type tsd-kind-class">Benchmark</a><a href="#constructor.new_Benchmark" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <a href="Benchmark.html" class="tsd-signature-type tsd-kind-class">Benchmark</a></h4></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Methods</h2></summary><section><section class="tsd-panel tsd-member"><a id="mark" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>mark</span><a href="#mark" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="mark.mark-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">mark</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">message</span>, <span class="tsd-kind-parameter">level</span><span class="tsd-signature-symbol">?</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#mark.mark-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">message</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">level</span>: <span class="tsd-signature-type">BenchmarkLogLevel</span><span class="tsd-signature-symbol"> = 'log'</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/92ddec4fa0b2db7a87f2a2401635cf7a9af667da/src/helpers/benchmark.ts#L12">src/helpers/benchmark.ts:12</a></li></ul></aside></li></ul></section><section class="tsd-panel tsd-member"><a id="start" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>start</span><a href="#start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="start.start-1" class="tsd-anchor"></a><span class="tsd-kind-call-signature">start</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><a href="#start.start-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/rvohealth/dream/blob/92ddec4fa0b2db7a87f2a2401635cf7a9af667da/src/helpers/benchmark.ts#L8">src/helpers/benchmark.ts:8</a></li></ul></aside></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#mark" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>mark</span></a><a href="#start" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-2048"></use></svg><span>start</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@rvoh/dream</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|