@playcraft/common 0.0.16 → 0.0.17
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/dist/prefab/diff.d.ts +18 -0
- package/dist/prefab/diff.d.ts.map +1 -0
- package/dist/prefab/diff.js +73 -0
- package/dist/prefab/diff.js.map +1 -0
- package/dist/prefab/index.d.ts +1 -0
- package/dist/prefab/index.d.ts.map +1 -1
- package/dist/prefab/index.js +1 -0
- package/dist/prefab/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FieldDescriptor, PrefabInfo } from './types.js';
|
|
2
|
+
/** JSON-like deep equality (no Date/Map; sufficient for prefab values). */
|
|
3
|
+
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Leaf field differs from schema default. Fields without schema default are ignored for diff.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fieldDescriptorIsChanged(f: FieldDescriptor): boolean;
|
|
8
|
+
/** Field list for diff/describe/search (same rules as CLI describe). */
|
|
9
|
+
export declare function getPrefabFieldDescriptors(p: PrefabInfo): FieldDescriptor[];
|
|
10
|
+
/** Unused prefabs never count as changed (no active config to compare). */
|
|
11
|
+
export declare function prefabHasSchemaDiff(p: PrefabInfo): boolean;
|
|
12
|
+
export type PrefabFieldDiff = {
|
|
13
|
+
path: string;
|
|
14
|
+
current: unknown;
|
|
15
|
+
default: unknown;
|
|
16
|
+
};
|
|
17
|
+
export declare function getPrefabFieldDiffs(p: PrefabInfo): PrefabFieldDiff[];
|
|
18
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/prefab/diff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAoBzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAGpE;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,UAAU,GAAG,eAAe,EAAE,CAW1E;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAK1D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,GAAG,eAAe,EAAE,CASpE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { describeConfigSchemaFields, describeJsonSchemaFields } from './descriptor.js';
|
|
2
|
+
/** JSON-like deep equality (no Date/Map; sufficient for prefab values). */
|
|
3
|
+
export function deepEqual(a, b) {
|
|
4
|
+
if (a === b)
|
|
5
|
+
return true;
|
|
6
|
+
if (typeof a !== typeof b)
|
|
7
|
+
return false;
|
|
8
|
+
if (a === null || b === null)
|
|
9
|
+
return a === b;
|
|
10
|
+
if (typeof a !== 'object')
|
|
11
|
+
return false;
|
|
12
|
+
if (Array.isArray(a) !== Array.isArray(b))
|
|
13
|
+
return false;
|
|
14
|
+
if (Array.isArray(a)) {
|
|
15
|
+
const bb = b;
|
|
16
|
+
if (a.length !== bb.length)
|
|
17
|
+
return false;
|
|
18
|
+
return a.every((v, i) => deepEqual(v, bb[i]));
|
|
19
|
+
}
|
|
20
|
+
const ao = a;
|
|
21
|
+
const bo = b;
|
|
22
|
+
const ak = Object.keys(ao).sort();
|
|
23
|
+
const bk = Object.keys(bo).sort();
|
|
24
|
+
if (ak.length !== bk.length)
|
|
25
|
+
return false;
|
|
26
|
+
for (let i = 0; i < ak.length; i++) {
|
|
27
|
+
if (ak[i] !== bk[i])
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return ak.every((k) => deepEqual(ao[k], bo[k]));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Leaf field differs from schema default. Fields without schema default are ignored for diff.
|
|
34
|
+
*/
|
|
35
|
+
export function fieldDescriptorIsChanged(f) {
|
|
36
|
+
if (f.default === undefined)
|
|
37
|
+
return false;
|
|
38
|
+
return !deepEqual(f.currentValue, f.default);
|
|
39
|
+
}
|
|
40
|
+
/** Field list for diff/describe/search (same rules as CLI describe). */
|
|
41
|
+
export function getPrefabFieldDescriptors(p) {
|
|
42
|
+
if (p.systemType === 'external-theme' && p.jsonSchema) {
|
|
43
|
+
return describeJsonSchemaFields(p.jsonSchema, p.currentValue);
|
|
44
|
+
}
|
|
45
|
+
if (p.configSchema) {
|
|
46
|
+
const currentValues = (p.currentValue && typeof p.currentValue === 'object')
|
|
47
|
+
? p.currentValue
|
|
48
|
+
: {};
|
|
49
|
+
return describeConfigSchemaFields(p.configSchema, currentValues);
|
|
50
|
+
}
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
/** Unused prefabs never count as changed (no active config to compare). */
|
|
54
|
+
export function prefabHasSchemaDiff(p) {
|
|
55
|
+
if (!p.isUsed)
|
|
56
|
+
return false;
|
|
57
|
+
const fields = getPrefabFieldDescriptors(p);
|
|
58
|
+
if (fields.length === 0)
|
|
59
|
+
return false;
|
|
60
|
+
return fields.some(fieldDescriptorIsChanged);
|
|
61
|
+
}
|
|
62
|
+
export function getPrefabFieldDiffs(p) {
|
|
63
|
+
if (!p.isUsed)
|
|
64
|
+
return [];
|
|
65
|
+
return getPrefabFieldDescriptors(p)
|
|
66
|
+
.filter(fieldDescriptorIsChanged)
|
|
67
|
+
.map((f) => ({
|
|
68
|
+
path: f.path,
|
|
69
|
+
current: f.currentValue,
|
|
70
|
+
default: f.default,
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/prefab/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/prefab/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
|
package/dist/prefab/index.js
CHANGED
package/dist/prefab/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prefab/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC"}
|