@rvoh/dream 1.4.0 → 1.4.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/CHANGELOG.md +100 -0
- package/dist/cjs/src/dream-app/index.js +17 -6
- package/dist/cjs/src/helpers/cli/addImportSuffix.js +17 -0
- package/dist/cjs/src/helpers/path/relativeDreamPath.js +4 -3
- package/dist/esm/src/dream-app/index.js +16 -5
- package/dist/esm/src/helpers/cli/addImportSuffix.js +14 -0
- package/dist/esm/src/helpers/path/relativeDreamPath.js +4 -3
- package/dist/types/src/dream-app/index.d.ts +6 -2
- package/dist/types/src/helpers/cli/addImportSuffix.d.ts +1 -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/CheckConstraintViolation.html +3 -3
- package/docs/classes/CliFileWriter.html +2 -2
- package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
- package/docs/classes/DataTypeColumnTypeMismatch.html +3 -3
- package/docs/classes/Decorators.html +19 -19
- package/docs/classes/Dream.html +113 -113
- package/docs/classes/DreamApp.html +5 -4
- 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/DreamSerializerBuilder.html +8 -8
- 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/NotNullViolation.html +3 -3
- package/docs/classes/ObjectSerializerBuilder.html +8 -8
- package/docs/classes/Query.html +60 -60
- package/docs/classes/Range.html +2 -2
- package/docs/classes/RecordNotFound.html +3 -3
- package/docs/classes/ValidationError.html +3 -3
- package/docs/functions/DreamSerializer.html +1 -1
- package/docs/functions/ObjectSerializer.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/cloneDeepSafe.html +1 -1
- package/docs/functions/closeAllDbConnections.html +1 -1
- package/docs/functions/compact.html +1 -1
- package/docs/functions/dreamDbConnections.html +1 -1
- package/docs/functions/dreamPath.html +1 -1
- package/docs/functions/expandStiClasses.html +1 -1
- package/docs/functions/generateDream.html +1 -1
- package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
- package/docs/functions/groupBy.html +1 -1
- package/docs/functions/hyphenize.html +1 -1
- package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
- package/docs/functions/inferSerializersFromDreamClassOrViewModelClass.html +1 -1
- package/docs/functions/intersection.html +1 -1
- package/docs/functions/isDreamSerializer.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/normalizeUnicode.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/sortObjectByKey.html +1 -1
- package/docs/functions/sortObjectByValue.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/BelongsToStatement.html +2 -2
- package/docs/interfaces/DecoratorContext.html +2 -2
- package/docs/interfaces/DreamAppInitOptions.html +2 -2
- package/docs/interfaces/DreamAppOpts.html +2 -2
- package/docs/interfaces/EncryptOptions.html +2 -2
- package/docs/interfaces/InternalAnyTypedSerializerRendersMany.html +2 -2
- package/docs/interfaces/InternalAnyTypedSerializerRendersOne.html +2 -2
- package/docs/interfaces/OpenapiDescription.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/interfaces/SerializerRendererOpts.html +2 -2
- 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/DbTypes.html +1 -1
- package/docs/types/DreamAppAllowedPackageManagersEnum.html +1 -1
- package/docs/types/DreamAssociationMetadata.html +1 -1
- package/docs/types/DreamAttributes.html +1 -1
- package/docs/types/DreamClassAssociationAndStatement.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/DreamModelSerializerType.html +1 -1
- package/docs/types/DreamOrViewModelClassSerializerKey.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/DreamSerializable.html +1 -1
- package/docs/types/DreamSerializableArray.html +1 -1
- package/docs/types/DreamSerializerKey.html +1 -1
- package/docs/types/DreamSerializers.html +1 -1
- package/docs/types/DreamVirtualColumns.html +1 -1
- package/docs/types/EncryptAlgorithm.html +1 -1
- package/docs/types/HasManyStatement.html +1 -1
- package/docs/types/HasOneStatement.html +1 -1
- package/docs/types/Hyphenized.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/OpenapiPrimitiveBaseTypes.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/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/OpenapiShorthandPrimitiveBaseTypes.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/RoundingPrecision.html +1 -1
- package/docs/types/SerializerCasing.html +1 -1
- package/docs/types/SimpleObjectSerializerType.html +1 -1
- package/docs/types/Snakeified.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/ViewModel.html +1 -1
- package/docs/types/ViewModelClass.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/DreamAppAllowedPackageManagersEnumValues.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/CHANGELOG.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
## 1.4.2
|
|
2
|
+
|
|
3
|
+
- add ability to set custom import extension, which will be used when generating new files for your application
|
|
4
|
+
|
|
5
|
+
## 1.4.1
|
|
6
|
+
|
|
7
|
+
- cache Dream app earlier in the initialization sequence
|
|
8
|
+
|
|
9
|
+
## 1.4.0
|
|
10
|
+
|
|
11
|
+
- fix `preloadFor` infinite loop when serializers have circular references
|
|
12
|
+
|
|
13
|
+
- generated STI base serializer updated to only include the single type of the particular STI child in the OpenAPI shape for that child
|
|
14
|
+
|
|
15
|
+
- change `primaryKeyValue` from a getter to a method so it can return the correct type even when `primaryKey` has been overridden on a particular Dream model
|
|
16
|
+
|
|
17
|
+
- remove `IdType`, an unnecessary abstraction that caused type inconsistencies
|
|
18
|
+
|
|
19
|
+
- explicitly handle bigint from the database as string
|
|
20
|
+
|
|
21
|
+
## 1.3.3
|
|
22
|
+
|
|
23
|
+
- make `referenceTypeString` public
|
|
24
|
+
|
|
25
|
+
## 1.3.2
|
|
26
|
+
|
|
27
|
+
- restore aliasing in preload/load queries
|
|
28
|
+
|
|
29
|
+
## 1.3.1
|
|
30
|
+
|
|
31
|
+
- throw NotNullViolation when Postgres throws a not null violation
|
|
32
|
+
|
|
33
|
+
- throw CheckViolation when Postgres throws a check violation
|
|
34
|
+
|
|
35
|
+
## 1.3.0
|
|
36
|
+
|
|
37
|
+
- sti-child generator includes check constraint instead of not-null since the column should only be not-null for that STI child (or modified by hand to accommodate more than one STI child)
|
|
38
|
+
|
|
39
|
+
- add `Dream#hasAssociation`
|
|
40
|
+
|
|
41
|
+
- fix preloading associations on other side of a polyorphic belongs-to association so that we don't set an association on a dream model that doesn't define that association
|
|
42
|
+
|
|
43
|
+
- fix preloading association on the other side of a polymorphic belongs-to since the same association name may be defined differently on different models. For example, taskable may be a Chore or a Workout, both of which have an `images` association, but `images` goes through ChoreImage on Chore and through WorkoutImage on Workout
|
|
44
|
+
|
|
45
|
+
- fix preloadFor when a rendersOne/Many renders a polymorphic belongs-to (was only preloading serializer associations for one of the polymorphically associated models)
|
|
46
|
+
|
|
47
|
+
- fix preloadFor when an explicit serializer option is provided to a rendersOne/Many
|
|
48
|
+
|
|
49
|
+
## 1.2.1
|
|
50
|
+
|
|
51
|
+
- Throw DataTypeColumnTypeMismatch when Postgres throws an error attempting to save to a column with a value that can't be cast to the column type.
|
|
52
|
+
|
|
53
|
+
## 1.2.0
|
|
54
|
+
|
|
55
|
+
- Add Dream.lookup, enabling devs to tap into the IOC provided by dream to dodge circular import issues
|
|
56
|
+
|
|
57
|
+
## 1.1.2
|
|
58
|
+
|
|
59
|
+
- CliFileWriter does not raise error if the file we are writing is not in the file system yet.
|
|
60
|
+
|
|
61
|
+
## 1.1.1
|
|
62
|
+
|
|
63
|
+
- Add fs.writeFile options as third argument to CliFileWriter.write, enabling psychic to provide custom flags when writing openapi.json files.
|
|
64
|
+
|
|
65
|
+
## 1.1.0
|
|
66
|
+
|
|
67
|
+
- Remove support for preloadThroughColumns. They were broken, fixing them would be overly complex, and the same effect can be obtained using flatten on a serializer rendersOne
|
|
68
|
+
|
|
69
|
+
## 1.0.6
|
|
70
|
+
|
|
71
|
+
- Fix joining after a through a polymorphic BelongsTo
|
|
72
|
+
association.
|
|
73
|
+
|
|
74
|
+
- Improve join implementation
|
|
75
|
+
|
|
76
|
+
- Disable leftJoinPreload preloadThroughColumns since it doesn't actually work on through associations that resolve to a source that doesn't match the association name (and we were unnecessarily including columns in the leftJoinPreload statement even when there was no `preloadThroughColumns`, thereby bloating the queries unnecessarily)
|
|
77
|
+
|
|
78
|
+
## 1.0.5
|
|
79
|
+
|
|
80
|
+
- Support HasOne/Many through polymorphic BelongsTo (trick is that it uses the associated model from the HasOne/Many to limit the BelongsTo to a single associated class / table)
|
|
81
|
+
|
|
82
|
+
- Fix HasOne/Many through source type
|
|
83
|
+
|
|
84
|
+
- sync process is now fail-safe, leveraging a utility which caches old copies of files before writing to them. If an exception is thrown at any point during the process, dream will revert all files written using the new `CliFileWriter` class
|
|
85
|
+
|
|
86
|
+
## 1.0.4
|
|
87
|
+
|
|
88
|
+
- properly exclude type from `DreamParamSafeColumnNames`
|
|
89
|
+
|
|
90
|
+
## 1.0.3
|
|
91
|
+
|
|
92
|
+
- exclude type from `DreamParamSafeColumnNames`
|
|
93
|
+
|
|
94
|
+
## 1.0.2
|
|
95
|
+
|
|
96
|
+
- stop computing foreign keys in schema builder when building schema for through associations
|
|
97
|
+
|
|
98
|
+
## 1.0.1
|
|
99
|
+
|
|
100
|
+
- [bug] fix preloading STI model via polymporhic association (polymorphic type was being altered to the STI child rather than left as the STI base)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DreamAppAllowedPackageManagersEnumValues = void 0;
|
|
3
|
+
exports.GeneratorImportStyles = exports.DreamAppAllowedPackageManagersEnumValues = void 0;
|
|
4
4
|
// after building for esm, importing pg using the following:
|
|
5
5
|
//
|
|
6
6
|
// import * as pg from 'pg'
|
|
@@ -43,6 +43,11 @@ class DreamApp {
|
|
|
43
43
|
const dreamApp = new DreamApp(opts);
|
|
44
44
|
await cb(dreamApp);
|
|
45
45
|
await dreamApp.inflections?.();
|
|
46
|
+
if (!dreamApp.serializers)
|
|
47
|
+
(0, importSerializers_js_1.setCachedSerializers)({});
|
|
48
|
+
(0, cache_js_1.cacheDreamApp)(dreamApp);
|
|
49
|
+
if (!EnvInternal_js_1.default.boolean('BYPASS_DB_CONNECTIONS_DURING_INIT'))
|
|
50
|
+
await this.setDatabaseTypeParsers();
|
|
46
51
|
await deferCb?.(dreamApp);
|
|
47
52
|
for (const plugin of dreamApp.plugins) {
|
|
48
53
|
await plugin(dreamApp);
|
|
@@ -50,11 +55,6 @@ class DreamApp {
|
|
|
50
55
|
dreamApp.validateAppBuildIntegrity({
|
|
51
56
|
bypassModelIntegrityCheck: opts.bypassModelIntegrityCheck || false,
|
|
52
57
|
});
|
|
53
|
-
if (!dreamApp.serializers)
|
|
54
|
-
(0, importSerializers_js_1.setCachedSerializers)({});
|
|
55
|
-
(0, cache_js_1.cacheDreamApp)(dreamApp);
|
|
56
|
-
if (!EnvInternal_js_1.default.boolean('BYPASS_DB_CONNECTIONS_DURING_INIT'))
|
|
57
|
-
await this.setDatabaseTypeParsers();
|
|
58
58
|
return dreamApp;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
@@ -220,6 +220,10 @@ Try setting it to something valid, like:
|
|
|
220
220
|
get packageManager() {
|
|
221
221
|
return this._packageManager;
|
|
222
222
|
}
|
|
223
|
+
_importExtension = '.js';
|
|
224
|
+
get importExtension() {
|
|
225
|
+
return this._importExtension;
|
|
226
|
+
}
|
|
223
227
|
loadedModels = false;
|
|
224
228
|
constructor(opts) {
|
|
225
229
|
if (opts?.db)
|
|
@@ -297,6 +301,9 @@ Try setting it to something valid, like:
|
|
|
297
301
|
case 'primaryKeyType':
|
|
298
302
|
this._primaryKeyType = options;
|
|
299
303
|
break;
|
|
304
|
+
case 'importExtension':
|
|
305
|
+
this._importExtension = options;
|
|
306
|
+
break;
|
|
300
307
|
case 'logger':
|
|
301
308
|
this._logger = options;
|
|
302
309
|
break;
|
|
@@ -360,3 +367,7 @@ function argToString(arg) {
|
|
|
360
367
|
return util.inspect(arg, { depth: 3 });
|
|
361
368
|
}
|
|
362
369
|
exports.DreamAppAllowedPackageManagersEnumValues = ['yarn', 'npm', 'pnpm'];
|
|
370
|
+
// GeneratorImportStyles are used by CLI generators to determine how
|
|
371
|
+
// to style import suffixes. When integrating with other apps, this
|
|
372
|
+
// suffix style can change, and may need to be configured.
|
|
373
|
+
exports.GeneratorImportStyles = ['.js', '.ts', 'none'];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = addImportSuffix;
|
|
4
|
+
const index_js_1 = require("../../dream-app/index.js");
|
|
5
|
+
function addImportSuffix(filepath) {
|
|
6
|
+
return `${filepath.replace(/(\.ts|\.js)$/, '')}${suffix()}`;
|
|
7
|
+
}
|
|
8
|
+
function suffix() {
|
|
9
|
+
switch (index_js_1.default.getOrFail().importExtension) {
|
|
10
|
+
case '.js':
|
|
11
|
+
return '.js';
|
|
12
|
+
case '.ts':
|
|
13
|
+
return '.ts';
|
|
14
|
+
case 'none':
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = default_1;
|
|
4
4
|
exports.dreamPathTypeRelativePath = dreamPathTypeRelativePath;
|
|
5
|
+
const addImportSuffix_js_1 = require("../cli/addImportSuffix.js");
|
|
5
6
|
const pascalize_js_1 = require("../pascalize.js");
|
|
6
7
|
const standardizeFullyQualifiedModelName_js_1 = require("../standardizeFullyQualifiedModelName.js");
|
|
7
8
|
const dreamPath_js_1 = require("./dreamPath.js");
|
|
@@ -28,11 +29,11 @@ function default_1(originDreamPathType, destinationDreamPathType, fullyQualified
|
|
|
28
29
|
case 'db':
|
|
29
30
|
return destinationPath;
|
|
30
31
|
case 'factories':
|
|
31
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}Factory.js
|
|
32
|
+
return (0, addImportSuffix_js_1.default)(`${destinationPath}${fullyQualifiedDestinationModelName}Factory.js`);
|
|
32
33
|
case 'serializers':
|
|
33
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}Serializer.js
|
|
34
|
+
return (0, addImportSuffix_js_1.default)(`${destinationPath}${fullyQualifiedDestinationModelName}Serializer.js`);
|
|
34
35
|
default:
|
|
35
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}.js
|
|
36
|
+
return (0, addImportSuffix_js_1.default)(`${destinationPath}${fullyQualifiedDestinationModelName}.js`);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
function dreamPathTypeRelativePath(originDreamPathType, destinationDreamPathType) {
|
|
@@ -40,6 +40,11 @@ export default class DreamApp {
|
|
|
40
40
|
const dreamApp = new DreamApp(opts);
|
|
41
41
|
await cb(dreamApp);
|
|
42
42
|
await dreamApp.inflections?.();
|
|
43
|
+
if (!dreamApp.serializers)
|
|
44
|
+
setCachedSerializers({});
|
|
45
|
+
cacheDreamApp(dreamApp);
|
|
46
|
+
if (!EnvInternal.boolean('BYPASS_DB_CONNECTIONS_DURING_INIT'))
|
|
47
|
+
await this.setDatabaseTypeParsers();
|
|
43
48
|
await deferCb?.(dreamApp);
|
|
44
49
|
for (const plugin of dreamApp.plugins) {
|
|
45
50
|
await plugin(dreamApp);
|
|
@@ -47,11 +52,6 @@ export default class DreamApp {
|
|
|
47
52
|
dreamApp.validateAppBuildIntegrity({
|
|
48
53
|
bypassModelIntegrityCheck: opts.bypassModelIntegrityCheck || false,
|
|
49
54
|
});
|
|
50
|
-
if (!dreamApp.serializers)
|
|
51
|
-
setCachedSerializers({});
|
|
52
|
-
cacheDreamApp(dreamApp);
|
|
53
|
-
if (!EnvInternal.boolean('BYPASS_DB_CONNECTIONS_DURING_INIT'))
|
|
54
|
-
await this.setDatabaseTypeParsers();
|
|
55
55
|
return dreamApp;
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -217,6 +217,10 @@ Try setting it to something valid, like:
|
|
|
217
217
|
get packageManager() {
|
|
218
218
|
return this._packageManager;
|
|
219
219
|
}
|
|
220
|
+
_importExtension = '.js';
|
|
221
|
+
get importExtension() {
|
|
222
|
+
return this._importExtension;
|
|
223
|
+
}
|
|
220
224
|
loadedModels = false;
|
|
221
225
|
constructor(opts) {
|
|
222
226
|
if (opts?.db)
|
|
@@ -294,6 +298,9 @@ Try setting it to something valid, like:
|
|
|
294
298
|
case 'primaryKeyType':
|
|
295
299
|
this._primaryKeyType = options;
|
|
296
300
|
break;
|
|
301
|
+
case 'importExtension':
|
|
302
|
+
this._importExtension = options;
|
|
303
|
+
break;
|
|
297
304
|
case 'logger':
|
|
298
305
|
this._logger = options;
|
|
299
306
|
break;
|
|
@@ -356,3 +363,7 @@ function argToString(arg) {
|
|
|
356
363
|
return util.inspect(arg, { depth: 3 });
|
|
357
364
|
}
|
|
358
365
|
export const DreamAppAllowedPackageManagersEnumValues = ['yarn', 'npm', 'pnpm'];
|
|
366
|
+
// GeneratorImportStyles are used by CLI generators to determine how
|
|
367
|
+
// to style import suffixes. When integrating with other apps, this
|
|
368
|
+
// suffix style can change, and may need to be configured.
|
|
369
|
+
export const GeneratorImportStyles = ['.js', '.ts', 'none'];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import DreamApp from '../../dream-app/index.js';
|
|
2
|
+
export default function addImportSuffix(filepath) {
|
|
3
|
+
return `${filepath.replace(/(\.ts|\.js)$/, '')}${suffix()}`;
|
|
4
|
+
}
|
|
5
|
+
function suffix() {
|
|
6
|
+
switch (DreamApp.getOrFail().importExtension) {
|
|
7
|
+
case '.js':
|
|
8
|
+
return '.js';
|
|
9
|
+
case '.ts':
|
|
10
|
+
return '.ts';
|
|
11
|
+
case 'none':
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import addImportSuffix from '../cli/addImportSuffix.js';
|
|
1
2
|
import pascalize from '../pascalize.js';
|
|
2
3
|
import standardizeFullyQualifiedModelName from '../standardizeFullyQualifiedModelName.js';
|
|
3
4
|
import dreamPath from './dreamPath.js';
|
|
@@ -24,11 +25,11 @@ export default function (originDreamPathType, destinationDreamPathType, fullyQua
|
|
|
24
25
|
case 'db':
|
|
25
26
|
return destinationPath;
|
|
26
27
|
case 'factories':
|
|
27
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}Factory.js
|
|
28
|
+
return addImportSuffix(`${destinationPath}${fullyQualifiedDestinationModelName}Factory.js`);
|
|
28
29
|
case 'serializers':
|
|
29
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}Serializer.js
|
|
30
|
+
return addImportSuffix(`${destinationPath}${fullyQualifiedDestinationModelName}Serializer.js`);
|
|
30
31
|
default:
|
|
31
|
-
return `${destinationPath}${fullyQualifiedDestinationModelName}.js
|
|
32
|
+
return addImportSuffix(`${destinationPath}${fullyQualifiedDestinationModelName}.js`);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
export function dreamPathTypeRelativePath(originDreamPathType, destinationDreamPathType) {
|
|
@@ -82,6 +82,8 @@ export default class DreamApp {
|
|
|
82
82
|
get plugins(): ((app: DreamApp) => void | Promise<void>)[];
|
|
83
83
|
private _packageManager;
|
|
84
84
|
get packageManager(): "yarn" | "npm" | "pnpm";
|
|
85
|
+
private _importExtension;
|
|
86
|
+
get importExtension(): ".js" | ".ts" | "none";
|
|
85
87
|
protected loadedModels: boolean;
|
|
86
88
|
constructor(opts?: Partial<DreamAppOpts>);
|
|
87
89
|
get models(): Record<string, typeof Dream>;
|
|
@@ -92,7 +94,7 @@ export default class DreamApp {
|
|
|
92
94
|
get parallelDatabasesEnabled(): boolean;
|
|
93
95
|
load<RT extends 'models' | 'serializers'>(resourceType: RT, resourcePath: string, importCb: (path: string) => Promise<any>): Promise<void>;
|
|
94
96
|
plugin(cb: (app: DreamApp) => void | Promise<void>): void;
|
|
95
|
-
set<ApplyOpt extends DreamAppSetOption>(applyOption: ApplyOpt, options: ApplyOpt extends 'db' ? DreamDbCredentialOptions : ApplyOpt extends 'encryption' ? DreamAppEncryptionOptions : ApplyOpt extends 'primaryKeyType' ? (typeof primaryKeyTypes)[number] : ApplyOpt extends 'logger' ? DreamLogger : ApplyOpt extends 'projectRoot' ? string : ApplyOpt extends 'inflections' ? () => void | Promise<void> : ApplyOpt extends 'packageManager' ? DreamAppAllowedPackageManagersEnum : ApplyOpt extends 'paths' ? DreamDirectoryPaths : ApplyOpt extends 'parallelTests' ? number : ApplyOpt extends 'unicodeNormalization' ? UnicodeNormalizationForm : ApplyOpt extends 'paginationPageSize' ? number : never): void;
|
|
97
|
+
set<ApplyOpt extends DreamAppSetOption>(applyOption: ApplyOpt, options: ApplyOpt extends 'db' ? DreamDbCredentialOptions : ApplyOpt extends 'encryption' ? DreamAppEncryptionOptions : ApplyOpt extends 'primaryKeyType' ? (typeof primaryKeyTypes)[number] : ApplyOpt extends 'importExtension' ? GeneratorImportStyle : ApplyOpt extends 'logger' ? DreamLogger : ApplyOpt extends 'projectRoot' ? string : ApplyOpt extends 'inflections' ? () => void | Promise<void> : ApplyOpt extends 'packageManager' ? DreamAppAllowedPackageManagersEnum : ApplyOpt extends 'paths' ? DreamDirectoryPaths : ApplyOpt extends 'parallelTests' ? number : ApplyOpt extends 'unicodeNormalization' ? UnicodeNormalizationForm : ApplyOpt extends 'paginationPageSize' ? number : never): void;
|
|
96
98
|
on<T extends DreamHookEventType>(hookEventType: T, cb: T extends 'db:log' ? (event: KyselyLogEvent) => void : T extends 'repl:start' ? (context: Context) => void | Promise<void> : never): void;
|
|
97
99
|
}
|
|
98
100
|
export type DreamHookEventType = 'db:log' | 'repl:start';
|
|
@@ -105,7 +107,7 @@ export interface DreamAppOpts {
|
|
|
105
107
|
serializerCasing?: DreamSerializerCasing;
|
|
106
108
|
parallelTests: number | undefined;
|
|
107
109
|
}
|
|
108
|
-
export type DreamAppSetOption = 'db' | 'encryption' | 'inflections' | 'logger' | 'paths' | 'primaryKeyType' | 'projectRoot' | 'serializerCasing' | 'parallelTests' | 'unicodeNormalization' | 'paginationPageSize' | 'packageManager';
|
|
110
|
+
export type DreamAppSetOption = 'db' | 'encryption' | 'inflections' | 'importExtension' | 'logger' | 'paths' | 'primaryKeyType' | 'projectRoot' | 'serializerCasing' | 'parallelTests' | 'unicodeNormalization' | 'paginationPageSize' | 'packageManager';
|
|
109
111
|
export interface DreamDirectoryPaths {
|
|
110
112
|
models?: string;
|
|
111
113
|
serializers?: string;
|
|
@@ -158,4 +160,6 @@ export interface KyselyLogEvent {
|
|
|
158
160
|
}
|
|
159
161
|
export declare const DreamAppAllowedPackageManagersEnumValues: readonly ["yarn", "npm", "pnpm"];
|
|
160
162
|
export type DreamAppAllowedPackageManagersEnum = (typeof DreamAppAllowedPackageManagersEnumValues)[number];
|
|
163
|
+
export declare const GeneratorImportStyles: readonly [".js", ".ts", "none"];
|
|
164
|
+
export type GeneratorImportStyle = (typeof GeneratorImportStyles)[number];
|
|
161
165
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function addImportSuffix(filepath: string): string;
|
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/8f98e5a11ce0d5195c2c38eeefff613db9648b53/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/8f98e5a11ce0d5195c2c38eeefff613db9648b53/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/8f98e5a11ce0d5195c2c38eeefff613db9648b53/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>
|