@rvoh/dream 2.3.3 → 2.4.0

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 (225) hide show
  1. package/dist/cjs/src/bin/index.js +2 -0
  2. package/dist/cjs/src/cli/index.js +5 -0
  3. package/dist/cjs/src/dream-app/helpers/globalModelKeyFromPath.js +3 -2
  4. package/dist/cjs/src/helpers/cli/generateDream.js +2 -0
  5. package/dist/cjs/src/helpers/cli/generateDreamContent.js +11 -2
  6. package/dist/cjs/src/helpers/cli/generateFactoryContent.js +9 -1
  7. package/dist/cjs/src/helpers/cli/generateSerializer.js +2 -1
  8. package/dist/cjs/src/helpers/cli/generateSerializerContent.js +12 -2
  9. package/dist/esm/src/bin/index.js +2 -0
  10. package/dist/esm/src/cli/index.js +5 -0
  11. package/dist/esm/src/dream-app/helpers/globalModelKeyFromPath.js +3 -2
  12. package/dist/esm/src/helpers/cli/generateDream.js +2 -0
  13. package/dist/esm/src/helpers/cli/generateDreamContent.js +11 -2
  14. package/dist/esm/src/helpers/cli/generateFactoryContent.js +9 -1
  15. package/dist/esm/src/helpers/cli/generateSerializer.js +2 -1
  16. package/dist/esm/src/helpers/cli/generateSerializerContent.js +12 -2
  17. package/dist/types/src/bin/index.d.ts +2 -0
  18. package/dist/types/src/cli/index.d.ts +2 -1
  19. package/dist/types/src/helpers/EnvInternal.d.ts +1 -1
  20. package/dist/types/src/helpers/cli/generateDream.d.ts +1 -0
  21. package/dist/types/src/helpers/cli/generateDreamContent.d.ts +1 -0
  22. package/dist/types/src/helpers/cli/generateSerializer.d.ts +2 -1
  23. package/dist/types/src/helpers/cli/generateSerializerContent.d.ts +2 -1
  24. package/dist/types/src/helpers/path/windowsSafePath.d.ts +4 -4
  25. package/dist/types/src/helpers/sspawn.d.ts +1 -1
  26. package/dist/types/src/types/openapi.d.ts +2 -2
  27. package/dist/types/src/types/openapi.ts +2 -0
  28. package/docs/assets/hierarchy.js +1 -0
  29. package/docs/assets/icons.js +1 -1
  30. package/docs/assets/icons.svg +1 -1
  31. package/docs/assets/main.js +5 -5
  32. package/docs/assets/navigation.js +1 -1
  33. package/docs/assets/search.js +1 -1
  34. package/docs/assets/style.css +1440 -1255
  35. package/docs/classes/db.DreamMigrationHelpers.html +42 -37
  36. package/docs/classes/db.KyselyQueryDriver.html +94 -94
  37. package/docs/classes/db.PostgresQueryDriver.html +95 -95
  38. package/docs/classes/db.QueryDriverBase.html +86 -86
  39. package/docs/classes/errors.CheckConstraintViolation.html +33 -12
  40. package/docs/classes/errors.ColumnOverflow.html +33 -12
  41. package/docs/classes/errors.CreateOrFindByFailedToCreateAndFind.html +33 -12
  42. package/docs/classes/errors.DataIncompatibleWithDatabaseField.html +33 -12
  43. package/docs/classes/errors.DataTypeColumnTypeMismatch.html +33 -12
  44. package/docs/classes/errors.GlobalNameNotSet.html +33 -12
  45. package/docs/classes/errors.InvalidCalendarDate.html +36 -15
  46. package/docs/classes/errors.InvalidClockTime.html +36 -15
  47. package/docs/classes/errors.InvalidClockTimeTz.html +36 -15
  48. package/docs/classes/errors.InvalidDateTime.html +36 -15
  49. package/docs/classes/errors.MissingSerializersDefinition.html +33 -12
  50. package/docs/classes/errors.NonLoadedAssociation.html +35 -14
  51. package/docs/classes/errors.NotNullViolation.html +33 -12
  52. package/docs/classes/errors.RecordNotFound.html +34 -13
  53. package/docs/classes/errors.ValidationError.html +35 -14
  54. package/docs/classes/index.CalendarDate.html +138 -138
  55. package/docs/classes/index.ClockTime.html +156 -147
  56. package/docs/classes/index.ClockTimeTz.html +171 -160
  57. package/docs/classes/index.DateTime.html +526 -310
  58. package/docs/classes/index.Decorators.html +67 -66
  59. package/docs/classes/index.Dream.html +502 -439
  60. package/docs/classes/index.DreamApp.html +42 -47
  61. package/docs/classes/index.DreamTransaction.html +5 -5
  62. package/docs/classes/index.Env.html +18 -18
  63. package/docs/classes/index.Query.html +214 -214
  64. package/docs/classes/system.CliFileWriter.html +18 -8
  65. package/docs/classes/system.DreamBin.html +11 -11
  66. package/docs/classes/system.DreamCLI.html +12 -14
  67. package/docs/classes/system.DreamImporter.html +5 -5
  68. package/docs/classes/system.DreamLogos.html +4 -4
  69. package/docs/classes/system.DreamSerializerBuilder.html +72 -42
  70. package/docs/classes/system.ObjectSerializerBuilder.html +41 -41
  71. package/docs/classes/system.PathHelpers.html +8 -8
  72. package/docs/classes/utils.Encrypt.html +6 -6
  73. package/docs/classes/utils.Range.html +5 -5
  74. package/docs/functions/db.closeAllDbConnections.html +1 -1
  75. package/docs/functions/db.dreamDbConnections.html +1 -1
  76. package/docs/functions/db.untypedDb.html +1 -1
  77. package/docs/functions/db.validateColumn.html +1 -1
  78. package/docs/functions/db.validateTable.html +1 -1
  79. package/docs/functions/errors.pgErrorType.html +1 -1
  80. package/docs/functions/index.DreamSerializer.html +1 -1
  81. package/docs/functions/index.ObjectSerializer.html +1 -1
  82. package/docs/functions/index.ReplicaSafe.html +1 -1
  83. package/docs/functions/index.STI.html +1 -1
  84. package/docs/functions/index.SoftDelete.html +2 -2
  85. package/docs/functions/utils.camelize.html +4 -4
  86. package/docs/functions/utils.capitalize.html +3 -3
  87. package/docs/functions/utils.cloneDeepSafe.html +6 -6
  88. package/docs/functions/utils.compact.html +4 -4
  89. package/docs/functions/utils.groupBy.html +5 -5
  90. package/docs/functions/utils.hyphenize.html +4 -4
  91. package/docs/functions/utils.intersection.html +4 -4
  92. package/docs/functions/utils.isEmpty.html +4 -4
  93. package/docs/functions/utils.normalizeUnicode.html +5 -5
  94. package/docs/functions/utils.pascalize.html +4 -4
  95. package/docs/functions/utils.percent.html +5 -5
  96. package/docs/functions/utils.range.html +1 -0
  97. package/docs/functions/utils.round.html +4 -4
  98. package/docs/functions/utils.sanitizeString.html +1 -1
  99. package/docs/functions/utils.snakeify.html +4 -4
  100. package/docs/functions/utils.sort.html +2 -2
  101. package/docs/functions/utils.sortBy.html +5 -5
  102. package/docs/functions/utils.sortObjectByKey.html +1 -1
  103. package/docs/functions/utils.sortObjectByValue.html +1 -1
  104. package/docs/functions/utils.uncapitalize.html +1 -1
  105. package/docs/functions/utils.uniq.html +5 -5
  106. package/docs/hierarchy.html +1 -1
  107. package/docs/index.html +12 -7
  108. package/docs/interfaces/openapi.OpenapiDescription.html +2 -2
  109. package/docs/interfaces/openapi.OpenapiSchemaProperties.html +1 -1
  110. package/docs/interfaces/openapi.OpenapiSchemaPropertiesShorthand.html +1 -1
  111. package/docs/interfaces/openapi.OpenapiTypeFieldObject.html +1 -1
  112. package/docs/interfaces/types.BelongsToStatement.html +14 -14
  113. package/docs/interfaces/types.DecoratorContext.html +8 -8
  114. package/docs/interfaces/types.DreamAppInitOptions.html +3 -3
  115. package/docs/interfaces/types.DreamAppOpts.html +8 -8
  116. package/docs/interfaces/types.DurationObject.html +12 -12
  117. package/docs/interfaces/types.EncryptOptions.html +3 -3
  118. package/docs/interfaces/types.InternalAnyTypedSerializerRendersMany.html +4 -4
  119. package/docs/interfaces/types.InternalAnyTypedSerializerRendersOne.html +4 -4
  120. package/docs/interfaces/types.SerializerRendererOpts.html +2 -2
  121. package/docs/modules/db.html +1 -10
  122. package/docs/modules/errors.html +1 -17
  123. package/docs/modules/index.html +1 -18
  124. package/docs/modules/openapi.html +1 -49
  125. package/docs/modules/system.html +1 -12
  126. package/docs/modules/types.html +1 -54
  127. package/docs/modules/utils.html +1 -24
  128. package/docs/modules.html +1 -0
  129. package/docs/types/openapi.CommonOpenapiSchemaObjectFields.html +1 -1
  130. package/docs/types/openapi.OpenapiAllTypes.html +1 -1
  131. package/docs/types/openapi.OpenapiFormats.html +1 -1
  132. package/docs/types/openapi.OpenapiNumberFormats.html +1 -1
  133. package/docs/types/openapi.OpenapiPrimitiveBaseTypes.html +1 -1
  134. package/docs/types/openapi.OpenapiPrimitiveTypes.html +1 -1
  135. package/docs/types/openapi.OpenapiSchemaArray.html +1 -1
  136. package/docs/types/openapi.OpenapiSchemaArrayShorthand.html +1 -1
  137. package/docs/types/openapi.OpenapiSchemaBase.html +1 -1
  138. package/docs/types/openapi.OpenapiSchemaBody.html +1 -1
  139. package/docs/types/openapi.OpenapiSchemaBodyShorthand.html +1 -1
  140. package/docs/types/openapi.OpenapiSchemaCommonFields.html +1 -1
  141. package/docs/types/openapi.OpenapiSchemaExpressionAllOf.html +2 -1
  142. package/docs/types/openapi.OpenapiSchemaExpressionAnyOf.html +2 -1
  143. package/docs/types/openapi.OpenapiSchemaExpressionOneOf.html +2 -1
  144. package/docs/types/openapi.OpenapiSchemaExpressionRef.html +2 -1
  145. package/docs/types/openapi.OpenapiSchemaExpressionRefSchemaShorthand.html +2 -1
  146. package/docs/types/openapi.OpenapiSchemaInteger.html +1 -1
  147. package/docs/types/openapi.OpenapiSchemaNull.html +2 -1
  148. package/docs/types/openapi.OpenapiSchemaNumber.html +1 -1
  149. package/docs/types/openapi.OpenapiSchemaObject.html +1 -1
  150. package/docs/types/openapi.OpenapiSchemaObjectAllOf.html +1 -1
  151. package/docs/types/openapi.OpenapiSchemaObjectAllOfShorthand.html +1 -1
  152. package/docs/types/openapi.OpenapiSchemaObjectAnyOf.html +1 -1
  153. package/docs/types/openapi.OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  154. package/docs/types/openapi.OpenapiSchemaObjectBase.html +1 -1
  155. package/docs/types/openapi.OpenapiSchemaObjectBaseShorthand.html +1 -1
  156. package/docs/types/openapi.OpenapiSchemaObjectOneOf.html +1 -1
  157. package/docs/types/openapi.OpenapiSchemaObjectOneOfShorthand.html +1 -1
  158. package/docs/types/openapi.OpenapiSchemaObjectShorthand.html +1 -1
  159. package/docs/types/openapi.OpenapiSchemaPrimitiveGeneric.html +1 -1
  160. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAllOf.html +2 -1
  161. package/docs/types/openapi.OpenapiSchemaShorthandExpressionAnyOf.html +2 -1
  162. package/docs/types/openapi.OpenapiSchemaShorthandExpressionOneOf.html +2 -1
  163. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializableRef.html +6 -1
  164. package/docs/types/openapi.OpenapiSchemaShorthandExpressionSerializerRef.html +4 -1
  165. package/docs/types/openapi.OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  166. package/docs/types/openapi.OpenapiSchemaString.html +1 -1
  167. package/docs/types/openapi.OpenapiShorthandAllTypes.html +1 -1
  168. package/docs/types/openapi.OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  169. package/docs/types/openapi.OpenapiShorthandPrimitiveTypes.html +1 -1
  170. package/docs/types/openapi.OpenapiTypeField.html +1 -1
  171. package/docs/types/system.DreamAppAllowedPackageManagersEnum.html +1 -1
  172. package/docs/types/types.CalendarDateDurationUnit.html +1 -1
  173. package/docs/types/types.CalendarDateObject.html +2 -2
  174. package/docs/types/types.Camelized.html +1 -1
  175. package/docs/types/types.ClockTimeObject.html +2 -2
  176. package/docs/types/types.DbConnectionType.html +1 -1
  177. package/docs/types/types.DbTypes.html +1 -1
  178. package/docs/types/types.DreamAssociationMetadata.html +1 -1
  179. package/docs/types/types.DreamAttributes.html +1 -1
  180. package/docs/types/types.DreamClassAssociationAndStatement.html +1 -1
  181. package/docs/types/types.DreamClassColumn.html +1 -1
  182. package/docs/types/types.DreamColumn.html +1 -1
  183. package/docs/types/types.DreamColumnNames.html +1 -1
  184. package/docs/types/types.DreamLogLevel.html +1 -1
  185. package/docs/types/types.DreamLogger.html +5 -1
  186. package/docs/types/types.DreamModelSerializerType.html +1 -1
  187. package/docs/types/types.DreamOrViewModelClassSerializerKey.html +1 -1
  188. package/docs/types/types.DreamOrViewModelSerializerKey.html +1 -1
  189. package/docs/types/types.DreamParamSafeAttributes.html +1 -1
  190. package/docs/types/types.DreamParamSafeColumnNames.html +1 -1
  191. package/docs/types/types.DreamSerializable.html +1 -1
  192. package/docs/types/types.DreamSerializableArray.html +1 -1
  193. package/docs/types/types.DreamSerializerKey.html +1 -1
  194. package/docs/types/types.DreamSerializers.html +1 -1
  195. package/docs/types/types.DreamVirtualColumns.html +1 -1
  196. package/docs/types/types.DurationUnit.html +2 -2
  197. package/docs/types/types.EncryptAlgorithm.html +1 -1
  198. package/docs/types/types.HasManyStatement.html +1 -1
  199. package/docs/types/types.HasOneStatement.html +1 -1
  200. package/docs/types/types.Hyphenized.html +1 -1
  201. package/docs/types/types.Pascalized.html +1 -1
  202. package/docs/types/types.PrimaryKeyType.html +1 -1
  203. package/docs/types/types.RoundingPrecision.html +1 -1
  204. package/docs/types/types.SerializerCasing.html +1 -1
  205. package/docs/types/types.SimpleObjectSerializerType.html +1 -1
  206. package/docs/types/types.Snakeified.html +1 -1
  207. package/docs/types/types.StrictInterface.html +1 -1
  208. package/docs/types/types.UpdateableAssociationProperties.html +1 -1
  209. package/docs/types/types.UpdateableProperties.html +1 -1
  210. package/docs/types/types.ValidationType.html +1 -1
  211. package/docs/types/types.ViewModel.html +2 -1
  212. package/docs/types/types.ViewModelClass.html +1 -1
  213. package/docs/types/types.WeekdayName.html +2 -2
  214. package/docs/types/types.WhereStatementForDream.html +1 -1
  215. package/docs/types/types.WhereStatementForDreamClass.html +1 -1
  216. package/docs/variables/index.DreamConst.html +1 -1
  217. package/docs/variables/index.ops.html +1 -1
  218. package/docs/variables/openapi.openapiPrimitiveTypes.html +1 -0
  219. package/docs/variables/openapi.openapiShorthandPrimitiveTypes.html +1 -0
  220. package/docs/variables/system.DreamAppAllowedPackageManagersEnumValues.html +1 -1
  221. package/docs/variables/system.primaryKeyTypes.html +1 -1
  222. package/package.json +1 -1
  223. package/docs/functions/utils.range-1.html +0 -1
  224. package/docs/variables/openapi.openapiPrimitiveTypes-1.html +0 -1
  225. package/docs/variables/openapi.openapiShorthandPrimitiveTypes-1.html +0 -1
