@expo/schemer 2.2.2-canary-20260624-9d83b81 → 2.3.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.
package/build/Error.js CHANGED
@@ -1,45 +1,23 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- 0 && (module.exports = {
6
- ErrorCodes: null,
7
- SchemerError: null,
8
- ValidationError: null
9
- });
10
- function _export(target, all) {
11
- for(var name in all)Object.defineProperty(target, name, {
12
- enumerable: true,
13
- get: Object.getOwnPropertyDescriptor(all, name).get
14
- });
15
- }
16
- _export(exports, {
17
- get ErrorCodes () {
18
- return ErrorCodes;
19
- },
20
- get SchemerError () {
21
- return SchemerError;
22
- },
23
- get ValidationError () {
24
- return ValidationError;
25
- }
26
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorCodes = exports.ValidationError = exports.SchemerError = void 0;
27
4
  class SchemerError extends Error {
28
5
  name = 'SchemerError';
29
6
  errors;
30
- constructor(errors){
7
+ constructor(errors) {
31
8
  super('');
32
- this.message = errors.map((error)=>error.message).join('\n');
9
+ this.message = errors.map((error) => error.message).join('\n');
33
10
  this.errors = errors;
34
11
  }
35
12
  }
13
+ exports.SchemerError = SchemerError;
36
14
  class ValidationError extends Error {
37
15
  name = 'ValidationError';
38
16
  errorCode;
39
17
  fieldPath;
40
18
  data;
41
19
  meta;
42
- constructor({ errorCode, fieldPath, message, data, meta }){
20
+ constructor({ errorCode, fieldPath, message, data, meta, }) {
43
21
  super(message);
44
22
  this.errorCode = errorCode;
45
23
  this.fieldPath = fieldPath;
@@ -47,7 +25,8 @@ class ValidationError extends Error {
47
25
  this.meta = meta;
48
26
  }
49
27
  }
50
- const ErrorCodes = {
28
+ exports.ValidationError = ValidationError;
29
+ exports.ErrorCodes = {
51
30
  SCHEMA_VALIDATION_ERROR: 'SCHEMA_VALIDATION_ERROR',
52
31
  SCHEMA_ADDITIONAL_PROPERTY: 'SCHEMA_ADDITIONAL_PROPERTY',
53
32
  SCHEMA_MISSING_REQUIRED_PROPERTY: 'SCHEMA_MISSING_REQUIRED_PROPERTY',
@@ -57,7 +36,6 @@ const ErrorCodes = {
57
36
  INVALID_DIMENSIONS: 'INVALID_DIMENSIONS',
58
37
  INVALID_CONTENT_TYPE: 'INVALID_CONTENT_TYPE',
59
38
  NOT_SQUARE: 'NOT_SQUARE',
60
- FILE_EXTENSION_MISMATCH: 'FILE_EXTENSION_MISMATCH'
39
+ FILE_EXTENSION_MISMATCH: 'FILE_EXTENSION_MISMATCH',
61
40
  };
62
-
63
- //# sourceMappingURL=Error.js.map
41
+ //# sourceMappingURL=Error.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["Error.ts"],"sourcesContent":[null],"names":["ErrorCodes","SchemerError","ValidationError","Error","name","errors","message","map","error","join","errorCode","fieldPath","data","meta","SCHEMA_VALIDATION_ERROR","SCHEMA_ADDITIONAL_PROPERTY","SCHEMA_MISSING_REQUIRED_PROPERTY","SCHEMA_INVALID_PATTERN","SCHEMA_INVALID_NOT","INVALID_ASSET_URI","INVALID_DIMENSIONS","INVALID_CONTENT_TYPE","NOT_SQUARE","FILE_EXTENSION_MISMATCH"],"mappings":";;;;;;;;;;;;;;;;QAwCaA;eAAAA;;QAxCAC;eAAAA;;QAWAC;eAAAA;;;AAXN,MAAMD,qBAAqBE;IACvBC,OAAO,eAAe;IAC/BC,OAA0B;IAE1B,YAAYA,MAAyB,CAAE;QACrC,KAAK,CAAC;QACN,IAAI,CAACC,OAAO,GAAGD,OAAOE,GAAG,CAAC,CAACC,QAAUA,MAAMF,OAAO,EAAEG,IAAI,CAAC;QACzD,IAAI,CAACJ,MAAM,GAAGA;IAChB;AACF;AAEO,MAAMH,wBAAwBC;IAC1BC,OAAO,kBAAkB;IAClCM,UAAkB;IAClBC,UAAkB;IAClBC,KAAU;IACVC,KAAU;IACV,YAAY,EACVH,SAAS,EACTC,SAAS,EACTL,OAAO,EACPM,IAAI,EACJC,IAAI,EAOL,CAAE;QACD,KAAK,CAACP;QACN,IAAI,CAACI,SAAS,GAAGA;QACjB,IAAI,CAACC,SAAS,GAAGA;QACjB,IAAI,CAACC,IAAI,GAAGA;QACZ,IAAI,CAACC,IAAI,GAAGA;IACd;AACF;AAIO,MAAMb,aAAa;IACxBc,yBAAyB;IACzBC,4BAA4B;IAC5BC,kCAAkC;IAClCC,wBAAwB;IACxBC,oBAAoB;IAEpBC,mBAAmB;IACnBC,oBAAoB;IACpBC,sBAAsB;IACtBC,YAAY;IACZC,yBAAyB;AAC3B"}
1
+ {"version":3,"file":"Error.js","sourceRoot":"","sources":["../src/Error.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IAC5B,IAAI,GAAG,cAAc,CAAC;IAC/B,MAAM,CAAoB;IAE1B,YAAY,MAAyB;QACnC,KAAK,CAAC,EAAE,CAAC,CAAC;QACV,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AATD,oCASC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IAClC,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,IAAI,CAAM;IACV,IAAI,CAAM;IACV,YAAY,EACV,SAAS,EACT,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,GAOL;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAzBD,0CAyBC;AAIY,QAAA,UAAU,GAAG;IACxB,uBAAuB,EAAE,yBAAyB;IAClD,0BAA0B,EAAE,4BAA4B;IACxD,gCAAgC,EAAE,kCAAkC;IACpE,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IAExC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,oBAAoB,EAAE,sBAAsB;IAC5C,UAAU,EAAE,YAAY;IACxB,uBAAuB,EAAE,yBAAyB;CACnD,CAAC"}
package/build/Util.js CHANGED
@@ -1,46 +1,27 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- 0 && (module.exports = {
6
- fieldPathToSchema: null,
7
- fieldPathToSchemaPath: null,
8
- get: null,
9
- pathToSegments: null,
10
- schemaPointerToFieldPath: null
11
- });
12
- function _export(target, all) {
13
- for(var name in all)Object.defineProperty(target, name, {
14
- enumerable: true,
15
- get: Object.getOwnPropertyDescriptor(all, name).get
16
- });
17
- }
18
- _export(exports, {
19
- get fieldPathToSchema () {
20
- return fieldPathToSchema;
21
- },
22
- get fieldPathToSchemaPath () {
23
- return fieldPathToSchemaPath;
24
- },
25
- get get () {
26
- return get;
27
- },
28
- get pathToSegments () {
29
- return pathToSegments;
30
- },
31
- get schemaPointerToFieldPath () {
32
- return schemaPointerToFieldPath;
33
- }
34
- });
35
- const fieldPathToSchemaPath = (fieldPath)=>{
36
- return pathToSegments(fieldPath).map((segment)=>`properties.${segment}`).join('.');
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fieldPathToSchema = exports.schemaPointerToFieldPath = exports.fieldPathToSchemaPath = void 0;
4
+ exports.pathToSegments = pathToSegments;
5
+ exports.get = get;
6
+ const fieldPathToSchemaPath = (fieldPath) => {
7
+ return pathToSegments(fieldPath)
8
+ .map((segment) => `properties.${segment}`)
9
+ .join('.');
37
10
  };
38
- const schemaPointerToFieldPath = (jsonPointer)=>{
39
- return jsonPointer.split('/').slice(2).filter((error)=>error !== 'properties').join('.');
11
+ exports.fieldPathToSchemaPath = fieldPathToSchemaPath;
12
+ // Assumption: used only for jsonPointer returned from traverse
13
+ const schemaPointerToFieldPath = (jsonPointer) => {
14
+ return jsonPointer
15
+ .split('/')
16
+ .slice(2)
17
+ .filter((error) => error !== 'properties')
18
+ .join('.');
40
19
  };
41
- const fieldPathToSchema = (schema, fieldPath)=>{
42
- return get(schema, fieldPathToSchemaPath(fieldPath));
20
+ exports.schemaPointerToFieldPath = schemaPointerToFieldPath;
21
+ const fieldPathToSchema = (schema, fieldPath) => {
22
+ return get(schema, (0, exports.fieldPathToSchemaPath)(fieldPath));
43
23
  };
24
+ exports.fieldPathToSchema = fieldPathToSchema;
44
25
  function pathToSegments(path) {
45
26
  return Array.isArray(path) ? path : path.split('.');
46
27
  }
@@ -48,10 +29,9 @@ function get(object, path) {
48
29
  const segments = pathToSegments(path);
49
30
  const length = segments.length;
50
31
  let index = 0;
51
- while(object != null && index < length){
32
+ while (object != null && index < length) {
52
33
  object = object[segments[index++]];
53
34
  }
54
35
  return index && index === length ? object : undefined;
55
36
  }
56
-
57
- //# sourceMappingURL=Util.js.map
37
+ //# sourceMappingURL=Util.js.map
package/build/Util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["Util.ts"],"sourcesContent":[null],"names":["fieldPathToSchema","fieldPathToSchemaPath","get","pathToSegments","schemaPointerToFieldPath","fieldPath","map","segment","join","jsonPointer","split","slice","filter","error","schema","path","Array","isArray","object","segments","length","index","undefined"],"mappings":";;;;;;;;;;;;;;;;;;QAcaA;eAAAA;;QAdAC;eAAAA;;QAsBGC;eAAAA;;QAJAC;eAAAA;;QAZHC;eAAAA;;;AANN,MAAMH,wBAAwB,CAACI;IACpC,OAAOF,eAAeE,WACnBC,GAAG,CAAC,CAACC,UAAY,CAAC,WAAW,EAAEA,SAAS,EACxCC,IAAI,CAAC;AACV;AAEO,MAAMJ,2BAA2B,CAACK;IACvC,OAAOA,YACJC,KAAK,CAAC,KACNC,KAAK,CAAC,GACNC,MAAM,CAAC,CAACC,QAAUA,UAAU,cAC5BL,IAAI,CAAC;AACV;AAEO,MAAMR,oBAAoB,CAACc,QAAgBT;IAChD,OAAOH,IAAIY,QAAQb,sBAAsBI;AAC3C;AAEO,SAASF,eAAeY,IAAuB;IACpD,OAAOC,MAAMC,OAAO,CAACF,QAAQA,OAAOA,KAAKL,KAAK,CAAC;AACjD;AAEO,SAASR,IAAIgB,MAAW,EAAEH,IAAuB;IACtD,MAAMI,WAAWhB,eAAeY;IAChC,MAAMK,SAASD,SAASC,MAAM;IAC9B,IAAIC,QAAQ;IAEZ,MAAOH,UAAU,QAAQG,QAAQD,OAAQ;QACvCF,SAASA,MAAM,CAACC,QAAQ,CAACE,QAAQ,CAAE;IACrC;IAEA,OAAOA,SAASA,UAAUD,SAASF,SAASI;AAC9C"}
1
+ {"version":3,"file":"Util.js","sourceRoot":"","sources":["../src/Util.ts"],"names":[],"mappings":";;;AAkBA,wCAEC;AAED,kBAUC;AAhCM,MAAM,qBAAqB,GAAG,CAAC,SAAiB,EAAE,EAAE;IACzD,OAAO,cAAc,CAAC,SAAS,CAAC;SAC7B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,OAAO,EAAE,CAAC;SACzC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,qBAAqB,yBAIhC;AACF,+DAA+D;AACxD,MAAM,wBAAwB,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC9D,OAAO,WAAW;SACf,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,CAAC;SACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC;SACzC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAE;IACrE,OAAO,GAAG,CAAC,MAAM,EAAE,IAAA,6BAAqB,EAAC,SAAS,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEF,SAAgB,cAAc,CAAC,IAAuB;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,GAAG,CAAC,MAAW,EAAE,IAAuB;IACtD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,MAAM,IAAI,IAAI,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QACxC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
package/build/index.js CHANGED
@@ -1,85 +1,24 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- 0 && (module.exports = {
6
- ErrorCodes: null,
7
- SchemerError: null,
8
- ValidationError: null,
9
- default: null
10
- });
11
- function _export(target, all) {
12
- for(var name in all)Object.defineProperty(target, name, {
13
- enumerable: true,
14
- get: Object.getOwnPropertyDescriptor(all, name).get
15
- });
16
- }
17
- _export(exports, {
18
- get ErrorCodes () {
19
- return _Error.ErrorCodes;
20
- },
21
- get SchemerError () {
22
- return _Error.SchemerError;
23
- },
24
- get ValidationError () {
25
- return _Error.ValidationError;
26
- },
27
- get default () {
28
- return Schemer;
29
- }
30
- });
31
- function _ajv() {
32
- const data = /*#__PURE__*/ _interop_require_default(require("ajv"));
33
- _ajv = function() {
34
- return data;
35
- };
36
- return data;
37
- }
38
- function _ajvformats() {
39
- const data = /*#__PURE__*/ _interop_require_default(require("ajv-formats"));
40
- _ajvformats = function() {
41
- return data;
42
- };
43
- return data;
44
- }
45
- function _fs() {
46
- const data = /*#__PURE__*/ _interop_require_default(require("fs"));
47
- _fs = function() {
48
- return data;
49
- };
50
- return data;
51
- }
52
- function _jsonschematraverse() {
53
- const data = /*#__PURE__*/ _interop_require_default(require("json-schema-traverse"));
54
- _jsonschematraverse = function() {
55
- return data;
56
- };
57
- return data;
58
- }
59
- function _path() {
60
- const data = /*#__PURE__*/ _interop_require_default(require("path"));
61
- _path = function() {
62
- return data;
63
- };
64
- return data;
65
- }
66
- function _probeimagesize() {
67
- const data = /*#__PURE__*/ _interop_require_default(require("probe-image-size"));
68
- _probeimagesize = function() {
69
- return data;
70
- };
71
- return data;
72
- }
73
- const _Error = require("./Error");
74
- const _Util = require("./Util");
75
- function _interop_require_default(obj) {
76
- return obj && obj.__esModule ? obj : {
77
- default: obj
78
- };
79
- }
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ErrorCodes = exports.ValidationError = exports.SchemerError = void 0;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const ajv_formats_1 = __importDefault(require("ajv-formats"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const json_schema_traverse_1 = __importDefault(require("json-schema-traverse"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const probe_image_size_1 = __importDefault(require("probe-image-size"));
13
+ const Error_1 = require("./Error");
14
+ const Util_1 = require("./Util");
80
15
  function lowerFirst(str) {
81
16
  return str.charAt(0).toLowerCase() + str.slice(1);
82
17
  }
18
+ var Error_2 = require("./Error");
19
+ Object.defineProperty(exports, "SchemerError", { enumerable: true, get: function () { return Error_2.SchemerError; } });
20
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return Error_2.ValidationError; } });
21
+ Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return Error_2.ErrorCodes; } });
83
22
  class Schemer {
84
23
  options;
85
24
  ajv;
@@ -87,78 +26,77 @@ class Schemer {
87
26
  rootDir;
88
27
  manualValidationErrors;
89
28
  // Schema is a JSON Schema object
90
- constructor(schema, options = {}){
29
+ constructor(schema, options = {}) {
91
30
  this.options = {
92
31
  allErrors: true,
93
32
  verbose: true,
94
33
  meta: true,
95
34
  strict: false,
96
35
  unicodeRegExp: false,
97
- ...options
36
+ ...options,
98
37
  };
99
- this.ajv = new (_ajv()).default(this.options);
100
- (0, _ajvformats().default)(this.ajv, {
101
- mode: 'full'
102
- });
38
+ this.ajv = new ajv_1.default(this.options);
39
+ (0, ajv_formats_1.default)(this.ajv, { mode: 'full' });
103
40
  this.schema = schema;
104
41
  this.rootDir = this.options.rootDir || __dirname;
105
42
  this.manualValidationErrors = [];
106
43
  }
107
- _formatAjvErrorMessage({ keyword, instancePath, params, parentSchema, data, message }) {
44
+ _formatAjvErrorMessage({ keyword, instancePath, params, parentSchema, data, message, }) {
108
45
  const meta = parentSchema && parentSchema.meta;
109
46
  // This removes the "." in front of a fieldPath
110
47
  instancePath = instancePath.slice(1);
111
- switch(keyword){
112
- case 'additionalProperties':
113
- {
114
- return new _Error.ValidationError({
115
- errorCode: 'SCHEMA_ADDITIONAL_PROPERTY',
116
- fieldPath: instancePath,
117
- message: `should NOT have additional property '${params.additionalProperty}'`,
118
- data,
119
- meta
120
- });
121
- }
48
+ switch (keyword) {
49
+ case 'additionalProperties': {
50
+ return new Error_1.ValidationError({
51
+ errorCode: 'SCHEMA_ADDITIONAL_PROPERTY',
52
+ fieldPath: instancePath,
53
+ message: `should NOT have additional property '${params.additionalProperty}'`,
54
+ data,
55
+ meta,
56
+ });
57
+ }
122
58
  case 'required':
123
- return new _Error.ValidationError({
59
+ return new Error_1.ValidationError({
124
60
  errorCode: 'SCHEMA_MISSING_REQUIRED_PROPERTY',
125
61
  fieldPath: instancePath,
126
62
  message: `is missing required property '${params.missingProperty}'`,
127
63
  data,
128
- meta
64
+ meta,
129
65
  });
130
- case 'pattern':
131
- {
132
- //@TODO Parse the message in a less hacky way. Perhaps for regex validation errors, embed the error message under the meta tag?
133
- const regexHuman = meta?.regexHuman;
134
- const regexErrorMessage = regexHuman ? `'${instancePath}' should be a ${regexHuman[0].toLowerCase() + regexHuman.slice(1)}` : `'${instancePath}' ${message}`;
135
- return new _Error.ValidationError({
136
- errorCode: 'SCHEMA_INVALID_PATTERN',
137
- fieldPath: instancePath,
138
- message: regexErrorMessage,
139
- data,
140
- meta
141
- });
142
- }
143
- case 'not':
144
- {
145
- const notHuman = meta?.notHuman;
146
- const notHumanErrorMessage = notHuman ? `'${instancePath}' should be ${notHuman[0].toLowerCase() + notHuman.slice(1)}` : `'${instancePath}' ${message}`;
147
- return new _Error.ValidationError({
148
- errorCode: 'SCHEMA_INVALID_NOT',
149
- fieldPath: instancePath,
150
- message: notHumanErrorMessage,
151
- data,
152
- meta
153
- });
154
- }
66
+ case 'pattern': {
67
+ //@TODO Parse the message in a less hacky way. Perhaps for regex validation errors, embed the error message under the meta tag?
68
+ const regexHuman = meta?.regexHuman;
69
+ const regexErrorMessage = regexHuman
70
+ ? `'${instancePath}' should be a ${regexHuman[0].toLowerCase() + regexHuman.slice(1)}`
71
+ : `'${instancePath}' ${message}`;
72
+ return new Error_1.ValidationError({
73
+ errorCode: 'SCHEMA_INVALID_PATTERN',
74
+ fieldPath: instancePath,
75
+ message: regexErrorMessage,
76
+ data,
77
+ meta,
78
+ });
79
+ }
80
+ case 'not': {
81
+ const notHuman = meta?.notHuman;
82
+ const notHumanErrorMessage = notHuman
83
+ ? `'${instancePath}' should be ${notHuman[0].toLowerCase() + notHuman.slice(1)}`
84
+ : `'${instancePath}' ${message}`;
85
+ return new Error_1.ValidationError({
86
+ errorCode: 'SCHEMA_INVALID_NOT',
87
+ fieldPath: instancePath,
88
+ message: notHumanErrorMessage,
89
+ data,
90
+ meta,
91
+ });
92
+ }
155
93
  default:
156
- return new _Error.ValidationError({
94
+ return new Error_1.ValidationError({
157
95
  errorCode: 'SCHEMA_VALIDATION_ERROR',
158
96
  fieldPath: instancePath,
159
97
  message: message || 'Validation error',
160
98
  data,
161
- meta
99
+ meta,
162
100
  });
163
101
  }
164
102
  }
@@ -166,12 +104,9 @@ class Schemer {
166
104
  // Convert AJV JSONSchema errors to our ValidationErrors
167
105
  let valErrors = [];
168
106
  if (this.ajv.errors) {
169
- valErrors = this.ajv.errors.map((error)=>this._formatAjvErrorMessage(error));
107
+ valErrors = this.ajv.errors.map((error) => this._formatAjvErrorMessage(error));
170
108
  }
171
- return [
172
- ...valErrors,
173
- ...this.manualValidationErrors
174
- ];
109
+ return [...valErrors, ...this.manualValidationErrors];
175
110
  }
176
111
  _throwOnErrors() {
177
112
  // Clean error state after each validation
@@ -179,7 +114,7 @@ class Schemer {
179
114
  if (errors.length > 0) {
180
115
  this.manualValidationErrors = [];
181
116
  this.ajv.errors = [];
182
- throw new _Error.SchemerError(errors);
117
+ throw new Error_1.SchemerError(errors);
183
118
  }
184
119
  }
185
120
  async validateAll(data) {
@@ -200,15 +135,13 @@ class Schemer {
200
135
  }
201
136
  async _validateAssetsAsync(data) {
202
137
  const assets = [];
203
- (0, _jsonschematraverse().default)(this.schema, {
204
- allKeys: true
205
- }, (subSchema, jsonPointer, a, b, c, d, property)=>{
138
+ (0, json_schema_traverse_1.default)(this.schema, { allKeys: true }, (subSchema, jsonPointer, a, b, c, d, property) => {
206
139
  if (property && subSchema.meta && subSchema.meta.asset) {
207
- const fieldPath = (0, _Util.schemaPointerToFieldPath)(jsonPointer);
140
+ const fieldPath = (0, Util_1.schemaPointerToFieldPath)(jsonPointer);
208
141
  assets.push({
209
142
  fieldPath,
210
- data: (0, _Util.get)(data, lowerFirst(fieldPath)) || (0, _Util.get)(data, fieldPath),
211
- meta: subSchema.meta
143
+ data: (0, Util_1.get)(data, lowerFirst(fieldPath)) || (0, Util_1.get)(data, fieldPath),
144
+ meta: subSchema.meta,
212
145
  });
213
146
  }
214
147
  });
@@ -218,93 +151,97 @@ class Schemer {
218
151
  if (meta && meta.asset && data) {
219
152
  const { dimensions, square, contentTypePattern } = meta;
220
153
  // filePath could be an URL
221
- const filePath = _path().default.resolve(this.rootDir, data);
154
+ const filePath = path_1.default.resolve(this.rootDir, data);
222
155
  try {
223
156
  // This cases on whether filePath is a remote URL or located on the machine
224
- const isLocalFile = _fs().default.existsSync(filePath);
225
- const probeResult = isLocalFile ? await (0, _probeimagesize().default)(require('fs').createReadStream(filePath)) : await (0, _probeimagesize().default)(data);
157
+ const isLocalFile = fs_1.default.existsSync(filePath);
158
+ const probeResult = isLocalFile
159
+ ? await (0, probe_image_size_1.default)(require('fs').createReadStream(filePath))
160
+ : await (0, probe_image_size_1.default)(data);
226
161
  if (!probeResult) {
227
162
  return;
228
163
  }
229
164
  const { width, height, type, mime } = probeResult;
230
165
  const fileExtension = filePath.split('.').pop();
231
166
  if (isLocalFile && mime !== `image/${fileExtension}`) {
232
- this.manualValidationErrors.push(new _Error.ValidationError({
167
+ this.manualValidationErrors.push(new Error_1.ValidationError({
233
168
  errorCode: 'FILE_EXTENSION_MISMATCH',
234
169
  fieldPath,
235
170
  message: `the file extension should match the content, but the file extension is .${fileExtension} while the file content at '${data}' is of type ${type}`,
236
171
  data,
237
- meta
172
+ meta,
238
173
  }));
239
174
  }
240
175
  if (contentTypePattern && !mime.match(new RegExp(contentTypePattern))) {
241
- this.manualValidationErrors.push(new _Error.ValidationError({
176
+ this.manualValidationErrors.push(new Error_1.ValidationError({
242
177
  errorCode: 'INVALID_CONTENT_TYPE',
243
178
  fieldPath,
244
179
  message: `field '${fieldPath}' should point to ${meta.contentTypeHuman} but the file at '${data}' has type ${type}`,
245
180
  data,
246
- meta
181
+ meta,
247
182
  }));
248
183
  }
249
184
  if (dimensions && (dimensions.height !== height || dimensions.width !== width)) {
250
- this.manualValidationErrors.push(new _Error.ValidationError({
185
+ this.manualValidationErrors.push(new Error_1.ValidationError({
251
186
  errorCode: 'INVALID_DIMENSIONS',
252
187
  fieldPath,
253
188
  message: `'${fieldPath}' should have dimensions ${dimensions.width}x${dimensions.height}, but the file at '${data}' has dimensions ${width}x${height}`,
254
189
  data,
255
- meta
190
+ meta,
256
191
  }));
257
192
  }
258
193
  if (square && width !== height) {
259
- this.manualValidationErrors.push(new _Error.ValidationError({
194
+ this.manualValidationErrors.push(new Error_1.ValidationError({
260
195
  errorCode: 'NOT_SQUARE',
261
196
  fieldPath,
262
197
  message: `image should be square, but the file at '${data}' has dimensions ${width}x${height}`,
263
198
  data,
264
- meta
199
+ meta,
265
200
  }));
266
201
  }
267
- } catch {
268
- this.manualValidationErrors.push(new _Error.ValidationError({
202
+ }
203
+ catch {
204
+ this.manualValidationErrors.push(new Error_1.ValidationError({
269
205
  errorCode: 'INVALID_ASSET_URI',
270
206
  fieldPath,
271
207
  message: `cannot access file at '${data}'`,
272
208
  data,
273
- meta
209
+ meta,
274
210
  }));
275
211
  }
276
212
  }
277
213
  }
278
214
  async _validateDirectoryAsync({ fieldPath, data, meta }) {
279
215
  if (meta && meta.asset && data) {
280
- const filePath = _path().default.resolve(this.rootDir, data);
216
+ const filePath = path_1.default.resolve(this.rootDir, data);
281
217
  try {
282
- if (!_fs().default.existsSync(filePath)) {
283
- this.manualValidationErrors.push(new _Error.ValidationError({
218
+ if (!fs_1.default.existsSync(filePath)) {
219
+ this.manualValidationErrors.push(new Error_1.ValidationError({
284
220
  errorCode: 'INVALID_ASSET_URI',
285
221
  fieldPath,
286
222
  message: `directory does not exist at '${data}'`,
287
223
  data,
288
- meta
224
+ meta,
289
225
  }));
290
226
  return;
291
227
  }
292
- if (!_fs().default.lstatSync(filePath).isDirectory()) {
293
- this.manualValidationErrors.push(new _Error.ValidationError({
228
+ if (!fs_1.default.lstatSync(filePath).isDirectory()) {
229
+ this.manualValidationErrors.push(new Error_1.ValidationError({
294
230
  errorCode: 'INVALID_CONTENT_TYPE',
295
231
  fieldPath,
296
232
  message: `field '${fieldPath}' should point to ${meta.contentTypeHuman} but the path at '${data}' is not a directory`,
297
233
  data,
298
- meta
234
+ meta,
299
235
  }));
300
236
  }
301
- } catch {
302
- this.manualValidationErrors.push(new _Error.ValidationError({
237
+ }
238
+ catch {
239
+ this.manualValidationErrors.push(new Error_1.ValidationError({
303
240
  errorCode: 'INVALID_ASSET_URI',
304
241
  fieldPath,
305
242
  message: `cannot access directory at '${data}'`,
306
243
  data,
307
- meta
244
+ meta,
308
245
  }));
309
246
  }
310
247
  }
@@ -312,29 +249,18 @@ class Schemer {
312
249
  async _validateAssetAsync({ fieldPath, data, meta }) {
313
250
  if (meta && meta.asset && data) {
314
251
  if (meta.contentTypePattern && meta.contentTypePattern.startsWith('^image')) {
315
- await this._validateImageAsync({
316
- fieldPath,
317
- data,
318
- meta
319
- });
320
- } else if (meta.contentTypePattern === 'directory') {
321
- await this._validateDirectoryAsync({
322
- fieldPath,
323
- data,
324
- meta
325
- });
252
+ await this._validateImageAsync({ fieldPath, data, meta });
253
+ }
254
+ else if (meta.contentTypePattern === 'directory') {
255
+ await this._validateDirectoryAsync({ fieldPath, data, meta });
326
256
  }
327
257
  }
328
258
  }
329
259
  async validateProperty(fieldPath, data) {
330
- const subSchema = (0, _Util.fieldPathToSchema)(this.schema, fieldPath);
260
+ const subSchema = (0, Util_1.fieldPathToSchema)(this.schema, fieldPath);
331
261
  this.ajv.validate(subSchema, data);
332
262
  if (subSchema.meta && subSchema.meta.asset) {
333
- await this._validateAssetAsync({
334
- fieldPath,
335
- data,
336
- meta: subSchema.meta
337
- });
263
+ await this._validateAssetAsync({ fieldPath, data, meta: subSchema.meta });
338
264
  }
339
265
  this._throwOnErrors();
340
266
  }
@@ -351,5 +277,5 @@ class Schemer {
351
277
  return this.validateProperty('icon', iconPath);
352
278
  }
353
279
  }
354
-
355
- //# sourceMappingURL=index.js.map
280
+ exports.default = Schemer;
281
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":[null],"names":["ErrorCodes","SchemerError","ValidationError","Schemer","lowerFirst","str","charAt","toLowerCase","slice","options","ajv","schema","rootDir","manualValidationErrors","allErrors","verbose","meta","strict","unicodeRegExp","Ajv","addFormats","mode","__dirname","_formatAjvErrorMessage","keyword","instancePath","params","parentSchema","data","message","errorCode","fieldPath","additionalProperty","missingProperty","regexHuman","regexErrorMessage","notHuman","notHumanErrorMessage","getErrors","valErrors","errors","map","error","_throwOnErrors","length","validateAll","_validateSchemaAsync","_validateAssetsAsync","validateAssetsAsync","validateSchemaAsync","validate","assets","traverse","allKeys","subSchema","jsonPointer","a","b","c","d","property","asset","schemaPointerToFieldPath","push","get","Promise","all","_validateAssetAsync","bind","_validateImageAsync","dimensions","square","contentTypePattern","filePath","path","resolve","isLocalFile","fs","existsSync","probeResult","imageProbe","require","createReadStream","width","height","type","mime","fileExtension","split","pop","match","RegExp","contentTypeHuman","_validateDirectoryAsync","lstatSync","isDirectory","startsWith","validateProperty","fieldPathToSchema","validateName","name","validateSlug","slug","validateSdkVersion","version","validateIcon","iconPath"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/schemer",
3
- "version": "2.2.2-canary-20260624-9d83b81",
3
+ "version": "2.3.0",
4
4
  "description": "Centralized scheme validation library for Expo",
5
5
  "license": "MIT",
6
6
  "main": "./build/index.js",
@@ -25,19 +25,19 @@
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/probe-image-size": "^7.2.4",
28
- "expo-module-scripts": "56.0.2"
28
+ "expo-module-scripts": "56.0.3"
29
29
  },
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "gitHead": "9d83b8168716512cb0a2c380ed4c9c057c1321e5",
33
+ "gitHead": "e3eb896c5fdcd89e0cded98ff4e35c9db12cc9c0",
34
34
  "scripts": {
35
- "build": "expo-build cjs:src",
35
+ "build": "expo-module tsc",
36
36
  "clean": "expo-module clean",
37
37
  "lint": "expo-module lint",
38
- "test": "jest",
39
- "test:e2e": "jest --config e2e/jest.config.js",
40
- "depscheck": "expo-module depscheck",
41
- "typecheck": "tsc -p tsconfig.json"
38
+ "test": "expo-module test",
39
+ "test:e2e": "expo-module test --config e2e/jest.config.js",
40
+ "typecheck": "expo-module typecheck",
41
+ "watch": "pnpm run --watch --preserveWatchOutput"
42
42
  }
43
43
  }