UNPKG

vrm-validator

Version:

Library for validating VRM (glTF 2.0 + VRM extensions) assets, compiled from Dart to JS.

154 lines (109 loc) 6.8 kB
# vrm-validator This is an npm package for the [VRM Validator](https://github.com/mrxz/vrm-validator/) by [Fern Solutions](https://fern.solutions) compiled from Dart to JS. ## Installation npm install --save vrm-validator ## Examples ### Basic usage (Node.js) ```javascript const fs = require('fs'); const validator = require('vrm-validator'); const asset = fs.readFileSync('./Avatar-1.0.vrm'); validator.validateBytes(new Uint8Array(asset)) .then((report) => console.info('Validation succeeded: ', report)) .catch((error) => console.error('Validation failed: ', error)); ``` ### Basic usage (Browser) ```javascript const validator = require('vrm-validator'); fetch('Avatar-1.0.vrm') .then((response) => response.arrayBuffer()) .then((asset) => validator.validateBytes(new Uint8Array(asset))) .then((report) => console.info('Validation succeeded: ', report)) .catch((error) => console.error('Validation failed: ', error)); ``` ### Full usage ```javascript const fs = require("fs"); const path = require("path"); const validator = require('vrm-validator'); const filename = 'Box.gltf'; const fullpath = __dirname + '/' + filename; const asset = fs.readFileSync(fullpath); validator.validateBytes(new Uint8Array(asset), { uri: filename, format: 'gltf', // skip auto-detection and parse the input as glTF JSON maxIssues: 10, // limit max number of output issues to 10 ignoredIssues: ['UNSUPPORTED_EXTENSION'], // mute UNSUPPORTED_EXTENSION issue onlyIssues: ['ACCESSOR_INVALID_FLOAT'], // only consider ACCESSOR_INVALID_FLOAT an issue. Cannot be used along with ignoredIssues. severityOverrides: { 'ACCESSOR_INDEX_TRIANGLE_DEGENERATE': 0 }, // treat degenerate triangles as errors externalResourceFunction: (uri) => new Promise((resolve, reject) => { uri = path.resolve(path.dirname(fullpath), decodeURIComponent(uri)); console.info("Loading external file: " + uri); fs.readFile(uri, (err, data) => { if (err) { console.error(err.toString()); reject(err.toString()); return; } resolve(data); }); }) }).then((result) => { // [result] will contain validation report in object form. // You can convert it to JSON to see its internal structure. console.log(JSON.stringify(result, null, ' ')); }, (result) => { // Promise rejection means that arguments were invalid or validator was unable // to detect file format (glTF or GLB). // [result] will contain exception string. console.error(result); }); ``` ## API <!-- Generated by documentation.js. Update this documentation by updating the source code. --> #### Table of Contents * [version](#version) * [supportedExtensions](#supportedextensions) * [validateBytes](#validatebytes) * [Parameters](#parameters) * [validateString](#validatestring) * [Parameters](#parameters-1) * [ValidationOptions](#validationoptions) * [Properties](#properties) * [ExternalResourceFunction](#externalresourcefunction) * [Parameters](#parameters-2) ### version Returns a version string. Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** ### supportedExtensions Returns an array of supported extensions names. Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** ### validateBytes Validates an asset from bytes. #### Parameters * `data` **[Uint8Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)** Byte array containing glTF or GLB data. * `options` **[ValidationOptions](#validationoptions)** Object with validation options. Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)** Promise with validation result in object form. ### validateString Validates an asset from JSON string. #### Parameters * `json` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** String containing glTF JSON. * `options` **[ValidationOptions](#validationoptions)** Object with validation options. Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)** Promise with validation result in object form. ### ValidationOptions Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) #### Properties * `uri` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Absolute or relative asset URI that will be copied to validation report. * `format` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Set to `glb` or `gltf` to skip auto-detection of the asset format based on the first byte; any other value will be ignored. This option has no effect on `validateString`. * `externalResourceFunction` **[ExternalResourceFunction](#externalresourcefunction)** Function for loading external resources. If omitted, external resources are not validated. * `writeTimestamp` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** Set to `false` to omit timestamp from the validation report. Default is `true`. * `maxIssues` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** Max number of reported issues. Use `0` for unlimited output. * `ignoredIssues` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** Array of ignored issue codes. * `onlyIssues` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** Array of only issues to consider. Cannot be used along with ignoredIssues. * `severityOverrides` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** Object with overridden severities for issue codes. ### ExternalResourceFunction Type: [Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function) #### Parameters * `uri` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Relative URI of the external resource. Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)** Promise with Uint8Array data.