@rvoh/dream 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/cjs/src/db/errors.js +5 -1
  2. package/dist/cjs/src/dream/QueryDriver/Kysely.js +26 -12
  3. package/dist/cjs/src/errors/db/DataTypeColumnTypeMismatch.js +19 -0
  4. package/dist/cjs/src/helpers/sqlAttributes.js +7 -1
  5. package/dist/cjs/src/index.js +4 -2
  6. package/dist/esm/src/db/errors.js +5 -1
  7. package/dist/esm/src/dream/QueryDriver/Kysely.js +26 -12
  8. package/dist/esm/src/errors/db/DataTypeColumnTypeMismatch.js +16 -0
  9. package/dist/esm/src/helpers/sqlAttributes.js +7 -1
  10. package/dist/esm/src/index.js +1 -0
  11. package/dist/types/src/db/errors.d.ts +3 -1
  12. package/dist/types/src/errors/db/DataTypeColumnTypeMismatch.d.ts +10 -0
  13. package/dist/types/src/index.d.ts +1 -0
  14. package/docs/assets/navigation.js +1 -1
  15. package/docs/assets/search.js +1 -1
  16. package/docs/classes/Benchmark.html +2 -2
  17. package/docs/classes/CalendarDate.html +2 -2
  18. package/docs/classes/CliFileWriter.html +2 -2
  19. package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
  20. package/docs/classes/DataTypeColumnTypeMismatch.html +14 -0
  21. package/docs/classes/Decorators.html +19 -19
  22. package/docs/classes/Dream.html +137 -137
  23. package/docs/classes/DreamApp.html +4 -4
  24. package/docs/classes/DreamBin.html +2 -2
  25. package/docs/classes/DreamCLI.html +4 -4
  26. package/docs/classes/DreamImporter.html +2 -2
  27. package/docs/classes/DreamLogos.html +2 -2
  28. package/docs/classes/DreamMigrationHelpers.html +7 -7
  29. package/docs/classes/DreamSerializerBuilder.html +8 -8
  30. package/docs/classes/DreamTransaction.html +2 -2
  31. package/docs/classes/Encrypt.html +2 -2
  32. package/docs/classes/Env.html +2 -2
  33. package/docs/classes/GlobalNameNotSet.html +3 -3
  34. package/docs/classes/NonLoadedAssociation.html +3 -3
  35. package/docs/classes/ObjectSerializerBuilder.html +8 -8
  36. package/docs/classes/Query.html +60 -60
  37. package/docs/classes/Range.html +2 -2
  38. package/docs/classes/RecordNotFound.html +3 -3
  39. package/docs/classes/ValidationError.html +3 -3
  40. package/docs/functions/DreamSerializer.html +1 -1
  41. package/docs/functions/ObjectSerializer.html +1 -1
  42. package/docs/functions/ReplicaSafe.html +1 -1
  43. package/docs/functions/STI.html +1 -1
  44. package/docs/functions/SoftDelete.html +1 -1
  45. package/docs/functions/camelize.html +1 -1
  46. package/docs/functions/capitalize.html +1 -1
  47. package/docs/functions/cloneDeepSafe.html +1 -1
  48. package/docs/functions/closeAllDbConnections.html +1 -1
  49. package/docs/functions/compact.html +1 -1
  50. package/docs/functions/dreamDbConnections.html +1 -1
  51. package/docs/functions/dreamPath.html +1 -1
  52. package/docs/functions/expandStiClasses.html +1 -1
  53. package/docs/functions/generateDream.html +1 -1
  54. package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
  55. package/docs/functions/groupBy.html +1 -1
  56. package/docs/functions/hyphenize.html +1 -1
  57. package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
  58. package/docs/functions/inferSerializersFromDreamClassOrViewModelClass.html +1 -1
  59. package/docs/functions/intersection.html +1 -1
  60. package/docs/functions/isDreamSerializer.html +1 -1
  61. package/docs/functions/isEmpty.html +1 -1
  62. package/docs/functions/loadRepl.html +1 -1
  63. package/docs/functions/lookupClassByGlobalName.html +1 -1
  64. package/docs/functions/normalizeUnicode.html +1 -1
  65. package/docs/functions/pascalize.html +1 -1
  66. package/docs/functions/pgErrorType.html +1 -1
  67. package/docs/functions/range-1.html +1 -1
  68. package/docs/functions/relativeDreamPath.html +1 -1
  69. package/docs/functions/round.html +1 -1
  70. package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
  71. package/docs/functions/sharedPathPrefix.html +1 -1
  72. package/docs/functions/snakeify.html +1 -1
  73. package/docs/functions/sort.html +1 -1
  74. package/docs/functions/sortBy.html +1 -1
  75. package/docs/functions/sortObjectByKey.html +1 -1
  76. package/docs/functions/sortObjectByValue.html +1 -1
  77. package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
  78. package/docs/functions/uncapitalize.html +1 -1
  79. package/docs/functions/uniq.html +1 -1
  80. package/docs/functions/untypedDb.html +1 -1
  81. package/docs/functions/validateColumn.html +1 -1
  82. package/docs/functions/validateTable.html +1 -1
  83. package/docs/interfaces/BelongsToStatement.html +2 -2
  84. package/docs/interfaces/DecoratorContext.html +2 -2
  85. package/docs/interfaces/DreamAppInitOptions.html +2 -2
  86. package/docs/interfaces/DreamAppOpts.html +2 -2
  87. package/docs/interfaces/EncryptOptions.html +2 -2
  88. package/docs/interfaces/InternalAnyTypedSerializerRendersMany.html +2 -2
  89. package/docs/interfaces/InternalAnyTypedSerializerRendersOne.html +2 -2
  90. package/docs/interfaces/OpenapiDescription.html +2 -2
  91. package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
  92. package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
  93. package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
  94. package/docs/interfaces/SerializerRendererOpts.html +2 -2
  95. package/docs/modules.html +1 -0
  96. package/docs/types/Camelized.html +1 -1
  97. package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
  98. package/docs/types/DateTime.html +1 -1
  99. package/docs/types/DbConnectionType.html +1 -1
  100. package/docs/types/DbTypes.html +1 -1
  101. package/docs/types/DreamAppAllowedPackageManagersEnum.html +1 -1
  102. package/docs/types/DreamAssociationMetadata.html +1 -1
  103. package/docs/types/DreamAttributes.html +1 -1
  104. package/docs/types/DreamClassAssociationAndStatement.html +1 -1
  105. package/docs/types/DreamClassColumn.html +1 -1
  106. package/docs/types/DreamColumn.html +1 -1
  107. package/docs/types/DreamColumnNames.html +1 -1
  108. package/docs/types/DreamLogLevel.html +1 -1
  109. package/docs/types/DreamLogger.html +1 -1
  110. package/docs/types/DreamModelSerializerType.html +1 -1
  111. package/docs/types/DreamOrViewModelClassSerializerKey.html +1 -1
  112. package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
  113. package/docs/types/DreamParamSafeAttributes.html +1 -1
  114. package/docs/types/DreamParamSafeColumnNames.html +1 -1
  115. package/docs/types/DreamSerializable.html +1 -1
  116. package/docs/types/DreamSerializableArray.html +1 -1
  117. package/docs/types/DreamSerializerKey.html +1 -1
  118. package/docs/types/DreamSerializers.html +1 -1
  119. package/docs/types/DreamTableSchema.html +1 -1
  120. package/docs/types/DreamVirtualColumns.html +1 -1
  121. package/docs/types/EncryptAlgorithm.html +1 -1
  122. package/docs/types/HasManyStatement.html +1 -1
  123. package/docs/types/HasOneStatement.html +1 -1
  124. package/docs/types/Hyphenized.html +1 -1
  125. package/docs/types/IdType.html +1 -1
  126. package/docs/types/OpenapiAllTypes.html +1 -1
  127. package/docs/types/OpenapiFormats.html +1 -1
  128. package/docs/types/OpenapiNumberFormats.html +1 -1
  129. package/docs/types/OpenapiPrimitiveBaseTypes.html +1 -1
  130. package/docs/types/OpenapiPrimitiveTypes.html +1 -1
  131. package/docs/types/OpenapiSchemaArray.html +1 -1
  132. package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
  133. package/docs/types/OpenapiSchemaBase.html +1 -1
  134. package/docs/types/OpenapiSchemaBody.html +1 -1
  135. package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
  136. package/docs/types/OpenapiSchemaCommonFields.html +1 -1
  137. package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
  138. package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
  139. package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
  140. package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
  141. package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
  142. package/docs/types/OpenapiSchemaInteger.html +1 -1
  143. package/docs/types/OpenapiSchemaNull.html +1 -1
  144. package/docs/types/OpenapiSchemaNumber.html +1 -1
  145. package/docs/types/OpenapiSchemaObject.html +1 -1
  146. package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
  147. package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
  148. package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
  149. package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  150. package/docs/types/OpenapiSchemaObjectBase.html +1 -1
  151. package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
  152. package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
  153. package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
  154. package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
  155. package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
  156. package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
  157. package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
  158. package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
  159. package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
  160. package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
  161. package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  162. package/docs/types/OpenapiSchemaString.html +1 -1
  163. package/docs/types/OpenapiShorthandAllTypes.html +1 -1
  164. package/docs/types/OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  165. package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
  166. package/docs/types/OpenapiTypeField.html +1 -1
  167. package/docs/types/Pascalized.html +1 -1
  168. package/docs/types/PrimaryKeyType.html +1 -1
  169. package/docs/types/RoundingPrecision.html +1 -1
  170. package/docs/types/SerializerCasing.html +1 -1
  171. package/docs/types/SimpleObjectSerializerType.html +1 -1
  172. package/docs/types/Snakeified.html +1 -1
  173. package/docs/types/Timestamp.html +1 -1
  174. package/docs/types/UpdateableAssociationProperties.html +1 -1
  175. package/docs/types/UpdateableProperties.html +1 -1
  176. package/docs/types/ValidationType.html +1 -1
  177. package/docs/types/ViewModel.html +1 -1
  178. package/docs/types/ViewModelClass.html +1 -1
  179. package/docs/types/WhereStatementForDream.html +1 -1
  180. package/docs/types/WhereStatementForDreamClass.html +1 -1
  181. package/docs/variables/DateTime-1.html +1 -1
  182. package/docs/variables/DreamAppAllowedPackageManagersEnumValues.html +1 -1
  183. package/docs/variables/DreamConst.html +1 -1
  184. package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
  185. package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
  186. package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
  187. package/docs/variables/ops.html +1 -1
  188. package/docs/variables/primaryKeyTypes.html +1 -1
  189. package/package.json +2 -2
  190. package/CHANGELOG.md +0 -48
