@opra/common 1.28.2 → 1.28.4

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.
@@ -114,7 +114,7 @@ class ApiFieldClass extends DocumentElement {
114
114
  }
115
115
  generateCodec(codec, options, properties) {
116
116
  if (this.fixed)
117
- return vg.isEqual(this.fixed);
117
+ return vg.fixed(this.fixed);
118
118
  let fn = this.type?.generateCodec(codec, options, {
119
119
  ...properties,
120
120
  designType: this.designType,
@@ -297,7 +297,9 @@ class ComplexTypeBaseClass extends DataType {
297
297
  fn = cacheItem[cacheKey];
298
298
  schema[fieldName] =
299
299
  context.partial || !field.required
300
- ? vg.optional(fn)
300
+ ? context.allowNullOptionals
301
+ ? vg.nullable(fn)
302
+ : vg.optional(fn)
301
303
  : vg.required(fn);
302
304
  });
303
305
  }
@@ -321,7 +323,9 @@ class ComplexTypeBaseClass extends DataType {
321
323
  }
322
324
  schema[fieldName] =
323
325
  context.partial || !(field.required || fn.id === 'required')
324
- ? vg.optional(fn)
326
+ ? context.allowNullOptionals
327
+ ? vg.nullable(fn)
328
+ : vg.optional(fn)
325
329
  : fn.id === 'required'
326
330
  ? fn
327
331
  : vg.required(fn);
@@ -31,6 +31,7 @@ export declare namespace DataType {
31
31
  ignoreReadonlyFields?: boolean;
32
32
  ignoreWriteonlyFields?: boolean;
33
33
  allowPatchOperators?: boolean;
34
+ allowNullOptionals?: boolean;
34
35
  fieldHook?: (field: ApiField, currentPath: string, defaultGenerator: () => Validator) => Validator;
35
36
  }
36
37
  }
@@ -23,6 +23,7 @@ HttpOperation.Entity.UpdateMany = function (arg0, arg1) {
23
23
  immediateFetch: true,
24
24
  partial: 'deep',
25
25
  allowPatchOperators: true,
26
+ allowNullOptionals: true,
26
27
  keepKeyFields: true,
27
28
  ...args.requestBody,
28
29
  required: true,
@@ -24,6 +24,7 @@ HttpOperation.Entity.Update = function (arg0, arg1) {
24
24
  partial: 'deep',
25
25
  immediateFetch: true,
26
26
  allowPatchOperators: true,
27
+ allowNullOptionals: true,
27
28
  keepKeyFields: true,
28
29
  ...args.requestBody,
29
30
  required: true,
@@ -96,6 +96,7 @@ declare module '../http/http-operation.js' {
96
96
  type?: Type | string;
97
97
  immediateFetch?: boolean;
98
98
  allowPatchOperators?: boolean;
99
+ allowNullOptionals?: boolean;
99
100
  };
100
101
  }
101
102
  interface UpdateManyDecorator extends HttpOperationDecorator {
@@ -108,6 +109,7 @@ declare module '../http/http-operation.js' {
108
109
  type?: Type | string;
109
110
  immediateFetch?: boolean;
110
111
  allowPatchOperators?: boolean;
112
+ allowNullOptionals?: boolean;
111
113
  };
112
114
  }
113
115
  }
