From 5ec3184a8a9ac144d3d9abfaf5619815cacf110d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A4r=20Winzell?= Date: Fri, 25 Jan 2019 16:01:08 -0800 Subject: [PATCH] Mocha integration test suite (#150) This moves ./npm to ./npm/fbx2gltf, and introduces a Mocha / TypeScript based testing harness. We're also adding a GIT LFS dependency, but only for people who want to run tests. We're using LFS to store the many FBX models we want to convert to GLB as part of the integration test suite. --- .gitattributes | 5 + .gitignore | 12 +- npm/{ => fbx2gltf}/LICENSE | 0 npm/{ => fbx2gltf}/PATENTS | 0 npm/{ => fbx2gltf}/README.md | 0 npm/{ => fbx2gltf}/bin/Darwin/.keep | 0 npm/{ => fbx2gltf}/bin/Linux/.keep | 0 npm/{ => fbx2gltf}/bin/README | 0 npm/{ => fbx2gltf}/bin/Windows_NT/.keep | 0 npm/{ => fbx2gltf}/index.js | 0 npm/{ => fbx2gltf}/package.json | 2 +- npm/fbx2gltf/yarn.lock | 70 +++ npm/tests/.npmignore | 2 + npm/tests/README.md | 24 + .../models/fromFacebook/Jon/jon_morph.fbx | 3 + .../models/fromFacebook/Jon/troll-final.fbx | 3 + .../fromFacebook/Natalie/GlitchRobot.fbx | 3 + .../Ocean/blackvan/blackvan_diffuse.png | 3 + .../Ocean/blackvan/blackvan_emissive.png | 3 + .../Ocean/blackvan/blackvan_gloss.png | 3 + .../Ocean/blackvan/blackvan_normals.png | 3 + .../Ocean/blackvan/blackvan_specular.png | 3 + .../Ocean/blackvan/blackvan_windows.png | 3 + .../Ocean/blackvan/blackvan_with_windows.fbx | 3 + .../Ocean/zell_van_vertex_color.fbx | 3 + npm/tests/models/fromFacebook/RAZ/RAZ_ape.fbx | 3 + npm/tests/models/fromFbxSDK/Box.fbx | 3 + npm/tests/models/fromFbxSDK/Camera.fbx | 3 + npm/tests/models/fromFbxSDK/Humanoid.fbx | 3 + npm/tests/models/fromFbxSDK/Normals.fbx | 3 + .../BoxVertexColors/BoxVertexColors.fbx | 3 + .../WaterBottle/NewWaterBottle.fbx | 3 + .../fromGltfSamples/WaterBottle/README.md | 26 + .../WaterBottle/WaterBottle_BaseColor.png | 3 + .../WaterBottle/WaterBottle_Metallic.png | 3 + .../WaterBottle/WaterBottle_Normal.png | 3 + .../WaterBottle/WaterBottle_Roughness.png | 3 + npm/tests/package.json | 42 ++ npm/tests/test/fbx2gltf.ts | 76 +++ npm/tests/test/mocha.opts | 3 + npm/tests/tsconfig.json | 9 + npm/tests/yarn.lock | 564 ++++++++++++++++++ npm/yarn.lock | 70 --- 43 files changed, 895 insertions(+), 76 deletions(-) create mode 100644 .gitattributes rename npm/{ => fbx2gltf}/LICENSE (100%) rename npm/{ => fbx2gltf}/PATENTS (100%) rename npm/{ => fbx2gltf}/README.md (100%) rename npm/{ => fbx2gltf}/bin/Darwin/.keep (100%) rename npm/{ => fbx2gltf}/bin/Linux/.keep (100%) rename npm/{ => fbx2gltf}/bin/README (100%) rename npm/{ => fbx2gltf}/bin/Windows_NT/.keep (100%) rename npm/{ => fbx2gltf}/index.js (100%) rename npm/{ => fbx2gltf}/package.json (96%) create mode 100644 npm/fbx2gltf/yarn.lock create mode 100644 npm/tests/.npmignore create mode 100644 npm/tests/README.md create mode 100644 npm/tests/models/fromFacebook/Jon/jon_morph.fbx create mode 100644 npm/tests/models/fromFacebook/Jon/troll-final.fbx create mode 100644 npm/tests/models/fromFacebook/Natalie/GlitchRobot.fbx create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_diffuse.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_emissive.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_gloss.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_normals.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_specular.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_windows.png create mode 100644 npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_with_windows.fbx create mode 100644 npm/tests/models/fromFacebook/Ocean/zell_van_vertex_color.fbx create mode 100644 npm/tests/models/fromFacebook/RAZ/RAZ_ape.fbx create mode 100644 npm/tests/models/fromFbxSDK/Box.fbx create mode 100644 npm/tests/models/fromFbxSDK/Camera.fbx create mode 100644 npm/tests/models/fromFbxSDK/Humanoid.fbx create mode 100644 npm/tests/models/fromFbxSDK/Normals.fbx create mode 100644 npm/tests/models/fromGltfSamples/BoxVertexColors/BoxVertexColors.fbx create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/NewWaterBottle.fbx create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/README.md create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_BaseColor.png create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Metallic.png create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Normal.png create mode 100644 npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Roughness.png create mode 100644 npm/tests/package.json create mode 100644 npm/tests/test/fbx2gltf.ts create mode 100644 npm/tests/test/mocha.opts create mode 100644 npm/tests/tsconfig.json create mode 100644 npm/tests/yarn.lock delete mode 100644 npm/yarn.lock diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9074a99 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +*.glb filter=lfs diff=lfs merge=lfs -text +*.fbx filter=lfs diff=lfs merge=lfs -text +*.tga filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index 64abcfb..7ae5cdd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ -npm/bin/Darwin/FBX2glTF -npm/bin/Linux/FBX2glTF -npm/bin/Windows_NT/FBX2glTF.exe -npm/node_modules/ -sdk/ +npm/fbx2gltf/bin/Darwin/FBX2glTF +npm/fbx2gltf/bin/Linux/FBX2glTF +npm/fbx2gltf/bin/Windows_NT/FBX2glTF.exe +npm/fbx2gltf/node_modules/ +npm/tests/node_modules/ +npm/tests/test/*.js +npm/tests/test/*.js.map diff --git a/npm/LICENSE b/npm/fbx2gltf/LICENSE similarity index 100% rename from npm/LICENSE rename to npm/fbx2gltf/LICENSE diff --git a/npm/PATENTS b/npm/fbx2gltf/PATENTS similarity index 100% rename from npm/PATENTS rename to npm/fbx2gltf/PATENTS diff --git a/npm/README.md b/npm/fbx2gltf/README.md similarity index 100% rename from npm/README.md rename to npm/fbx2gltf/README.md diff --git a/npm/bin/Darwin/.keep b/npm/fbx2gltf/bin/Darwin/.keep similarity index 100% rename from npm/bin/Darwin/.keep rename to npm/fbx2gltf/bin/Darwin/.keep diff --git a/npm/bin/Linux/.keep b/npm/fbx2gltf/bin/Linux/.keep similarity index 100% rename from npm/bin/Linux/.keep rename to npm/fbx2gltf/bin/Linux/.keep diff --git a/npm/bin/README b/npm/fbx2gltf/bin/README similarity index 100% rename from npm/bin/README rename to npm/fbx2gltf/bin/README diff --git a/npm/bin/Windows_NT/.keep b/npm/fbx2gltf/bin/Windows_NT/.keep similarity index 100% rename from npm/bin/Windows_NT/.keep rename to npm/fbx2gltf/bin/Windows_NT/.keep diff --git a/npm/index.js b/npm/fbx2gltf/index.js similarity index 100% rename from npm/index.js rename to npm/fbx2gltf/index.js diff --git a/npm/package.json b/npm/fbx2gltf/package.json similarity index 96% rename from npm/package.json rename to npm/fbx2gltf/package.json index 5d25630..a9e35df 100644 --- a/npm/package.json +++ b/npm/fbx2gltf/package.json @@ -1,6 +1,6 @@ { "name": "fbx2gltf", - "version": "0.9.5", + "version": "0.9.6", "description": "Node wrapper around FBX2glTF tools.", "main": "index.js", "repository": { diff --git a/npm/fbx2gltf/yarn.lock b/npm/fbx2gltf/yarn.lock new file mode 100644 index 0000000..3a842ef --- /dev/null +++ b/npm/fbx2gltf/yarn.lock @@ -0,0 +1,70 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" diff --git a/npm/tests/.npmignore b/npm/tests/.npmignore new file mode 100644 index 0000000..bd6c7fe --- /dev/null +++ b/npm/tests/.npmignore @@ -0,0 +1,2 @@ +*.ts +!*.d.ts \ No newline at end of file diff --git a/npm/tests/README.md b/npm/tests/README.md new file mode 100644 index 0000000..c153b05 --- /dev/null +++ b/npm/tests/README.md @@ -0,0 +1,24 @@ +# FBX2glTF Regression Suite + +It's imperative that as we add new functionality to FBX2glTF and refactor code, +that old behaviour does not change underfoot in unexpected and detrimental ways. + +This is a very simple first beginnings of a test suite for converting FBX files +and ensuring the consistency of the GLB. At present all we do is make sure that +the generated GLB is valid. We will have to add other integrity checks here for +the tests to accomplish what we intend. + +We will also want to test the same file with a variety of command line switches, +e.g. with Draco compression and different materials. + +## Setting up + +We recommend using Yarn rather than NPM. Installation instructions can be found +[here](https://yarnpkg.com/lang/en/docs/install/). + +> yarn install + +## Running tests + +> yarn test + diff --git a/npm/tests/models/fromFacebook/Jon/jon_morph.fbx b/npm/tests/models/fromFacebook/Jon/jon_morph.fbx new file mode 100644 index 0000000..21edfcb --- /dev/null +++ b/npm/tests/models/fromFacebook/Jon/jon_morph.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c2a5e85e167c1b9d91dbfe29a44cad80afab7f95a97f42c69a40dbd573265df +size 68128 diff --git a/npm/tests/models/fromFacebook/Jon/troll-final.fbx b/npm/tests/models/fromFacebook/Jon/troll-final.fbx new file mode 100644 index 0000000..3360922 --- /dev/null +++ b/npm/tests/models/fromFacebook/Jon/troll-final.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84732464cd4c52e813a6ec7c0b5bff50290a2e8e05b6ecc38c2b98e474eaafcf +size 14302496 diff --git a/npm/tests/models/fromFacebook/Natalie/GlitchRobot.fbx b/npm/tests/models/fromFacebook/Natalie/GlitchRobot.fbx new file mode 100644 index 0000000..a7e72ce --- /dev/null +++ b/npm/tests/models/fromFacebook/Natalie/GlitchRobot.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afcc80ed8ce4a5cd62e5b14fa91c1ae69188211d973dd9a8c0300e21e91d1f8f +size 219872 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_diffuse.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_diffuse.png new file mode 100644 index 0000000..d0d9126 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_diffuse.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9361b0de05056e7208ba5a8f44f27273c20594967617d4965acdac091e4e63e8 +size 3634331 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_emissive.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_emissive.png new file mode 100644 index 0000000..91f85a1 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_emissive.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:982d00006d786a95eb76b41973119a179009f546cbe720a416640ce680a32e67 +size 36280 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_gloss.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_gloss.png new file mode 100644 index 0000000..e06853d --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_gloss.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e79b91ec0eefaeccaf1235be8f96fda7e8b8cb9bb1074cb987a20ea8d1f164 +size 1856211 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_normals.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_normals.png new file mode 100644 index 0000000..88c1545 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_normals.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eb84a76fe8faa5c375a9fcabee4239b5e23cd5d9a08489c985a7379d754cdca +size 2562707 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_specular.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_specular.png new file mode 100644 index 0000000..4a6e6fa --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_specular.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:039686eea30aaa2ecddc425e2adc54d942566298c9a3c790fb1d513838c9a305 +size 1916685 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_windows.png b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_windows.png new file mode 100644 index 0000000..1d3bbe2 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_windows.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f41122ebb23597fdaaa44d66c93b5b95675abd5e379d1b27917f1ec4119c2576 +size 4092711 diff --git a/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_with_windows.fbx b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_with_windows.fbx new file mode 100644 index 0000000..5d460a9 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/blackvan/blackvan_with_windows.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52cb225bad9cc9c74bc80c2c9f15a44cddf738d08e2194df4bd1259b830b17c7 +size 1072432 diff --git a/npm/tests/models/fromFacebook/Ocean/zell_van_vertex_color.fbx b/npm/tests/models/fromFacebook/Ocean/zell_van_vertex_color.fbx new file mode 100644 index 0000000..99fc979 --- /dev/null +++ b/npm/tests/models/fromFacebook/Ocean/zell_van_vertex_color.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56249c6d7a953f4dac9fd823324ac948c348ae5b306fa020667ee5b8e9c4f2f +size 2295056 diff --git a/npm/tests/models/fromFacebook/RAZ/RAZ_ape.fbx b/npm/tests/models/fromFacebook/RAZ/RAZ_ape.fbx new file mode 100644 index 0000000..5954a28 --- /dev/null +++ b/npm/tests/models/fromFacebook/RAZ/RAZ_ape.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ae59378d0e90957bce9f766e4e5b41212af8ca2835902391b3d31c0181a056 +size 564048 diff --git a/npm/tests/models/fromFbxSDK/Box.fbx b/npm/tests/models/fromFbxSDK/Box.fbx new file mode 100644 index 0000000..d78a3cb --- /dev/null +++ b/npm/tests/models/fromFbxSDK/Box.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:862247f82d91dab7a998c6110775eaed0bd7196368e40f3bf6115f9221bf1875 +size 12128 diff --git a/npm/tests/models/fromFbxSDK/Camera.fbx b/npm/tests/models/fromFbxSDK/Camera.fbx new file mode 100644 index 0000000..361bda7 --- /dev/null +++ b/npm/tests/models/fromFbxSDK/Camera.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4c6de8e9b23c05bd0bd2c227e9d817deb30efea5779db5afe03752a2869e2cd +size 23180 diff --git a/npm/tests/models/fromFbxSDK/Humanoid.fbx b/npm/tests/models/fromFbxSDK/Humanoid.fbx new file mode 100644 index 0000000..57d0733 --- /dev/null +++ b/npm/tests/models/fromFbxSDK/Humanoid.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ce40cb9b86d0bcdfb66a3382a80349b70037d65197906be34eab0db6eb9418c +size 8983744 diff --git a/npm/tests/models/fromFbxSDK/Normals.fbx b/npm/tests/models/fromFbxSDK/Normals.fbx new file mode 100644 index 0000000..801a458 --- /dev/null +++ b/npm/tests/models/fromFbxSDK/Normals.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a783718dd72e3d1acd76b6e41c950ca1f9f04743a4c7f3dd4e571169ff464d4 +size 704532 diff --git a/npm/tests/models/fromGltfSamples/BoxVertexColors/BoxVertexColors.fbx b/npm/tests/models/fromGltfSamples/BoxVertexColors/BoxVertexColors.fbx new file mode 100644 index 0000000..d672f76 --- /dev/null +++ b/npm/tests/models/fromGltfSamples/BoxVertexColors/BoxVertexColors.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ed8da4f2b5b6a5309fa52b2b700e49215f8ba680789b5f210688615232625b +size 17424 diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/NewWaterBottle.fbx b/npm/tests/models/fromGltfSamples/WaterBottle/NewWaterBottle.fbx new file mode 100644 index 0000000..a6aee69 --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/NewWaterBottle.fbx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36f5082165900ce7c0e53d8638c12aa55ef79d80983b65c024a468d210b4c1ff +size 159532 diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/README.md b/npm/tests/models/fromGltfSamples/WaterBottle/README.md new file mode 100644 index 0000000..c1888fa --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/README.md @@ -0,0 +1,26 @@ +# Water Bottle + +## FBX2glTF Changes + +Imported into Blender, texture files explicitly re-attached to material, +metallic & smoothness separated into distinct textures, smoothness negated +into roughmess, then re-exported as FBX. + +## Original Description + +Authored with PBR metallic/smoothness intended for import into Unity3D. + +Binary FBX contains only the geometry. Textures are in separate files. + +|Name|Map| +|----|---| +|`WaterBottle_BaseColor`|Albedo| +|`WaterBottle_MetalSmooth`|Metallic/Smoothness| +|`WaterBottle_Emissive`|Emissive| +|`WaterBottle_Normal`|Normal| +|`WaterBottle_Occlusion`|Occlusion| + +## License Information + +[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/) +To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset. diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_BaseColor.png b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_BaseColor.png new file mode 100644 index 0000000..4170ac1 --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_BaseColor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bf6b6c6f87085e3d880f6b2d4c0350b2582b1f5a36cafa689cdebdc65720908 +size 1538074 diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Metallic.png b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Metallic.png new file mode 100644 index 0000000..10d531e --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Metallic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e0b4d7567a663838d4e58a9d7ca145b560a19c7ee3b2fbe9cbc446f8a221a5f +size 279918 diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Normal.png b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Normal.png new file mode 100644 index 0000000..60221c8 --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Normal.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e539a182f42071f47585bf34e4f035fb008a38c3942752e7147e5b281d1e55a +size 2301362 diff --git a/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Roughness.png b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Roughness.png new file mode 100644 index 0000000..26b94d2 --- /dev/null +++ b/npm/tests/models/fromGltfSamples/WaterBottle/WaterBottle_Roughness.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:915d320f5e8660b32e64524cede52ab9591b693c7dc7d7088fc973dae38f0875 +size 1633811 diff --git a/npm/tests/package.json b/npm/tests/package.json new file mode 100644 index 0000000..1df3497 --- /dev/null +++ b/npm/tests/package.json @@ -0,0 +1,42 @@ +{ + "name": "fbx2gltf-tests", + "version": "0.9.6", + "description": "Test suite for FBX2glTF", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/facebookincubator/FBX2glTF.git" + }, + "contributors": [ + "Pär Winzell ", + "Michael Bayne", + "J.M.P. van Waveren", + "Amanda Watson" + ], + "license": "BSD-3-Clause", + "bugs": { + "url": "https://github.com/facebookincubator/FBX2glTF/issues" + }, + "homepage": "https://github.com/facebookincubator/FBX2glTF", + "scripts": { + "pretest": "tsc", + "test": "mocha", + "watch": "mocha-typescript-watch", + "prepare": "tsc" + }, + "dependencies": { + "fbx2gltf": "file:../fbx2gltf", + "gltf-validator": "^2.0.0-dev.2.6", + "tmp": "^0.0.33" + }, + "devDependencies": { + "@types/chai": "^4.1.7", + "@types/mocha": "^5.2.5", + "@types/node": "^10.12.12", + "chai": "^4.2.0", + "mocha": "^5.2.0", + "mocha-typescript": "^1.1.17", + "source-map-support": "^0.5.9", + "typescript": "^3.2.2" + } +} diff --git a/npm/tests/test/fbx2gltf.ts b/npm/tests/test/fbx2gltf.ts new file mode 100644 index 0000000..ea88cf2 --- /dev/null +++ b/npm/tests/test/fbx2gltf.ts @@ -0,0 +1,76 @@ +import { readFileSync } from 'fs'; +import * as tmp from 'tmp'; +import * as path from 'path'; +import * as fbx2gltf from 'fbx2gltf'; +import { assert, expect } from 'chai'; +import { validateBytes } from 'gltf-validator'; + +interface Model { + path: string; + ignoredIssues?: Array; + args?: Array; +} + +const MODELS :Array = [ + { path: 'fromFacebook/Jon/jon_morph' }, + { + path: 'fromFacebook/Jon/troll-final', + ignoredIssues: [ 'ACCESSOR_NON_UNIT' ], + }, + { path: 'fromFacebook/Natalie/GlitchRobot' }, + { path: 'fromFacebook/Ocean/blackvan/blackvan_with_windows' }, + { path: 'fromFacebook/Ocean/zell_van_vertex_color' }, + { path: 'fromFacebook/RAZ/RAZ_ape' }, + { path: 'fromFbxSDK/Box' }, + { + path: 'fromFbxSDK/Humanoid', + ignoredIssues: [ 'UNSUPPORTED_EXTENSION' ], + }, + { + path: 'fromFbxSDK/Camera', + ignoredIssues: [ 'UNSUPPORTED_EXTENSION' ], + }, + { path: 'fromFbxSDK/Normals' }, + { path: 'fromGltfSamples/BoxVertexColors/BoxVertexColors' }, + { path: 'fromGltfSamples/WaterBottle/NewWaterBottle' }, +]; + +const CONVERSION_TIMEOUT_MS = 50000; + +describe('FBX2glTF', () => { + const tmpobj = tmp.dirSync(); + for(let model of MODELS) { + const modelName = path.basename(model.path); + describe('Model: ' + modelName, () => { + const fbxPath = path.join('models', model.path + '.fbx'); + let glbBytes; + it('should convert fbx to glb', async () => { + const glbPath = path.join(tmpobj.name, modelName + '.glb'); + + try { + const destPath = await fbx2gltf(fbxPath, glbPath, model.args || []); + assert.isNotNull(destPath); + glbBytes = readFileSync(destPath); + } catch (err) { + throw new Error('Conversion failed: ' + err); + } + }).timeout(CONVERSION_TIMEOUT_MS); + + it('resulting glb should be valid', async() => { + try { + let options = {}; + if (model.ignoredIssues) { + options.ignoredIssues = model.ignoredIssues; + } + const report = await validateBytes(glbBytes, options); + expect(report.issues.numErrors).to.equal(0); + expect(report.issues.numWarnings).to.equal(0); + + } catch (err) { + throw new Error('Validation failed: ' + err); + } + }); + }); + } + console.log('GLB files may be inspected in: ' + tmpobj.name); +}); diff --git a/npm/tests/test/mocha.opts b/npm/tests/test/mocha.opts new file mode 100644 index 0000000..bb4e390 --- /dev/null +++ b/npm/tests/test/mocha.opts @@ -0,0 +1,3 @@ +--ui mocha-typescript +--require source-map-support/register +--recursive test diff --git a/npm/tests/tsconfig.json b/npm/tests/tsconfig.json new file mode 100644 index 0000000..75d60af --- /dev/null +++ b/npm/tests/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "sourceMap": true, + "experimentalDecorators": true, + "lib": [ "es6" ] + } +} \ No newline at end of file diff --git a/npm/tests/yarn.lock b/npm/tests/yarn.lock new file mode 100644 index 0000000..d68c154 --- /dev/null +++ b/npm/tests/yarn.lock @@ -0,0 +1,564 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/chai@^4.1.7": + version "4.1.7" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" + +"@types/mocha@^5.2.0", "@types/mocha@^5.2.5": + version "5.2.5" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" + +"@types/node@^10.12.12": + version "10.12.12" + resolved "https://registry.npmjs.org/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +chai@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +commander@2.15.1: + version "2.15.1" + resolved "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + dependencies: + type-detect "^4.0.0" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +"fbx2gltf@file:../fbx2gltf": + version "0.9.6" + dependencies: + rimraf "^2.6.2" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + +get-stream@^3.0.0: + version "3.0.0" + resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +glob@7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5: + version "7.1.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +gltf-validator@^2.0.0-dev.2.6: + version "2.0.0-dev.2.6" + resolved "https://registry.npmjs.org/gltf-validator/-/gltf-validator-2.0.0-dev.2.6.tgz#ca99a2c2ee44eb7b1401ffa8d72d3af20cb48e3a" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@0.5.1: + version "0.5.1" + resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha-typescript@^1.1.17: + version "1.1.17" + resolved "https://registry.npmjs.org/mocha-typescript/-/mocha-typescript-1.1.17.tgz#f78b29ad4f87fce8c25f657883e3eca39fb026c9" + dependencies: + "@types/mocha" "^5.2.0" + chalk "^2.4.1" + cross-spawn "^6.0.5" + yargs "^11.0.0" + +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +semver@^5.5.0: + version "5.6.0" + resolved "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +source-map-support@^0.5.9: + version "0.5.9" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + dependencies: + has-flag "^3.0.0" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + +typescript@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" diff --git a/npm/yarn.lock b/npm/yarn.lock deleted file mode 100644 index c30aedc..0000000 --- a/npm/yarn.lock +++ /dev/null @@ -1,70 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -glob@^7.0.5: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"