@sprucelabs/schema 32.1.0 → 32.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,5 +7,6 @@ export default class FileField extends AbstractField<FileFieldDefinition> {
7
7
  static readonly description = "A way to handle files. Supports mime-type lookups.";
8
8
  static generateTemplateDetails(options: FieldTemplateDetailOptions<FileFieldDefinition>): FieldTemplateDetails;
9
9
  validate(value: FileFieldValue, _?: ValidateOptions<FileFieldDefinition>): FieldError[];
10
+ private isValidType;
10
11
  toValueType<C extends boolean>(value: any, _options?: ToValueTypeOptions<FileFieldDefinition, C>): FileFieldValue;
11
12
  }
@@ -11,8 +11,8 @@ class FileField extends AbstractField {
11
11
  const acceptableTypes = (_b = (_a = this.definition.options) === null || _a === void 0 ? void 0 : _a.acceptableTypes) !== null && _b !== void 0 ? _b : [];
12
12
  if (value &&
13
13
  !value.base64 &&
14
- acceptableTypes[0] !== '*' &&
15
- acceptableTypes.indexOf(value.type) === -1) {
14
+ value.type &&
15
+ !this.isValidType(value.type)) {
16
16
  errors.push({
17
17
  code: 'INVALID_PARAMETER',
18
18
  name: this.name,
@@ -21,6 +21,15 @@ class FileField extends AbstractField {
21
21
  }
22
22
  return errors;
23
23
  }
24
+ isValidType(type) {
25
+ var _a, _b;
26
+ const types = (_b = (_a = this.definition.options) === null || _a === void 0 ? void 0 : _a.acceptableTypes) !== null && _b !== void 0 ? _b : [];
27
+ const typeParts = type.split('/');
28
+ const typeStarred = `${typeParts[0]}/*`;
29
+ return (types[0] === '*' ||
30
+ types.indexOf(type) !== -1 ||
31
+ types.indexOf(typeStarred) !== -1);
32
+ }
24
33
  toValueType(value, _options) {
25
34
  return value;
26
35
  }
@@ -3,6 +3,7 @@ export declare const supportedFileTypes: readonly ["image/png", "image/svg+xml",
3
3
  export type SupportedFileType = (typeof supportedFileTypes)[number];
4
4
  export interface FileFieldValue {
5
5
  name: string;
6
+ id?: string;
6
7
  type?: SupportedFileType;
7
8
  uri?: string;
8
9
  base64?: string;
@@ -11,6 +11,7 @@ export declare const requiredImageSizes: readonly ["s", "m", "l", "xl", "*"];
11
11
  export type RequiredImageSize = (typeof requiredImageSizes)[number];
12
12
  export interface ImageFieldValue {
13
13
  name: string;
14
+ id?: string;
14
15
  base64?: string;
15
16
  type?: SupportedFileType;
16
17
  sUri?: string;
@@ -7,5 +7,6 @@ export default class FileField extends AbstractField<FileFieldDefinition> {
7
7
  static readonly description = "A way to handle files. Supports mime-type lookups.";
8
8
  static generateTemplateDetails(options: FieldTemplateDetailOptions<FileFieldDefinition>): FieldTemplateDetails;
9
9
  validate(value: FileFieldValue, _?: ValidateOptions<FileFieldDefinition>): FieldError[];
10
+ private isValidType;
10
11
  toValueType<C extends boolean>(value: any, _options?: ToValueTypeOptions<FileFieldDefinition, C>): FileFieldValue;
11
12
  }
@@ -15,8 +15,8 @@ class FileField extends AbstractField_1.default {
15
15
  const acceptableTypes = this.definition.options?.acceptableTypes ?? [];
16
16
  if (value &&
17
17
  !value.base64 &&
18
- acceptableTypes[0] !== '*' &&
19
- acceptableTypes.indexOf(value.type) === -1) {
18
+ value.type &&
19
+ !this.isValidType(value.type)) {
20
20
  errors.push({
21
21
  code: 'INVALID_PARAMETER',
22
22
  name: this.name,
@@ -25,6 +25,14 @@ class FileField extends AbstractField_1.default {
25
25
  }
26
26
  return errors;
27
27
  }
28
+ isValidType(type) {
29
+ const types = this.definition.options?.acceptableTypes ?? [];
30
+ const typeParts = type.split('/');
31
+ const typeStarred = `${typeParts[0]}/*`;
32
+ return (types[0] === '*' ||
33
+ types.indexOf(type) !== -1 ||
34
+ types.indexOf(typeStarred) !== -1);
35
+ }
28
36
  toValueType(value, _options) {
29
37
  return value;
30
38
  }
@@ -3,6 +3,7 @@ export declare const supportedFileTypes: readonly ["image/png", "image/svg+xml",
3
3
  export type SupportedFileType = (typeof supportedFileTypes)[number];
4
4
  export interface FileFieldValue {
5
5
  name: string;
6
+ id?: string;
6
7
  type?: SupportedFileType;
7
8
  uri?: string;
8
9
  base64?: string;
@@ -11,6 +11,7 @@ export declare const requiredImageSizes: readonly ["s", "m", "l", "xl", "*"];
11
11
  export type RequiredImageSize = (typeof requiredImageSizes)[number];
12
12
  export interface ImageFieldValue {
13
13
  name: string;
14
+ id?: string;
14
15
  base64?: string;
15
16
  type?: SupportedFileType;
16
17
  sUri?: string;
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "!build/__tests__",
9
9
  "esm"
10
10
  ],
11
- "version": "32.1.0",
11
+ "version": "32.1.2",
12
12
  "main": "./build/index.js",
13
13
  "types": "./build/index.d.ts",
14
14
  "module": "./build/esm/index.js",
@@ -59,14 +59,14 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@sprucelabs/error": "^7.0.29",
62
- "@sprucelabs/test-utils": "^6.0.44",
62
+ "@sprucelabs/test-utils": "^6.0.45",
63
63
  "email-validator": "^2.0.4",
64
64
  "just-safe-get": "^4.2.0",
65
65
  "just-safe-set": "^4.2.1"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@sprucelabs/esm-postbuild": "^7.0.19",
69
- "@sprucelabs/jest-json-reporter": "^9.0.30",
69
+ "@sprucelabs/jest-json-reporter": "^9.0.31",
70
70
  "@sprucelabs/resolve-path-aliases": "^3.0.16",
71
71
  "@sprucelabs/semantic-release": "^5.0.2",
72
72
  "@sprucelabs/test": "^10.0.13",