@@ -11,8 +11,12 @@ exports.pgErrorType = pgErrorType;
11
11
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
12
  // @ts-ignore
13
13
  const pg_1 = require("pg");
14
+ const UNIQUE_CONSTRAINT_VIOLATION = 'UNIQUE_CONSTRAINT_VIOLATION';
15
+ const INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
14
16
  exports.PG_ERRORS = {
15
- 23505: 'UNIQUE_CONSTRAINT_VIOLATION',
17
+ '23505': UNIQUE_CONSTRAINT_VIOLATION,
18
+ '22P02': INVALID_INPUT_SYNTAX,
19
+ '22007': INVALID_INPUT_SYNTAX,
16
20
  };
17
21
  function pgErrorFromCode(code) {
18
22
  return exports.PG_ERRORS[code] || null;
@@ -5,6 +5,7 @@ const pluralize_esm_1 = require("pluralize-esm");
5
5
  const sync_js_1 = require("../../bin/helpers/sync.js");
6
6
  const CliFileWriter_js_1 = require("../../cli/CliFileWriter.js");
7
7
  const index_js_1 = require("../../cli/index.js");
8
+ const errors_js_1 = require("../../db/errors.js");
8
9
  const index_js_2 = require("../../db/index.js");
9
10
  const associationToGetterSetterProp_js_1 = require("../../decorators/field/association/associationToGetterSetterProp.js");
10
11
  const PackageManager_js_1 = require("../../dream-app/helpers/PackageManager.js");
@@ -19,6 +20,7 @@ const MissingThroughAssociationSource_js_1 = require("../../errors/associations/
19
20
  const ThroughAssociationConditionsIncompatibleWithThroughAssociationSource_js_1 = require("../../errors/associations/ThroughAssociationConditionsIncompatibleWithThroughAssociationSource.js");
20
21
  const CannotNegateSimilarityClause_js_1 = require("../../errors/CannotNegateSimilarityClause.js");
21
22
  const CannotPassUndefinedAsAValueToAWhereClause_js_1 = require("../../errors/CannotPassUndefinedAsAValueToAWhereClause.js");
23
+ const DataTypeColumnTypeMismatch_js_1 = require("../../errors/db/DataTypeColumnTypeMismatch.js");
22
24
  const UnexpectedUndefined_js_1 = require("../../errors/UnexpectedUndefined.js");
23
25
  const CalendarDate_js_1 = require("../../helpers/CalendarDate.js");
24
26
  const camelize_js_1 = require("../../helpers/camelize.js");
@@ -415,19 +417,31 @@ class KyselyQueryDriver extends Base_js_1.default {
415
417
  static async saveDream(dream, txn = null) {
416
418
  const db = txn?.kyselyTransaction ?? (0, index_js_2.default)('primary');
417
419
  const sqlifiedAttributes = (0, sqlAttributes_js_1.default)(dream);
418
- if (dream.isPersisted) {
419
- const query = db
420
- .updateTable(dream.table)
421
- .set(sqlifiedAttributes)
422
- .where((0, namespaceColumn_js_1.default)(dream.primaryKey, dream.table), '=', dream.primaryKeyValue);
423
- return await (0, executeDatabaseQuery_js_1.default)(query.returning([...dream.columns()]), 'executeTakeFirstOrThrow');
420
+ try {
421
+ if (dream.isPersisted) {
422
+ const query = db
423
+ .updateTable(dream.table)
424
+ .set(sqlifiedAttributes)
425
+ .where((0, namespaceColumn_js_1.default)(dream.primaryKey, dream.table), '=', dream.primaryKeyValue);
426
+ return await (0, executeDatabaseQuery_js_1.default)(query.returning([...dream.columns()]), 'executeTakeFirstOrThrow');
427
+ }
428
+ else {
429
+ const query = db
430
+ .insertInto(dream.table)
431
+ .values(sqlifiedAttributes)
432
+ .returning([...dream.columns()]);
433
+ return await (0, executeDatabaseQuery_js_1.default)(query, 'executeTakeFirstOrThrow');
434
+ }
424
435
  }
425
- else {
426
- const query = db
427
- .insertInto(dream.table)
428
- .values(sqlifiedAttributes)
429
- .returning([...dream.columns()]);
430
- return await (0, executeDatabaseQuery_js_1.default)(query, 'executeTakeFirstOrThrow');
436
+ catch (error) {
437
+ switch ((0, errors_js_1.pgErrorType)(error)) {
438
+ case 'INVALID_INPUT_SYNTAX':
439
+ throw new DataTypeColumnTypeMismatch_js_1.default({
440
+ dream,
441
+ error: error instanceof Error ? error : new Error('database column type error'),
442
+ });
443
+ }
444
+ throw error;
431
445
  }
432
446
  }
433
447
  dbConnectionType(sqlCommandType) {
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class DataTypeColumnTypeMismatch extends Error {
4
+ dream;
5
+ error;
6
+ constructor({ dream, error }) {
7
+ super();
8
+ this.dream = dream;
9
+ this.error = error;
10
+ }
11
+ get message() {
12
+ return `\
13
+ Failed to save ${this.dream.sanitizedConstructorName}:
14
+
15
+ ${this.error.message}
16
+ `;
17
+ }
18
+ }
19
+ exports.default = DataTypeColumnTypeMismatch;
@@ -40,6 +40,12 @@ function sqlAttributes(dream) {
40
40
  return result;
41
41
  }, {});
42
42
  }
43
+ /**
44
+ * Convert datetimes to UTC
45
+ */
43
46
  function valueToDatetime(val) {
44
- return typeof val === 'string' ? DateTime_js_1.DateTime.fromISO(val, { zone: 'UTC' }) : val;
47
+ if (typeof val !== 'string')
48
+ return val;
49
+ const datetime = DateTime_js_1.DateTime.fromISO(val, { zone: 'UTC' });
50
+ return datetime.isValid ? datetime : val;
45
51
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.relativeDreamPath = exports.dreamPath = exports.pascalize = exports.normalizeUnicode = exports.loadRepl = exports.isEmpty = exports.intersection = exports.hyphenize = exports.groupBy = exports.globalClassNameFromFullyQualifiedModelName = exports.Env = exports.DreamLogos = exports.DateTime = exports.compact = exports.cloneDeepSafe = exports.generateDream = exports.capitalize = exports.camelize = exports.CalendarDate = exports.Benchmark = exports.ValidationError = exports.RecordNotFound = exports.GlobalNameNotSet = exports.CreateOrFindByFailedToCreateAndFind = exports.NonLoadedAssociation = exports.Encrypt = exports.Query = exports.DreamTransaction = exports.openapiShorthandPrimitiveTypes = exports.openapiPrimitiveTypes = exports.DreamConst = exports.Dream = exports.DreamAppAllowedPackageManagersEnumValues = exports.DreamApp = exports.lookupClassByGlobalName = exports.DreamImporter = exports.Decorators = exports.STI = exports.SoftDelete = exports.ReplicaSafe = exports.validateTable = exports.validateColumn = exports.DreamMigrationHelpers = exports.untypedDb = exports.pgErrorType = exports.dreamDbConnections = exports.closeAllDbConnections = exports.DreamCLI = exports.CliFileWriter = exports.DreamBin = void 0;
4
- exports.ObjectSerializerBuilder = exports.DreamSerializerBuilder = exports.ObjectSerializer = exports.DreamSerializer = exports.serializerNameFromFullyQualifiedModelName = exports.isDreamSerializer = exports.inferSerializersFromDreamClassOrViewModelClass = exports.inferSerializerFromDreamOrViewModel = exports.ops = exports.uniq = exports.uncapitalize = exports.expandStiClasses = exports.standardizeFullyQualifiedModelName = exports.sortObjectByValue = exports.sortObjectByKey = exports.sortBy = exports.sort = exports.snakeify = exports.round = exports.range = exports.Range = exports.sharedPathPrefix = void 0;
3
+ exports.dreamPath = exports.pascalize = exports.normalizeUnicode = exports.loadRepl = exports.isEmpty = exports.intersection = exports.hyphenize = exports.groupBy = exports.globalClassNameFromFullyQualifiedModelName = exports.Env = exports.DreamLogos = exports.DateTime = exports.compact = exports.cloneDeepSafe = exports.generateDream = exports.capitalize = exports.camelize = exports.CalendarDate = exports.Benchmark = exports.ValidationError = exports.RecordNotFound = exports.GlobalNameNotSet = exports.DataTypeColumnTypeMismatch = exports.CreateOrFindByFailedToCreateAndFind = exports.NonLoadedAssociation = exports.Encrypt = exports.Query = exports.DreamTransaction = exports.openapiShorthandPrimitiveTypes = exports.openapiPrimitiveTypes = exports.DreamConst = exports.Dream = exports.DreamAppAllowedPackageManagersEnumValues = exports.DreamApp = exports.lookupClassByGlobalName = exports.DreamImporter = exports.Decorators = exports.STI = exports.SoftDelete = exports.ReplicaSafe = exports.validateTable = exports.validateColumn = exports.DreamMigrationHelpers = exports.untypedDb = exports.pgErrorType = exports.dreamDbConnections = exports.closeAllDbConnections = exports.DreamCLI = exports.CliFileWriter = exports.DreamBin = void 0;
4
+ exports.ObjectSerializerBuilder = exports.DreamSerializerBuilder = exports.ObjectSerializer = exports.DreamSerializer = exports.serializerNameFromFullyQualifiedModelName = exports.isDreamSerializer = exports.inferSerializersFromDreamClassOrViewModelClass = exports.inferSerializerFromDreamOrViewModel = exports.ops = exports.uniq = exports.uncapitalize = exports.expandStiClasses = exports.standardizeFullyQualifiedModelName = exports.sortObjectByValue = exports.sortObjectByKey = exports.sortBy = exports.sort = exports.snakeify = exports.round = exports.range = exports.Range = exports.sharedPathPrefix = exports.relativeDreamPath = void 0;
5
5
  var index_js_1 = require("./bin/index.js");
6
6
  Object.defineProperty(exports, "DreamBin", { enumerable: true, get: function () { return index_js_1.default; } });
7
7
  var CliFileWriter_js_1 = require("./cli/CliFileWriter.js");
@@ -52,6 +52,8 @@ var NonLoadedAssociation_js_1 = require("./errors/associations/NonLoadedAssociat
52
52
  Object.defineProperty(exports, "NonLoadedAssociation", { enumerable: true, get: function () { return NonLoadedAssociation_js_1.default; } });
53
53
  var CreateOrFindByFailedToCreateAndFind_js_1 = require("./errors/CreateOrFindByFailedToCreateAndFind.js");
54
54
  Object.defineProperty(exports, "CreateOrFindByFailedToCreateAndFind", { enumerable: true, get: function () { return CreateOrFindByFailedToCreateAndFind_js_1.default; } });
55
+ var DataTypeColumnTypeMismatch_js_1 = require("./errors/db/DataTypeColumnTypeMismatch.js");
56
+ Object.defineProperty(exports, "DataTypeColumnTypeMismatch", { enumerable: true, get: function () { return DataTypeColumnTypeMismatch_js_1.default; } });
55
57
  var GlobalNameNotSet_js_1 = require("./errors/dream-app/GlobalNameNotSet.js");
56
58
  Object.defineProperty(exports, "GlobalNameNotSet", { enumerable: true, get: function () { return GlobalNameNotSet_js_1.default; } });
57
59
  var RecordNotFound_js_1 = require("./errors/RecordNotFound.js");
@@ -7,8 +7,12 @@
7
7
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
8
  // @ts-ignore
9
9
  import pg from 'pg';
10
+ const UNIQUE_CONSTRAINT_VIOLATION = 'UNIQUE_CONSTRAINT_VIOLATION';
11
+ const INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
10
12
  export const PG_ERRORS = {
11
- 23505: 'UNIQUE_CONSTRAINT_VIOLATION',
13
+ '23505': UNIQUE_CONSTRAINT_VIOLATION,
14
+ '22P02': INVALID_INPUT_SYNTAX,
15
+ '22007': INVALID_INPUT_SYNTAX,
12
16
  };
13
17
  function pgErrorFromCode(code) {
14
18
  return PG_ERRORS[code] || null;
@@ -3,6 +3,7 @@ import pluralize from 'pluralize-esm';
3
3
  import writeSyncFile from '../../bin/helpers/sync.js';
4
4
  import { CliFileWriter } from '../../cli/CliFileWriter.js';
5
5
  import DreamCLI from '../../cli/index.js';
6
+ import { pgErrorType } from '../../db/errors.js';
6
7
  import _db from '../../db/index.js';
7
8
  import associationToGetterSetterProp from '../../decorators/field/association/associationToGetterSetterProp.js';
8
9
  import PackageManager from '../../dream-app/helpers/PackageManager.js';
@@ -17,6 +18,7 @@ import MissingThroughAssociationSource from '../../errors/associations/MissingTh
17
18
  import ThroughAssociationConditionsIncompatibleWithThroughAssociationSource from '../../errors/associations/ThroughAssociationConditionsIncompatibleWithThroughAssociationSource.js';
18
19
  import CannotNegateSimilarityClause from '../../errors/CannotNegateSimilarityClause.js';
19
20
  import CannotPassUndefinedAsAValueToAWhereClause from '../../errors/CannotPassUndefinedAsAValueToAWhereClause.js';
21
+ import DataTypeColumnTypeMismatch from '../../errors/db/DataTypeColumnTypeMismatch.js';
20
22
  import UnexpectedUndefined from '../../errors/UnexpectedUndefined.js';
21
23
  import CalendarDate from '../../helpers/CalendarDate.js';
22
24
  import camelize from '../../helpers/camelize.js';
@@ -413,19 +415,31 @@ export default class KyselyQueryDriver extends QueryDriverBase {
413
415
  static async saveDream(dream, txn = null) {
414
416
  const db = txn?.kyselyTransaction ?? _db('primary');
415
417
  const sqlifiedAttributes = sqlAttributes(dream);
416
- if (dream.isPersisted) {
417
- const query = db
418
- .updateTable(dream.table)
419
- .set(sqlifiedAttributes)
420
- .where(namespaceColumn(dream.primaryKey, dream.table), '=', dream.primaryKeyValue);
421
- return await executeDatabaseQuery(query.returning([...dream.columns()]), 'executeTakeFirstOrThrow');
418
+ try {
419
+ if (dream.isPersisted) {
420
+ const query = db
421
+ .updateTable(dream.table)
422
+ .set(sqlifiedAttributes)
423
+ .where(namespaceColumn(dream.primaryKey, dream.table), '=', dream.primaryKeyValue);
424
+ return await executeDatabaseQuery(query.returning([...dream.columns()]), 'executeTakeFirstOrThrow');
425
+ }
426
+ else {
427
+ const query = db
428
+ .insertInto(dream.table)
429
+ .values(sqlifiedAttributes)
430
+ .returning([...dream.columns()]);
431
+ return await executeDatabaseQuery(query, 'executeTakeFirstOrThrow');
432
+ }
422
433
  }
423
- else {
424
- const query = db
425
- .insertInto(dream.table)
426
- .values(sqlifiedAttributes)
427
- .returning([...dream.columns()]);
428
- return await executeDatabaseQuery(query, 'executeTakeFirstOrThrow');
434
+ catch (error) {
435
+ switch (pgErrorType(error)) {
436
+ case 'INVALID_INPUT_SYNTAX':
437
+ throw new DataTypeColumnTypeMismatch({
438
+ dream,
439
+ error: error instanceof Error ? error : new Error('database column type error'),
440
+ });
441
+ }
442
+ throw error;
429
443
  }
430
444
  }
431
445
  dbConnectionType(sqlCommandType) {
@@ -0,0 +1,16 @@
1
+ export default class DataTypeColumnTypeMismatch extends Error {
2
+ dream;
3
+ error;
4
+ constructor({ dream, error }) {
5
+ super();
6
+ this.dream = dream;
7
+ this.error = error;
8
+ }
9
+ get message() {
10
+ return `\
11
+ Failed to save ${this.dream.sanitizedConstructorName}:
12
+
13
+ ${this.error.message}
14
+ `;
15
+ }
16
+ }
@@ -37,6 +37,12 @@ export default function sqlAttributes(dream) {
37
37
  return result;
38
38
  }, {});
39
39
  }
40
+ /**
41
+ * Convert datetimes to UTC
42
+ */
40
43
  function valueToDatetime(val) {
41
- return typeof val === 'string' ? DateTime.fromISO(val, { zone: 'UTC' }) : val;
44
+ if (typeof val !== 'string')
45
+ return val;
46
+ const datetime = DateTime.fromISO(val, { zone: 'UTC' });
47
+ return datetime.isValid ? datetime : val;
42
48
  }
@@ -21,6 +21,7 @@ export { default as Query } from './dream/Query.js';
21
21
  export { default as Encrypt } from './encrypt/index.js';
22
22
  export { default as NonLoadedAssociation } from './errors/associations/NonLoadedAssociation.js';
23
23
  export { default as CreateOrFindByFailedToCreateAndFind } from './errors/CreateOrFindByFailedToCreateAndFind.js';
24
+ export { default as DataTypeColumnTypeMismatch } from './errors/db/DataTypeColumnTypeMismatch.js';
24
25
  export { default as GlobalNameNotSet } from './errors/dream-app/GlobalNameNotSet.js';
25
26
  export { default as RecordNotFound } from './errors/RecordNotFound.js';
26
27
  export { default as ValidationError } from './errors/ValidationError.js';
@@ -1,5 +1,7 @@
1
1
  export declare const PG_ERRORS: {
2
- readonly 23505: "UNIQUE_CONSTRAINT_VIOLATION";
2
+ readonly '23505': "UNIQUE_CONSTRAINT_VIOLATION";
3
+ readonly '22P02': "INVALID_INPUT_SYNTAX";
4
+ readonly '22007': "INVALID_INPUT_SYNTAX";
3
5
  };
4
6
  type PgErrorType = (typeof PG_ERRORS)[keyof typeof PG_ERRORS];
5
7
  export declare function pgErrorType(error: any): PgErrorType | null;
@@ -0,0 +1,10 @@
1
+ import Dream from '../../Dream.js';
2
+ export default class DataTypeColumnTypeMismatch extends Error {
3
+ dream: Dream;
4
+ error: Error;
5
+ constructor({ dream, error }: {
6
+ dream: Dream;
7
+ error: Error;
8
+ });
9
+ get message(): string;
10
+ }
@@ -22,6 +22,7 @@ export { default as Query } from './dream/Query.js';
22
22
  export { default as Encrypt, type EncryptAlgorithm, type EncryptOptions } from './encrypt/index.js';
23
23
  export { default as NonLoadedAssociation } from './errors/associations/NonLoadedAssociation.js';
24
24
  export { default as CreateOrFindByFailedToCreateAndFind } from './errors/CreateOrFindByFailedToCreateAndFind.js';
25
+ export { default as DataTypeColumnTypeMismatch } from './errors/db/DataTypeColumnTypeMismatch.js';
25
26
  export { default as GlobalNameNotSet } from './errors/dream-app/GlobalNameNotSet.js';
26
27
  export { default as RecordNotFound } from './errors/RecordNotFound.js';
27
28
  export { default as ValidationError } from './errors/ValidationError.js';
@@ -1 +1 @@
1
- window.navigationData = "data:application/octet-stream;base64,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"
1
+ window.navigationData = "data:application/octet-stream;base64,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"
@@ -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/8ea04f0bd54b68e0c2d51c6afe9403841c92f3e6/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>
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/a3e48fd6a625f31b8c08cee2b9b00da1c59f5b62/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"> = &#39;log&#39;</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/8ea04f0bd54b68e0c2d51c6afe9403841c92f3e6/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/8ea04f0bd54b68e0c2d51c6afe9403841c92f3e6/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>
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"> = &#39;log&#39;</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/a3e48fd6a625f31b8c08cee2b9b00da1c59f5b62/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/a3e48fd6a625f31b8c08cee2b9b00da1c59f5b62/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>