@@ -283,6 +283,7 @@ export class HttpApiFactory {
283
283
  target.immediateFetch = metadata.immediateFetch;
284
284
  target.partial = metadata.partial;
285
285
  target.allowPatchOperators = metadata.allowPatchOperators;
286
+ target.allowNullOptionals = metadata.allowNullOptionals;
286
287
  target.keepKeyFields = metadata.keepKeyFields;
287
288
  if (metadata.content) {
288
289
  await context.enterAsync('.content', async () => {
@@ -21,14 +21,15 @@ export declare namespace HttpOperation {
21
21
  requestBody?: HttpRequestBody.Metadata;
22
22
  immediateFetch?: boolean;
23
23
  allowPatchOperators?: boolean;
24
+ allowNullOptionals?: boolean;
24
25
  }
25
- interface Options extends Partial<Pick<Metadata, 'path' | 'mergePath' | 'description' | 'method' | 'immediateFetch' | 'allowPatchOperators'>> {
26
+ interface Options extends Partial<Pick<Metadata, 'path' | 'mergePath' | 'description' | 'method' | 'immediateFetch' | 'allowPatchOperators' | 'allowNullOptionals'>> {
26
27
  requestBody?: HttpRequestBody.Options;
27
28
  }
28
29
  interface InitArguments extends Combine<{
29
30
  name: string;
30
31
  types?: DataType[];
31
- }, Pick<Metadata, 'description' | 'method' | 'path' | 'mergePath' | 'composition' | 'compositionOptions' | 'immediateFetch' | 'allowPatchOperators'>> {
32
+ }, Pick<Metadata, 'description' | 'method' | 'path' | 'mergePath' | 'composition' | 'compositionOptions' | 'immediateFetch' | 'allowPatchOperators' | 'allowNullOptionals'>> {
32
33
  }
33
34
  }
34
35
  /**
@@ -12,11 +12,13 @@ export declare namespace HttpRequestBody {
12
12
  content: HttpMediaType.Metadata[];
13
13
  immediateFetch?: boolean;
14
14
  allowPatchOperators?: boolean;
15
+ allowNullOptionals?: boolean;
15
16
  keepKeyFields?: boolean;
16
17
  }
17
18
  interface Options extends Partial<StrictOmit<OpraSchema.HttpRequestBody, 'content'>> {
18
19
  immediateFetch?: boolean;
19
20
  allowPatchOperators?: boolean;
21
+ allowNullOptionals?: boolean;
20
22
  keepKeyFields?: boolean;
21
23
  }
22
24
  }
@@ -33,6 +35,7 @@ export declare class HttpRequestBody extends DocumentElement {
33
35
  partial?: boolean | 'deep';
34
36
  allowPatchOperators?: boolean;
35
37
  keepKeyFields?: boolean;
38
+ allowNullOptionals?: boolean;
36
39
  constructor(owner: HttpOperation);
37
40
  toJSON(options?: ApiDocument.ExportOptions): OpraSchema.HttpRequestBody;
38
41
  }
@@ -14,6 +14,7 @@ export class HttpRequestBody extends DocumentElement {
14
14
  partial;
15
15
  allowPatchOperators;
16
16
  keepKeyFields;
17
+ allowNullOptionals;
17
18
  constructor(owner) {
18
19
  super(owner);
19
20
  }
@@ -27,6 +28,7 @@ export class HttpRequestBody extends DocumentElement {
27
28
  : [],
28
29
  partial: this.partial,
29
30
  allowPatchOperators: this.allowPatchOperators,
31
+ allowNullOptionals: this.allowNullOptionals,
30
32
  });
31
33
  }
32
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opra/common",
3
- "version": "1.28.2",
3
+ "version": "1.28.4",
4
4
  "description": "Opra common package",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
@@ -10,7 +10,7 @@
10
10
  "@browsery/http-parser": "^0.5.10-r3",
11
11
  "@browsery/i18next": "^25.6.0",
12
12
  "@browsery/type-is": "^2.0.2-r1",
13
- "@jsopen/objects": "^2.2.1",
13
+ "@jsopen/objects": "^2.2.2",
14
14
  "fast-tokenizer": "^1.9.0",
15
15
  "object-hash": "^3.0.0",
16
16
  "putil-promisify": "^1.10.1",
@@ -19,7 +19,7 @@
19
19
  "super-fast-md5": "^1.0.3",
20
20
  "tslib": "^2.8.1",
21
21
  "uid": "^2.0.2",
22
- "valgen": "^6.1.0"
22
+ "valgen": "^6.2.0"
23
23
  },
24
24
  "type": "module",
25
25
  "module": "./index.js",
@@ -30,4 +30,8 @@ export interface HttpRequestBody {
30
30
  *
31
31
  */
32
32
  allowPatchOperators?: boolean;
33
+ /**
34
+ * Determines if optional fields can be null
35
+ */
36
+ allowNullOptionals?: boolean;
33
37
  }