@flighthq/materials 0.5.1-next.638.d4dbd4e → 0.5.1-next.650.5d3df0b
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/README.md +2 -2
- package/dist/material.d.ts +1 -1
- package/dist/material.d.ts.map +1 -1
- package/dist/material.js +7 -1
- package/dist/material.js.map +1 -1
- package/package.json +4 -4
- package/src/material.test.ts +18 -2
package/README.md
CHANGED
|
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/materials`. The `@fl
|
|
|
13
13
|
This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
|
|
14
14
|
|
|
15
15
|
- [Flight project](https://github.com/flighthq/flight)
|
|
16
|
-
- [Source for @flighthq/materials@0.5.1-next.
|
|
17
|
-
- [License](https://github.com/flighthq/flight/blob/
|
|
16
|
+
- [Source for @flighthq/materials@0.5.1-next.650.5d3df0b](https://github.com/flighthq/flight/tree/5d3df0b3bd7071e51898ec6ca5f733b81cb94a54/packages/materials)
|
|
17
|
+
- [License](https://github.com/flighthq/flight/blob/5d3df0b3bd7071e51898ec6ca5f733b81cb94a54/LICENSE.md)
|
package/dist/material.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export declare function cloneMaterial(source: Readonly<Material>): Material;
|
|
|
3
3
|
export declare function copyMaterial(out: Material, source: Readonly<Material>): void;
|
|
4
4
|
export declare function createMaterial(kind: Kind): Material;
|
|
5
5
|
export declare function equalsMaterial(a: Readonly<Material>, b: Readonly<Material>): boolean;
|
|
6
|
-
export declare function getMaterialOfKind<T extends Material>(material: Readonly<Material> | null, kind:
|
|
6
|
+
export declare function getMaterialOfKind<T extends Material>(material: Readonly<Material> | null, kind: T['kind']): T | null;
|
|
7
7
|
//# sourceMappingURL=material.d.ts.map
|
package/dist/material.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../src/material.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAIlE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG5E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAInD;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"material.d.ts","sourceRoot":"","sources":["../src/material.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAI/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAIlE;AAID,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAG5E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAInD;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAcpF;AAOD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAEpH"}
|
package/dist/material.js
CHANGED
|
@@ -28,7 +28,13 @@ export function equalsMaterial(a, b) {
|
|
|
28
28
|
return false;
|
|
29
29
|
const aFields = a;
|
|
30
30
|
const bFields = b;
|
|
31
|
-
|
|
31
|
+
const aKeys = Object.keys(aFields);
|
|
32
|
+
const bKeys = Object.keys(bFields);
|
|
33
|
+
if (aKeys.length !== bKeys.length)
|
|
34
|
+
return false;
|
|
35
|
+
for (const key of aKeys) {
|
|
36
|
+
if (!Object.hasOwn(bFields, key))
|
|
37
|
+
return false;
|
|
32
38
|
if (key === 'kind')
|
|
33
39
|
continue;
|
|
34
40
|
if (aFields[key] !== bFields[key])
|
package/dist/material.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material.js","sourceRoot":"","sources":["../src/material.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,wFAAwF;AACxF,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAa,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wFAAwF;AACxF,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,GAAa,EAAE,MAA0B;IACpE,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO;IAC3B,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAU;IACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,CAAa,CAAC;IACpD,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,wFAAwF;AACxF,2FAA2F;AAC3F,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,CAAqB,EAAE,CAAqB;IACzE,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,OAAO,GAAG,CAAuC,CAAC;IACxD,MAAM,OAAO,GAAG,CAAuC,CAAC;IACxD,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"material.js","sourceRoot":"","sources":["../src/material.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/materials",
|
|
3
|
-
"version": "0.5.1-next.
|
|
3
|
+
"version": "0.5.1-next.650.5d3df0b",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/color": "0.5.1-next.
|
|
42
|
-
"@flighthq/entity": "0.5.1-next.
|
|
43
|
-
"@flighthq/types": "0.5.1-next.
|
|
41
|
+
"@flighthq/color": "0.5.1-next.650.5d3df0b",
|
|
42
|
+
"@flighthq/entity": "0.5.1-next.650.5d3df0b",
|
|
43
|
+
"@flighthq/types": "0.5.1-next.650.5d3df0b"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"typescript": "^5.3.0"
|
package/src/material.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { StandardPbrMaterial } from '@flighthq/types/contract';
|
|
2
|
-
import { StandardPbrMaterialKind } from '@flighthq/types/contract';
|
|
1
|
+
import type { BlinnPhongMaterial, StandardPbrMaterial } from '@flighthq/types/contract';
|
|
2
|
+
import { BlinnPhongMaterialKind, StandardPbrMaterialKind } from '@flighthq/types/contract';
|
|
3
3
|
|
|
4
4
|
import { cloneMaterial, copyMaterial, createMaterial, equalsMaterial, getMaterialOfKind } from './material';
|
|
5
5
|
import { createStandardPbrMaterial } from './pbrMaterials';
|
|
@@ -83,6 +83,14 @@ describe('equalsMaterial', () => {
|
|
|
83
83
|
it('treats same-kind materials without comparable fields as equal', () => {
|
|
84
84
|
expect(equalsMaterial(createMaterial(TestMaterialKind), createMaterial(TestMaterialKind))).toBe(true);
|
|
85
85
|
});
|
|
86
|
+
|
|
87
|
+
it('is symmetric when only one material has an extra field', () => {
|
|
88
|
+
const a = createMaterial(TestMaterialKind);
|
|
89
|
+
const b = createMaterial(TestMaterialKind);
|
|
90
|
+
Object.assign(b, { customValue: 1 });
|
|
91
|
+
expect(equalsMaterial(a, b)).toBe(false);
|
|
92
|
+
expect(equalsMaterial(b, a)).toBe(false);
|
|
93
|
+
});
|
|
86
94
|
});
|
|
87
95
|
|
|
88
96
|
describe('getMaterialOfKind', () => {
|
|
@@ -99,4 +107,12 @@ describe('getMaterialOfKind', () => {
|
|
|
99
107
|
it('returns null for a null material', () => {
|
|
100
108
|
expect(getMaterialOfKind(null, TestMaterialKind)).toBeNull();
|
|
101
109
|
});
|
|
110
|
+
|
|
111
|
+
it('ties a concrete result type to its discriminant', () => {
|
|
112
|
+
const material = createStandardPbrMaterial();
|
|
113
|
+
expect(getMaterialOfKind<StandardPbrMaterial>(material, StandardPbrMaterialKind)).toBe(material);
|
|
114
|
+
// @ts-expect-error A Blinn-Phong result cannot be requested with the standard-PBR discriminant.
|
|
115
|
+
getMaterialOfKind<BlinnPhongMaterial>(material, StandardPbrMaterialKind);
|
|
116
|
+
expect(getMaterialOfKind<BlinnPhongMaterial>(material, BlinnPhongMaterialKind)).toBeNull();
|
|
117
|
+
});
|
|
102
118
|
});
|