node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

gltf-validator

gltf-validator

This is an npm package for the official glTF Validator compiled from Dart to JS.

Installation

npm install --save gltf-validator

Examples

Basic usage (Node.js)

const fs = require('fs');
const validator = require('gltf-validator');
 
const asset = fs.readFileSync('./Box.gltf');
 
validator.validateBytes(new Uint8Array(asset))
    .then((report) => console.info('Validation succeeded: ', report))
    .catch((error) => console.error('Validation failed: ', error));

Basic usage (Browser)

const validator = require('gltf-validator');
 
fetch('Box.gltf')
    .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

const fs = require("fs");
const path = require("path");
const validator = require('gltf-validator');
 
const filename = 'Box.gltf';
const fullpath = __dirname + '/' + filename;
const asset = fs.readFileSync(fullpath);
 
validator.validateBytes(new Uint8Array(asset), {
    uri: filename,
    maxIssues: 10, // limit max number of output issues to 10
    ignoredIssues: ['UNSUPPORTED_EXTENSION'], // mute UNSUPPORTED_EXTENSION issue
    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

Table of Contents

validateBytes

Validates an asset from bytes.

Parameters

Returns Promise Promise with validation result in object form.

validateString

Validates an asset from JSON string.

Parameters

Returns Promise Promise with validation result in object form.

ValidationOptions

Type: Object

Properties

  • uri string Absolute or relative asset URI that will be copied to validation report.
  • externalResourceFunction ExternalResourceFunction Function for loading external resources. If omitted, external resources are not validated.
  • validateAccessorData boolean Set to false to skip reading of accessor data.
  • maxIssues number Max number of reported issues. Use 0 for unlimited output.
  • ignoredIssues Array<string> Array of ignored issue codes.
  • severityOverrides Object Object with overridden severities for issue codes.

ExternalResourceFunction

Type: Function

Parameters

  • uri string Relative URI of the external resource.

Returns Promise Promise with Uint8Array data.