@@ -48,6 +48,7 @@ export default class DreamBin {
48
48
  columnsWithTypes,
49
49
  options: {
50
50
  includeAdminSerializers: options.adminSerializers ?? false,
51
+ includeInternalSerializers: options.internalSerializers ?? false,
51
52
  ...options,
52
53
  },
53
54
  });
@@ -58,6 +59,7 @@ export default class DreamBin {
58
59
  columnsWithTypes,
59
60
  options: {
60
61
  includeAdminSerializers: options.adminSerializers ?? false,
62
+ includeInternalSerializers: options.internalSerializers ?? false,
61
63
  ...options,
62
64
  stiBaseSerializer: false,
63
65
  },
@@ -23,6 +23,9 @@ ${INDENT} - citext:
23
23
  ${INDENT} - citext[]:
24
24
  ${INDENT} case insensitive text (indexes and queries are automatically case insensitive)
25
25
  ${INDENT}
26
+ ${INDENT} - encrypted:
27
+ ${INDENT} encrypted text (used in conjunction with the @deco.Encrypted decorator)
28
+ ${INDENT}
26
29
  ${INDENT} - string:
27
30
  ${INDENT} - string[]:
28
31
  ${INDENT} varchar; allowed length defaults to 255, but may be customized, e.g.: subtitle:string:128 or subtitle:string:128:optional
@@ -135,6 +138,7 @@ export default class DreamCLI {
135
138
  .option('--table-name <tableName>', 'explicit table name to use instead of the auto-generated one (useful when model namespaces produce long names)')
136
139
  .option('--model-name <modelName>', 'explicit model class name to use instead of the auto-generated one (e.g. --model-name=Kitchen for Room/Kitchen)')
137
140
  .option('--admin-serializers', 'generate admin serializer variants (AdminSerializer and AdminSummarySerializer) in addition to the default serializers')
141
+ .option('--internal-serializers', 'generate internal serializer variants (InternalSerializer and InternalSummarySerializer) in addition to the default serializers')
138
142
  .argument('<modelName>', 'the name of the model to create, e.g. Post or Settings/CommunicationPreferences')
139
143
  .argument('[columnsWithTypes...]', columnsWithTypesDescription)
140
144
  .action(async (modelName, columnsWithTypes, options) => {
@@ -150,6 +154,7 @@ export default class DreamCLI {
150
154
  .option('--connection-name', 'the db connection you want this model attached to (defaults to the default connection)', 'default')
151
155
  .option('--model-name <modelName>', 'explicit model class name to use instead of the auto-generated one (e.g. --model-name=Kitchen for Room/Kitchen)')
152
156
  .option('--admin-serializers', 'generate admin serializer variants (AdminSerializer and AdminSummarySerializer) in addition to the default serializers')
157
+ .option('--internal-serializers', 'generate internal serializer variants (InternalSerializer and InternalSummarySerializer) in addition to the default serializers')
153
158
  .argument('<childModelName>', 'the name of the model to create, e.g. Post or Settings/CommunicationPreferences')
154
159
  .argument('<extends>', 'just the word "extends"')
155
160
  .argument('<parentModelName>', `fully qualified name of the parent model, e.g.:
@@ -1,7 +1,8 @@
1
+ import * as path from 'node:path';
1
2
  import normalizeFilePath from './normalizeFilePath.js';
2
3
  export default function (filepath, dirPath) {
3
- const normalizedDirPath = normalizeFilePath(dirPath);
4
- const normalizedFilepath = normalizeFilePath(filepath);
4
+ const normalizedDirPath = normalizeFilePath(path.resolve(dirPath));
5
+ const normalizedFilepath = normalizeFilePath(path.resolve(filepath));
5
6
  const prefixPath = normalizedDirPath;
6
7
  return normalizedFilepath
7
8
  .replace(prefixPath, '')
@@ -18,6 +18,7 @@ export default async function generateDream({ fullyQualifiedModelName, columnsWi
18
18
  fullyQualifiedParentName,
19
19
  serializer: options.serializer,
20
20
  includeAdminSerializers: options.includeAdminSerializers,
21
+ includeInternalSerializers: options.includeInternalSerializers ?? false,
21
22
  connectionName: options.connectionName,
22
23
  tableName: options.tableName,
23
24
  modelClassName,
@@ -33,6 +34,7 @@ export default async function generateDream({ fullyQualifiedModelName, columnsWi
33
34
  fullyQualifiedParentName,
34
35
  stiBaseSerializer: options.stiBaseSerializer,
35
36
  includeAdminSerializers: options.includeAdminSerializers,
37
+ includeInternalSerializers: options.includeInternalSerializers ?? false,
36
38
  modelClassName,
37
39
  });
38
40
  const isSTI = !!fullyQualifiedParentName;
@@ -125,9 +125,10 @@ public ${associationForeignKey}: DreamColumn<${modelClassName}, '${associationNa
125
125
  };
126
126
  }
127
127
  export function createEncryptedAttribute(attributeName, attribute, modelClassName) {
128
+ const encryptedColumnName = camelize(`encrypted_${attributeName}`);
128
129
  const content = `
129
130
  @deco.Encrypted()
130
- public ${camelize(attributeName)}: ${getAttributeType(attribute, modelClassName)}`;
131
+ public ${camelize(attributeName)}: DreamColumn<${modelClassName}, '${encryptedColumnName}'>`;
131
132
  return {
132
133
  content,
133
134
  imports: [],
@@ -177,10 +178,18 @@ function buildSerializersMethod(config, options) {
177
178
  admin: '${adminSerializer}',
178
179
  adminSummary: '${adminSummarySerializer}',`;
179
180
  }
181
+ let internalSerializers = '';
182
+ if (options.includeInternalSerializers) {
183
+ const internalSerializer = defaultSerializer.replace(/Serializer$/, 'InternalSerializer');
184
+ const internalSummarySerializer = summarySerializer.replace(/SummarySerializer$/, 'InternalSummarySerializer');
185
+ internalSerializers = `
186
+ internal: '${internalSerializer}',
187
+ internalSummary: '${internalSummarySerializer}',`;
188
+ }
180
189
  return ` public ${overrideKeyword}get serializers(): DreamSerializers<${config.modelClassName}> {
181
190
  return {
182
191
  default: '${defaultSerializer}',
183
- summary: '${summarySerializer}',${adminSerializers}
192
+ summary: '${summarySerializer}',${adminSerializers}${internalSerializers}
184
193
  }
185
194
  }
186
195
 
@@ -1,4 +1,5 @@
1
1
  import camelize from '../camelize.js';
2
+ import hyphenize from '../hyphenize.js';
2
3
  import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFullyQualifiedModelName.js';
3
4
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
4
5
  import standardizeFullyQualifiedModelName from '../standardizeFullyQualifiedModelName.js';
@@ -45,10 +46,17 @@ export default function generateFactoryContent({ fullyQualifiedModelName, column
45
46
  associationCreationStatements.push(`${attributeVariable}: attrs.${attributeVariable} ? null : await create${associationModelName}(),`);
46
47
  break;
47
48
  }
49
+ case 'encrypted':
48
50
  case 'string':
49
51
  case 'text':
50
52
  case 'citext':
51
- attributeDefaults.push(`${attributeVariable}: \`${fullyQualifiedModelName} ${attributeVariable} ${counterVariableIncremented ? '${counter}' : '${++counter}'}\`,`);
53
+ if (/email$/i.test(attributeVariable)) {
54
+ const hyphenized = hyphenize(attributeVariable);
55
+ attributeDefaults.push(`${attributeVariable}: \`${hyphenized}-${counterVariableIncremented ? '${counter}' : '${++counter}'}@example.com\`,`);
56
+ }
57
+ else {
58
+ attributeDefaults.push(`${attributeVariable}: \`${fullyQualifiedModelName} ${attributeVariable} ${counterVariableIncremented ? '${counter}' : '${++counter}'}\`,`);
59
+ }
52
60
  counterVariableIncremented = true;
53
61
  break;
54
62
  case 'string[]':
@@ -1,6 +1,6 @@
1
1
  import generateSerializerContent from './generateSerializerContent.js';
2
2
  import writeGeneratedFile from './writeGeneratedFile.js';
3
- export default async function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }) {
3
+ export default async function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }) {
4
4
  await writeGeneratedFile({
5
5
  dreamPathKey: 'serializers',
6
6
  fileName: `${fullyQualifiedModelName}Serializer.ts`,
@@ -10,6 +10,7 @@ export default async function generateSerializer({ fullyQualifiedModelName, colu
10
10
  fullyQualifiedParentName,
11
11
  stiBaseSerializer,
12
12
  includeAdminSerializers,
13
+ includeInternalSerializers: includeInternalSerializers ?? false,
13
14
  modelClassName,
14
15
  }),
15
16
  logLabel: 'serializer',
@@ -4,7 +4,7 @@ import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFu
4
4
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
5
5
  import standardizeFullyQualifiedModelName from '../standardizeFullyQualifiedModelName.js';
6
6
  import uniq from '../uniq.js';
7
- export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes = [], fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }) {
7
+ export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes = [], fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }) {
8
8
  fullyQualifiedModelName = standardizeFullyQualifiedModelName(fullyQualifiedModelName);
9
9
  const additionalImports = [];
10
10
  const dreamImports = [];
@@ -35,6 +35,10 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
35
35
  const adminSerializerClassName = serializerClassName.replace(/Serializer$/, 'AdminSerializer');
36
36
  const adminSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'AdminSummarySerializer');
37
37
  // end:Admin variants
38
+ // Internal variants
39
+ const internalSerializerClassName = serializerClassName.replace(/Serializer$/, 'InternalSerializer');
40
+ const internalSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'InternalSummarySerializer');
41
+ // end:Internal variants
38
42
  const additionalModelImports = [];
39
43
  const dreamImport = dreamImports.length
40
44
  ? `import { ${uniq(dreamImports).join(', ')} } from '@rvoh/dream'\n`
@@ -62,7 +66,13 @@ ${defaultSerializer}${!includeAdminSerializers
62
66
 
63
67
  ${summarySerializer.replace(summarySerializerClassName, adminSummarySerializerClassName)}
64
68
 
65
- ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}
69
+ ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}${!includeInternalSerializers
70
+ ? ''
71
+ : `
72
+
73
+ ${summarySerializer.replace(summarySerializerClassName, internalSummarySerializerClassName)}
74
+
75
+ ${defaultSerializer.replace(serializerClassName, internalSerializerClassName).replace(summarySerializerClassName, internalSummarySerializerClassName)}`}
66
76
  `;
67
77
  }
68
78
  function attribute(modelClassName, name, type, attr, stiBaseSerializer) {
@@ -48,6 +48,7 @@ export default class DreamBin {
48
48
  columnsWithTypes,
49
49
  options: {
50
50
  includeAdminSerializers: options.adminSerializers ?? false,
51
+ includeInternalSerializers: options.internalSerializers ?? false,
51
52
  ...options,
52
53
  },
53
54
  });
@@ -58,6 +59,7 @@ export default class DreamBin {
58
59
  columnsWithTypes,
59
60
  options: {
60
61
  includeAdminSerializers: options.adminSerializers ?? false,
62
+ includeInternalSerializers: options.internalSerializers ?? false,
61
63
  ...options,
62
64
  stiBaseSerializer: false,
63
65
  },
@@ -23,6 +23,9 @@ ${INDENT} - citext:
23
23
  ${INDENT} - citext[]:
24
24
  ${INDENT} case insensitive text (indexes and queries are automatically case insensitive)
25
25
  ${INDENT}
26
+ ${INDENT} - encrypted:
27
+ ${INDENT} encrypted text (used in conjunction with the @deco.Encrypted decorator)
28
+ ${INDENT}
26
29
  ${INDENT} - string:
27
30
  ${INDENT} - string[]:
28
31
  ${INDENT} varchar; allowed length defaults to 255, but may be customized, e.g.: subtitle:string:128 or subtitle:string:128:optional
@@ -135,6 +138,7 @@ export default class DreamCLI {
135
138
  .option('--table-name <tableName>', 'explicit table name to use instead of the auto-generated one (useful when model namespaces produce long names)')
136
139
  .option('--model-name <modelName>', 'explicit model class name to use instead of the auto-generated one (e.g. --model-name=Kitchen for Room/Kitchen)')
137
140
  .option('--admin-serializers', 'generate admin serializer variants (AdminSerializer and AdminSummarySerializer) in addition to the default serializers')
141
+ .option('--internal-serializers', 'generate internal serializer variants (InternalSerializer and InternalSummarySerializer) in addition to the default serializers')
138
142
  .argument('<modelName>', 'the name of the model to create, e.g. Post or Settings/CommunicationPreferences')
139
143
  .argument('[columnsWithTypes...]', columnsWithTypesDescription)
140
144
  .action(async (modelName, columnsWithTypes, options) => {
@@ -150,6 +154,7 @@ export default class DreamCLI {
150
154
  .option('--connection-name', 'the db connection you want this model attached to (defaults to the default connection)', 'default')
151
155
  .option('--model-name <modelName>', 'explicit model class name to use instead of the auto-generated one (e.g. --model-name=Kitchen for Room/Kitchen)')
152
156
  .option('--admin-serializers', 'generate admin serializer variants (AdminSerializer and AdminSummarySerializer) in addition to the default serializers')
157
+ .option('--internal-serializers', 'generate internal serializer variants (InternalSerializer and InternalSummarySerializer) in addition to the default serializers')
153
158
  .argument('<childModelName>', 'the name of the model to create, e.g. Post or Settings/CommunicationPreferences')
154
159
  .argument('<extends>', 'just the word "extends"')
155
160
  .argument('<parentModelName>', `fully qualified name of the parent model, e.g.:
@@ -1,7 +1,8 @@
1
+ import * as path from 'node:path';
1
2
  import normalizeFilePath from './normalizeFilePath.js';
2
3
  export default function (filepath, dirPath) {
3
- const normalizedDirPath = normalizeFilePath(dirPath);
4
- const normalizedFilepath = normalizeFilePath(filepath);
4
+ const normalizedDirPath = normalizeFilePath(path.resolve(dirPath));
5
+ const normalizedFilepath = normalizeFilePath(path.resolve(filepath));
5
6
  const prefixPath = normalizedDirPath;
6
7
  return normalizedFilepath
7
8
  .replace(prefixPath, '')
@@ -18,6 +18,7 @@ export default async function generateDream({ fullyQualifiedModelName, columnsWi
18
18
  fullyQualifiedParentName,
19
19
  serializer: options.serializer,
20
20
  includeAdminSerializers: options.includeAdminSerializers,
21
+ includeInternalSerializers: options.includeInternalSerializers ?? false,
21
22
  connectionName: options.connectionName,
22
23
  tableName: options.tableName,
23
24
  modelClassName,
@@ -33,6 +34,7 @@ export default async function generateDream({ fullyQualifiedModelName, columnsWi
33
34
  fullyQualifiedParentName,
34
35
  stiBaseSerializer: options.stiBaseSerializer,
35
36
  includeAdminSerializers: options.includeAdminSerializers,
37
+ includeInternalSerializers: options.includeInternalSerializers ?? false,
36
38
  modelClassName,
37
39
  });
38
40
  const isSTI = !!fullyQualifiedParentName;
@@ -125,9 +125,10 @@ public ${associationForeignKey}: DreamColumn<${modelClassName}, '${associationNa
125
125
  };
126
126
  }
127
127
  export function createEncryptedAttribute(attributeName, attribute, modelClassName) {
128
+ const encryptedColumnName = camelize(`encrypted_${attributeName}`);
128
129
  const content = `
129
130
  @deco.Encrypted()
130
- public ${camelize(attributeName)}: ${getAttributeType(attribute, modelClassName)}`;
131
+ public ${camelize(attributeName)}: DreamColumn<${modelClassName}, '${encryptedColumnName}'>`;
131
132
  return {
132
133
  content,
133
134
  imports: [],
@@ -177,10 +178,18 @@ function buildSerializersMethod(config, options) {
177
178
  admin: '${adminSerializer}',
178
179
  adminSummary: '${adminSummarySerializer}',`;
179
180
  }
181
+ let internalSerializers = '';
182
+ if (options.includeInternalSerializers) {
183
+ const internalSerializer = defaultSerializer.replace(/Serializer$/, 'InternalSerializer');
184
+ const internalSummarySerializer = summarySerializer.replace(/SummarySerializer$/, 'InternalSummarySerializer');
185
+ internalSerializers = `
186
+ internal: '${internalSerializer}',
187
+ internalSummary: '${internalSummarySerializer}',`;
188
+ }
180
189
  return ` public ${overrideKeyword}get serializers(): DreamSerializers<${config.modelClassName}> {
181
190
  return {
182
191
  default: '${defaultSerializer}',
183
- summary: '${summarySerializer}',${adminSerializers}
192
+ summary: '${summarySerializer}',${adminSerializers}${internalSerializers}
184
193
  }
185
194
  }
186
195
 
@@ -1,4 +1,5 @@
1
1
  import camelize from '../camelize.js';
2
+ import hyphenize from '../hyphenize.js';
2
3
  import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFullyQualifiedModelName.js';
3
4
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
4
5
  import standardizeFullyQualifiedModelName from '../standardizeFullyQualifiedModelName.js';
@@ -45,10 +46,17 @@ export default function generateFactoryContent({ fullyQualifiedModelName, column
45
46
  associationCreationStatements.push(`${attributeVariable}: attrs.${attributeVariable} ? null : await create${associationModelName}(),`);
46
47
  break;
47
48
  }
49
+ case 'encrypted':
48
50
  case 'string':
49
51
  case 'text':
50
52
  case 'citext':
51
- attributeDefaults.push(`${attributeVariable}: \`${fullyQualifiedModelName} ${attributeVariable} ${counterVariableIncremented ? '${counter}' : '${++counter}'}\`,`);
53
+ if (/email$/i.test(attributeVariable)) {
54
+ const hyphenized = hyphenize(attributeVariable);
55
+ attributeDefaults.push(`${attributeVariable}: \`${hyphenized}-${counterVariableIncremented ? '${counter}' : '${++counter}'}@example.com\`,`);
56
+ }
57
+ else {
58
+ attributeDefaults.push(`${attributeVariable}: \`${fullyQualifiedModelName} ${attributeVariable} ${counterVariableIncremented ? '${counter}' : '${++counter}'}\`,`);
59
+ }
52
60
  counterVariableIncremented = true;
53
61
  break;
54
62
  case 'string[]':
@@ -1,6 +1,6 @@
1
1
  import generateSerializerContent from './generateSerializerContent.js';
2
2
  import writeGeneratedFile from './writeGeneratedFile.js';
3
- export default async function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }) {
3
+ export default async function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }) {
4
4
  await writeGeneratedFile({
5
5
  dreamPathKey: 'serializers',
6
6
  fileName: `${fullyQualifiedModelName}Serializer.ts`,
@@ -10,6 +10,7 @@ export default async function generateSerializer({ fullyQualifiedModelName, colu
10
10
  fullyQualifiedParentName,
11
11
  stiBaseSerializer,
12
12
  includeAdminSerializers,
13
+ includeInternalSerializers: includeInternalSerializers ?? false,
13
14
  modelClassName,
14
15
  }),
15
16
  logLabel: 'serializer',
@@ -4,7 +4,7 @@ import globalClassNameFromFullyQualifiedModelName from '../globalClassNameFromFu
4
4
  import absoluteDreamPath from '../path/absoluteDreamPath.js';
5
5
  import standardizeFullyQualifiedModelName from '../standardizeFullyQualifiedModelName.js';
6
6
  import uniq from '../uniq.js';
7
- export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes = [], fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }) {
7
+ export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes = [], fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }) {
8
8
  fullyQualifiedModelName = standardizeFullyQualifiedModelName(fullyQualifiedModelName);
9
9
  const additionalImports = [];
10
10
  const dreamImports = [];
@@ -35,6 +35,10 @@ export default function generateSerializerContent({ fullyQualifiedModelName, col
35
35
  const adminSerializerClassName = serializerClassName.replace(/Serializer$/, 'AdminSerializer');
36
36
  const adminSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'AdminSummarySerializer');
37
37
  // end:Admin variants
38
+ // Internal variants
39
+ const internalSerializerClassName = serializerClassName.replace(/Serializer$/, 'InternalSerializer');
40
+ const internalSummarySerializerClassName = summarySerializerClassName.replace(/SummarySerializer$/, 'InternalSummarySerializer');
41
+ // end:Internal variants
38
42
  const additionalModelImports = [];
39
43
  const dreamImport = dreamImports.length
40
44
  ? `import { ${uniq(dreamImports).join(', ')} } from '@rvoh/dream'\n`
@@ -62,7 +66,13 @@ ${defaultSerializer}${!includeAdminSerializers
62
66
 
63
67
  ${summarySerializer.replace(summarySerializerClassName, adminSummarySerializerClassName)}
64
68
 
65
- ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}
69
+ ${defaultSerializer.replace(serializerClassName, adminSerializerClassName).replace(summarySerializerClassName, adminSummarySerializerClassName)}`}${!includeInternalSerializers
70
+ ? ''
71
+ : `
72
+
73
+ ${summarySerializer.replace(summarySerializerClassName, internalSummarySerializerClassName)}
74
+
75
+ ${defaultSerializer.replace(serializerClassName, internalSerializerClassName).replace(summarySerializerClassName, internalSummarySerializerClassName)}`}
66
76
  `;
67
77
  }
68
78
  function attribute(modelClassName, name, type, attr, stiBaseSerializer) {
@@ -15,12 +15,14 @@ export default class DreamBin {
15
15
  connectionName: string;
16
16
  tableName?: string;
17
17
  adminSerializers?: boolean;
18
+ internalSerializers?: boolean;
18
19
  modelName?: string;
19
20
  }): Promise<void>;
20
21
  static generateStiChild(fullyQualifiedModelName: string, fullyQualifiedParentName: string, columnsWithTypes: string[], options: {
21
22
  serializer: boolean;
22
23
  connectionName: string;
23
24
  adminSerializers?: boolean;
25
+ internalSerializers?: boolean;
24
26
  modelName?: string;
25
27
  }): Promise<void>;
26
28
  static generateMigration(migrationName: string, columnsWithTypes: string[], connectionName: string): Promise<void>;
@@ -3,7 +3,7 @@ import { Command } from 'commander';
3
3
  import DreamApp, { DreamAppInitOptions } from '../dream-app/index.js';
4
4
  import DreamCliLogger from './logger/DreamCliLogger.js';
5
5
  export declare const CLI_INDENT = " ";
6
- export declare const baseColumnsWithTypesDescription = "space separated snake-case (except for belongs_to model name) properties like this:\n title:citext subtitle:string body_markdown:text style:enum:post_styles:formal,informal User:belongs_to\n \n all properties default to not nullable; null can be allowed by appending ':optional':\n subtitle:string:optional\n \n supported types:\n - uuid:\n - uuid[]:\n a column optimized for storing UUIDs\n \n - citext:\n - citext[]:\n case insensitive text (indexes and queries are automatically case insensitive)\n \n - string:\n - string[]:\n varchar; allowed length defaults to 255, but may be customized, e.g.: subtitle:string:128 or subtitle:string:128:optional\n \n - text\n - text[]\n - date\n - date[]\n - datetime\n - datetime[]\n - time\n - time[]\n - timetz\n - timetz[]\n - integer\n - integer[]\n \n - decimal:\n - decimal[]:\n precision,scale is required, e.g.: volume:decimal:3,2 or volume:decimal:3,2:optional\n \n leveraging arrays, add the \"[]\" suffix, e.g.: volume:decimal[]:3,2\n \n - enum:\n - enum[]:\n include the enum name to automatically create the enum:\n type:enum:room_types:bathroom,kitchen,bedroom or type:enum:room_types:bathroom,kitchen,bedroom:optional\n \n omit the enum values to leverage an existing enum (omits the enum type creation):\n type:enum:room_types or type:enum:room_types:optional\n \n leveraging arrays, add the \"[]\" suffix, e.g.: type:enum[]:room_types:bathroom,kitchen,bedroom";
6
+ export declare const baseColumnsWithTypesDescription = "space separated snake-case (except for belongs_to model name) properties like this:\n title:citext subtitle:string body_markdown:text style:enum:post_styles:formal,informal User:belongs_to\n \n all properties default to not nullable; null can be allowed by appending ':optional':\n subtitle:string:optional\n \n supported types:\n - uuid:\n - uuid[]:\n a column optimized for storing UUIDs\n \n - citext:\n - citext[]:\n case insensitive text (indexes and queries are automatically case insensitive)\n \n - encrypted:\n encrypted text (used in conjunction with the @deco.Encrypted decorator)\n \n - string:\n - string[]:\n varchar; allowed length defaults to 255, but may be customized, e.g.: subtitle:string:128 or subtitle:string:128:optional\n \n - text\n - text[]\n - date\n - date[]\n - datetime\n - datetime[]\n - time\n - time[]\n - timetz\n - timetz[]\n - integer\n - integer[]\n \n - decimal:\n - decimal[]:\n precision,scale is required, e.g.: volume:decimal:3,2 or volume:decimal:3,2:optional\n \n leveraging arrays, add the \"[]\" suffix, e.g.: volume:decimal[]:3,2\n \n - enum:\n - enum[]:\n include the enum name to automatically create the enum:\n type:enum:room_types:bathroom,kitchen,bedroom or type:enum:room_types:bathroom,kitchen,bedroom:optional\n \n omit the enum values to leverage an existing enum (omits the enum type creation):\n type:enum:room_types or type:enum:room_types:optional\n \n leveraging arrays, add the \"[]\" suffix, e.g.: type:enum[]:room_types:bathroom,kitchen,bedroom";
7
7
  export default class DreamCLI {
8
8
  /**
9
9
  * Starts the Dream console
@@ -31,6 +31,7 @@ export default class DreamCLI {
31
31
  serializer: boolean;
32
32
  stiBaseSerializer: boolean;
33
33
  includeAdminSerializers: boolean;
34
+ includeInternalSerializers?: boolean;
34
35
  tableName?: string | undefined;
35
36
  /**
36
37
  * Optional model class name override. If provided, generators use it
@@ -2,5 +2,5 @@ import Env from './Env.js';
2
2
  declare const EnvInternal: Env<{
3
3
  string: "DREAM_CORE_DEVELOPMENT" | "TZ";
4
4
  boolean: "ALLOW_BENCHMARKS" | "DREAM_BYPASS_PACKAGE_MANAGER_CHECK" | "DREAM_CORE_DEVELOPMENT" | "DREAM_CORE_SPEC_RUN" | "PSYCHIC_CORE_DEVELOPMENT";
5
- }, "TZ" | "DREAM_CORE_DEVELOPMENT", never, "DREAM_CORE_DEVELOPMENT" | "ALLOW_BENCHMARKS" | "DREAM_BYPASS_PACKAGE_MANAGER_CHECK" | "DREAM_CORE_SPEC_RUN" | "PSYCHIC_CORE_DEVELOPMENT">;
5
+ }, "DREAM_CORE_DEVELOPMENT" | "TZ", never, "DREAM_CORE_DEVELOPMENT" | "ALLOW_BENCHMARKS" | "DREAM_BYPASS_PACKAGE_MANAGER_CHECK" | "DREAM_CORE_SPEC_RUN" | "PSYCHIC_CORE_DEVELOPMENT">;
6
6
  export default EnvInternal;
@@ -3,6 +3,7 @@ export interface GenerateDreamOptions {
3
3
  serializer: boolean;
4
4
  stiBaseSerializer: boolean;
5
5
  includeAdminSerializers: boolean;
6
+ includeInternalSerializers?: boolean;
6
7
  tableName?: string | undefined;
7
8
  modelName?: string | undefined;
8
9
  }
@@ -5,6 +5,7 @@ interface GenerateDreamContentOptions {
5
5
  connectionName?: string;
6
6
  serializer: boolean;
7
7
  includeAdminSerializers: boolean;
8
+ includeInternalSerializers?: boolean;
8
9
  tableName?: string | undefined;
9
10
  /** Model class name, computed once via modelClassNameFrom in the orchestrator. */
10
11
  modelClassName: string;
@@ -1,8 +1,9 @@
1
- export default function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }: {
1
+ export default function generateSerializer({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }: {
2
2
  fullyQualifiedModelName: string;
3
3
  columnsWithTypes: string[];
4
4
  fullyQualifiedParentName?: string | undefined;
5
5
  stiBaseSerializer: boolean;
6
6
  includeAdminSerializers: boolean;
7
+ includeInternalSerializers?: boolean;
7
8
  modelClassName: string;
8
9
  }): Promise<void>;
@@ -1,9 +1,10 @@
1
- export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, modelClassName, }: {
1
+ export default function generateSerializerContent({ fullyQualifiedModelName, columnsWithTypes, fullyQualifiedParentName, stiBaseSerializer, includeAdminSerializers, includeInternalSerializers, modelClassName, }: {
2
2
  fullyQualifiedModelName: string;
3
3
  columnsWithTypes?: string[] | undefined;
4
4
  fullyQualifiedParentName?: string | undefined;
5
5
  stiBaseSerializer: boolean;
6
6
  includeAdminSerializers: boolean;
7
+ includeInternalSerializers?: boolean;
7
8
  /** Model class name, computed once via modelClassNameFrom in the orchestrator. */
8
9
  modelClassName: string;
9
10
  }): string;
@@ -9,12 +9,12 @@ declare const windowsSafePath: {
9
9
  dirname(path: string): string;
10
10
  basename(path: string, suffix?: string): string;
11
11
  extname(path: string): string;
12
- sep: "\\" | "/";
13
- delimiter: ";" | ":";
14
12
  parse(path: string): path.ParsedPath;
15
13
  format(pathObject: path.FormatInputPathObject): string;
16
14
  toNamespacedPath(path: string): string;
17
- posix: path.PlatformPath;
18
- win32: path.PlatformPath;
15
+ sep: "\\" | "/";
16
+ delimiter: ";" | ":";
17
+ posix: typeof path;
18
+ win32: typeof path;
19
19
  };
20
20
  export default windowsSafePath;
@@ -4,4 +4,4 @@ export default function sspawn(command: string, opts?: SpawnOptions & {
4
4
  }): Promise<unknown>;
5
5
  export declare function ssspawn(command: string, opts?: SpawnOptions & {
6
6
  onStdout?: (str: string) => void;
7
- }): import("child_process").ChildProcess;
7
+ }): import("node:child_process").ChildProcess;
@@ -74,7 +74,7 @@ export type OpenapiSchemaObjectBase = CommonOpenapiSchemaObjectFields<{
74
74
  minProperties?: number;
75
75
  maxProperties?: number;
76
76
  properties?: OpenapiSchemaProperties | OpenapiSchemaExpressionOneOf | OpenapiSchemaExpressionAnyOf | OpenapiSchemaExpressionAllOf;
77
- additionalProperties?: OpenapiSchemaObject | OpenapiSchemaExpressionOneOf | OpenapiSchemaExpressionAnyOf | OpenapiSchemaExpressionAllOf;
77
+ additionalProperties?: OpenapiSchemaObject | OpenapiSchemaExpressionOneOf | OpenapiSchemaExpressionAnyOf | OpenapiSchemaExpressionAllOf | false;
78
78
  }>;
79
79
  export type OpenapiSchemaObjectOneOf = CommonOpenapiSchemaObjectFields<{
80
80
  oneOf?: OpenapiSchemaBody[];
@@ -90,7 +90,7 @@ export type OpenapiSchemaObjectBaseShorthand = CommonOpenapiSchemaObjectFields<{
90
90
  minProperties?: number;
91
91
  maxProperties?: number;
92
92
  properties?: OpenapiSchemaPropertiesShorthand | OpenapiSchemaShorthandExpressionOneOf | OpenapiSchemaShorthandExpressionAnyOf | OpenapiSchemaShorthandExpressionAllOf | OpenapiSchemaShorthandExpressionSerializerRef | OpenapiSchemaShorthandExpressionSerializableRef;
93
- additionalProperties?: OpenapiShorthandPrimitiveTypes | OpenapiSchemaBodyShorthand | OpenapiSchemaShorthandExpressionOneOf | OpenapiSchemaShorthandExpressionAnyOf | OpenapiSchemaShorthandExpressionAllOf | OpenapiSchemaShorthandExpressionSerializerRef | OpenapiSchemaShorthandExpressionSerializableRef;
93
+ additionalProperties?: OpenapiShorthandPrimitiveTypes | OpenapiSchemaBodyShorthand | OpenapiSchemaShorthandExpressionOneOf | OpenapiSchemaShorthandExpressionAnyOf | OpenapiSchemaShorthandExpressionAllOf | OpenapiSchemaShorthandExpressionSerializerRef | OpenapiSchemaShorthandExpressionSerializableRef | false;
94
94
  }>;
95
95
  export type OpenapiSchemaObjectOneOfShorthand = CommonOpenapiSchemaObjectFields<{
96
96
  oneOf?: OpenapiSchemaBodyShorthand[];
@@ -131,6 +131,7 @@ export type OpenapiSchemaObjectBase = CommonOpenapiSchemaObjectFields<{
131
131
  | OpenapiSchemaExpressionOneOf
132
132
  | OpenapiSchemaExpressionAnyOf
133
133
  | OpenapiSchemaExpressionAllOf
134
+ | false
134
135
  }>
135
136
 
136
137
  export type OpenapiSchemaObjectOneOf = CommonOpenapiSchemaObjectFields<{
@@ -169,6 +170,7 @@ export type OpenapiSchemaObjectBaseShorthand = CommonOpenapiSchemaObjectFields<{
169
170
  | OpenapiSchemaShorthandExpressionAllOf
170
171
  | OpenapiSchemaShorthandExpressionSerializerRef
171
172
  | OpenapiSchemaShorthandExpressionSerializableRef
173
+ | false
172
174
  }>
173
175
 
174
176
  export type OpenapiSchemaObjectOneOfShorthand = CommonOpenapiSchemaObjectFields<{
@@ -0,0 +1 @@
1
+ window.hierarchyData = "eJyVks1uAiEURt/lrtE6P+LIspomTVPbJk27MC5w5tohMmCAsZkY372hbqi1HdwAIffjHOAewGjtLLBlQtOcTEcrAgY3EksntLLADjAd+VHxBoHBS4ummxuxR3PLLQKBrVAVsCQtCLRGAoNScmvR3lTr4Vn1sHaNBHKqAAbOVgMfH5w2CJS1kJVBBWyZZpPVkUCaTQL6Q2dRdsGpPfxf9dcYJBktvIKfA4dnbd2HQRtvcSHR4+Gp4yKkzmostzOtrDNcKPcmtOT+h/5DozHa2OFf0QgHOqKhg5Zto572aDZSf8aQfwRieGke8Obc8XtV6mbHnVhLfBeu9ntrbvFOoKwiFHrPuKojxkVB/KOQhOYZSShNvhuE5tmZ9mu3w9Pt/epR2Ia7so70vRyOeT6aBB4L7RatlNe0ynmkj3k8fgGG6267"